backoff-notify

<domain>Хаб задаёт сам

Кого уведомить, когда очередь входит в backoff или выходит из него
в конфигурации это строкаbackoff-notifyвнутри блока <domain>
Как узнать, что очередь притормозила

Список адресов через запятую, на которые MTA пишет, когда любая из очередей этого получателя входит в щадящий режим или выходит из него. Оба события, без выбора.

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

По домену, а не по очереди. Уведомление относится к получателю, а очередей у него столько, сколько адресов отправки. Если в backoff уйдут три очереди подряд, писем будет три.

Пустая строка стирает унаследованное. “” в частном блоке отменяет значение из общего.

Главная ловушка. Уведомление уходит через тот же узел, у которого сейчас проблемы с доставкой. Если получатель уведомлений живёт на том же домене, что и притормозившая очередь, письмо встанет в эту самую очередь и приедет вместе с остальными — то есть тогда, когда уже не нужно. Адресат должен быть на стороннем домене.
Что делает Хаб. Пишет — по условию: строка появляется у получателя только тогда, когда для узла задан адрес уведомления. Не задан — строки нет вовсе, и это намеренно: адрес, ведущий в никуда, хуже её отсутствия.

Дублирующий канал здесь не лишний. Режим очередей Хаб снимает опросом узла и показывает в мониторинге, но письмо от MTA приходит в момент события — и придёт даже тогда, когда опрос в эту минуту не прошёл.

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

Задавайте в общем блоке. Событие интересно по любому получателю, а не по избранным.

Адресат — на стороннем домене. Иначе письмо уедет в ту же очередь, о которой сообщает.

Готовьтесь к парности. На каждый вход придёт и выход: если очередь «дышит» — уходит в backoff и возвращается по нескольку раз за день, — писем будет вдвое больше, чем событий. Это признак того, что разбираться надо не с уведомлениями, а с лимитами.

Требования к адресату и оговорка про парность — наши. Из руководства здесь формат списка, стирание пустой строкой и то, что письмо приходит на оба события.
Пример в конфигурации
# событие про любого получателя — значит общий блок
<domain *>
    backoff-notify ops@example.net,dev@example.net    backoff-to-normal-after 1h
</domain>
Домен получателя нарочно чужой. Вторая строка рядом не случайно: без неё очередь может остаться в backoff надолго, и второе письмо — о выходе — не придёт вовсе.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Указывают ящик на том же домене, куда шлют

наш опыт

Чем чреватоУведомление о притормозившей очереди попадает в эту же очередь и уезжает по её лимитам — то есть медленно. Смысл раннего предупреждения теряется полностью.
Как заметитьОчереди в backoff есть, письма приходят с большим опозданием или не приходят вовсе.
Как правильноЯщик на стороннем домене, который узел доставляет обычным темпом.

Ждут письма только о проблеме

§ 3.3.10.51

Чем чреватоПисьмо приходит и на выход из режима. На парке, где очереди регулярно входят и выходят, поток удваивается, и уведомления быстро перестают читать.
Как заметитьЯщик завален парами «вошла — вышла» по одним и тем же получателям.
Как правильноЭто сигнал не про уведомления, а про лимиты: очередь, которая «дышит», настроена слишком близко к порогу приёмника.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
backoff-notify <email-list>
Значения
адреса через запятую; пустая строка стирает унаследованное значение
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Значение сливается по блокам <domain> от общего к частному: побеждает наиболее подходящий блок, а не последний по файлу. Пустая строка “” стирает унаследованное — иначе отменить общее значение в частном блоке было бы нечем. Подхватывается по pmta reload, перезапуск не нужен.
Как проверить на узле
Строка проверяется чтением конфигурации, а по-настоящему — событием. Режим очередей виден отдельно:
grep -rn backoff-notify /etc/pmta/
pmta show queues --mode=backoff
Вторая команда показывает очереди, которые сейчас в щадящем режиме. Если они есть, а писем не приходило — проверьте адресата: скорее всего он на том же домене, и письмо стоит в этой же очереди.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобраться с доставляемостью