URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 88934
[ Назад ]

Исходное сообщение
"Exim - задержка сообщений"

Отправлено dimmonspb , 14-Май-10 18:18 
Возникла необходимость на почтовом сервере Exim сделать так, чтобы почта пришедшая с адреса mailer@mydomain.ru всем доходила как обычно, а определенному списку людей, например из файла delayusers, с задержкой на заданное время - чтобы не устраивали чат из рассылки.

Возможно ли такое реализовать и если да, то как?


Содержание

Сообщения в этом обсуждении
"Exim - задержка сообщений"
Отправлено bill , 14-Май-10 19:12 
>Возникла необходимость на почтовом сервере Exim сделать так, чтобы почта пришедшая с
>адреса mailer@mydomain.ru всем доходила как обычно, а определенному списку людей, например
>из файла delayusers, с задержкой на заданное время - чтобы не
>устраивали чат из рассылки.
>
>Возможно ли такое реализовать и если да, то как?

По-моему это не задача mta. Наверное dovecot+sieve и cron с этим справятся.


"Exim - задержка сообщений"
Отправлено Bosh , 15-Май-10 22:29 
Можно , но не тривиально.
Вариант 1
на этой же машине подыми второй exim на 127.0.0.2 25
и запускай его с параметрами exim -bd как демон без запуска очереди
в нем
queue_only
queue_run_max = 1
remote_max_parallel = 1

и шельник (запускаешь с той периодичностью как надо)
#!/bin/sh

cnt=`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, с задержкой на заданное время - чтобы не
>устраивали чат из рассылки.
>
>Возможно ли такое реализовать и если да, то как?


"Exim - задержка сообщений"
Отправлено dimmonspb , 17-Май-10 10:27 
Почту с адреса mailer@mydomain.ru отправляет соседняя машина sendmail`ом. Может тогда на ней это проще реализовать?
Сейчас поставил в кроне на этой машинке остановку и запуск sendmail`a с определенной периодичностью, но при этом почта задерживается для всех, а надо чтобы она некоторым доходила сразу.

"Exim - задержка сообщений"
Отправлено DeadLoco , 17-Май-10 21:27 
>Возможно ли такое реализовать и если да, то как?

Вот это не подходит?
http://www.exim.org/exim-html-current/doc/html/spec_html/ind...


"Exim - задержка сообщений"
Отправлено dimmonspb , 21-Май-10 12:56 
>>Возможно ли такое реализовать и если да, то как?
>
>Вот это не подходит?
>http://www.exim.org/exim-html-current/doc/html/spec_html/ind...

Ткните носом, пожалуйста, что именно?..


"Exim - задержка сообщений"
Отправлено DeadLoco , 21-Май-10 15:09 
>>>Возможно ли такое реализовать и если да, то как?
>>
>>Вот это не подходит?
>>http://www.exim.org/exim-html-current/doc/html/spec_html/ind...
>
>Ткните носом, пожалуйста, что именно?..

Сорри, вот это: http://www.exim.org/exim-html-current/doc/html/spec_html/ch4...


"Exim - задержка сообщений"
Отправлено dimmonspb , 21-Май-10 15:32 
>>>>Возможно ли такое реализовать и если да, то как?
>>>
>>>Вот это не подходит?
>>>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
а остальные пропустил. Но вот как это сделать?


"Exim - задержка сообщений"
Отправлено DeadLoco , 21-Май-10 23:10 
>Проблема в том, что рассылка отправляется с форума после добавления поста, а
>сколько их будет, например, за 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. Там настраивается,
>что первая попытка отправить сообщение отклоняется, а когда через заданный промежуток
>времени происходит вторая попытка, то она удовлетворяется.

Обычно грейлистинг задерживает доставку только первого письма, но после верификации начинает принимать сообщения без задержки. Допилить грейлист для вашей задачи можно, но зачем, если экзим уже умеет нужное?