Имя, адрес и имя в приветствии — из чего состоит адрес отправки

критично

VirtualMTA definition
Что обязано быть в определении адреса отправки

Конструкция простая: блок с именем, внутри — адрес и имя в приветствии. Двух вещей о ней обычно не знают, и обе стоят дорого.

Первое: пропуск наследует. Адрес отправки без строки smtp-source-host (или её прокси-формы) берёт общий набор адресов узла. Это не ошибка и не предупреждение — письма уходят успешно, но не с того адреса. Вендор отмечает это дважды и советует задавать хотя бы одну строку в каждом определении. Он же приводит поучительный пример: имя блока, выглядящее доменным, именем в приветствии не служит — для имени нужна отдельная запись.

Второе: несколько адресов в одном определении используются по кругу. То есть адрес отправки — это группа адресов, а не обязательно один. Прежде чем считать «личность» и «адрес» синонимами, это стоит проверить: любая модель репутации по адресам ошибётся, если личность окажется набором.

Определения перезагружаются без остановки узла. А директивы внутри применяются, только когда этот адрес отправки выбран для письма; в остальное время они просто не читаются — не ошибка, а тишина.

Главная ловушка. Неполное определение — это работающая конфигурация. Ни ошибки при применении, ни предупреждения: адрес отправки без своей строки адреса шлёт с общего набора узла, и обнаруживается это по расхождению объёмов в учёте, а не по диагностике.
Что делает Хаб. Собирает определения сам, по паре «домен отправки + адрес привязки» с карточки узла («Инфраструктура → Узлы», блок «Адреса и домены»): имя блока, строка адреса с доменом вторым словом, ключ подписи, лимиты и правила получателей. Строка адреса пишется всегда — пропусков не бывает. Чего Хаб пока не делает — не проверяет чужие определения: на узле, куда до Хаба уже заглядывал человек, неполный адрес отправки останется незамеченным.
Рекомендуемые значения

Собственных значений у механизма нет — их задают директивы внутри блока. Что в определении обязательно, а что по обстоятельствам:

Строка Обязательна Почему
smtp-source-host или прокси-форма да иначе наследуется набор узла — молча
имя вторым словом той же строки да название блока именем в приветствии не служит
domain-key практически без подписи крупные приёмники встречают письма недоверчиво
max-smtp-out и правила получателей по обстоятельствам их можно держать на пуле, общими для группы

Проверка для генератора конфигурации из одной строки: у каждого адреса отправки есть строка адреса и имя в ней. MTA такое определение принимает, а это скрытая ошибка настройки.

Оба свойства — наследование при пропуске и перебор по кругу — из руководства (§ 9.2), с прямым советом вендора. Список обязательного — наш.
Пример в конфигурации
# полное определение: адрес, имя, ключ подписи, лимиты
<virtual-mta shop-example-com>
    smtp-source-host 203.0.113.10 shop.example.com    domain-key sel1,shop.example.com,/etc/pmta/keys/private_key_shop.txt
    <domain *>
        max-smtp-out 20
    </domain>
</virtual-mta>

# неполное: MTA примет, письма уйдут с общего набора узла
<virtual-mta broken>
    <domain *>
        max-msg-rate 100/h
    </domain>
</virtual-mta>
Второй блок — не выдуманный случай, а то, что получается, когда адрес отправки заводят «под лимиты», а строку адреса дописать забывают. Ошибки при применении не будет, лимиты сработают, а письма уйдут не с того адреса.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Заводят адрес отправки без строки адреса

§ 9.2

Чем чреватоОпределение принимается, письма уходят — с общего набора узла. Личность существует по имени, а по адресу совпадает со всеми остальными.
Как заметитьУ нескольких адресов отправки в учёте один и тот же адрес доставки; прогрев по плану идёт, а репутация «не того» адреса.
Как правильноЗадавать строку в каждом определении. Вендор советует это прямо, и проверка в генераторе стоит одной строки.

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

§ 9.2

Чем чреватоНазвание адреса отправки — идентификатор, и в приветствие оно не попадает, даже если выглядит доменным. Узел представится тем, что найдёт разбор, — скорее всего общим именем узла.
Как заметитьВ EHLO имя, которого нет ни в одном блоке адреса отправки.
Как правильноЗадавать имя вторым словом строки адреса. Руководство приводит этот случай отдельным примером именно потому, что на нём спотыкаются.

Считают адрес отправки одним адресом

§ 9.2

Чем чреватоНесколько строк адреса в одном блоке дают перебор по кругу. Модель репутации «одна личность — один адрес» на таком узле приписывает адресам чужую историю.
Как заметитьВ учёте у одного адреса отправки поле адреса доставки принимает несколько значений.
Как правильноЛибо одна строка на определение, либо считать репутацию по полю адреса доставки из учёта, а не по имени адреса отправки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Наследования у самого определения нет: наследуются директивы внутри него. Уровней три — узел, <virtual-mta-pool> и сам адрес отправки, — и чем ближе к письму, тем сильнее. Отдельно стоит помнить про пропуск: не заданная в блоке строка адреса не «остаётся пустой», а берётся с уровня узла.
⇄

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

3 связи

Как проверить на узле
Полное ли определение, видно по сводке настроек каждого адреса отправки:
pmta show vmta-settings vmta1
У адреса отправки должны быть заполнены колонки Source Host IP и Source Host, а у разных адресов отправки адрес обязан отличаться — сравнивают вывод по каждому. Одинаковый адрес у нескольких — верный признак, что строки в блоках нет и все они наследуют набор узла.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Ротация адресов отправки · Подготовить узел к отправке
Важность
критично