nodemailer SMTP连接报ETIMEDOUT错误 其他设备可正常连接如何解决
故障原因说明
你遇到的ETIMEDOUT报错是TCP连接到SMTP服务器587端口超时,相同配置其他系统可正常运行,说明问题出在当前系统的网络/权限限制层面,按以下步骤调整系统设置即可解决:
排查调整步骤
第一步:验证基础网络连通性
先在本机终端执行命令测试SMTP服务器的可达性:# 测试服务器是否能ping通,确认DNS解析和路由正常 ping smtp.in-sciencelabs.com # 测试587端口是否可连通,确认端口没有被拦截 telnet smtp.in-sciencelabs.com 587 # 也可以用nc工具测试 nc -zv smtp.in-sciencelabs.com 587如果ping不通,先检查本机DNS配置,可尝试更换为公共DNS(114.114.114.114、8.8.8.8)后重试。如果能ping通但端口连接超时,继续往下排查。
第二步:调整系统防火墙/安全组规则
- Windows系统:进入「Windows Defender防火墙-高级设置-出站规则」,检查是否存在禁止587端口TCP出站的规则,可临时关闭防火墙测试连通性验证是否为防火墙拦截。
- Linux系统:执行
sudo iptables -L -n查看iptables规则,确认没有DROP 587端口的限制;如果使用ufw防火墙,执行sudo ufw allow out 587/tcp开放出站端口。 - 云服务器场景:额外登录云服务商控制台,在安全组配置中添加允许TCP 587端口出站的规则,多数云厂商默认会封禁邮件端口防范垃圾邮件。
第三步:确认运营商端口限制
部分家庭宽带、小型运营商会默认封锁25、587、465等邮件常用端口的出站连接,你可以联系运营商申请解封端口,也可以尝试切换为465端口+SSL加密的方式连接,修改nodemailer配置如下:"nodemailer" : { "host": "smtp.in-sciencelabs.com", "port": 465, "secure": true, // 465端口需开启SSL "auth": { "user": "myuser.com", "pass": "myp@ssword" } }第四步:检查系统代理设置
如果当前系统开启了全局代理,可能会导致SMTP连接路由异常,可临时关闭代理后重试,也可以在nodemailer配置中添加跳过代理的参数适配当前网络环境。
内容的提问来源于stack exchange,提问作者Divya rani
相关产品推荐
相关产品推荐

