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

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

Теги

 

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

Postfix — отправка с использованием TLS

Рассмотрим случай, когда ваш почтовый сервер только отправляет почту. По умолчанию в postfix TLS при отправке писем отключён. Чтобы включить TLS, нужно в конфиг /etc/postfix/main.cf внести изменения: smtp_use_tls = yes.

Теги