阿里云ECS屏蔽25端口,官方建议使用465 SSL端口发送邮件
阿里云ECS VPC网络,搭建了zabbix,想通过三方邮件系统发送邮件,本机开虚拟机测试发邮件一切正常,到阿里ECS的时候邮件各种发不出去,到处找原因,最后度娘告诉了我真想,原来阿里把25端口屏蔽了。
尝试解封,呵呵...继续找度娘 谷哥,说是可以绕开25端口,用465端口,步骤如下(先不要操作,我在测试机上按一下步骤成功使用465发送了邮件,但阿里云上ECS貌似不需要这些步骤就可以直接使用465发成功):
1、请求数字证书(这里使用126邮箱)
#创建目录,用于存放数字证书
mkdir -p /root/.certs
#向126请求证书
echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/126.crt
打印如下内容:
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
verify return:1
depth=0 C = CN, L = Hangzhou, O = "NetEase (Hangzhou) Network Co., Ltd", OU = Mail Dept., CN = *.126.com
verify return:1
DONE
#增加一个证书到证书数据库中
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/126.crt
#再增加一个证书到证书数据库中
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/126.crt
#列出目录中的证书
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
GeoTrust SSL CA C,,
2、126邮箱打开smtp并获取客户端授权码,以及设置客户端授权密码
步骤:设置--POP3/SMTP/IMAP 开启
客户端授权密码 开启
3、若有如下报错(证书不被信任)
Error in certificate: Peer's certificate issuer is not recognized.
解决办法:
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 126.crt
显示内容:Notice: Trust flag u is set automatically if the private key is present.
4、如果以后要通过服务器直接发送邮件而不是通过zabbix来发邮件,可能会遇到一下问题,这里也做下记录:
革命先驱者:https://www.cnblogs.com/yunweis/p/8149242.html
发邮件报错如下:
Error initializing NSS Unknown error -8015.
以root用户就可以发送,其他用户不行。 (由于上面的文章介绍,生成的证书目录放在了root下,这样会导致其他用户没有可读和执行权限)
解决办法是 将证书文件目录:certs/ 移动到一个755权限的地方即可。如/etc下 一定要保证其他用户有读取和执行的权限,否则其他用户无法发送邮件。
5、zabbix配置变更如下:
变更前:
变更后:
再次触发报警,邮件发送成功,以上步骤线下实测,结果OK。
但阿里云ECS只将做了第5步调整,就成功发送邮件。