На моем 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