利用mutt+msmtp在linux下通过脚本自动发邮件通知

发表于 LINUX 分类,标签:

因为公司服务器有时候有的服务会死掉,想找个方法在出问题的时候发邮件给出通知。

于是开始在网上找既简单又有效的解决方案,mutt+msmtp,看了几篇帖子,照着搞定了。现在整理如下。

①下载msmtp并安装

wget http://nchc.dl.sourceforge.net/project/msmtp/msmtp/1.6.5/msmtp-1.6.5.tar.xz
xz -d msmtp-1.6.5.tar.xz  #将msmtp-1.6.5.tar.xz解压为msmtp-1.6.5.tar
tar -xvf msmtp-1.6.5.tar
cd msmtp-1.6.5 
./configure --prefix=/usr/local/msmtp 
make && make install 
cd /usr/local/msmtp/
mkdir etc #配置文件目录和配置文件都要自己建 
cd etc
vim msmtprc #手动创建配置文件 
account default 
host smtp.163.com #你的发送邮件服务器 
port 25 
from example@163.com #要从哪个邮箱发出 
auth login
tls off
user example@163.com #邮箱用户名 
password PASSWORD #邮箱明文密码,如果觉得不安全可以把文件改为600属性
logfile /usr/local/msmtp/etc/mmlog  #我直接把日志文件放这里了。

保存退出。简单测试下:

/usr/local/msmtp/bin/msmtp shoujianxiang@163.com #收件箱

输入一些内容用ctrl+d结束。然后到邮箱看看有没有收到,如果提示错误根据错误代码和日志找原因

下面开始安装 mutt这个东西,我是centos6.5,我就直接yum了

yum -y install mutt

安装完成后要手动给他建立一个配置文件,

vim /etc/Muttrc 
set sendmail="/usr/local/msmtp/bin/msmtp" #你的msmtp命令路径 
set use_from=yes 
set realname="example@163.com" 
set editor="vim"

保存退出。现在可以测一下了。

echo "testmail" | mutt -s "邮件标题测试" -a /etc/hosts shoujianxiang@163.com

这里的-a 是指添加附件,如果是多个附件的话就 多加几个 -a 文件名(附件我没有添加成功)

mutt -s "邮件标题--测试"  shoujianxiang@163.com < /etc/issue
cat /etc/issue | mutt -s "邮件主题" shoujianxiang@163.com

上面两行的意思都是以 /etc/issue 文件的内容作为邮件内容。

好啦,邮件功能好啦,接下来就是脚本了,脚本写好后就可以在特定条件下发邮件了。

我是直接用nmap扫描服务端口,如果服务端口异常,那就发邮件。

然后弄个定时任务就好了,我定了一分钟一次,如果服务挂掉,那么将一分钟发一份邮件,直到修复为止。

crontab -e
*/1 * * * * /script.sh

好啦,就到这里吧。这东西不用自己搭建邮件服务器,简单实用。




欢迎加2000人技术QQ群一起学习探讨linux相关知识:100094104





0 篇评论

发表我的评论