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

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

在我的 VPS 上(tophost网站我已经安装了 Ubuntu 12.04 LTS 的“TopServer”,因为几天前我的所有应用程序都无法发送电子邮件。我从日志中了解到,每个请求都会超时。

然后我尝试简单地从终端调用telnet smtp.gmail.com 587,我注意到以下异常:而在其他所有运行良好的服务器上,答案只需要几毫秒就可以处理,而且很简单

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?我该如何修复此行为以避免超时错误?

答案1

我发现了一个暂时的修复禁用 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

然后重新启动或指示 sysctl 重新加载。现在应用程序可以再次发送电子邮件,并且没有初始延迟。

您可以通过运行以下代码来随时了解 IPv6 是否已启用

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

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

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

答案2

(厚颜无耻地抄袭自https://stackoverflow.com/a/29939735/32453

您可以将 Ubuntu 配置为优先使用 IPv4 而不是 IPv6。这样,您将能够发送电子邮件并访问仅限 IPv6 的网站。编辑 /etc/gai.conf 并取消注释以下行:

precedence ::ffff:0:0/96 100

相关内容