backoff-max-msg-per-hour

<domain>устарела

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

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

Замена устроена так же, как и в обычном режиме: интервал переехал в значение, 100/h вместо зашитого часа. И считает она то же самое — попытки наравне с доставками; сработавший предел монитор помечает строкой message rate limit reached (based on backoff-max-msg-rate in configuration).

А вот умолчание у замены необычное. Если для той же очереди задан max-msg-rate, щадящий предел по умолчанию равен ему; если не задан — unlimited. То есть без явной строки щадящий режим не медленнее обычного: он меняет расписание повторов, но не темп.

Перевод механический: backoff-max-msg-per-hour N становится backoff-max-msg-rate N/h.

Главная ловушка — ждать, что щадящий режим сам замедлит отправку. Не замедлит. Пока щадящего предела нет, MTA берёт для него обычный темп; очередь переходит на другое расписание повторов, а скорость остаётся прежней. Именно поэтому строку с приёмником, который начал отказывать, задают явно — и заметно ниже обычной.
Что делает Хаб. Устаревшее имя не пишет. Пишет замену — backoff-max-msg-rate в блоке приёмника внутри адреса отправки, из пресета узла: в «Аккуратном» одно письмо в час на приёмник, который начал отказывать, в «Сбалансированном» пять, в «Агрессивном» двадцать. Резервный адрес получает то же число обычным max-msg-rate: туда уходят очереди, уже попавшие в щадящий режим.

Число выбрано осознанно низким: щадящий режим у нас означает «почти остановиться и подождать», а не «сбавить немного».

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

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

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

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

Пометка об устаревании и имя замены — из руководства, § 3.3.10.43. Правило умолчания «равно max-msg-rate, иначе unlimited» — из раздела замены § 3.3.10.41. Совет перечитать число наш.
Пример в конфигурации
# так писали раньше
<domain yahoo.com>
    backoff-max-msg-per-hour 100</domain>

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

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

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

Убирают строку, считая щадящий режим и так медленным

§ 3.3.10.41

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

Переводят только обычный темп, забывая про щадящий

§ 3.3.10.43

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

Ставят щадящий предел выше обычного

§ 3.3.10.41

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