Назад | Перейти на главную страницу

Ошибка тайм-аута во всех моих приложениях для каждого вызова SMTP-серверов

На моем VPS (a tophost.it «TopServer» с Ubuntu 12.04 LTS), поскольку несколько дней назад все мои приложения перестали отправлять электронные письма. Все, что я мог узнать из журналов, это то, что каждый запрос проходит таймаут.

Затем я попытался просто позвонить с терминала 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? Как я могу исправить это поведение, чтобы избежать ошибок тайм-аута?

Я нашел временный исправить отключение 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 отключен.

По крайней мере, пока я жду, пока поставщик услуг исправит проблему, я узнал кое-что новое.

(Бесстыдно скопировано из https://stackoverflow.com/a/29939735/32453)

Вы можете настроить Ubuntu так, чтобы он предпочитал IPv4 IPv6. Таким образом вы сможете отправлять электронные письма и получать доступ к сайтам только с IPv6. Отредактируйте /etc/gai.conf и раскомментируйте следующую строку:

precedence ::ffff:0:0/96 100