max-msg-rate

<domain>критичноХаб задаёт сам

С какой скоростью отдавать письма этому получателю
в конфигурации это строкаmax-msg-rate 10/mвнутри блока <domain>
Скорость отдачи писем получателю

Сколько писем в единицу времени узел пытается отдать этому получателю. Записывается парой «число дробь единица»: 10/m — десять писем в минуту, 500/h — пятьсот в час. Лимит считается на очередь: получатель плюс адрес отправки.

Считаются попытки, а не успехи. Отказ, отсрочка и доставка расходуют лимит одинаково. Поэтому 10/m — это не «десять писем дойдёт», а «десять раз попробуем»; при доле отказов в треть до ящиков доедет около семи. Читать это число как объём доставки — самая частая ошибка планирования.

Что будет, если перебрать. Провайдер отвечает временными отказами, очередь уходит в backoff, и там начинает действовать backoff-max-msg-rate — обычно втрое ниже. То есть перебор не просто останавливает рост, а отбрасывает темп назад на часы.

Главная ловушка. Лимит на очередь, а не на получателя. Десять адресов отправки, шлющих на Gmail по 10/m, дают Gmail сто писем в минуту. Считать надо от парка: сколько писем в минуту вы готовы показать получателю, потом делить на число адресов.
Что делает Хаб. Значение берётся из выбранного темпа и стадии прогрева. Холодный адрес получает 1/h — одно письмо в час на приёмник, и это не осторожность, а требование прогрева: первые недели провайдер судит адрес по первым десяткам писем.
Рекомендуемые значения
Режим На адрес (vMTA) В правиле провайдера Когда это ваш случай
Прогрев, холодный адрес 1/h — Адрес младше 4–6 недель или после паузы
Аккуратно 2/m — Строгие получатели, спорная репутация, первые недели после прогрева
Сбалансированно по умолчанию 10/m — Обычный режим устоявшегося парка
Агрессивно 30/m — Прогретые адреса, лояльные получатели, срочные объёмы
Умолчание PowerMTA unlimited — Если директиву не писать вовсе

Поправка на размер парка. Умножьте на число адресов, которые шлют тому же получателю. Мы держим произведение в пределах сотни писем в минуту на одного получателя: десять адресов — значит по 10/m, три адреса — можно по 30/m.

Единица имеет значение. 60/h и 1/m — это разные вещи: первое разрешает отдать все шестьдесят в первую минуту часа, второе размазывает их ровно. Для строгих получателей всегда выбирайте минутную единицу.

Значения — наша рекомендация, обкатанная на парке. Из руководства здесь только «без ограничения» в последней строке.
Пример в конфигурации
# темп очереди и его щадящий двойник — рядом
<virtual-mta mta-news-1>
    <domain *>
        max-msg-rate 500/h        backoff-max-msg-rate 1/h
    </domain>
</virtual-mta>
Форма темпа с умноженным знаменателем — из руководства, блок наш.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается2 ошибки▶

Читают лимит как объём доставки

наш опыт

Чем чреватоЛимит считает попытки. При доле отказов в треть 10/m даёт около семи доставленных писем в минуту, и план рассылки, посчитанный по номиналу, не выполняется — а причину ищут в чём угодно, кроме арифметики.
Как заметитьОтправлено по отчёту заметно меньше запланированного, при том что узел не в backoff и очередь не растёт.
Как правильноПланировать от доставленных: взять долю успеха по этому получателю за прошлую неделю и делить план на неё.

Ставят часовую единицу строгому получателю

§ 3.3.10

Чем чревато600/h разрешает отдать все шестьсот писем в первую минуту часа. Получатель видит всплеск, а не поток, и отвечает временными отказами — при том что среднечасовой темп он бы принял спокойно.
Как заметитьОтказы кучкуются в начале часа, дальше час идёт тихо; в мониторе пилообразный график вместо ровной линии.
Как правильноДля строгих получателей задавать минутную единицу: 10/m вместо 600/h. Число то же, поведение разное.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
max-msg-rate <rate>
Значения
unlimited · 0 · N/[M] с единицей d|day|h|hr|m|min|s|sec — например 500/h или 100/15m
Умолчание
unlimited § 3.3.10.40
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Сливается по совпадающим блокам <domain> от общего к точному, а по уровням — узел, пул, адрес отправки, где самый узкий сильнее. Значение достаётся каждой очереди этого приёмника: при трёх адресах отправки суммарный поток втрое больше написанного. Подхватывается по pmta reload.
Как проверить на узле
Действующее значение — после слияния — печатает команда настроек очереди:
pmta show settings gmail.com/mta-news-1
Строка max-msg-rate в разделе настроек очереди и есть действующее значение. Само срабатывание видно в веб-мониторе строкой message rate limit reached (based on max-msg-rate in configuration).
В Хабе
Управляется
Конфигурации → Лимиты доставки
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Прогрев адресов · Настроить темп под провайдера
Важность
критично