寻求Gmail不再定期拦截AWS SMTP访问的永久解决方案
永久解决AWS SMTP访问Gmail被频繁拦截的方案
我之前也碰到过一模一样的糟心事——靠改密码临时救急根本不是长久之计,结合Google现在的安全政策和AWS的服务特性,给你几个靠谱的永久解决方案:
1. 用Google App Passwords替代普通密码(快速过渡方案)
Google早就逐步淘汰了"不太安全的应用"权限,所以开启它基本没用。如果你的Google账号开了两步验证(2FA),可以生成App Passwords专门给AWS SMTP用:
- 登录Google账号安全设置,找到"App Passwords"(只有开了2FA才会显示这个选项)
- 选"其他(自定义名称)",输入比如"AWS SMTP",点击生成16位密码
- 把这个密码替换AWS SMTP配置里的原邮箱密码
这种方式比直接用普通密码安全得多,也不会被Google的安全系统轻易判定为可疑登录。
2. 切换到AWS SES原生发送(长期稳定首选方案)
与其绕着Gmail的SMTP碰壁,不如直接用AWS自己的Simple Email Service(SES)来发邮件——这本来就是AWS专门设计的邮件服务,稳定性拉满:
- 登录AWS控制台进入SES,先验证你要发信的域名或邮箱地址(避免被当成垃圾邮件)
- 配置DKIM和SPF记录:在你的域名DNS服务商后台,添加SES提供的DKIM密钥,以及SPF记录(比如
v=spf1 include:amazonses.com ~all),这能大幅提升邮件可信度,从根源减少被拦截的概率 - 之后直接用SES的SMTP端点或者AWS SDK发邮件,彻底摆脱对Gmail服务器的依赖
用SES不仅不会被Gmail频繁拦截,还能享受AWS的邮件投递统计、 bounce处理等实用功能,适合长期使用。
3. 配置OAuth2认证连接Gmail SMTP(适合必须用Gmail的场景)
如果因为业务需求必须用Gmail的SMTP,那Google现在最推荐的是OAuth2认证替代密码登录,这是最安全也最不容易被拦截的方式:
- 登录Google Cloud Console,创建新项目并启用Gmail API
- 创建OAuth客户端ID,选择"桌面应用"或"其他"类型,获取客户端ID和密钥
- 通过授权码流获取刷新令牌(可以用Python的
google-auth库这类工具快速完成) - 在AWS的SMTP配置里切换到OAuth2认证模式,填入客户端ID、密钥和刷新令牌
这种方式下,AWS是通过合法的OAuth2授权访问Gmail SMTP,Google不会判定为可疑登录,从根本上解决拦截问题。
为啥之前的方法没用?
Google现在对密码登录的第三方应用管控极严,AWS的SMTP服务器IP属于共享IP池,很容易被Google的安全系统标记为"非信任环境",所以改密码只能临时起效。而"不太安全的应用"权限已经被Google逐步停用,多数账号即使开启也不会生效了。
内容的提问来源于stack exchange,提问作者user196711
相关产品推荐
相关产品推荐

