Возможно ли отключить механизм повтора в exim

У меня очень простая конфигурация exim, которая просто пересылает всю почту на набор адресов назначения. Если немедленная доставка по адресу не удалась, сообщение добавляется в очередь (и затем обрабатывается по правилам повтора). Я хочу изменить это так, чтобы в случае немедленной доставки произошла ошибка: blackhole: d. (Это нормально, если вместо этого генерируется отскок, так как я просто перенаправлю отскок на:blackhole:).

Это должно происходить как для временных сбоев (например, 4xx), так и для постоянных (то есть 5xx).

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

Читая об этом, это звучит подозрительно, как "как я могу улучшить мой спам сервер Exim". Это действительно не то, для чего это нужно, и если вы сможете найти способ, которым я могу это доказать, я с удовольствием это сделаю!

2 ответа

Повторите попытку до чего-то нелепо длинного, cron скрипт для извлечения идентификаторов сообщений из exim -bpu в очереди больше длины x, затем удалить с exim -Mrm <msgid>

Вы также можете запустить exim как демон без очереди с помощью mua_wrapper = true, Посмотрите на Раздел 48 "Использование Exim как клиента без очереди", он может сделать то, что вам нужно.

Когда доставка завершается неудачно, сообщение об ошибке записывается в стандартный поток ошибок (а также в журнал exim), и exim выходит к вызывающей стороне со значением кода поворота 1. Сообщение удаляется из файлов спула exim. Никакие отказов сообщения никогда не генерируются.

Данные повторов не поддерживаются, а любые правила повторов игнорируются.

Exim имеет расширенную конфигурацию для настройки времени повторов. В вашем exim.conf будет раздел повторных попыток внизу. Конфигурация повтора состоит из трех полей: адреса электронной почты, кода ошибки, вызывающего ошибку, и списка шаблонов синхронизации. Они определяются как группа из трех чисел: буквенный код поведения, интервал времени для применения этого правила и интервал для повторной попытки. Например:

F,2h,15m

можно прочитать как "В течение 2 часов, попробуйте фиксированный внутренний каждые 15 минут",

Вы можете попробовать установить пустую повторную попытку:

begin retry
*    *    

Вполне возможно, что exim это расстроит. Вместо этого вы можете использовать одну повторную попытку:

begin retry
*    *    F,1m,1m

Это не совсем то, что вы просили, но это довольно близко.

Есть также варианты его изменения для определенных адресов электронной почты и для разных кодов возврата.

Вы можете установить system_filterв вашем exim.conf. После этого в файле системного фильтра конфигурации создайте такое правило:

if not first_delivery then
seen finish
endif

После первой доставки exim снова поместит сообщение в очередь, но при повторной попытке обработки оно будет отброшено.

Другие вопросы по тегам