阿里云ECS使用python smtplib连接smtp服务器Timeout
目录
在邮件的开发测试过程中,遇到一个邮件发送的问题
使用python的smtplib发送邮件卡死,smtplib.SMTP.connect
函数长时间不返回超时,具体代码如下:
|
|
该段代码是最简单的一个smtplib发送邮件过程,在实际测试中发现,在本机windows中执行良好,没有发生阻塞
但是在上传到阿里云的CentOS系统中时发现系统卡在server.connect
过程中,无法连接
不管换用smtplib.SMTP(smtp_host)
还是加上超时时间都没有效果,换用自己安装的虚拟机CentOS执行仍然没有问题
可见是跟环境有问题,进行抓包分析发现正常环境的tcp握手正常,而在阿里云上tcp握手无法成功,不断重发SYN握手请求
怀疑是防火墙DROP了握手包,使用iptables --list
查看防火墙策略,发现没有配置策略
怀疑是阿里云的安全策略问题,登陆阿里云后台查看安全策略没有问题
最终在阿里云的安全公告中发现阿里云封禁25的外向请求,具体说明见https://help.aliyun.com/knowledge_detail/56130.html
替换使用smtplib.SMTP_SSL()
使用SSL端口进行连接发送邮件避开25端口的使用,测试邮件可以正常发送