某某茶叶有限公司欢迎您!
金沙棋牌在线 > 服务器&运维 > Zabbix利用msmtp+mutt发送邮件报警

Zabbix利用msmtp+mutt发送邮件报警

时间:2020-04-21 06:30

在Linux里,很多人都会使用到邮件报警,而且这方面的软件也众多,常见的像SendMail, sendEmail, Postfix等等,它们的优缺点我就不说了,使用上也各有所爱。

金沙棋牌在线 1 

今天我要给大家介绍的mutt,也许大家也不陌生,网上太多关于mutt和sendmail或者跟msmtp合作使用的教程。其实,mutt非常的强大只要你仔细研究一下官方文档。

[root@86 ~]# wget http://jaist.dl.sourceforge.net/project/msmtp/msmtp/1.4.32/msmtp-1.4.32.tar.bz2



百度网盘:http://pan.baidu.com/s/1o8w68ci



[root@86 msmtp-1.4.32]# pwd
/root/msmtp-1.4.32
[root@86 msmtp-1.4.32]# mkdir -p  /usr/local/msmtp/etc

[root@86 msmtp-1.4.32]#./configure --prefix=/usr/local/msmtp --with-ssl=openssl



[root@86 msmtp-1.4.32]# make && make install

 配置msmtp

[root@86 msmtp-1.4.32]# mkdir -p  /usr/local/msmtp/etc



vim  /usr/local/msmtp/etc/msmtprc
account default
host smtp.163.com //SMTP服务器
port 25
from clnking@163.com
auth login
tls off
user clnking //邮箱用户名 是clnking 而不是clnking@163.com
password xxxxxx #是授权码,而不是邮箱登录密码(授权码是用于登录第三方邮件客户端的专用密码)注意文章开头的图片
logfile /var/log/zabbix/msmtp.log //日志路径



测试msmtp
# cat /usr/local/msmtp/etc/msmtprc 
account default
host smtp.163.com
port 25
from username01@163.com
auth login
tls off
user username01
password xxxxx #这里不是客户端受权密码,并非邮箱的登录密码
logfile /var/log/mmlog
# cat /etc/Muttrc.local 
# Local configuration for Mutt.
set sendmail="/apps/msmtp/bin/msmtp"
set from="clnking@163.com"
set use_from = yes
set editor="vim"
set realname="zabbix of XXXX.com"

[root@86 msmtp-1.4.30]# /usr/local/msmtp/bin/msmtp lin.chen@xinxianm.com  (邮箱必须是 /usr/local/msmtp/etc 里配置的邮箱)所以下面会报错!!(别的信箱也可以)
hello
ctl +d #发送
msmtp: the server did not accept the mail
msmtp: server message: 554 DT:SPM 163 smtp4,DtGowAAnErU7+ExXz+8hAQ--.9856S2 1464662088,please see http://mail.163.com/help/help_spam_16.htm?ip=123.57.36.227&hostid=smtp4&time=1464662088
msmtp: could not send mail (account default from /usr/local/msmtp/etc/msmtprc)
后补:
[root@86 etc]# yum install mutt
修改配置文件:
cat /etc/Muttrc.local 
# Local configuration for Mutt.
set sendmail="/usr/local/msmtp/bin/msmtp"
set from="username01@163.com"
set use_from=yes
set editor="vim"
set realname="zabbix of xxxxx.com"


