Сменить адрес отправки, когда письма уже в очереди

Changing a VirtualMTA
Смена адреса на ходу — и окно, в котором верны оба ответа

Это описанное поведение, а не побочный эффект. Граница проходит по соединению: те, что откроются после перезагрузки, возьмут новое определение; те, что уже установлены, доработают на старом.

Значит, смена не мгновенна. Её окно — время жизни самого долгого открытого соединения. Оно ограничено (таймаут простоя закрывает соединения), но коротким не является.

Для всего, что рассуждает «какой адрес что отправил», это окно — период, в котором верны оба ответа. Письмо, поставленное в очередь после правки, могло уйти с прежнего адреса, если соединение было открыто раньше.

Главная ловушка — измерять репутацию по плану, а не по учёту. Внутри окна письма уходят с прежнего адреса, а план уже считает их за новым. Любая метрика на адрес, снятая в этот момент, приписывает трафик не тому.
Что делает Хаб. Смену выполняет: пересобирает конфигурацию и применяет её — это и есть шаги 1–2. Чего он не делает — не учитывает окно наложения и не сверяет потом, что на узле действительно действуют задуманные настройки. Обе проверки дешёвые: адрес письма лежит в учёте, действующие настройки отдаёт команда узла.
Рекомендуемые значения

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

Что делаете Что происходит с очередью Когда так
меняете определение письма остаются и уходят с нового адреса адрес сдаётся хостеру, письма терять нельзя
заводите новый и переключаете подачу старая очередь дорабатывает со старого нужна чистая граница по адресам в учёте
удаляете определение очередь отказывает — см. рецепт снятия адрес отправки больше не нужен вовсе
Граница по соединению и достаточность перезагрузки — из руководства (§ 9.5.1). Разбор альтернатив — наш.
Пример в конфигурации
# адрес сдаётся хостеру: правим строку и перезагружаем
<virtual-mta shop-example-com>
    smtp-source-host 203.0.113.77 shop.example.com</virtual-mta>
Письма из очереди этого адреса отправки никуда не денутся — они уйдут с нового адреса. Обратную запись нового адреса надо привести в порядок до перезагрузки: имя в приветствии осталось прежним.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают смену мгновенной

§ 9.5.1

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

Меняют адрес, не подготовив обратную запись

наш опыт

Чем чреватоИмя в приветствии осталось прежним, а обратная запись нового адреса указывает в другое место или отсутствует. Получатель видит расхождение с первого же соединения.
Как заметитьСразу после смены растёт доля временных отказов у строгих приёмников.
Как правильноГотовить обратную запись до перезагрузки. Если её нет и не будет — менять и имя тоже, вторым словом той же строки.

Убирают строку адреса вместо замены

§ 9.2

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