max-msg-per-hour

<domain>устарела

Темп писем к приёмнику — устаревшая форма с зашитым часом
в конфигурации это строкаmax-msg-per-hourвнутри блока <domain>
Интервал зашит в имя, а не в значение

Строка ограничивала темп писем к приёмнику часом. Руководство отвело ей раздел из одной фразы — «устарела, используйте max-msg-rate» — и ни синтаксиса, ни умолчания к ней не приводит.

Замена отличается тем, что интервал переехал в значение. У max-msg-rate он пишется знаменателем: 500/h — те же пятьсот писем в час, 500/d — в сутки, 100/15m — сто за пятнадцать минут. Старое имя такого выбора не давало: час был единственным.

Что считает замена. В счёт идут не только доставленные письма, но и попытки: временный отказ приёмника тратит лимит наравне с принятым письмом. Сработавший лимит виден в веб-мониторе строкой message rate limit reached (based on max-msg-rate in configuration) — по ней сразу понятно, какая из четырёх похожих директив придержала отправку.

Перевод механический. max-msg-per-hour N становится max-msg-rate N/h. Значение то же, поведение то же — меняется только запись.

Главная ловушка — переименовать, забыв знаменатель. У замены грамматика значения строгая: число, косая черта, необязательный множитель и единица времени. Голое max-msg-rate 500 этой грамматике не отвечает, и полагаться на то, что MTA домыслит час, нельзя — час был свойством старого имени, а не значения. Переводя строку, дописывайте /h.
Что делает Хаб. Устаревшее имя не пишет никогда. Пишет замену — max-msg-rate в блоке <domain> внутри адреса отправки: на прогреве 1/h, дальше из пресета узла — 2/m, 10/m или 30/m; резервному адресу — темп щадящего режима того же пресета (1/h, 5/h или 20/h).

Строку стоит искать в конфигурациях, собранных руками до перехода на Хаб: MTA её принимает, а рядом с новой формой в одном файле она читается как вторая настройка, которой нет.

Рекомендуемые значения

Что ставить. Ничего: строку следует заменить.

Значение Когда
не писать всегда: темп задаётся заменой
N только в старой конфигурации, которую ещё не перевели

Перевод. Число переносится как есть, к нему дописывается /h. Если после перевода захочется другого окна — знаменатель для того и нужен: сутки, минута, пятнадцать минут.

Пометка об устаревании и имя замены — из руководства, § 3.3.10.42. Грамматика значения и то, что в счёт идут попытки, — из раздела замены § 3.3.10.40. Порядок перевода наш.
Пример в конфигурации
# так писали раньше — час был единственным окном
<domain yahoo.com>
    max-msg-per-hour 500</domain>

# так пишут сейчас — окно выбирается знаменателем
<domain yahoo.com>
    max-msg-rate 500/h
</domain>
Значение то же, поведение то же. Знаменатель понадобится сразу, как только окно перестанет быть часом: 500/d или 100/15m старым именем не выражаются вовсе.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Переименовывают строку, не дописав знаменатель

§ 3.3.10.40

Чем чреватоЧас был свойством старого имени, а не значения. У замены грамматика требует единицу времени, и голое число ей не отвечает — рассчитывать, что MTA подставит час, не на чем.
Как заметитьПосле правки конфигурация либо не принимается, либо темп ведёт себя не так, как до переименования.
Как правильноПисать max-msg-rate N/h. Проверять действующее значение командой настроек очереди, а не чтением файла.

Оставляют обе формы в одном файле

§ 3.3.10.42

Чем чреватоУстаревшая строка не отвергается при разборе, и файл содержит два предела темпа с разными числами. Какой из них победит, руководство не оговаривает.
Как заметитьДействующий темп не совпадает ни с одним из двух написанных значений, либо совпадает с неожиданным.
Как правильноУбрать устаревшую строку сразу после перевода. Искать обе формы одним поиском по всему каталогу конфигурации.

Считают, что предел ограничивает доставленные письма

§ 3.3.10.40

Чем чреватоВ счёт идут и попытки: приёмник ответил временным отказом — лимит потрачен так же, как на принятое письмо. При высокой доле отказов фактическая доставка оказывается заметно ниже написанного числа.
Как заметитьДоставлено ощутимо меньше выставленного темпа, а монитор при этом показывает срабатывание лимита.
Как правильноРазбираться с причиной отказов, а не поднимать предел. Поднятый предел ускорит и попытки тоже.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
max-msg-per-hour <rate>
Значения
число писем в час; полной грамматики руководство для этого имени не приводит
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследование общее с прочими настройками приёмника: слияние по совпадающим блокам <domain> от общего к частному, побеждает самое точное совпадение. У замены оно ровно такое же — при переводе строку никуда переносить не нужно, меняется только имя и значение.
Как проверить на узле
Устаревшее имя ищут вместе с заменой — чтобы увидеть, не стоят ли в файле обе формы:
grep -rn 'max-msg-per-hour\|max-msg-rate' /etc/pmta/
pmta show settings yahoo.com/mta-news-1
Вторая команда печатает действующее значение — под именем max-msg-rate. Если в конфигурации нашлись обе формы, устаревшую надо убрать: разбираться, какая победит, руководство не помогает.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Жизненный цикл конфигурации