阿里云禁用25号端口:

出于安全考虑,阿里云默认封禁TCP 25端口出方向的访问流量,即你无法在阿里云上的云服务器通过TCP 25端口连接外部地址。
TCP 25端口的出方向封禁可能影响您通过TCP 25 端口连接第三方邮件服务商的SMTP服务器对外部发送邮件。
如果您需要使用阿里云上的云服务器对外部发送邮件,建议您使用阿里云邮产品或者使用第三方邮件服务商提供的465端口。
ps:其实华为云服务器也禁用25端口了

解决方案:

1.投诉,申请解禁25端口
结果:根据阿里云解决方案,向阿里云申请解封25号端口,但其也只能用第三方smtp,不可本机发送邮件(实际不给开,全封禁了)
2.不用 25端口号,改用 smtps ssl 465 端口号,安全发送邮件
结果:经测试,可解决问题

操作步骤如下:

1.安装邮箱服务

yum install mailx -y

2.QQ邮箱开启第三方授权码及排坑

可参考博客 https://blog.51cto.com/13760351/2384001

3.改变配置

vim /etc/mail.rc
set [email protected]
set smtp=smtps://smtp.qq.com:465
set ssl-verify=ignore
set nss-config-dir=/root/.certs #证书所在目录
set [email protected]
set smtp-auth-password=授权码
set smtp-auth=login

4.创建证书目录

mkdir /root/.certs

5.ssl 授权

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
cd  /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs/./ -i qq.crt
certutil -L -d /root/.certs

6.邮件发送测试

阿里云服务器Centos7 配置465端口号发送邮件

问题分析:

刚导入证书文件没有给其授权,很可能是权限不足问题

解决方案一:

chmod 777 * /root/.certs
ll

阿里云服务器Centos7 配置465端口号发送邮件

发送邮件尝试:

echo "邮件正文" | mail -s "邮件主题1" [email protected]

测试结果:还是无法发送邮件

再次分析:

/root/.certs 是root用户家目录,一般用户无法进去读取文件

解决办法:

换路径,证书文件授权
mkdir /tmp/.certs
mv /tmp/.certs
cd /tmp/.certs
chmod 777

ll

阿里云服务器Centos7 配置465端口号发送邮件

7.更改证书目录

vim /etc/mail.rc
set [email protected]
set smtp=smtps://smtp.qq.com:465
set ssl-verify=ignore
set nss-config-dir=/tmp/.certs #更改证书所在目录
set [email protected]
set smtp-auth-password=授权码
set smtp-auth=login

阿里云服务器Centos7 配置465端口号发送邮件_第1张图片

8.发送邮件测试

echo "邮件正文" | mail -s "邮件主题" [email protected]

阿里云服务器Centos7 配置465端口号发送邮件_第2张图片
阿里云服务器Centos7 配置465端口号发送邮件_第3张图片

方案二:

这里可能有人要问,既然知道了放在/root目录下面不行,那么一开始就把证书导入/tmp目录不就可以了吗?
做出如下尝试:

echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d /tmp/.certs/ -i /tmp/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d /tmp/.certs -i /tmp/.certs/qq.crt
cd /tmp/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d /tmp/.certs/./ -i qq.crt
certutil -L -d /tmp/.certs/

阿里云服务器Centos7 配置465端口号发送邮件_第4张图片

9.文件授权

cd /tmp/.certs
chmod 777 *
ll

10.邮箱发送验证

echo "邮件正文" | mail -s "邮件主题1" [email protected]

阿里云服务器Centos7 配置465端口号发送邮件

温馨提示:

1.网上大多数文档都是证书导入到/root目录下面,所以这里介绍是导入/root目录下出现问题,再次解决的办法
2.一般情况,我们很少单独发送邮件,都是配合监控工具一块使用,如zabbix, 还要去证书所在目录下添加属组: chown zabbix:zabbix *
3.安装证书,并不是一定要导入/tmp目录,只要是非/root目录都可以的。
4.文章只演示了qq邮箱,其实163邮箱也可以,方法类似