我如何找出 Gmail 为何拒绝来自我的特定 IP 范围的连接?
当我尝试使用在 Amazon EC2 服务的 Linux 机器上运行的 Django 中的电子邮件功能通过 smtp.gmail.com 发送电子邮件时,出现“连接超时”错误。
奇怪的是,我可以使用 sendmail 发送邮件,但它最初会出现相同的超时错误,然后返回到接受连接的备用服务器,例如
~$ echo -e "Subject:test subject\ntest body\n" | sendmail -v myuser@mydomain
Loading lookup modules from /usr/lib/exim/4.72-1.fc13/lookups
Loaded 0 lookup modules
LOG: MAIN
<= app@domain U=app P=local S=443
Loading lookup modules from
/usr/lib/exim/4.72-1.fc13/lookups
Loaded 0 lookup modules
delivering 1ReChV-0001Hx-Ss
Connecting to aspmx.l.google.com [74.125.93.26]:25 ... failed:
Connection timed out (timeout=5m)
LOG: MAIN
aspmx.l.google.com [74.125.93.26] Connection timed out
Connecting to ALT1.aspmx.l.google.com [173.194.66.26]:25 ... connected
这只发生在亚马逊的云中。我可以使用相同的凭据从我的本地主机连接到 smtp.gmail.com,并正常发送电子邮件。我可以从任何地方 ping smtp.gmail.com,所以这似乎不是路由或防火墙问题。
Google 没有列出他们的状态仪表板。
有问题的服务器发送的电子邮件量非常少(每天 10-20 封),因此如果它被标记为垃圾邮件,我会感到惊讶。
答案1
从 EC2 实例发送电子邮件并不是一个好主意,除非您将电子邮件交给明确同意接受您的邮件的邮件服务器。原因有很多,但主要原因是 EC2 的 IP 地址是动态的,而邮件服务器必须位于静态 IP 地址上才能接受退回邮件。
基本上,如果你想发送邮件,你需要将其发送到真实的负责将邮件递送到目的地的邮件服务器。Amazon 提供此类服务,其真实邮件服务器托管在静态 IP 地址上。
答案2
大多数时候,我看到邮件服务器出现类似的问题(从显示的日志中我了解到您连接到 ALT1.aspmx.l.google.com 但邮件未发送),禁用 TCP 窗口缩放有助于绕过(而不是解决)该问题。
我不知道您在 EC2 上运行的是什么操作系统,但如果是 Linux,您可以尝试添加:
net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_window_scaling = 0
在您的 /etc/sysctl.conf 中,然后运行 sysctl -p。
答案3
我发现当 Google 的自动保护系统怀疑有可疑活动时,它会锁定帐户/IP 地址/ActiveSync 等。
即,使用带有 POP/SMTP 的 Outlook 的用户突然无法使用 Outlook 登录。
要“解锁” IP,您可以使用网站 gmail.com 从该 IP 登录 GMail 帐户,该帐户通常只需几分钟即可生效。
否则,Google 技术支持曾经指导我https://www.google.com/accounts/UnlockCaptcha或者http://www.google.com/a/your_domain.com/UnlockCaptcha对于 ActiveSync 已锁定的帐户,无论什么都无法将其恢复。
浏览此处获取更多信息: http://www.gmailhelp.com/2009/10/unlocking-googles-gmail-captcha/
答案4
问题似乎已经自行解决。由于我仍然可以使用其他 Google 服务器发送电子邮件,所以我怀疑这是我的服务器和 Google 之间的一些小网络问题。