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

13

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

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

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

Благодарность

WarpKid
источник

Ответы:

23

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

Ссылка , что @ 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 .

Wtower
источник
1
взрыв из прошлого этот вопрос! Спасибо, что нашли время, чтобы дать такой хорошо продуманный ответ. Я впечатлен!
WarpKid
1
моя версия postfix barfs для любой 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,...
Tom McClure
Чтобы перезапустить постфикс в Ubuntu:sudo postfwd -f /etc/postfix/postfwd.cf --pidfile=/var/run/postfwd.pid --reload
Wtower
По крайней мере, с помощью Ubuntu 16.04 я обнаружил, что нужно изменить подстановочный знак в правилах, чтобы использовать .+(как минимум 1), а не .*(как минимум 0), чтобы правила не соответствовали отсутствующим полям.
TommyPeanuts
4

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

Эмре Язычи
источник
-1

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

beje
источник
2
Добро пожаловать в сбой сервера! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
masegaloeh