dadv: (chuck)
[personal profile] dadv

Восемь месяцев назад во всех поддерживаемых ветках FreeBSD произошло обновление sendmail с версии 8.14.9 до 8.15.2.

В sendmail-8.15.1 произошло несколько несоместимых со старыми конфигурациями изменений в поведении, с одним и очень неприятым из них столкнулся сразу после обновления одной системы FreeBSD-9.3, использующей связку sendmail+Cyrus IMAPd, когда sendmail доставляет почту в локальное хранилище IMAP использованием протокола LMTP и локального unix-сокета вида /var/imap/socket/lmtp.

В RELEASE_NOTES сказано, что при возникновении проблем (например, таймауты) с DNS-ресолвингом во время обработки заголовков писем в процессе доставки по протоколам SMTP или LMTP, транзакция обрывается, а это значит, что письмо не доставляется и остаётся в очереди:

If header rewriting fails due to a temporary map lookup failure,
queue the mail for later retry instead of sending it
without rewriting the header. Note: this is done
while the mail is being sent and hence the transaction
is aborted, which only works for SMTP/LMTP mailers
hence the handling of temporary map failures is
suppressed for other mailers. SMTP/LMTP servers may
complain about aborted transactions when this problem
occurs.
See also "DNS Lookups" in sendmail/TUNING.


В версии 8.15.2 это ведет к очень плохим последствиям: уже принятые от внешних почтовых серверов письма вместо мгновенной доставки IMAP-серверу по LMTP могут неопределенно долго (часами) залеживаться в очереди, потенциально вечно. Бывает, что письмо приходит с envelope-to существующего ящика в локальном IMAP-хранилище, но при этом в заголовке To в самом письме кроме адреса нашего пользователя указаны адреса чужих доменов, DNS-сервера которых не отвечают. Вместо того, чтобы просто отдать письмо по LMTP, sendmail в момент доставки начинает обращаться к DNS и обрывает транзакцию по таймауту с невнятной диагностикой: SYSERR(root): timeout writing message to localhost

При этом письмо остается лежать в очереди с состоянием stat=Deferred: Name server: localhost: host name lookup failure.

RELEASE_NOTES ссылаются на документ TUNING, где упомянута FEATURE(`nocanonify', `canonify_hosts') и сказано:

Note: starting with 8.15, sendmail will not ignore temporary map
lookup failures during header rewriting, which means that DNS lookup
problems even for headers will cause messages to stay in the queue.
Hence it is strongly suggested to use the nocanonify feature;
at least turning it on for the MTA, but maybe disabling it for the
MSA, i.e., use Modifiers for DaemonPortOptions accordingly.
As a last resort, it is possible to override the host map to ignore
temporary failures, e.g.,
Khost host -t
However, this can cause inconsistent header rewriting.


Получается, что теперь необходимо всегда добавлять эту FEATURE в конфигурацию .mc во избежание недоставки почты.

This account has disabled anonymous posting.
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Tags

Style Credit

Powered by Dreamwidth Studios