route

<domain>устарела

Устарела в пользу smtp-hosts
в конфигурации это строкаrouteвнутри блока <domain>
Устаревшая форма явных хостов доставки

Задавала хосты, которым доставлять почту этого получателя, минуя обычный поиск MX, — либо велела искать MX другого домена. Заменена директивой smtp-hosts.

Определение у обеих дословно одно. Раздел § 3.3.10.98 повторяет первую фразу § 3.3.10.100 слово в слово и добавляет одну строку: «устарела, пользуйтесь smtp-hosts». Ни синтаксиса, ни умолчания, ни отличия в поведении вендор для старого имени не приводит.

Что известно про форму записи. Она описана только у нового имени: хосты через запятую внутри уровня предпочтения, точка с запятой между уровнями, необязательный порт после двоеточия, lookup-mx:домен вместо списка хостов и пустые кавычки, чтобы стереть унаследованное значение. Принимает ли всё это старое имя — руководство не говорит.

Главная ловушка. В унаследованной конфигурации директива продолжает работать — и продолжает уводить почту мимо MX-записей получателя. Ошибки она не вызывает, в выводе настроек выглядит рабочей строкой, и потому живёт годами. Найти её стоит до того, как вендор перестанет её принимать.
Что делает Хаб. Не пишет — ни старое имя, ни новое: явных хостов доставки генератор конфигурации не задаёт, почта идёт по MX-записям получателей. Разбором чужих конфигураций Хаб не занимается вовсе: устаревшие строки он показывает здесь, в каталоге — пометкой «устарела» и ссылкой на замену, — но в конфигурации узла их не ищет и не правит.
Рекомендуемые значения

Новых значений не подбирают. Единственное разумное значение — никакое: строку переносят на smtp-hosts как есть и проверяют, что доставка пошла туда же, куда шла.

Перенося, стоит перепроверить смысл. Явные хосты имеют право устареть вместе с инфраструктурой, на которую указывали: адрес шлюза меняется, а строка остаётся. Прежде чем копировать значение, стоит убедиться, что хост ещё тот.

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

Всё из руководства: пометка об устаревании — из § 3.3.10.98, форма записи — из § 3.3.10.100, где описана замена.
Пример в конфигурации
# так было — устаревшее имя
<domain example.com>
    route mail.example.net
</domain>

# так надо — то же самое новым именем, с портом и запасным уровнем
<domain example.com>
    smtp-hosts mail.example.net:2525; [10.1.1.1]</domain>
Верхний блок — то, что находится в унаследованной конфигурации; нижний — его замена в форме, описанной у smtp-hosts. Своего примера руководство для старого имени не приводит.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют строку в унаследованной конфигурации

§ 3.3.10.98

Чем чреватоДиректива работает и молча переопределяет маршрут. Хост, на который она указывает, мог смениться или исчезнуть — тогда доставка стоит при живом получателе.
Как заметитьПочта получателя уходит не туда, куда указывают его MX-записи, а проверка DNS при этом ничего не объясняет.
Как правильноНайти все вхождения в конфигурации, перенести на smtp-hosts и проверить каждый адрес, прежде чем копировать.

Пишут явные хосты в общий блок

§ 3.3.10.100

Чем чреватоЗначение из <domain *> достаётся каждому получателю. Обычная доставка по MX прекращается для всех сразу, и заметно это не по ошибке, а по чужим отказам.
Как заметитьВся почта узла уходит на один шлюз, хотя правило заводили под одного получателя.
Как правильноЯвные хосты писать только в блоке того получателя, которому они нужны; в общем блоке стирать значение пустыми кавычками.

Ждут, что старое имя примет полную форму записи

§ 3.3.10.100

Чем чреватоПолная форма описана только у нового имени. Что из неё принимает старое, руководство не говорит — это непроверенная территория.
Как заметитьЗначение с портами и уровнями предпочтения ведёт себя не так, как ожидалось, а ошибки при разборе конфигурации нет.
Как правильноНе развивать старую строку, а переносить её на smtp-hosts и уже там пользоваться полной формой.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
route <hosts>
Значения
для старого имени форма не описана; у замены — хосты или адреса в скобках через запятую внутри уровня, уровни через точку с запятой, порт после двоеточия, lookup-mx:домен либо пустые кавычки
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Блоки <domain> сливаются от общего к точному, побеждает самое узкое совпадение — значит явные хосты, записанные в <domain *>, достанутся всем получателям сразу. Стирается это пустыми кавычками у нового имени. Подхватывается по pmta reload.
Как проверить на узле
Действующий маршрут получателя печатает вывод настроек очереди:
pmta show settings example.com
Смотреть строку smtp-hosts в разделе Queue Settings: она показывает значение после слияния блоков, независимо от того, каким именем оно записано. Пустое значение означает обычную доставку по MX-записям.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Жизненный цикл конфигурации