Одноимённые директивы

directive name collisions
Одно имя, разные блоки, разный смысл

Совпадение имён — правило, а не редкость. max-smtp-out, записанный в <domain>, ограничивает соединения к приёмнику; в <virtual-mta> — все соединения адреса отправки; в <virtual-mta-pool> достаётся каждому адресу пула целиком. include встречается в пяти блоках.

Строка, перенесённая между блоками, разбирается без ошибки и меняет смысл. Поэтому записи каталога различают директивы по блоку описания: у domain.max-smtp-out и virtual-mta.max-smtp-out свои умолчания, наследование и смысл.

Главная ловушка — скопировать строку из одного блока в другой. Разбор пройдёт, а смысл сменится: max-smtp-out 20 из блока приёмника, перенесённый в адрес отправки, ограничит уже не приёмник, а сам адрес.
Что делает Хаб. Пишет одноимённые директивы в разные блоки намеренно: max-smtp-out — и в адреса отправки, и во вложенные в них блоки приёмников. 🔴 Соседняя путаница — в именах, а не в блоках: pattern-list выбирает адрес отправки, smtp-pattern-list реагирует на ответы приёмника.
Рекомендуемые значения

Одно имя — разные настройки:

Имя Блок Что задаёт
max-smtp-out <domain> соединения к приёмнику
max-smtp-out <virtual-mta> общий потолок адреса отправки
max-smtp-out <virtual-mta-pool> потолок каждого адреса пула, а не общий запас
log-tls <source> запись согласования шифрования с подающим клиентом
log-tls <domain> запись согласования шифрования с приёмником
api-key <transmissions-api> ключ приложений, подающих по HTTP
api-key <signals> ключ узла к SparkPost Signals
48 имён в нескольких местах и include в пяти блоках — из указателя руководства (§ 15) и сверки разбора; смысл одноимённых директив — из их записей каталога. Таблица — наша.
Пример в конфигурации
# одно имя — два смысла
<virtual-mta vmta1>
    max-smtp-out 50    <domain gmail.com>
        max-smtp-out 10
    </domain>
</virtual-mta>
Верхняя строка ограничивает все соединения адреса отправки, нижняя — только его соединения к gmail.com.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Увидеть оба значения на узле:
pmta show settings gmail.com/vmta1 | grep '^max-smtp-out '
Два значения в выводе — предел адреса и предел очереди.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Жизненный цикл конфигурации · Разобрать зависшую очередь