Мене вражає, що всі інші відповіді на це старе питання є лише посиланнями. Тож я збираюсь описати кількома словами, як реалізувати своє улюблене рішення для цієї роботи.
Посилання , що @ 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 .