Как складывается политика для приёмника

критично

<domain> matching and merging
Побеждает самое точное совпадение, а не последнее в файле

Блоки приёмника пишутся не по одному на домен, а по образцу, и одному письму обычно подходят сразу несколько. MTA не выбирает из них один, а сливает — от самого общего к самому точному.

Порядок в файле не значит ничего. Руководство говорит это дважды, и не зря: почти во всех конфигурационных форматах побеждает последняя запись, а здесь — самая точная. Блок <domain *> можно писать первым, последним или в середине: он всё равно останется основанием, поверх которого лягут остальные.

Как слияние выглядит на деле. Пример из руководства: три блока подряд — discard.port25.com, *.port25.com и [*.]port25.com. Письмо на discard.port25.com получит bounce-after 1h из первого блока, log-commands yes из второго и всё прочее из третьего. Ни одна настройка не потерялась и ни одна не отменила другую целиком — каждая пришла оттуда, где записана точнее.

Отличие от разбора отправителя. Механизм слияния тот же самый, что у source-matching, но решает другое: там — примут ли письмо, здесь — с какой скоростью, сколькими соединениями, с какими повторами и с каким требованием к шифрованию его повезут.

Формы образца описаны отдельно — их пять, и одна из них ловушка; разбор на странице config-syntax-types.

Главная ловушка — звёздочка с точкой. Образец *.port25.com совпадает только с поддоменами и не совпадает с самим port25.com. Руководство иллюстрирует это своим же примером: команды логируются для всех правильных поддоменов и не логируются для домена как такового. Форма, которая ловит и то и другое, пишется иначе — [*.]port25.com. Различие в две скобки, а последствие в том, что политика, написанная для крупного получателя, к нему самому не применяется.
Что делает Хаб. Собирает политику приёмника из групп провайдеров и состояния прогрева и пишет её блоком <domain *> внутри блока адреса отправки: темп, щадящий режим, расписание повторов. Так политика получается своя у каждого адреса — на разных адресах разные стадии прогрева.

Образцы точнее звёздочки Хаб пока не пишет: разделение по провайдерам живёт у него в планировщике, а не в конфигурации узла. Когда дойдёт до провайдерских профилей в конфиге, писать их надо будет формой [*.]домен — именно потому, что *.домен не ловит сам домен.

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

Собственных значений у механизма нет — сливаются значения директив. Выбор идёт не между значениями, а между формами образца:

Форма Что ловит Когда писать
* все домены основание: то, что верно для всех
[*.]домен домен и все его поддомены профиль получателя — обычный выбор
*.домен только поддомены, сам домен нет редко: когда домен и поддомены надо развести
точное имя один домен исключение для одного получателя
[ip/маска] домены, записанные четвёркой чисел адреса-литералы, [0/0] — все такие

Правило простое: [*.] почти всегда, *. почти никогда. Вторая форма нужна ровно тогда, когда для домена и его поддоменов задумана разная политика — и тогда обе формы пишутся рядом, чтобы намерение было видно.

Таблица и правило выбора формы — наши. Из руководства здесь сам порядок слияния, независимость от порядка в файле, состав форм и пример с тремя блоками port25.com.
Пример в конфигурации
# порядок строк не значит ничего — значит точность образца
<domain discard.port25.com>     # только этот хост
    bounce-after 1h
</domain>
<domain *.port25.com>           # поддомены, но НЕ port25.com
    log-commands yes
</domain>
<domain [*.]port25.com>         # и домен, и поддомены    bounce-after 4d
</domain>
Пример руководства целиком. Письмо на discard.port25.com получит час на отказ из первого блока, журнал команд из второго и всё остальное из третьего. Письмо на сам port25.com получит четыре дня и журнала команд не получит — средний блок его не ловит.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Пишут звёздочку с точкой, имея в виду домен и поддомены

§ 3.3.10

Чем чреватоОбразец со звёздочкой и точкой не ловит сам домен. Политика, написанная для крупного получателя, к его основному домену не применяется — а именно туда идёт почти вся почта.
Как заметитьНастройки видны в файле, но команда настроек очереди для самого домена печатает умолчания, а для поддомена — написанное.
Как правильноПисать [*.]домен. Форму со звёздочкой оставлять только там, где для домена и поддоменов задумана разная политика.

Переставляют блоки, надеясь изменить приоритет

§ 3.3.10

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

Ищут действующую политику в одном блоке

§ 3.3.10

Чем чреватоЕё там нет ни в одном: политика — это результат слияния нескольких блоков и нескольких уровней. Чтение одного блока даёт часть картины и уверенность, что видно всё.
Как заметитьВ разговоре звучит «у нас для этого получателя стоит…», а MTA печатает другое значение.
Как правильноСмотреть вывод настроек очереди — он и есть результат слияния. Файл читать после него, а не вместо.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Слияние идёт от общего образца к точному, и точный перекрывает общий настройка за настройкой, а не блоком целиком. К этому добавляется второе измерение: блок приёмника может стоять на уровне узла, внутри пула и внутри адреса отправки — тогда сначала складываются образцы, а потом уровни, и самый узкий уровень оказывается сильнее. Подхватывается по pmta reload.
⇄

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

3 связи

Как проверить на узле
Читать слияние по файлу — самый верный способ ошибиться. Действующую политику печатает MTA:
pmta show settings discard.port25.com/mta-news-1
pmta show settings port25.com/mta-news-1
Две команды подряд на домен и на его поддомен — самый быстрый способ поймать ловушку со звёздочкой: если строки различаются там, где не должны, значит образец написан формой *.домен вместо [*.]домен.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Настроить темп под провайдера
Важность
критично