mail-from

<pattern-list>Хаб задаёт сам

Правило по обратному адресу конверта, выбирающее поток или приоритет
в конфигурации это строкаmail-fromвнутри блока <pattern-list>
То же имя ещё 1:<pattern-list><rewrite-list>— часть из них другие настройки, часть та же самая
Выбор потока по обратному адресу — самое надёжное правило

Сверяет обратный адрес конверта: тот, который отправитель назвал в команде SMTP MAIL FROM и на который вернутся отказы. Руководство специально оговаривает — это не заголовок From, который видит получатель в почтовой программе. Разница существенная: заголовок отправитель волен написать любой, конверт задаётся при подаче.

Форма правила — имя директивы, образец в косых чертах и результат: virtual-mta=имя, recipient-priority=N или call-to: с именем другого списка. Результаты можно совмещать через запятую.

Регулярные выражения — диалекта Perl, и по умолчанию они не различают регистр. Вернуть чувствительность можно модификатором (?-i) внутри образца.

Главная ловушка — незаэкранированная точка и забытый якорь. В образце /@shop.example.com/ точка означает «любой знак», и правило совпадёт с адресом в домене shopXexampleYcom. Без якоря $ оно же совпадёт с @shop.example.com.attacker.net. Правильная форма — /@shop\.example\.com$/.
Что делает Хаб. Пишет сам: список выбора рабочей конфигурации — это по одному такому правилу на каждый домен отправки, каждое уводит письмо на поток своей пары «домен + адрес». Точки в домене экранируются, в конце стоит якорь. Правил по получателю Хаб не пишет намеренно — из-за их поведения на письмах с несколькими адресатами.

Обратный адрес Хаб переписывает на bounce@bounce.<домен>, но правила сверяют исходный: проверено на узле 15.09.2026 — письма общим логином ушли потоками своих доменов, хотя в учёте стоял уже переписанный адрес.

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

Как писать образец. Три вещи решают почти всё:

Приём Зачем
экранировать точки — \. иначе точка означает любой знак
ставить якорь $ в конце домена иначе совпадёт поддомен-приманка
сверять домен, а не локальную часть локальная часть меняется, домен нет

Порядок правил. Побеждает первое совпадение, поэтому узкие образцы идут выше широких. Правило, дописанное под уже совпадающее широкое, не сработает никогда.

Форма правила, диалект PCRE и различие конверта и заголовка From — из руководства. Приёмы написания образца — наши.
Пример в конфигурации
# по правилу на домен отправки — так собирает список Хаб
<pattern-list mta-hub-senders>
    mail-from /@shop\.example\.com$/ virtual-mta=shop-example-com    mail-from /@news\.example\.com$/ virtual-mta=news-example-com
</pattern-list>
Точки экранированы, в конце якорь — иначе правило поймает и чужой поддомен. Сверяется обратный адрес конверта, а не From: письмо с подменённым From всё равно уйдёт правильным потоком.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Сверяют адрес From вместо конверта

§ 3.3.14.2

Чем чреватоПравило смотрит на MAIL FROM, а образец писали по адресу из заголовка From. Когда платформа подаёт письмо с обратным адресом в другом домене, чем From, правило не совпадает никогда.
Как заметитьПравило выглядит верным, письма уходят потоком по умолчанию.
Как правильноПисать образец по обратному адресу, с которым письмо подают. Переписывание rewrite-list на правило не влияет: список сверяет адрес до переписывания, хотя в поле orig учёта стоит уже переписанный (проверено на узле 15.09.2026).

Не экранируют точки в домене

§ 3.3.14

Чем чреватоТочка в регулярном выражении означает любой знак. Образец /@shop.example.com/ совпадёт и с чужим доменом похожего вида — и чужое письмо уйдёт вашим прогреваемым адресом.
Как заметитьВ учёте у потока появляются обратные адреса из неожиданных доменов.
Как правильноЭкранировать точки и ставить якорь конца — /@shop\.example\.com$/.

Ставят широкое правило выше узкого

§ 9.4.2

Чем чреватоПобеждает первое совпадение. Правило /@example\.com$/, стоящее выше /@news\.example\.com$/, полностью закрывает второе — оно не сработает ни разу.
Как заметитьПравило добавлено, применение прошло, поведение прежнее.
Как правильноСобирать список от узкого к широкому. Генератору стоит сортировать правила по длине образца, а не по порядку добавления.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
mail-from <regex-rule>
Значения
образец в косых чертах и результат — virtual-mta=имя, recipient-priority=N или call-to:имя
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<pattern-list>
Сколько раз
можно повторять
Всё здесь — из руководства, с разделом.
Наследование
Наследования у правила нет: оно действует внутри своего блока <pattern-list>. Наследуется ссылка на список — pattern-list записана в <source> и сливается по правилу источников, причём узкий блок заменяет список целиком, а не дополняет его.
Как проверить на узле
Что подставится в правило, видно в учёте: поле обратного адреса конверта и поле выбранного потока рядом:
pmtaacctfind --output csv[orig,vmta,rcpt] /var/log/pmta/acct-*.csv | head -30
Поле orig — адрес, который сверяет правило, если источник его не переписывает. При rewrite-list в учёте стоит переписанный адрес, а правило сверяло исходный: сравнивайте образец с адресом, с которым письмо подали. Если поток стоит из умолчания, чаще всего расходится домен, а не логика правила.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Ротация адресов отправки · Подключить платформу отправки
Соседние настройки блока <pattern-list>:headerrcpt-toВсе 3 директив блока →