очередь exim frozen и smtp relay

Иногда, начинает казаться, что не все письма, отправленные с вашего сервера, доходят до получателей на внешних доменах. Иногда теряется много писем, а иногда.. ещё больше. Значит пора провериться на наличие айпи адреса сервера в чёрных списках, например тут: http://www.mxtoolbox.com/blacklists.aspx или http://www.dnsbl.info/

Чаще всего бывает, что дело тут не в XSS уязвимостях софта на сервере, а намного проще – в неправильной конфигурации exim на сервере, которая превращает его в пересыльщик smtp relay – это когда каждый, может без аутентификации воспользоваться 25ым портом вашего сервера для отправки сообщения кому угодно по протоколу smtp.

Протестировать наличие уязвимости можно по-разному, например через веб http://test.nettools.ru/, но ещё круче это сделать по telnet прямо из консоли занесённого в чёрные списки сервера:

telnet rt.njabl.org 2500
или
telnet relay-test.mail-abuse.org

Периодически бывает, что некоторые сообщения exim помечает как frozen. Что же такое замороженное сообщение? Документация говорит нам, что If the message is frozen (attempts to deliver it are suspended) then the text “*** frozen ***” is displayed at the end of this line., т.е. сообщение висит в очереди, но попытки доставить его уже не предпринимаются. Чтобы понять подробнее читаем соответствующий раздел мануала:

A message remains in the spool directory until it is completely delivered to its recipients or to an error address, or until it is deleted by an administrator or by the user who originally created it. In cases when delivery cannot proceed – for example, when a message can neither be delivered to its recipients nor returned to its sender, the message is marked “frozen” on the spool, and no more deliveries are attempted.

An administrator can “thaw” such messages when the problem has been corrected, and can also freeze individual messages by hand if necessary. In addition, an administrator can force a delivery error, causing a bounce message to be sent.

There are options called ignore_bounce_errors_after and timeout_frozen_after, which discard frozen messages after a certain time. The first applies only to frozen bounces, the second to any frozen messages.

Что означает, что ни одно сообщение, которое попало в очередь exim не потеряется и, при отсутсвии соответствующих настроек, будет вечно висеть в замороженном состоянии.

В принципе в официальной документации присутствует утверждение, что директивой timeout_frozen_after в конфигурационном файле, можно указать максимальный срок жизни замороженого сообщения, но это не во всех версиях exim срабатывает.

Поэтому возможно написать такую интересную команду, запихнув её в cron, которая удаляет все сообщения из очереди старше 1 дня (86400 секунд). Конечно, временной интервал следует выбрать намного больше, а данная конфигурация приведена для высоконагруженого сервера, у которого основным фактором является своевременность доставки (если письмо не дойдёт через 3 дня, когда поднимется mail exchanger клиента – ничего страшного, ибо оно уже будет неактуально).

 exiqgrep -o 86400 -i |xargs exim -Mrm

Если же требуется удалить все замороженные сообщения из очереди, то следует воспользоваться командой:

exiqgrep -z -i | xargs exim -Mrm

2 thoughts on “очередь exim frozen и smtp relay

  1. Викотр

    подскажите нубу, когда сообщение удаляется из очереди администратором (exim -Mrm ) отправивший это сообщение пользователь никак об этом не узнает?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *