在搭建zabbix监控时,要使用邮件报警提醒,最好是使用163邮箱,比较容易设置smtp。
1、首先要设置邮箱启用smtp,参考https://blog.youkuaiyun.com/suxiaohanqi/article/details/56844087
给你的邮箱设置一个客户端授权密码。
注意,此密码不能与邮箱的登陆密码相同。
接下来的脚本中,都使用的是这个客户端授权密码。
2、查阅资料后发现2个比较方便的发邮件方式,更推荐使用第二种使用python:
(1) 一个是使用mailx,详细参考https://blog.youkuaiyun.com/outman1023/article/details/79199947
yum -y install mailx后,
vim /etc/mail.rc (如果mail.rc文件没有,就手动创建,添加如下内容)
set sendcharsets=iso-8859-1,utf-8
set from=xxx@163.com
set smtp=smtp.163.com:25
set smtp-auth-user=xxx@163.com
set smtp-auth-password=****
- 注意,密码是163邮箱的客户端授权密码,不是邮箱登陆密码
以下命令自己给自己发个邮件试试,成功
echo "zabbix test mail" |mail -s "zabbix" xxx@163.com
(2)另外一个方式就是python程序了。参考https://blog.youkuaiyun.com/wszll_alex/article/details/77247696
本人比较倾向于使用新的软件,于是从官网下载安装Python-3.6.4.tgz
tar xvf Python-3.6.4.tgz -C /usr/src
cd /usr/src/Python-3.6.4
./configure --prefix=/usr/local/python364
make
make install
创建一个send_mail.py发邮件脚本文件,内容如下:
注意,口令是163邮箱的客户端授权密码,不是邮箱登陆密码
#!/usr/local/python364/bin/python3.6
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
from sys import argv
mailto_list=[]
mail_host="smtp.163.com:25" #设置服务器
mail_user="xxxxx@163.com" #发件用户名(换成自己的)
mail_pass="xxxxxxxx" #口令(换成自己的)
#mail_postfix="163.com" #发件箱的后缀
debug_level=0 #是否开启debug
def send_mail(to_list,sub,content):
me=mail_user
msg = MIMEText(content,_subtype='plain',_charset='utf-8')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.set_debuglevel(debug_level)
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception as e:
print('except:',e)
return False
if __name__ == '__main__':
try:
mailto_list=argv[1].split(';')
sub=argv[2]
content=argv[3]
except:
print("python send_mail.py 'user1@xx.com;user2@xx.com' sub content")
exit()
if send_mail(mailto_list,sub,content):
print("发送成功")
else:
print("发送失败")
然后添加可执行权限 chmod +x send_mail.py
发邮件给自己测试:
./sendmail.py 'xxx@163.com' sub content