Снять адрес отправки — и что станет с его очередью

критично

Canceling a VirtualMTA
Снятие адреса отправки отказывает всё, что за ним осталось

Опасная половина управления адресами, и руководство описывает её точно. Само снятие простое: удалить или закомментировать определение и перезагрузить конфигурацию. Наложение по соединениям — то же, что при смене.

Важно другое: что станет с письмами, которые уже выбрали этот адрес отправки. Они отказывают. Не откладываются, не уходят другим потоком — отказывают, со своим кодом доставки 5.3.5 (no such virtual MTA).

Руководство отдельно отделяет этот код от похожего. 5.5.0 specified Virtual MTA ‘…’ does not exist — это отказ на подаче, когда письмо только пытаются положить на узел с заголовком, называющим несуществующий адрес отправки. Два кода, два разных момента, и путать их значит искать причину не на той стороне.

Отказ рождается на нашем узле. О получателе он не говорит ничего, и классификатор отказов не должен вносить такие адреса ни в какие списки подавления.

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

У рецепта нет значений — есть шаги. Решается здесь одно: что делать с остатком очереди.

Решение Как Цена
дать доработать остановить подачу и подождать, пока очередь опустеет время; адрес пока занят
увести перебросом reroute-to-virtual-mta на другой адрес отправки письма уйдут не с того адреса, что задумывалось
сменить адрес вместо снятия рецепт смены — очередь сохраняется имя адреса отправки остаётся в конфигурации
принять потерю снять сразу письма отказывают; классификатор не должен считать это виной получателя
Оба кода отказа и порядок «правка плюс перезагрузка» — из руководства (§ 9.5.2). Разбор решений по остатку — наш.
Пример в конфигурации
# снятие — это правка конфигурации, а не команда
# <virtual-mta shop-example-com>
#     smtp-source-host 203.0.113.10 shop.example.com
# </virtual-mta>
Закомментированное определение и удалённое равнозначны. После перезагрузки письма, оставшиеся за этим адресом отправки, откажут с кодом 5.3.5; попытка подать новое письмо с его именем в заголовке даст другой код — 5.5.0, уже на подаче.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Снимают адрес, не заглянув в очередь

§ 9.5.2

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

Путают два кода отказа

§ 9.5.2

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

Отказы снятия попадают в подавление

наш опыт

Чем чреватоАдреса получателей уходят в чёрный список за событие, к ним отношения не имеющее. Дальше письма этим людям не отправляются вообще — по причине, которой не было.
Как заметитьПосле вывода адреса из работы часть получателей перестаёт получать рассылку без видимого повода.
Как правильноКлассификатору отказов различать внутренние: отказ из-за снятия адреса отправки не говорит о получателе ничего и в подавление идти не должен.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Наследования у рецепта не бывает — это порядок действий. Наследование важно на шаге проверки: письма могли выбрать этот адрес отправки не только заголовком, но и правилом по образцу или умолчанием источника. Останавливая подачу, отключать надо все способы выбора, а не один.
Как проверить на узле
Единственная обязательная проверка рецепта — есть ли ещё очереди за этим адресом отправки:
pmta show queues */shop-example-com
Пустой вывод означает, что снимать безопасно. Непустой — сколько писем откажет, если снять сейчас. Проверку делают после остановки подачи и непосредственно перед правкой: между ней и перезагрузкой промежуток должен быть минимальным.
В Хабе
Цена ошибки
опасно: последствия переживут откат
Сценарии
Классификация отказов · Ротация адресов отправки
Важность
критично