Dar*_*rme 5 email smtp timeout
在我的 VPS(带有 Ubuntu 12.04 LTS的tophost.it “TopServer”)上,几天前我所有的应用程序都无法发送电子邮件。我可以从日志中了解到每个请求都会超时。
然后我尝试从终端简单地调用telnet smtp.gmail.com 587,我注意到以下异常:而在其他所有运行良好的服务器上,答案只需要几毫秒来处理,并且很简单
Trying 173.194.65.109...
Connected to gmail-smtp-msa.l.google.com.
Run Code Online (Sandbox Code Playgroud)
在有问题的 VPS 上,答案是
Trying 2a00:1450:4013:c01::6c...
Run Code Online (Sandbox Code Playgroud)
..并且仅在大约一分钟后(我猜在此期间应用程序将超时)......它最终说:
Trying 74.125.136.108...
Connected to smtp.gmail.com.
Run Code Online (Sandbox Code Playgroud)
那么这里发生了什么?为什么它之前尝试使用 IPv6,并且仅在几秒钟之后尝试使用正确的 IPv4?如何修复此行为以避免超时错误?
我找到了禁用 IPv6 的临时修复程序。我所做的是将以下几行添加到/etc/sysctl.conf:
#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Run Code Online (Sandbox Code Playgroud)
然后重新启动或指示 sysctl 重新加载。现在,这些应用程序可以再次发送电子邮件,并且没有最初的延迟。
您始终可以通过运行来了解 IPv6 是否已启用
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
Run Code Online (Sandbox Code Playgroud)
从终端。两个可能的答案: 0 => IPv6 已启用;1 => IPv6 禁用。
至少,在我等待服务提供商解决问题的同时,我学到了一些新东西。