inotify + msmtp + mutt 监控文件变化并发送邮件的配置实例-msmtp的QQ邮箱配置

这篇博客介绍了如何利用inotify监控文件系统变化,结合msmtp和mutt实现邮件通知。首先,详细解释了inotify的工作原理和相关工具的用法。接着,配置msmtp作为SMTP客户端,连接QQ邮箱进行邮件发送,并展示了msmtprc配置文件的内容。最后,介绍了mutt的配置,通过mutt将邮件发送出去。整个流程覆盖了文件监控、邮件发送和命令行邮件客户端的使用。

inotify + msmtp + mutt 监控文件变化并发送邮件的配置实例

 

(一)inotify

inotify 它是一个内核级 用于通知用户文件系统变化的机制。 它监控文件系统操作,比如读、写和创建、修改、删除等等。inotify 反应灵敏,用法简单、高效。

inotify支持 2.6.13 或更新内核的 Linux 系统。

inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数。inotify-tools提供两种工具,

1.        inotifywatch: 它用来统计文件系统访问的次数

2.        另一就是inotifywait,现在是用它来监控文件或目录的变化。

 

msmtp 是一个SMTP 客户端程序,它可把邮件送给SMTP服务器。

 

 

#yum install inotify-tools

#/usr/local/inotify/bin/inotifywait-mr  /home

16/11/1016:51 /home/www/house/house/images DELETE,ISDIR

16/11/1016:51 /home/www/house/house/index.shtml DELETE

16/11/1016:51 /home/www/house/house/index.shtml.bak DELETE

16/11/1016:51 /home/www/house/house DELETE,ISDIR

16/11/1016:51 /home/www/house/index.shtml DELETE

 

参数:

-m, –monitor

接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。

-r, –recursive

监视一个目录下的所有子目录。

-e , –event

指定监视的事件。不加参数-e的话,默认就是监控所有的事件


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

inotifywait 监控脚本,将变化事件写入文件。


vi inotify-to-file.sh

#!/bin/sh

srcdir=/home/www/

FlagFile=/usr/local/inotify/log/msgflag.log

toemail="wangwang@126.com"

 

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%y/%m/%d %H:%M' --format '%T %w%f %e' -edelete,create,attrib,move$srcdir |  while read file

do

    echo "${file} " >>/usr/local/inotify/log/rsync.log 2>&1

         echo "${file} " >>/usr/local/inotify/log/msg.log2>&1

        

         cat $FlagFile | while read LINE

         do

                   echo $LINE

                   if [ "$LINE"x !="1"x ]; then

                            echo "1"> $FlagFile

                   fi

         done

done

 


(二)msmtp

msmtp 是一个SMTP 协议的客户端程序,它可把邮件送给SMTP 邮件服务器。

这里我使用它来发邮件。

 

安装:

yum install openssl-devel

 

tar -xvf msmtp-1.6.5.tar.xz

./configure  --prefix=/usr/local/msmtp  --with-ssl=openssl

make

make install

 

TLSSSL可简单理解为并列的关系。 TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。TLS1.0版本对应SSLv3.1版本。

msmtprc 配置文件内容:

vi  /usr/local/msmtp/etc/msmtprc

defaults

auth  on                                     //指定帐号认证模式

tls  on                                      // 启用或禁用TLS /SSL加密。

tls_starttls  off                                //禁用TLS加密的starttls链接方式

tls_trust_file  /etc/ssl/certs/ca-bundle.crt         //ssl 证书位置

account freemail

host  smtp.qq.com                            //邮件smtp服务器

port  465

from  87654321@qq.com

user   87654321@qq.com

password  eeeevzcdnksdcccc

logfile  /usr/local/msmtp/log/msmtp.log

account  default:freemail

 

测试:echo "a test mail." | msmtp --debug --file=./.msmtprc wangwanghan@126.com

 

注:

--debug 调试模式,会显示与SMTP服务器的交互过程。

 


(三)mutt

mutt是一个邮件命令行程序,我通过它将邮件发出去。

 

配置文件:

vi  /root/.muttrc

setcharset=”utf-8”

set sendmail="/usr/local/msmtp/bin/msmtp"       //msmtp的安装位置

set  use_from=yes

set  from=87654321@qq.com                     //使用的邮箱

set  envelope_from=yes                         //设置从上面邮箱发信

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

vi  file-to-email.sh        #设置crond计划任务,每2分钟执行一次。对inotify监控写入的文件内容使用QQ邮箱发送出去。

#!/bin/sh

FlagFile=/usr/local/inotify/log/msgflag.log

MsgFile=/usr/local/inotify/log/msg.log

 

toemail=”wangwang@126.com”                                                                                           # 接收的邮箱

CCAddress="233332441@qq.com,4121881541@qq.com,27564190021@qq.com"                     #抄送的邮箱

 

cat $FlagFile | while read LINE

do

echo $LINE

         if[ "$LINE"x = "1"x ]; then  #标识等于1有消息要通过email发送

                   cat $MsgFile|/usr/bin/mutt  -s "邮件标题inotify测试"  –c $CCAddress  $toemail

                  

                   if [ $? -eq 0];then

                            echo"" >$MsgFile

                            echo"" >$FlagFile

                   fi      

fi

done

 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值