Меня поражает, что все остальные ответы на этот старый вопрос только для ссылок. Поэтому я собираюсь в нескольких словах описать, как реализовать мое любимое решение для этой работы.
Ссылка , что @ 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 .
smtpd_recipient_restrictions
записи с пробелом в ней, поэтому я должен был определитьpostfwd_ratelimit = check_policy_service inet:127.0.0.1:10040
в /etc/postfix/main.cf и затем сослаться на нее в /etc/postfix/master.cf какsmtpd_recipient_restrictions=...,$postfwd_ratelimit,...
sudo postfwd -f /etc/postfix/postfwd.cf --pidfile=/var/run/postfwd.pid --reload
.+
(как минимум 1), а не.*
(как минимум 0), чтобы правила не соответствовали отсутствующим полям.Что вам нужно, это аддон политики для Postfix. Для Postfix существует дюжина аддонов политик, некоторые из них имеют функцию ограничения скорости. Вы можете найти список дополнений политики Postfix здесь .
источник
Из использования: http://www.postfix.org/TUNING_README.html#conn_limit
источник
Проверьте этот демон политики, настраиваемый из mysql http://www.simonecaruso.com/limit-sender-rate-in-postfix/
источник