Возникла необходимость на почтовом сервере Exim сделать так, чтобы почта пришедшая с адреса mailer@mydomain.ru всем доходила как обычно, а определенному списку людей, например из файла delayusers, с задержкой на заданное время - чтобы не устраивали чат из рассылки.Возможно ли такое реализовать и если да, то как?
>Возникла необходимость на почтовом сервере Exim сделать так, чтобы почта пришедшая с
>адреса mailer@mydomain.ru всем доходила как обычно, а определенному списку людей, например
>из файла delayusers, с задержкой на заданное время - чтобы не
>устраивали чат из рассылки.
>
>Возможно ли такое реализовать и если да, то как?По-моему это не задача mta. Наверное dovecot+sieve и cron с этим справятся.
Можно , но не тривиально.
Вариант 1
на этой же машине подыми второй exim на 127.0.0.2 25
и запускай его с параметрами exim -bd как демон без запуска очереди
в нем
queue_only
queue_run_max = 1
remote_max_parallel = 1и шельник (запускаешь с той периодичностью как надо)
#!/bin/shcnt=`ps ax | grep -v grep | grep -c "/usr/sbin/exim -q"`
#echo cnt - $cnt
if [ $cnt -le 200 ]
then
j=1
while [ $j -le 5 ]
do
# echo j - $j
/usr/sbin/exim -q
j=$(($j+1))
done
fiв основном exim ПЕРВЫМ роутером
smart_route:
condition = условие из файла delayusers
transport = remote_smtp
route_list = * 127.0.0.2
всеВарианр 2 используй встроенный perl
${perl{ что то , что обрабатывает нужных тебе получателе и замораживаеи их доствку }
Это реально но требует временени
>Возникла необходимость на почтовом сервере Exim сделать так, чтобы почта пришедшая с
>адреса mailer@mydomain.ru всем доходила как обычно, а определенному списку людей, например
>из файла delayusers, с задержкой на заданное время - чтобы не
>устраивали чат из рассылки.
>
>Возможно ли такое реализовать и если да, то как?
Почту с адреса mailer@mydomain.ru отправляет соседняя машина sendmail`ом. Может тогда на ней это проще реализовать?
Сейчас поставил в кроне на этой машинке остановку и запуск sendmail`a с определенной периодичностью, но при этом почта задерживается для всех, а надо чтобы она некоторым доходила сразу.
>Возможно ли такое реализовать и если да, то как?Вот это не подходит?
http://www.exim.org/exim-html-current/doc/html/spec_html/ind...
>>Возможно ли такое реализовать и если да, то как?
>
>Вот это не подходит?
>http://www.exim.org/exim-html-current/doc/html/spec_html/ind...Ткните носом, пожалуйста, что именно?..
>>>Возможно ли такое реализовать и если да, то как?
>>
>>Вот это не подходит?
>>http://www.exim.org/exim-html-current/doc/html/spec_html/ind...
>
>Ткните носом, пожалуйста, что именно?..Сорри, вот это: http://www.exim.org/exim-html-current/doc/html/spec_html/ch4...
>>>>Возможно ли такое реализовать и если да, то как?
>>>
>>>Вот это не подходит?
>>>http://www.exim.org/exim-html-current/doc/html/spec_html/ind...
>>
>>Ткните носом, пожалуйста, что именно?..
>
>Сорри, вот это: http://www.exim.org/exim-html-current/doc/html/spec_html/ch4...Проблема в том, что рассылка отправляется с форума после добавления поста, а сколько их будет, например, за 1 час - 1,2 или 22 - никто не знает.
Если бы можно было указать, например, интервал времени и работы, и простоя - тогда да.Мне сегодня ещё подсказали, что можно это реализовать через GREYLIST. Там настраивается, что первая попытка отправить сообщение отклоняется, а когда через заданный промежуток времени происходит вторая попытка, то она удовлетворяется.
Посмотрел примеры в сети - они все очень сложные (для фильтрации спама с записью в mysql)
А мне надо просто, чтобы сервер 1 раз отклонил сообщение, которое удовлетворяет условию:
local_parts = /usr/local/etc/exim/delay.mails
а остальные пропустил. Но вот как это сделать?
>Проблема в том, что рассылка отправляется с форума после добавления поста, а
>сколько их будет, например, за 1 час - 1,2 или 22 - никто не знает.
>Если бы можно было указать, например, интервал времени и работы, и простоя - тогда да.Использовать это можно вот так:
acl_rcpt:
// первый ацль (или не первый, но осторожно)
defer ratelimit = 20 / 10m / per_mail / $sender_address
message = "Очинна многа письмов, оннако. Мала-мала ждать надо."Если за предыдущие 10 минут отправителем $sender_address было отправлено более 20 штук писем, МТА его вежливо факнет до момента, пока количество отправленных писем за предыдущие 10 минут не упадет ниже 20.
Для каждого $sender_address будет считаться свой личный рейт, и можно подобрать такие значения m/p что добрососвестный пользователь ничего не заметит, а строчитель-пулеметчик получит дефер.
>Мне сегодня ещё подсказали, что можно это реализовать через GREYLIST. Там настраивается,
>что первая попытка отправить сообщение отклоняется, а когда через заданный промежуток
>времени происходит вторая попытка, то она удовлетворяется.Обычно грейлистинг задерживает доставку только первого письма, но после верификации начинает принимать сообщения без задержки. Допилить грейлист для вашей задачи можно, но зачем, если экзим уже умеет нужное?