Страница 1 из 1

Exim: задержка отправки писем из очереди

Добавлено: 2016-11-29 17:12:42
fatrogue
Есть задача сделать так, чтобы письма для внешних получателей перед отправкой повисели в очереди ровно N минут. Сейчас это выглядит так: письмо для нелокальных доменов отправляются в очередь через queue_smtp_domains и демон Exim-а настроен на обработку очереди раз в N минут. Но в этой конфигурации письмо висит не ровно N минут, а не более N минут, так как оно может попасть в очередь и за 1 минуту до запуска обработки очереди. Собственно вопрос: как добиться того, чтобы письмо провисело в очереди не менее N минут? Я предполагаю, что нужно как-то организовать обработку очереди вручную, не используя демон Exim. Но как в таком случае быть с обработкой повторов?

Exim: задержка отправки писем из очереди

Добавлено: 2016-12-06 15:05:01
fatrogue
Попробовал сделать задержку через роутер такого вида:
delay_delivery:
driver = redirect
domains = ! +local_domains
condition = ${if < {$message_age}{300}}
allow_defer
data = :defer: Age now: $message_age

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

Exim: задержка отправки писем из очереди

Добавлено: 2016-12-06 17:42:45
xM
Задерживать в очереди любым способом, а потом по крону делать принудительную отправку

Код: Выделить всё

exiqgrep -o секунды | xargs exim -M

Exim: задержка отправки писем из очереди

Добавлено: 2016-12-07 11:03:36
fatrogue
xM писал(а):Задерживать в очереди любым способом, а потом по крону делать принудительную отправку

Код: Выделить всё

exiqgrep -o секунды | xargs exim -M
Сначала я так и хотел сделать, но в этом случае принудительная доставка будет пытаться доставить все письма, в том числе и те, которые должны быть обработаны по правилам повторов(всевозможные ошибки доставки). Т.е. фактически правила повторов будут заменены вот такой принудительной отправкой. На мой взгляд, это не правильно: повторы должны работать по своим правилам.
Вообще хотелось бы понять, для каждого сообщения в очереди обработчик очереди только один(первый) раз проходит секцию роутеров до срабатывания одного из них или он должен при каждом запуске проходить их заново?

Exim: задержка отправки писем из очереди

Добавлено: 2016-12-07 11:17:58
xM
Ну, для начала, то, чего вы хотите, тоже неправильно.
Однако, никто вам не мешает воспользоваться возможностям exiqgrep за пределами ключа -o открыв для себя, например, ключ -f равно как и мощь PCRE. :)

Exim: задержка отправки писем из очереди

Добавлено: 2016-12-07 13:37:14
fatrogue
Спасибо, это все понятно. Но мне хочется выяснить это "баг" или "фича": если роутер, который принял сообщение не назначает для него никакой транспорт, а делает задержку, то почему это сообщение не пытается роутится при следующей обработке очереди а роутится только при наступлении времени повтора?

Exim: задержка отправки писем из очереди

Добавлено: 2016-12-07 14:35:55
xM
Потому что таков механизм работы Exim. Подробнее см.
http://www.exim.org/exim-html-current/d ... _mail.html