背景
系统默认的postfix发送邮件使用的是25端口,默认被云厂商屏蔽
通过配置mailx ,可以使用465端口发送邮件
mailx是什么?
mailx是类似foxmail或者outlook一样的邮件发送客户端
具体部署和配置
yum install mailx -y
cat << EOF >> /etc/mail.rc
set from=xxx@zhufunin.com
set smtp="smtps://smtp.zhufunin.com:465"
set smtp-auth-user=xxx@zhufunin.com
set smtp-auth-password=XxXxXx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
EOF
测试发送邮件
echo test | mailx -v -s "centos配置/etc/mail.rc发邮件" xxxxxxx@qq.com
自建服务器,如果发送失败
建议检查SPF设置是否太严格
vi命令把下面的代码放入sendmail.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import sys
smtpaddr = 'smtp.zhufunin.com:465'
myemail='xxx@zhufunin.com'
password='xxx&xxx'
#f = open('/usr/local/zabbix/.passwd','r')
#password = f.readline().strip()
recvmail=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
msg = MIMEText("""%s"""%(content), "plain", "utf-8")
msg['Subject'] = Header(subject, 'utf-8').encode()
msg['From'] = myemail
msg['To'] = recvmail
try:
smtp = SMTP_SSL( smtpaddr )
smtp.login(myemail, password)
smtp.sendmail(myemail, recvmail.split(','), msg.as_string())
smtp.quit()
print("success")
except Exception as e:
print("fail:"+str(e))
上面的代码放入文件sendmail.py
chmod 7755 sendmail.py
./sendmail.py yourmail@test.com hello "Dear my son \n Goodbye"