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 во избежание недоставки почты.

From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

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


 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

dadv: (Default)
Choose your future

June 2017

M T W T F S S
   1234
56 7891011
12131415161718
19202122232425
2627282930  

Tags

Style Credit

Powered by Dreamwidth Studios