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

Postfix не пытается использовать вторичные серверы, когда время ожидания первичного

Такое ощущение, что об этом следовало спросить раньше, возможно, я использую неправильный язык, но после 2 часов поиска я не могу понять, как это исправить.

У меня есть сообщение в очереди исходящей почты postfix, где основной почтовый сервер не работает (в журналах указано «Время ожидания соединения истекло»), а postfix - никогда пробовать вторичный (или серверы с более низким предпочтением).

Он повторяет попытки снова и снова в течение нескольких дней (текущая конфигурация), а затем в конечном итоге отскакивает без упоминания вторичного сервера.

Я использую postfix 2.8.

Единственные параметры, которые могут быть связаны с этим, - это smtp_skip_quit_response и smtp_skip_5xx_greeting (я уверен, что их больше, но не знаю, что это такое), но поскольку нет подключения к серверу, нет кода ответа, и эти настройки верны я думаю (оба ставили да).

Я хочу, чтобы при возникновении проблемы с подключением к первичному серверу он пытался подключиться к вторичному (это кажется очевидным, я знаю).

Другой важный момент - это запись A для (отказавшего) первичного преобразователя в несколько IP-адресов (это запись A, а не CNAME).

Журналы выглядят так (с вырезанием большого количества повторений):

Mar  2 02:00:04 postfix/qmgr[2672]: D78739817D8: from=<sender@source.example.com>, size=24736, nrcpt=1 (queue active)
Mar  2 02:02:34 postfix/smtp[18263]: D78739817D8: to=<receiver@example.com>, relay=none, delay=294106, delays=293955/0.02/151/0, dsn=4.4.1, status=deferred (connect to mx1.example.com[192.0.2.4]:25: Connection timed out)
Mar  2 03:10:04 postfix/qmgr[2672]: D78739817D8: from=<sender@source.example.com>, size=24736, nrcpt=1 (queue active)
Mar  2 03:12:35 postfix/smtp[22822]: D78739817D8: to=<receiver@example.com>, relay=none, delay=298306, delays=298156/0/151/0, dsn=4.4.1, status=deferred (connect to mx1.example.com[192.0.2.161]:25: Connection timed out)
Mar  2 04:20:04 postfix/qmgr[2672]: D78739817D8: from=<sender@source.example.com>, size=24736, nrcpt=1 (queue active)
Mar  2 04:22:05 postfix/smtp[28734]: D78739817D8: to=<receiver@example.com>, relay=none, delay=302477, delays=302356/0.01/121/0, dsn=4.4.1, status=deferred (connect to mx1.example.com[192.0.2.152]:25: Connection timed out)
...
Mar  3 15:20:03 postfix/qmgr[16791]: D78739817D8: from=<sender@source.example.com>, size=24736, nrcpt=1 (queue active)
Mar  3 15:22:34 postfix/smtp[20853]: D78739817D8: to=<receiver@example.com>, relay=none, delay=428506, delays=428355/0/151/0, dsn=4.4.1, status=deferred (connect to mx1.example.com[192.0.2.167]:25: Connection timed out)
Mar  3 16:30:03 postfix/qmgr[16791]: D78739817D8: from=<sender@source.example.com>, size=24736, nrcpt=1 (queue active)
Mar  3 16:31:04 postfix/smtp[30310]: D78739817D8: to=<receiver@example.com>, relay=none, delay=432615, delays=432555/0/60/0, dsn=4.4.1, status=deferred (connect to mx1.example.com[192.0.2.236]:25: Network is unreachable)
Mar  3 16:31:04 postfix/qmgr[16791]: D78739817D8: from=<sender@source.example.com>, status=expired, returned to sender
Mar  3 16:31:04 postfix/bounce[30772]: D78739817D8: sender non-delivery notification: 3036F14E0002
Mar  3 16:31:04 postfix/qmgr[16791]: D78739817D8: removed

Это заставило меня смотреть в правильном направлении, решение в этом случае заключалось в том, чтобы установить smtp_mx_address_limit = 20 в main.cf.

Чтобы уточнить, конфигурация домена была:

  • 2 записи MX (стоимость 10 и 20).
  • Первая запись MX имеет 5 записей A.
  • Вторая запись MX имеет 2 записи A.

По умолчанию smtp_mx_session_limit значение 5, которое, как вы заметите, совпадает с количеством A-записей для основной MX-записи, поэтому Postfix никогда не смотрел дальше первых 5 IP-адресов. В этом случае помогло бы установить любое значение больше 5, но для нашей конфигурации я оставлю немного большее, чтобы помочь с количеством CDN и т. Д., Имеющихся в наши дни.

Надеюсь, кто-то еще найдет это полезным, поскольку я не мог найти его больше нигде!

Я думаю, вы можете обнаружить, что столкнулись с некоторыми внутренними ограничениями постфикса, так как Виктор на постфиксе список говорит:

..with a static preference, Postfix may fail deliver mail to a 
reachable destination, just because enough IPv4 or enough IPv6 
addresses are dead.  Remember, Postfix tries a limited number of 
MX addresses per delivery. 

возможно, вы также могли успешно доставить почту на один из этих серверов за последние 24 часа, и Postfix кэширует успешные записи MX.

Я бы сказал, у вас есть два варианта, очистите очередь postqueue -f который заставит postfix выполнить еще один поиск MX или настроить временный транспорт для этого домена, используя вторичную запись MX в качестве транспорта example.com smtp:secondary.mx.servername.