[root@86 etc]# echo "zabbix test "|mutt -s "chenlin" clnking@163.com
[root@86 etc]# echo "zabbix test "|mutt -s "chenlin" lin.chen@xinxianm.com
======================================================================================
[root@86 msmtp-1.4.30]# /usr/local/msmtp/bin/msmtp clnking@163.com
kkkkkkkkkkkkk^[  
但信箱里没内容
cat /var/log/mmlog
May 31 10:47:00 host=smtp.163.com tls=off auth=on user=clnking from=clnking@163.com recipients=clnking@163.com mailsize=15 smtpstatus=250 smtpmsg='250 Mail OK queued as smtp4,DtGowADXJJQP+0xX0LciAQ--.5878S2 1464662820' exitcode=EX_OK

 因为没有配置:MUTT

[root@86 msmtp-1.4.32]# yum install mutt



[root@86 ~]# vi /etc/Muttrc
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set editor="vim"
set realname="clnking@163.com"

[root@86 ~]# echo "test mail 2016 content tom2" |mutt -s "test kkkkk" clnking@163.com
进入邮箱  收到邮件 ------》测试成功!

金沙棋牌在线 2

 

系统环境:CentOS 6.5

 脚本:

0、在正式安装mutt之前

先检查一下两个安全组件。

OPENSSL:

openssl version -a #检查安装及版本信息

SASL(系统一般已经自带):

rpm -qa | grep sasl

查询到如下即可:

cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-devel-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-2.1.23-15.el6_6.2.x86_64

如果sasl没有运行,先启动:

/etc/init.d/saslauthd start

最好是加入到自启动项目中去:

chkconfig saslauthd on

因为发送邮件的时候会需要用到安全认证。

[root@86 alertscripts]# pwd
/usr/local/zabbix/share/zabbix/alertscripts
[root@86 alertscripts]# grep "AlertScriptsPath" /usr/local/zabbix/etc/zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
[root@86 alertscripts]# cat send_mail 
#!/bin/bash
echo "time:$(date +%m-%d-%H:%M:%S)" >>/var/log/zabbix/test.log
echo "p3_$3" >>/var/log/zabbix/test.log
echo "p2_$2" >>/var/log/zabbix/test.log
echo "p1_$1" >>/var/log/zabbix/test.log
/bin/echo "$3"| /usr/bin/mutt -s "$2" $1
echo "send end ..." >> /var/log/zabbix/test.log
echo "" >> /var/log/zabbix/test.log  

1、安装

金沙棋牌在线,官方网站上下载最新版本。

# 解压后进入mutt目录
cd /root/mutt-1.6.0

# 编译:
./configure --prefix=/usr/local/mutt --enable-pop --enable-smtp --with-ssl --with-sasl
# 说明
--enable-pop 启用pop
--enable-smtp 启用smtp
--with-ssl --with-sasl 在启用上述协议的情况下,必须使用更安全的加密

PS: 因为我用的测试帐号是QQ邮件,qq邮件使用smtp协议的时候要求必须使用ssl安全连接,而在mutt里使用安全连接又必须使用sasl加密,所以上述2个安全组件在编译安装的时候得加上。要不然发送邮件的时候会出现“SMTP authentication requires SASL”或者另外一个跟ssl有关的错误。

# 安装
make && make install

 #开始没成功不知道为什么后来做了以下操作,但当时还没成功 ,第二天成功了!

2、配置文件

ln -s /usr/local/msmtp/bin/msmtp /usr/local/bin/msmtp
[root@86 alertscripts]# ps -ef|grep "zabbix_server"
zabbix    8734     1  0 03:00 ?        00:00:00 /usr/local/zabbix/sbin/zabbix_server#并没有跟-c /usr/local/zabbix/etc/zabbix_server.conf

方法1:

安装好后,拷贝一份安装目录下/usr/local/mutt/etc/的配置文件Muttrc到/root/.muttrc,也可以直接修改配置文件,设置读取的配置文件路径到安全目录,这样就无需拷贝了。

默认设置:

set alias_file="~/.muttrc"

 

方法2:

cat /usr/local/mutt/etc/Muttrc | grep -v ^# | grep -v ^$ > ~/.muttrc

这样都可以得到默认的配置文件信息。

安装完成后,我们仅需要设置的信息如下:

set folder="./Mail" #设置本地的收件箱,如果不设置发送邮件的时候会提示
set from="123456789@qq.com" #设置发件人地址
set realname="张三" #发件人姓名
set smtp_pass="999999" #密码
set smtp_url="smtps://123456789@smtp.qq.com:465/" #发件人帐号和邮件主机信息,QQ邮箱必须使用安全连接
set use_envelope_from=yes #使用自定义发件人邮箱
set use_from=yes #使用自定义发件人姓名
# echo "加邮件符件"|mutt -s fujian text@test.com -a /data1/apps/mail.txt 
//邮件内容为"加邮件符件"
//主题为fujian
//如果需要发送多个人的话可以继续添加收件人
//mail.txt为附件(-a + 附件)
echo "加邮件符件"|mutt -s fujianxxxl@mail.com  xxg@163.com -a /data1/apps/mail.txt
// 同时发多人

3、测试

mutt-1.6版本的发送邮件的语法跟1.4版本有些微的差别,具体命令如下:

mutt -s "Title使用" -a /usr/local/mutt/content.txt -- rep@shoujianren.com < /root/1

说明

-s 邮件标题

-a 附件

– 后面跟上收件人信息

< 后面是邮件正文内容,也可以在前面echo xxx的形式给出。如下:

echo xxx|mutt -s "Title使用" -a /usr/local/mutt/content.txt -- rep@shoujianren.com

看吧,无需与其它软件合作,mutt就可以独立完成发送邮件,当然,接收也没问题,只是在邮件报警这个需求上用不着。

其中一个错误信息:

[root@x63 mutt]# echo "Hello" | mutt -s "Title" -- xxx@xxxx.com
TLSv1.2 connection using TLSv1/SSLv3 (AES256-SHA256)
SMTP authentication requires SASL
Could not send the message.

这是认证失败了。

发送成功的信息:

[root@x63 mutt]# echo "Hello3" | mutt -s "Title" -- xxx@xxxx.com
TLSv1.2 connection using TLSv1/SSLv3 (AES256-SHA256)

 经过一段时间的学习,对邮箱报警进行补全:

首先zabbix安装的时候是建的用户(/sbin/nologin)是不能使用bash或其它shell来登录系统,所以要改成/bin/bash