阿里云禁用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 from=xx@qq.com set smtp=smtps://smtp.qq.com:465 set ssl-verify=ignore set nss-config-dir=/root/.certs #证书所在目录 set smtp-auth-user=xx@qq.com 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.邮件发送测试

问题分析:

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

解决方案一:

chmod 777 * /root/.certs ll

发送邮件尝试:

echo "邮件正文" | mail -s "邮件主题1" 145..2664@qq.com

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

再次分析:

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

解决办法:

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

7.更改证书目录

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

8.发送邮件测试

echo "邮件正文" | mail -s "邮件主题" 145...664@qq.com

方案二:

**这里可能有人要问,既然知道了放在/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/

9.文件授权

cd /tmp/.certs chmod 777 * ll

10.邮箱发送验证

echo "邮件正文" | mail -s "邮件主题1" 145...664@qq.com

温馨提示:

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