GPTMail收不到AWS登录验证码邮件的问题已修复

最近遇到一个诡异的现象,通过GPTMail注册AWS账号,注册过程中可以正常接收到邮件,注册成功后的邮件也可以收到,但是唯独登录AWS账号时的登录验证码邮件收不到,导致账号无法登录,已登录状态的账号也无法更改邮箱(修改邮箱也需要登录验证码)。查看日志也找不到任何相关的邮件痕迹。正好不久前也有使用GPTMail的朋友也反映了同样的问题,于是今天抽空看了下。

在AI的辅助分析下最终找到了原因,如果存在其他特定邮件收不到的问题已经也会一并修复了:

问题总结

原因: AWS 对于敏感邮件(如登录验证码)有严格的安全策略,强制要求接收方服务器支持 STARTTLS 加密传输。 由于此前的 SMTP 服务器只支持明文传输,AWS 在建立连接握手阶段发现不支持加密后,为了保护验证码安全,直接断开连接并拒绝发送。这导致了邮件丢失且服务端没有任何业务日志。

之前的两个错误推测及排除原因:

  1. 域名被误停用:测试确认域名状态正常。
  2. 解析失败:如果是解析失败,至少会有接收数据的日志,但因为连接在握手阶段就断了,所以日志为空。

修复方案

已通过代码修改解决了此问题:

  1. 启用 TLS 支持: 修改代码

    ,使其能够读取 SSL 证书文件,并开启 
    STARTTLS
     功能。

  2. 配置证书路径: 在代码中

    添加了 
    SMTP_CERT_FILE
     和 
    SMTP_KEY_FILE
     两个环境变量配置项。

  3. 优化身份标识 (HELO): 将服务器自报家门的名字从 

    localhost
     改为了配置的真实域名,避免被严格的反垃圾策略拒绝。

现在只要配置了正确的证书路径并重启服务,AWS 就能识别出服务器支持加密,从而正常发送验证码邮件。


Previous Post
No Comment
Add Comment
comment url