Ошибка тайм-аута во всех моих приложениях для каждого звонка на SMTP-серверы
На моем VPS ( http://www.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? Как я могу исправить это поведение, чтобы избежать ошибок тайм-аута?
2 ответа
Я нашел временное исправление, отключающее 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