Перейти к основному содержанию

Postfix — ограничить поток исходящих писем

Mail

Почтовый сервер postfix ориентирован на максимальную производительность. Если у него есть письмо, то он постарается его как можно быстрее отправить. Но иногда требуется ограничить поток исходящих писем. При этом желательно, чтобы postfix продолжал принимать письма без ограничений, но отправлял их постепенно. Бывает, что провайдер ограничивает ваш сервер и разрешает отправлять, например, не более 300 писем в минуту.

В этом случае поможет настройка в /etc/postfix/main.cf:

smtp_transport_rate_delay = 1s

Данная настройка устанавливает задержку между отправкой писем. Если установить значение в 20s, то сервер будет отправлять не более трёх писем в минуту. Возможно использовать значения: s (seconds), m (minutes), h (hours), d (days), w (weeks).

Всё бы хорошо, но есть одна проблема. Минимально можно указать задержку в одну секунду. Это означает, что сервер не сможет за одну минуту отправить более 60 писем. За час он отправит 3600 писем, за день — 86400 писем. Ещё нужно учесть, что сервер будет также пытаться отправить повторно письма, которые по каким-то причинам не смогли отправиться в первый раз.

Это мало. Как подстроиться под провайдера и отправлять хотя бы 300 писем в минуту?

Можно сделать несколько экземпляров postfix на одном сервере — Multi Instance. Поднимаем пять экземпляров postfix, и 60 писем в минуту превращаются уже в 300, что и требовалось получить. Управляя количеством экземпляров postfix, можно регулировать скорость отправки писем.

Если у вас есть только один IP адрес, то можно поднять экземпляры postfix на разных портах, после чего балансировать нагрузку с помощью haproxy. Будьте осторожны с аутентификацией, после haproxy все экземпляры postfix будут считать, что письмо им пришло от localhost. В случае с haproxy вместо:

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

лучше использовать:

smtpd_relay_restrictions = permit_sasl_authenticated reject_unauth_destination

Иначе вы рискуете сделать из вашего защищённого сервера открытый релей.

Ссылки

http://www.postfix.org/postconf.5.html#transport_transport_rate_delay

Postfix — Multi Instance

Postfix — saslauthd и multi instance

Postfix — opendkim и multi instance

Haproxy на Ubuntu 20.04 LTS

Теги

 

Похожие материалы

Автоматически чистить почтовый ящик из Ubuntu

Понадобилось мне как-то автоматически стирать все письма из почтового ящика. Ящик был на Exchange, автоматически там можно удалять письма, но только в папку "Удалённые", что не совсем то что нужно. Не найдя нормального функционала автоматической очистки папки плюнул и решил с соседнего сервера Ubuntu кроном удалять письма из ящика. Итак, на сервере Ubuntu ставим пакет fetchmail:

Теги