Мне нужно, чтобы Postfix отправлял исходящие сообщения (с локального PHP) с определенной скоростью. Скажем, одно сообщение за 120 секунд. Любые сообщения, превышающие эту скорость, должны быть поставлены в очередь (задержаны) и доставлены позже.
Политический это не то, что я ищу. Мне не нужно ограничивать общее количество отправленных сообщений. Мне нужна пауза (120 секунд) между любыми двумя отправляемыми сообщениями.
Пробовал эту конфигурацию, но она не работает:
initial_destination_concurrency = 1
default_destination_concurrency_limit = 1
default_destination_rate_delay = 120
default_destination_recipient_limit = 1
default_process_limit = 1
Какие-либо предложения?
Вам нужно установить
default_destination_recipient_limit = 2
вместо 1. Поскольку, если установлено значение 1, ограничение будет применяться только к тому же получателю, не домен.
Я бы использовал postfwd. Я использую его в производстве для серверов с ограничением скорости.
Вы можете ограничить исходящие электронные письма:
default_destination_rate_delay = 1s
Postfix добавит задержку между каждым сообщением в одном и том же принимающем домене с задержкой в 1 секунду. Значение по умолчанию - 0 с.
Когда вы говорите, что приведенная выше конфигурация не работает, разве она не работает в одном месте или в разных местах назначения?
Что касается предложения, было бы довольно тривиально создать сценарий включения / выключения правила iptables для блокировки исходящих подключений к порту 25. Это было бы моим следующим предложением.
smtpd_client_connection_rate_limit = 100
smtpd_client_message_rate_limit = 100
smtpd_client_recipient_rate_limit = 200
smtpd_client_new_tls_session_rate_limit = 100
#Проверь это
Возможно, поиграв немного с qmgr, вы сможете получить какие-то результаты.
Это обычное дело для электронной почты, отправляемой на Yahoo. Вы можете посмотреть пример конфигурации на http://old.nabble.com/Create-Custom-Mail-Queue-td21577217.html#a21577217 и измените числа по своему усмотрению.