linux下發郵件報警提醒的兩個方法
阿新 • • 發佈:2019-02-05
在搭建zabbix監控時,要使用郵件報警提醒,最好是使用163郵箱,比較容易設定smtp。
1、首先要設定郵箱啟用smtp,參考https://blog.csdn.net/suxiaohanqi/article/details/56844087
給你的郵箱設定一個客戶端授權密碼。
注意,此密碼不能與郵箱的登陸密碼相同。
接下來的指令碼中,都使用的是這個客戶端授權密碼。
2、查閱資料後發現2個比較方便的發郵件方式,更推薦使用第二種使用python:
(1) 一個是使用mailx,詳細參考https://blog.csdn.net/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" [email protected]
(2)另外一個方式就是python程式了。參考https://blog.csdn.net/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="[email protected]" #發件使用者名稱(換成自己的)
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 '[email protected];[email protected]' sub content")
exit()
if send_mail(mailto_list,sub,content):
print("傳送成功")
else:
print("傳送失敗")
然後新增可執行許可權 chmod +x send_mail.py
發郵件給自己測試:
./sendmail.py '[email protected]' sub content