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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
fatrogue
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-08-25 14:44:10

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

Непрочитанное сообщение fatrogue » 2016-11-29 17:12:42

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

fatrogue
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-08-25 14:44:10

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

Непрочитанное сообщение fatrogue » 2016-12-06 15:05:01

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

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

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

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

Непрочитанное сообщение xM » 2016-12-06 17:42:45

Задерживать в очереди любым способом, а потом по крону делать принудительную отправку

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

exiqgrep -o секунды | xargs exim -M
IT voodoo blog https://kostikov.co

fatrogue
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-08-25 14:44:10

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

Непрочитанное сообщение fatrogue » 2016-12-07 11:03:36

xM писал(а):Задерживать в очереди любым способом, а потом по крону делать принудительную отправку

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

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

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

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

Непрочитанное сообщение xM » 2016-12-07 11:17:58

Ну, для начала, то, чего вы хотите, тоже неправильно.
Однако, никто вам не мешает воспользоваться возможностям exiqgrep за пределами ключа -o открыв для себя, например, ключ -f равно как и мощь PCRE. :)
IT voodoo blog https://kostikov.co

fatrogue
проходил мимо
Сообщения: 9
Зарегистрирован: 2009-08-25 14:44:10

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

Непрочитанное сообщение fatrogue » 2016-12-07 13:37:14

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

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

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

Непрочитанное сообщение xM » 2016-12-07 14:35:55

Потому что таков механизм работы Exim. Подробнее см.
http://www.exim.org/exim-html-current/d ... _mail.html
IT voodoo blog https://kostikov.co