我司用的西部数码云服务器做邮件报警,我看阿里云也是屏敝了25端口。
所以打脸的说,我做了两天才搞通。
做这个报警,我反正操碎了心,微信有注册过公众号,所以微信做了一天多都没做通,听说跟微信公众号有冲突,搞不明白,转战邮件。
sendEmail默认端口为25,我不会绕25,一系列报错:Nov 21 16:58:05 ebs-49310 sendEmail[31711]: ERROR => Timeout while connecting to smtp.exmail.qq.com:25 There was no response after 60 seconds.
报错还有如下情况:smtp-server: 535 Error: ȫʹԃ˚ȨëµȂ¼¡£Ъȩȫ¿´: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256"
/root/dead.letter" 11/293
. . . message not sent.
如果你也遇到以上情况,那么试试下面吧
首先你得有邮箱的授权码
如果这里是关闭请开启,如果是开启状态但不知道授权码的,那关了再开一次,记录下授权码:本人授权码为jjtpupmyrtwkbjhc
有了授权码,下面言归正传:
yum -y install mailx
ln -s /usr/bin/mailx /usr/bin/mail
chown -R zabbix.zabbix /usr/bin/mail
vim /etc/mail.rc
如果你的/etc/mail.rc里有配置的set smtp-use-starttls,请注释掉,配置这行会验证证书失败。
这个玩意,关了 systemctl stop postfix.service
生成qq邮箱的ssl证书
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
进入证书存放目录,cd /root/.certs/
返回以下提示即为正常:
mailx -s "邮箱测试" 402252408@qq.com < message_file.txt无返回值即发送成功
echo test | mail -v -s " test" 402252408@qq.com (也可以实现邮件发送的)
成功。
配置zabbix网页邮件报警
对了,忘了附脚本图了,回补
#!/bin/bash
### jiayan
messages=`echo $3 | tr '
' '
'`
subject=`echo $2 | tr '
' '
'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
修改zabbixserver的配置文件
vim /etc/zabbix/zabbix_server.conf
修改为你的mailx.sh脚本路径
其次配置网页端
然后宕掉某个在监控状态的服务器,出现报警提示
如果,你也出现以上已送达,却邮箱没反应的情况,那么你会在你的日志里看到以下内容:
Error initializing NSS: Unknown error -8015.
. . . message not sent.
未发送成功。
接着往下做吧少年,一波三十折,你已经经历了二十九折了。
这个是权限问题,因为证书是在root下生成的,所以其它用户没有执行权限,所以了
cp -a /root/.certs /tmp
chmod -R 777 /tmp
然后再修改下/etc/mail.rc里的nss-config-dir (别怪我没早说这个问题,这个问题也是我做到这里才发现的,见谅)
再次宕掉服务,邮件报警实现。