Адрес отправки — из чего он складывается

критично

<virtual-mta>
Всё, что является свойством адреса, живёт здесь

Адрес отправки в PowerMTA — не строка с IP, а именованный блок настроек. В нём собрано то, что относится к адресу как таковому: с какого IP уходит письмо, каким именем узел представляется приёмнику, каким ключом подписывает, через какой прокси ходит и как быстро шлёт в целом.

Пятнадцать директив, и большинство — знакомые. Это те же имена, что на уровне узла в первой части руководства, только суженные до одного адреса: smtp-source-host, smtp-proxy-source-host, host-name, domain-key, include-headers-from, use-proxy, proxy-protocol, proxy-include-tlv. Записанные здесь, они действуют только на письма, ушедшие с этого адреса.

Три директивы существуют только здесь. max-smtp-msg-rate и max-smtp-data-volume-rate ограничивают адрес целиком, а не каждую очередь отдельно, — других способов задать потолок на адрес нет. cold-virtual-mta называет адрес-напарник, на который уводится ранний трафик.

Про напарника руководство говорит важное отрицание: холодный адрес ничего не наследует от того, который на него перенаправляет. Либо он настроен с нуля целиком, либо у него нет настроек вовсе.

Внутри адреса могут стоять блоки приёмника. Тогда политика приёмника и настройки адреса складываются, а не заменяют друг друга: у адреса оказывается и общий потолок, и свой для каждого получателя. Как именно разрешается вложенность — на странице domain-matching.

Сам по себе адрес ничего не делает. Он применяется, только когда письмо на него выбрали, — а выбор происходит по отдельной лестнице из шести способов (vmta-selection-precedence).

Главная ловушка — холодный напарник, настроенный наполовину. Руководство предупреждает об этом прямо, но перечитывают эту строку редко: cold-virtual-mta не наследует ничего. Не унаследует ни адрес источника, ни имя приветствия, ни ключ подписи. Напарник, у которого забыли повторить smtp-source-host, отправляет с адреса по умолчанию; забыли domain-key — письма уходят неподписанными. Ранний трафик, ради которого напарник и заводится, — самый чувствительный к обоим промахам.
Что делает Хаб. Собирает по одному такому блоку на каждый адрес отправки — это и есть основа рабочей конфигурации. В блок попадают адрес источника с именем узла, ключ подписи, потоки, а внутрь — блок приёмника с темпом и щадящим режимом.

Блоки адресов Хаб пишет в /etc/pmta/virtualhost.txt, а адреса отправки через прокси — отдельным файлом /etc/pmta/proxy.txt; главный файл подключает оба строками include. Формат общий с Protosender — файл адресов читается обоими.

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

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

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

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

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

Таблица ролей — наша, из практики Хаба. Из руководства здесь состав блока, три собственные директивы и правило о том, что холодный напарник не наследует ничего.
Пример в конфигурации
# адрес отправки: свойства адреса снаружи, политика приёмника внутри
<virtual-mta mta-news-1>
    smtp-source-host 1.2.3.4 news1.example.com    domain-key sel1,example.com,/etc/pmta/keys/sel1.pem
    max-smtp-msg-rate 3000/h
    <domain *>
        max-msg-rate 500/h
        backoff-max-msg-rate 1/h
    </domain>
</virtual-mta>
Выделенная строка задаёт и IP, и имя приветствия — они всегда идут парой. Верхние три строки описывают адрес, нижний блок — как этот адрес ведёт себя с каждым приёмником; потолок адреса и темп очереди действуют одновременно.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Заводят холодного напарника, не повторив настройки

§ 3.3.12.4

Чем чреватоНапарник не наследует от адреса ничего: ни источника, ни имени приветствия, ни ключа подписи. Ранний трафик — самый уязвимый — уходит с адреса по умолчанию и без подписи.
Как заметитьПисьма первых дней уходят не с того IP или приходят без подписи, притом что у основного адреса всё настроено.
Как правильноНастраивать напарника целиком, как самостоятельный адрес. Сверять обе настройки командой, печатающей параметры адреса.

Ищут потолок адреса среди настроек приёмника

§ 3.3.12

Чем чреватоЛимиты в блоке приёмника считают одну очередь: 500/h при десяти приёмниках — это пять тысяч писем в час с адреса. Потолок на адрес как таковой задаётся только двумя директивами этого блока, и других способов нет.
Как заметитьФактическая отправка с адреса кратно выше расчётной, и кратность равна числу приёмников.
Как правильноСтавить max-smtp-msg-rate или max-smtp-data-volume-rate в самом блоке адреса. Проверять командой настроек адреса.

Переименовывают работающий адрес

§ 3.3.12

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

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

3 связи

Как проверить на узле
Что на самом деле досталось адресу — после слияния с пулом и умолчаниями — печатает отдельная команда:
pmta show vmta-settings mta-news-1
pmta show vmtas
Первая показывает настройки одного адреса: источник, имя, ключи, потолки. Вторая — сводку по всем: сколько получателей, килобайт и соединений у каждого прямо сейчас. Настройки очереди внутри адреса печатает третья команда, pmta show settings домен/адрес.
В Хабе
Цена ошибки
с перерывом: применение прерывает работу узла
Сценарии
Ротация адресов отправки · Прогрев адресов · Отправка через прокси
Важность
критично