每次调用smtp服务器时,所有应用程序都会出现超时错误

在我的VPS(一个带有Ubuntu 12.04 LTS的tophost.it “TopServer”)上,由于前几天我所有的应用程序都无法发送邮件。 我可以从日志中了解到每个请求都会超时

然后,我试图从terminaltelnet smtp.gmail.com 587打电话,我注意到以下exception:而在其他所有运行良好的服务器上,答案只需要几ms就可以处理

 Trying 173.194.65.109... Connected to gmail-smtp-msa.l.google.com. 

在VPS问题的答案是相反的

 Trying 2a00:1450:4013:c01::6c... 

.. 只有大约一分钟后 (在这期间,应用程序将超时我猜)…它终于说:

 Trying 74.125.136.108... Connected to smtp.gmail.com. 

那么这里发生了什么? 为什么在尝试使用IPv6之前,只有几秒钟之后才能使用正确的IPv4? 我如何解决这个问题以避免超时错误?

我发现一个禁用IPv6的临时修复程序。 我所做的是/etc/sysctl.conf添加到/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 

然后重新启动或指示sysctl重新加载。 现在这些应用程序能够再次发送电子邮件,并且没有最初的延迟。

您始终可以知道是否通过运行启用了IPv6

 cat /proc/sys/net/ipv6/conf/all/disable_ipv6 

从terminal。 两个可能的答案:0 =>启用IPv6; 1 =>禁用IPv6。

至less在等待服务提供商解决问题的同时,我学到了一些新的东西。

(无耻复制从https://stackoverflow.com/a/29939735/32453

您可以将Ubuntuconfiguration为使用IPv4 over IPv6。 这样,您将能够发送电子邮件并访问仅IPv6网站。 编辑/etc/gai.conf并取消注释以下行:

 precedence ::ffff:0:0/96 100