Назад | Перейти на главную страницу

POSTFIX: ограничение скорости, с которой конкретный пользователь может отправлять электронную почту

У нас есть сервер CentOS, на котором размещены наши веб-сайты и почтовый сервер (с использованием POSTFIX). Мы управляем системой с помощью Virtualmin и Webmin соответственно.

Как правило, для каждого сайта, который мы настраиваем, мы предоставляем клиенту учетную запись электронной почты в нашей системе. Один клиент, в частности, решил, что это хорошая идея - рассылать буквально тысячи писем массово. Когда это произойдет, почтовый сервер перестанет отвечать, и почта для других клиентов перестанет работать, пока обрабатывается очередь.

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

Спасибо

Мне кажется, что все остальные ответы на этот старый вопрос предназначены только для ссылок. Итак, я в двух словах опишу, как реализовать мое любимое решение для этой работы.

В ссылка на сайт который @ 84104 предложил, хотя и очень полезен, но не может использоваться для правильного определения ставки для отправителя. smtpd_client ограничения предназначены не для управления трафиком, а для помощи с клиентским программным обеспечением: «Меры против клиентов, которые устанавливают слишком много соединений». Хотя можно найти такие рекомендации один что это наверняка может помочь. Так как @E. Yazici предложил аддон для постфикс необходимо. Лично я нахожу политический как рекомендовано @Janne Pikkarainen довольно громоздкий, хотя считается стандартом.

Мой любимый аддон postfwd потому что он легкий и легкий. Также стоит отметить, что это очень легко работает с Plesk или другим подобным, не затрагивая сложный набор файлов конфигурации Plesk. Ограничение скорости отправки электронной почты в Plesk было реализовано только в версии 12, но все же возможности политики ограничены.

Сначала загрузите последнюю версию аддона с указанного выше сайта. Я считаю, что для CentOS нет rpm, в отличие от Ubuntu и Debian. Тем не менее рекомендуется использовать последнюю версию. В частности, версия 1.32 (которая присутствует, например, в репозиториях Ubuntu 14.04LTS) имеет неприятный ошибка что мешает ему функционировать должным образом. Версия 1,35 разбирается в этом.

Удостоверься что эти Модули PERL присутствуют. Если вы используете Debian или Ubuntu вы можете установить из репозиториев, чтобы все зависимости были автоматически отсортированы, а затем заменить /usr/sbin/postfwd с последней версией.

Затем создайте набор правил. Создайте файл, например /etc/postfwd.cf или /etc/postfix/postfwd.cf и добавить:

id=R001; sender=~/.*/; action=rate(sender/100/86400/REJECT only 100 messages per day for $$sender)
id=R002; sender=~/.*/; action=rate(sender/50/3600/REJECT only 50 messages per hour for $$sender)

Очевидно, что в приведенном выше наборе правил есть два правила, которые оцениваются для всех отправителей. Синтаксис rate действие:

rate (<item>/<max>/<time in sec>/<action>)

Другие примеры ставок можно найти Вот. Ссылку на синтаксис можно найти на документация. Подобное обсуждение можно найти Вот. Если реализован SASL (например, dovecot), вы можете безопасно заменить sender с участием sasl_username. Вы можете проверить правильность набора правил с помощью -C вариант:

postfwd -f /etc/postfwd.cf -C

Впоследствии вы можете при желании создать специального пользователя и группу postfwd под которым postfwd запустится и запустит его:

postfwd --daemon -f /etc/postfwd.cf -u postfwd -g postfwd 

В случае его установки из apt (Debian, Ubuntu и т. Д.) Также должен быть файл конфигурации под /etc/default/postfwd и вы можете правильно запустить службу, например sudo service postfwd start.

Затем посмотрите журнал, чтобы убедиться, что postfwd прослушивает. Postfwd использует тот же журнал, что и postfix (например, /var/log/mail или /usr/local/psa/var/log/maillog и т. д.) и строку как postfwd 1.35 ready for input должен быть на месте.

Затем дайте postfix знать, что нужно использовать postfwd. Отредактируйте файл conf postfix (обычно /etc/postfix/main.cf) и в строке:

smtpd_recipient_restrictions = permit_mynetworks,...

Добавить check_policy_service inet:127.0.0.1:10040. Учтите, что порядок, в котором вы поместили это, smtpd_recipient_restrictions имеет большое значение, и вы можете потратить много времени на диагностику того, что может быть не так. Как объяснено в этот вопрос, если одна проверка возвращает OK или REJECT, то postfix не переходит к следующей, поэтому вам, вероятно, следует поставить это значение выше.

Наконец, чтобы убедиться, что это работает, вы можете указать очень маленький предел, например 1, или даже добавить правило как id=DEFAULT; action=dunno. Любое попадание в правило все равно регистрируется. Также обратите внимание, что ограничение скорости на отправителя не различает несколько писем с одним получателем или одно письмо с несколькими получателями.

Затем отправьте электронное письмо из учетной записи (на этом сервере) и посмотрите журнал:

grep "RULES" /var/log/mail

Другие ссылки: postfwd quickstart.

Postfix-Policyd в этом, помимо прочего, очень помогает.

Что вам нужно, так это надстройка политики для Postfix. Для Postfix существует дюжина надстроек политик, некоторые из них имеют функцию ограничения скорости. Вы можете найти список надстроек политики Postfix Вот.

Отметьте этот демон политики, настраиваемый из mysql http://www.simonecaruso.com/limit-sender-rate-in-postfix/