max-smtp-msg-rate

<virtual-mta-pool>

Темп отправки, который достаётся каждому адресу пула
в конфигурации это строкаmax-smtp-msg-rateвнутри блока <virtual-mta-pool>
То же имя ещё 1:<virtual-mta><virtual-mta-pool>— часть из них другие настройки, часть та же самая
Одна строка на группу — но каждому достаётся полностью

Что директива делает, описано на её основной странице: это потолок попыток за интервал на весь адрес отправки. Здесь — только то, что меняется от записи в пуле.

Пул раздаёт значение, а не делит его. Руководство перечисляет директивы, которые пул передаёт вниз, и называет это наследованием: участники получают значение как своё собственное. 100/m в пуле из пяти адресов — это по сотне у каждого, то есть до пятисот в минуту с пула. Никакого «общего бюджета группы» тут нет.

Зачем тогда писать здесь. Ради одной строки вместо пяти одинаковых и ради того, чтобы добавленный в пул адрес сразу получал ту же политику, а не оставался без лимита. Это удобство записи, а не отдельный уровень ограничения.

Что перекрывает что. Значение, записанное в самом адресе, пуловое отменяет — целиком, а не частично. Поэтому пул задаёт правило для тех участников, у кого своего значения нет, и молчит про остальных.

Главная ловушка. Суммарный темп группы меняется от её состава, хотя конфигурация остаётся прежней. Добавили в пул шестой адрес — с пула пошло на шестую часть больше писем, и ни одна строка при этом не редактировалась. Если нужен предел именно на группу, эта директива его не даёт: делите задуманный темп на число участников сами и пересчитывайте при каждом изменении состава.
Что делает Хаб. В пуле не пишет ничего, кроме списка участников — ни этой директивы, ни соседних. Причина та же, по которой он не пишет её и у адреса: суточный объём при прогреве держит собственный планировщик, он умеет останавливаться по доле спама и подменять адрес из резервного пула. Общая на всю группу строка этому только мешала бы: в парке прогреваемый и сложившийся адреса стоят рядом, и одинаковый темп им не подходит.
Рекомендуемые значения

Сначала поделите на число участников. Задуманный темп группы делится на количество адресов в пуле — и только результат пишется сюда. Пул из четырёх адресов, полторы тысячи писем в час с группы: 375/h, а не 1500/h.

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

Умолчания у пуловой записи нет. Руководство его не называет: без строки в пуле участники живут со своими значениями, а у кого нет своего — без ограничения.

Правило деления и оговорка про разнородный пул — наша рекомендация. Из руководства здесь то, что пуловые директивы наследуются участниками, и грамматика значения.
Пример в конфигурации
# одна строка вместо двух одинаковых — но каждому достаётся полностью
<virtual-mta mta1>
</virtual-mta>

<virtual-mta mta2>
</virtual-mta>

<virtual-mta-pool pool>
    max-smtp-msg-rate 100/m    virtual-mta mta1
    virtual-mta mta2
</virtual-mta-pool>
Пример руководства, комментарий наш. Обоим адресам достанется по 100 писем в минуту — с пула это две сотни, а не сотня.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Читают строку как бюджет всей группы

§ 3.3.13

Чем чреватоПул не делит значение, а раздаёт: 100/m в пуле из пяти адресов — это пятьсот писем в минуту, а не сто. Расчёт расходится с реальностью ровно во столько раз, сколько адресов в пуле.
Как заметитьФактический темп с группы кратен числу участников и меняется при добавлении адреса, хотя конфигурацию не трогали.
Как правильноДелить задуманный темп группы на число адресов и писать результат. Пересчитывать при каждом изменении состава — иначе строка тихо перестаёт означать то, что задумывалось.

Задают общий темп разнородному пулу

§ 3.3.13

Чем чреватоВ одном пуле стоят прогреваемый адрес и сложившийся. Значение, безопасное для второго, для первого — перегрузка; значение, годное для первого, второй душит. Общая строка выбирает, кого испортить.
Как заметитьУ молодого адреса растёт доля отказов, у зрелого копится очередь — одновременно и с одной и той же строки в конфигурации.
Как правильноЗадать лимит каждому адресу отдельно, а пул оставить для распределения трафика. Пуловая строка хороша там, где участники однородны.

Правят пул, а значение не меняется

наш опыт

Чем чреватоУ адреса есть собственное значение, и оно перекрывает пуловое целиком. Правка в пуле проходит без ошибок, конфигурация выглядит применённой, а поведение прежнее.
Как заметитьpmta show vmta-settings для участника печатает не то, что записано в пуле.
Как правильноСверять действующее значение у участника, а не читать конфигурацию. Убрать строку из адреса, если управлять хотите из пула.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
max-smtp-msg-rate <see-reference>
Значения
как у определения: unlimited · 0 · N/[M] с единицей d|day|h|hr|m|min|s|sec
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<virtual-mta-pool>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Пул передаёт значение каждому участнику как его собственное; значение, записанное в блоке <virtual-mta>, пуловое отменяет. Выше пула наследовать не от чего: на уровне узла директива не описана. Подхватывается по pmta reload, перезапуск сервиса не нужен.
Как проверить на узле
Смотреть надо не в пул, а в участника: команда печатает значение уже после слияния, и по ней сразу видно, досталось оно адресу или у него своё.
pmta show vmta-settings mta1
pmta show vmta-settings mta2
Если обе команды показывают одно и то же значение — оно пришло из пула, и суммарный темп группы вдвое больше напечатанного. Если разное — у адреса своё, пуловое до него не дошло. Хаб пуловые настройки не собирает: в мониторинге видна сводка по адресам, но не действующие лимиты.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Ротация адресов отправки