POSTFIX: Обмеження швидкості, з якою конкретний користувач може надсилати електронну пошту


13

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

Загалом для кожного веб-сайту, який ми налаштовуємо, ми надаємо клієнту обліковий запис електронної пошти у нашій системі. Зокрема, один із клієнтів вирішив, що було б ідеально надсилати буквально тисячі електронних листів. Коли це станеться, поштовий сервер стане невідповідним, а пошта для інших клієнтів знизиться під час обробки черги.

Чи є спосіб обмежити швидкість надсилання електронної пошти для одного конкретного користувача системи, а не для всіх? Чи є також налаштування, яке нам слід змінити, щоб нічого, що може зробити користувач, не призвело до того, що поштовий сервер почне працювати з ладу для інших користувачів?

Спасибі

Відповіді:



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, ви можете встановити з repos, щоб усі залежності автоматично розбиралися, а потім замінювались /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 реалізований (наприклад , голубник) , ви можете спокійно замінити 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 використовує той же протокол , як постфікси (наприклад , /var/log/mailчи й /usr/local/psa/var/log/maillogт.д.) і лінію , як postfwd 1.35 ready for inputповинно бути на місці.

Тоді повідомте postfix про те, щоб використовувати postfwd. Редагуйте файл конфіденційних файлів постфікса (як правило /etc/postfix/main.cf) та в рядку:

smtpd_recipient_restrictions = permit_mynetworks,...

додати check_policy_service inet:127.0.0.1:10040. Будь ласка, врахуйте, що порядок, куди ви вводите це, smtpd_recipient_restrictionsмає велике значення, і ви могли б витратити багато часу на діагностику того, що може бути неправильним. Як пояснено в цьому запитанні , якщо один чек повернеться ОК або ОТМОВИТИ, то постфікс не продовжується до наступного, тому ви, ймовірно, повинні ставити цей максимум.

Нарешті, щоб перевірити, що це працює, ви можете або вказати дуже невеликий ліміт, наприклад 1, або навіть додати правило як id=DEFAULT; action=dunno. Будь-яке звернення до правил все одно реєструється. Також врахуйте, що обмеження швидкості на одного відправника не відрізняє багаторазових електронних листів з одним одержувачем або однією електронною поштою з декількома одержувачами.

Потім надішліть електронний лист із облікового запису (на цьому сервері) і подивіться журнал:

grep "RULES" /var/log/mail

Інші посилання: postfwd quickstart .


1
вибух з минулого це питання! дякую, що знайшли час, щоб надати таку продуману відповідь. Я перебуваю під враженням!
WarpKid

1
мою версію barfi-поштових рефіксів для будь-якого 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,...
Том МакКлур

Щоб перезапустити постфікс в 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/


2
Ласкаво просимо до помилки сервера! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
masegaloeh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.