Страница 1 из 1
Exim, очередь и ratelimit
Добавлено: 2011-07-22 10:48:46
mediamag
Добрый день уважаемые гуру. Стоит exim 4 на фре. Появилась, на мой взгляд нелегкая задача и вот какая:
Есть в сети уникалы, которые иногда перенаправляют почту на другие ящики...так вот они берут все сообщения (10-50) и кидают на определенные ящики в инете. Такой расклад не устраивает, ибо тупо спам получается. Можно ли настроить рейтлимиты экзима так, чтобы все исходящие письма с сервера (внутренние и внешние) можно было отправлять за раз около 5, а если больше, то последующие с интервалом 1 минута????. буду очень благодарен за предоставленные разъяснения и опции.
Re: Exim, очередь и ratelimit
Добавлено: 2011-07-22 11:20:58
Laa
Привет!
В транспорте remote_smtp покрути опцию max_rcpt и connection_max_messages.
Re: Exim, очередь и ratelimit
Добавлено: 2011-07-25 15:55:28
fogary
Недавно решал примерно такую же задачу.
Получилось так: перед роутером внешней отправки вставил роутер с драйвером queryprogram, который вызывает внешний скрипт. Скрипт проверяет счетчик отправленных писем, если меньше указанного значения, то счетчик увеличивается на 1, а exim-у возвращается PASS. Если счетчик равен или больше, то exim-у возвращается DEFER, в результате письмо остается в очереди на повторную доставку. Через заданный период времени, счетчик обнуляется cron-ом. Дальше, через интервал заданный ключом -q<time>, запускается обработчик очереди и пробует отправить письма, для которых разрешен повтор.
Re: Exim, очередь и ratelimit
Добавлено: 2011-07-26 8:43:58
mediamag
Если вам не сложно - поделитесь скриптом или расскажите как в драйвере smtp примерно прописать рейтлимиты на исх. почту, а то я щас другой проект ворочу, на почтовик совсем времени нет думать. Заранее спасибо. Хотелось бы еще увидеть исключение на отправляемые хосты (то есть чтобы не на все исх действовал данный рейтлимит)
Re: Exim, очередь и ratelimit
Добавлено: 2011-07-26 13:14:58
fogary
Не до конца уверен, но вроде рейтлимиты срабатывают только на вход, как их применить (и можно ли) на выход я понять не смог.
Скрипт (chklimit.sh):
Код: Выделить всё
#!/bin/sh
PATH=/bin:/usr/local/sbin
qcount_file=/var/spool/exim/qcount
qlimit=48
# read counter from file
if [ -s $qcount_file ]
then
qcount=$(cat $qcount_file)
else
qcount=0
fi
# check to limit
if [ $qcount -ge $qlimit ]
then
echo "DEFER To smarthost limit reached"
else
# save counter to file
echo $(($qcount + 1)) > $qcount_file
echo "PASS"
fi
qcount_file - файл в который сохраняется счетчик.
qlimit - макс. кол-во писем за период времени.
После DEFER, текст который будет писаться в журнал.
Роутер:
Код: Выделить всё
checklimit:
driver = queryprogram
domains = ! +local_domains
command = /usr/local/etc/chklimit.sh
command_user = mailnull
command_group = mail
Собственно, в domains перечисляется на какие домены срабатывает роутер. Вероятно, тоже самое можно сделать и для хостов. Сразу за этим роутером, прописан роутер для отправки в интернет.