Как узел отвечает на слова приёмника

критично

<smtp-pattern-list>
Единственное, что запускает щадящий режим

Блок сопоставляет ответы приёмника с регулярными выражениями и по совпадению выполняет действие. Записи в нём одного вида — reply: выражение и действие рядом.

Это спусковой крючок для всего щадящего режима. Директивы с приставкой backoff- описывают, что случится, а совпадение здесь решает, когда. Без такого списка вся эта машинерия мертва (backoff-mode).

Действий несколько. Перевод очереди в щадящий режим и обратно (mode=backoff, mode=normal), отключение адреса источника (disable-source-ip), немедленный уход очереди в повторы (defer-queue, при желании со своим интервалом), пропуск записи MX и мгновенный отказ письму.

Отдельно про повторы. Руководство оговаривает: очередь, ушедшая в щадящий режим, не уходит автоматически в режим повторов. Если нужно и то и другое, второе действие пишется явно.

Под прокси отключение адреса ключуется по адресу клиента прокси, а не по адресу узла — тонкость первой части руководства, о которой легко забыть.

Блок почти не имеет директив — правила это синтаксис блока, а не именованные настройки. В указателе руководства ему отведена одна строка, хотя это самый отзывчивый механизм конфигурации.

Главная ловушка — спутать с блоком выбора адреса отправки. В конфигурации есть похожее имя pattern-list, и оно про совсем другое: правила выбора адреса отправки по домену отправителя, живущие в блоке подачи. Этот блок реагирует на ответы приёмника при доставке; тот — решает, с какого адреса отправлять. Имена отличаются одним словом, стороны узла — противоположные.
Что делает Хаб. Этот блок не пишет — реакция на ответы приёмника у нас живёт снаружи, в планировщике: он видит отказы по телеметрии и решает сам.

А вот похожий по имени pattern-list Хаб пишет — в блоке подачи, строкой выбора адреса отправки по домену отправителя. Тот, кто ищет в нашей конфигурации реакцию на отказы и находит это имя, ошибётся.

🔴 Отсюда следствие: щадящий режим у нас настроен полностью (backoff-mode), но включиться сам не может — включателя нет. В режим очередь переводит либо команда, либо планировщик Хаба. Разница в скорости: MTA среагировал бы прямо в соединении, планировщик узнаёт из телеметрии секундами и минутами позже.

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

Своих значений у блока нет — есть действия, которые пишутся рядом с выражением:

Действие Что делает Когда уместно
mode=backoff переводит очередь в щадящий режим отказ по репутации, «слишком много ошибок»
mode=normal возвращает в обычный ответ, означающий, что придержали временно
disable-source-ip отключает адрес источника отказ, названный по конкретному адресу
defer-queue немедленно уводит в повторы там, где ждать следующей попытки бессмысленно

Выражения писать по словам приёмника, а не по кодам. Коды у крупных приёмников общие, а причина различается текстом: 421 too many errors и 421 try again later — разные события под одним кодом.

Начинать с малого. Одно-два выражения на самые частые отказы полезнее длинного списка: каждое правило — это автоматическое действие, и ошибка в нём тоже автоматическая.

Таблица действий с советами и правило «по словам, а не по кодам» наши. Из руководства здесь состав записей блока, набор действий, оговорка про режим повторов и поведение отключения адреса под прокси.
Пример в конфигурации
# список образцов и ссылка на него из блока приёмника
<smtp-pattern-list block-errors>
    reply /^421 .* too many errors/ mode=backoff    reply /blocked.*spamhaus/ mode=backoff
</smtp-pattern-list>
<domain aol.com>
    smtp-pattern-list block-errors
    backoff-max-msg-rate 1/h
</domain>
Выделенная строка — пример руководства. Без нижней ссылки список не действует ни на одну очередь: блок сам по себе только описывает правила.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Путают с блоком выбора адреса отправки

§ 3.3.7.32

Чем чреватоПохожее имя pattern-list в блоке подачи выбирает адрес отправки по домену отправителя. Тот, кто ищет реакцию на отказы и находит это имя, решает, что она настроена, — а её нет.
Как заметитьВ конфигурации есть список образцов, но очереди никогда не переходят в щадящий режим.
Как правильноСмотреть на имя целиком и на то, в каком блоке стоит ссылка. Реакция на приёмника — только в блоке приёмника.

Пишут список и не ссылаются на него

§ 3.3.15

Чем чреватоБлок сам по себе только описывает правила. Без строки ссылки в блоке приёмника ни одна очередь его не применяет, и вся настройка щадящего режима остаётся бездействующей.
Как заметитьСписок в конфигурации есть, режимы очередей не меняются никогда.
Как правильноДобавить строку со ссылкой в блок приёмника — на нужном уровне: узла, пула или адреса отправки.

Ждут, что щадящий режим сам уведёт очередь в повторы

§ 3.3.20

Чем чреватоРуководство говорит обратное: одно другое не влечёт. Очередь сбавляет темп, но продолжает пробовать по прежнему расписанию, если второе действие не написано.
Как заметитьОчередь в щадящем режиме, а попытки идут с прежней частотой.
Как правильноДописать действие ухода в повторы рядом с переводом в щадящий режим — при желании со своим интервалом.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Сам блок живёт в корне файла и не наследуется. Наследуется ссылка на него — строка smtp-pattern-list в блоке приёмника, по обычному правилу слияния: от общего образца к точному и по уровням узел, пул, адрес отправки. Значит, у разных очередей одного домена могут действовать разные списки.
⇄

Связанные записи

3 связи

Как проверить на узле
Проверять надо и наличие списка, и то, что на него кто-то ссылается:
grep -n -A6 '^<smtp-pattern-list' /etc/pmta/config
pmta show queues
Список без единой ссылки не действует ни на что. Вторая команда покажет режимы очередей: если ни одна не бывала в щадящем режиме, а список есть, — либо ссылки нет, либо выражения не совпадают с тем, что реально отвечает приёмник.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Ротация адресов отправки
Важность
критично