Ограничение количества отправки сообщений в Policyd
Зачем может понадобиться ограничение по количеству отправленных сообщений?
Представьте, что пароли некоторых ваших пользователей оказались украденными. В таком случае от имени таких пользователей может начаться спам-рассылка. И ваш сервер довольно быстро попадет в черные списки RBL.
При помощи модуля Policyd Quotas, можно настроить ограничение по количеству сообщений за определенное время, например, сделать так чтобы за 1 час пользователи могли посылать не более 100 сообщений.
Таким образом, если пароли пользователей будет украдены они смогут послать не больше 100 писем в час и ваш ip-адрес не попадет в черный список (по крайней мере, не так быстро ☺). Кроме того, вы сможете понять, кто из пользователей вдруг начал отправлять такое большое количество писем.
После того как вы установили Policyd, доступ к web-интерфесу доступен по адресу http://mail.example.com:7780/webui/index.php.
Создадим политику Rate limit sending message (Policies - Main - Action: add) и добавим в нее нашу зону (Policies - Main - Action: Members):
Затем создадим для нее правило квоты Rate Limit 100 (Quotas - Configure - Action: add):
Будем отслеживать (Track) по типу user@domain, с периодичностью в 1 час (Period), для почты, которая отправляется во вне (Link to policy: Rate limit sending message), в случае превышения лимита письма будут отклонены (Verdict: Reject), отправителю будет выдано соответствующее сообщение (Data: Sorry, your rate limit quota has been exceeded).
Теперь необходимо создать для нашего правила лимиты (Quotas - Configure - Action: Limits):
Кроме количества сообщений (MessageCount) можно также устанавливать предел по количеству отправленных байт (MessageCumulativeSize) для ограничения пропускной способности.
Посмотреть результат работы ограничения по квотам можно по логам:
# cat /var/log/maillog | grep "Sorry"
Jan 30 13:21:02 mail postfix/smtpd[1938]: NOQUEUE: reject: RCPT from mail.example.com[62.220.58.71]:
554 5.7.1 <test@example.com>: Sender address rejected: Sorry, your rate limit quota has been exceeded;
from=<test@example.com> to=<info@itzx.ru> proto=ESMTP helo=<mail.example.com>