Список правил, по которым узел решает, с какого адреса отправить письмо. Смотрит он на само письмо: заголовок, обратный адрес конверта или адрес получателя.
Три сопоставителя, один синтаксис. Директива, необязательный параметр, регулярное выражение (регистр не важен) и результат. Результат обычно — имя адреса отправки, поэтому список и оказывается слоем маршрутизации между тем, как письмо выглядит, и тем, откуда оно уходит. Бывает и другой результат — приоритет получателя.
Списки вкладываются друг в друга. Правило может вместо ответа передать разбор другому списку — получается дерево решений прямо в конфигурации: один список делит поток на группы, следующие разбираются внутри каждой.
У сопоставителя по получателю есть оговорка. Когда получателей несколько и они подходят под разные правила, письмо не может уйти с двух адресов сразу — руководство описывает, как это разрешается.
Это не тот список, что реагирует на приёмника. Похожее имя <smtp-pattern-list> — про ответы SMTP при доставке и щадящий режим. Здесь — про исходящий выбор до отправки.
Так один порт подачи обслуживает сколько угодно доменов: площадка подаёт письмо с обратным адресом своего домена, а узел сам направляет его на нужный адрес отправки. Ни площадке, ни порту знать про адреса не нужно.
Ссылка на список стоит в блоке подачи, рядом с умолчанием default-virtual-mta — оно и срабатывает, когда ни одно правило не подошло.
Чем выбирать адрес отправки — три сопоставителя:
| Сопоставитель | По чему смотрит | Когда уместен |
|---|---|---|
| по обратному адресу | адрес конверта | наш случай: ничего не требует от подающей стороны |
| по заголовку | любой заголовок письма | когда подающая система умеет их ставить |
| по получателю | адрес получателя | редко: у письма получателей бывает много |
Обратный адрес — самый надёжный выбор. Он есть у каждого письма и не зависит от того, умеет ли площадка ставить заголовки.
Выражение писать с якорем конца. Правило вида /@домен$/ совпадёт с доменом, а без якоря — и с любым, где этот домен внутри. Хаб экранирует домен и ставит якорь именно поэтому.
Умолчание обязательно. Письмо, не подошедшее ни под одно правило, уйдёт с адреса по умолчанию — а если его нет, узел придётся объяснять, почему письмо не ушло.
# правило на каждую пару «домен → адрес отправки» <pattern-list pmta-pattern> mail-from /@example\.com$/ virtual-mta=mta-news-1 mail-from /@shop\.example\.net$/ virtual-mta=mta-shop-1 </pattern-list> <source {pmta-auth}> pattern-list pmta-pattern default-virtual-mta pmta-pool </source>
что делают не так и чем это кончается3 ошибки▶
§ 3.3.14
§ 3.3.15
§ 3.3.14
2 связи
process-x-virtual-mta<source>Ступень выше: заголовок письма сильнее правила по образцу. § 3.3.7.52
header<pattern-list>Один из трёх видов правил: сверяются обратный адрес, получатель или заголовок. § 3.3.14.1mail-from<pattern-list>Один из трёх видов правил: сверяются обратный адрес, получатель или заголовок. § 3.3.14.2rcpt-to<pattern-list>Один из трёх видов правил: сверяются обратный адрес, получатель или заголовок. § 3.3.14.3Поток выбирается сопоставлением конверта или заголовкаСам список правил: он объявляется отдельно и подключается к источнику по имени. § 9.4.2Два приоритета, и какой из них выигрываетПриоритет получателя назначается правилом по образцу — по адресу получателя или по отправителю. § 11.9.1Чужие составляющие MTAСмежный механизм: они работают вместе. § 3.3.14
grep -n -A10 '^<pattern-list' /etc/pmta/config pmta show vmtas
3 статьи
◇Заголовки, которыми отправитель управляет доставкойШесть служебных заголовков позволяют подающей стороне выбрать поток, пометить письмо заданием, задать настройки и ключ подписи, идентификатор конверта и расписание; каждый разрешается отдельно и по источникам.◇Как письмо попадает в MTAШесть описанных способов подачи: расширенный SMTP, четыре языковые обвязки и каталог, за которым узел следит на диске.◇Кому разрешено сдавать почту и для кого её приниматьИз коробки узел принимает подачу только с самой машины; два разных вопроса — «кто может слать через нас» и «на чьи адреса мы принимаем» — решаются разными директивами.