Меня поражает, что все остальные ответы на этот старый вопрос только для ссылок. Поэтому я собираюсь в нескольких словах описать, как реализовать мое любимое решение для этой работы.
Ссылка , что @ 84104 предложила, хотя и очень полезно, не может быть использована для надлежащего осуществления ставки на отправитель. smtpd_clientограничения не для контроля трафика, а скорее для помощи клиентскому программному обеспечению: «Меры против клиентов, которые устанавливают слишком много соединений». Хотя можно найти рекомендации , такие как это одно , что это , безусловно , может помочь. Как @E. Яжичи предложил, аддон для постфикса не требуется. Лично я нахожу, что полицид, рекомендованный @Janne Pikkarainen, довольно громоздкий, хотя и считается стандартом.
Мой любимый аддон это postfwd, потому что он легкий и легкий. Также стоит отметить, что это очень легко работает с Plesk или другими подобными программами, не затрагивая сложный набор файлов конфигурации Plesk. Ограничение скорости электронной почты в Plesk было реализовано только в версии 12, но возможности политики по-прежнему ограничены.
Сначала загрузите последний аддон с сайта выше. Я считаю, что для CentOS нет оборотов, в отличие от 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 постфикса (обычно /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 .