You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

亚马逊EC2上的Node.js应用发送邮件报ETIMEDOUT连接超时错误

问题排查与解决方向

你遇到的ETIMEDOUT CONN错误是SMTP连接建立阶段超时,本地运行正常、代码此前在EC2也可正常运行,可直接排除代码逻辑和配置本身的正确性问题,按以下优先级排查即可:


1. 先验证EC2实例出口网络连通性

登录你的EC2实例,直接用系统命令测试到SMTP服务器465端口的连通性,确认网络层面是否能通:

# 用telnet测试
telnet <你的SMTP服务器域名/IP> 465
# 或用nc测试
nc -zv <你的SMTP服务器域名/IP> 465

如果命令执行后提示连接超时/失败,说明是EC2层面的网络拦截,和业务代码无关。

2. 检查EC2安全组出站规则

确认你的EC2实例关联的安全组出站规则开放了TCP 465端口的访问权限:要么允许到所有地址(0.0.0.0/0)的465端口流量,要么明确允许到你所用SMTP服务器IP的465端口流量。安全组规则被误改是这类问题的常见诱因。

3. 排查AWS EC2邮件端口默认限制

AWS默认会限制EC2实例对公网25、465、587这类常用邮件端口的出站流量,用于防范垃圾邮件风险。如果之前运行正常突然被限制,大概率是你的EC2公网IP被AWS判定存在异常发信行为,触发了端口封禁。
你可以直接提交AWS工单申请解除对应EC2实例的邮件端口限制,申请时说明你的合法发信场景,一般1-2个工作日即可生效。

4. 确认SMTP服务商侧的IP封禁

你所用的邮件服务提供商也有可能把你的EC2公网IP加入了黑名单,触发原因包括短时间发信量超过阈值、该IP此前有不良发信记录等。你可以联系邮件服务商确认你的EC2公网IP是否在封禁列表中,是的话走官方解封流程即可。

5. 临时验证方案

你可以先将发信端口切换为587(需你的SMTP服务商支持),同时调整nodemailer配置为标准写法,测试是否能连通:

let transporter = nodemailer.createTransport({
    host: mailConfig.host,
    port: 587,
    secure: false, // 587端口对应false,使用STARTTLS加密
    auth: {
        user: mailConfig.user,
        pass: mailConfig.pass
    },
    tls: { rejectUnauthorized: false }
});

注:你原配置中的secure: "SSL/TLS"写法不规范,nodemailer的secure参数仅接收布尔值,465端口对应secure: true,该写法虽然部分版本兼容,但建议改为标准写法避免潜在问题。


内容的提问来源于stack exchange,提问作者Adison Candido

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:36:04