今天在线上配置数据库服务,在本机测试的时候写了一个当检测到MySQL宕机的时候会发送一封邮件到指定的账户提醒,部署到阿里云之后其他一切正常,就是邮件发送不成功,折腾了我一天
原来是因为国家政策,为了防止疯狂发送垃圾邮件,阿里云关闭了25端口(安全组无法开启25端口),而我在本机测试的时候是直接使用Linux自带的发送邮件功能,指令如下:
echo "`date` mysql is stop" | mail -s "mysql is stop" xxxx@qq.com
上述指令将向xxxx@qq.com邮箱发送一封标题为“mysql is stop”,内容为“系统时间+ mysql is stop”的邮件,发件人没有设置,也能发送成功,但在许多邮箱中将被识别为垃圾邮件,需要在垃圾邮件箱中查询
但这在阿里云服务器上是不成功的,指令虽然不会报错,但是阿里云不会发送邮件,因为25端口是被关的。
于是寻思着那就用外部邮箱服务器发送邮件呗,上网搜了一通,全都失败,最接近成功的是下面这个教程:
https://blog.csdn.net/zh314js/article/details/76038868
然后就蒙蔽了,折腾了好久都没找到原因,后来经过高人指点,说要获得ssl证书通过465端口阿里云服务器才能通过外部邮箱服务器发送邮件,过程如下:
1.关闭其他的邮件工具