source

<smtp-user>Хаб задаёт сам

Какой именованный источник действует для этого логина
в конфигурации это строкаsourceвнутри блока <smtp-user>
То же имя ещё 1:<smtp-listener><smtp-user>— часть из них другие настройки, часть та же самая
Права выдаются логину, а не месту в сети

Строка называет блок <source>, который будет действовать для этого логина. Именованные блоки под адреса не подбираются — эта директива одна из двух ссылок, которые вообще вводят их в дело (вторая — параметр source= у smtp-listener).

Руководство описывает результат одним словом: настройки именованного блока перекрывают то, что соединение получило бы по своему адресу. Логину без этой строки достаётся зарезервированный источник {auth}, если он объявлен.

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

Главная ловушка — наследование, которого может не быть. Руководство говорит «перекрывает», из чего читается, что неупомянутое достанется из адресного блока. У нас так не вышло: переписывание обратного адреса, заданное в общем блоке 0/0, на авторизованное соединение не перенеслось, и адрес остался неизменным, пока ту же строку не повторили в именованном блоке.

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

Что делает Хаб. Пишет — в каждом блоке логина рабочей конфигурации. Имена именованных источников он строит из имени логина: общий логин пула уходит в {pmta-auth}, логин пары «домен плюс адрес» — в {<имя-пары>-auth}.

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

Имена берутся в фигурные скобки — формат общий с Protosender. Руководство эту область имён объявляет зарезервированной и называет в ней два своих ({pickup} и {auth}); наши на них не похожи и работают, но область всё-таки вендорская.

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

Что ставить. Значение — имя блока источника; выбирать приходится степень дробности:

Значение Когда
свой блок на логин отправители разные, и права у них должны различаться
один блок на всех отправители равноправны, а логины заведены только ради учёта
не писать подходит зарезервированный {auth}, объявленный один раз на узел

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

Назначение и слово «перекрывает» — из руководства, § 3.3.8.6 и § 10.1.1. Оговорка про зарезервированный источник для логинов без своего — оттуда же. Наблюдение об отсутствии наследования — наше.
Пример в конфигурации
# логин, его блок и полный набор прав в нём
<smtp-user shop-example-com>
    password 8xK2-qRt7-vD1s-mZ4w
    source {shop-example-com-auth}</smtp-user>

<source {shop-example-com-auth}>
    smtp-service yes
    always-allow-relaying yes
    require-auth true
    default-virtual-mta shop-example-com
</source>
Набор в именованном блоке выписан целиком, а не отличиями: наследование из адресных блоков в именованный на нашей установке не подтвердилось.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Пишут в именованном блоке только отличия

наш опыт

Чем чреватоНастройки, оставленные в адресном блоке, до авторизованного соединения могут не дойти. У нас так пропало переписывание обратного адреса — молча, без ошибки, и заметили это по неизменившемуся адресу в письмах.
Как заметитьНастройка действует для подачи без логина и не действует для той же подачи с логином.
Как правильноВыписывать в именованном блоке весь набор и проверять поведением.

Ссылаются на необъявленный блок

§ 3.3.8.6

Чем чреватоОшибки не будет: логин войдёт и получит настройки, подобранные по адресу соединения. То есть права окажутся не те, что задумывались, и разбираться придётся по поведению.
Как заметитьЛогин работает, но ведёт себя как безымянное соединение с того же адреса.
Как правильноСверить имена: у каждого логина должен быть объявленный блок с ровно тем же именем.

Заводят логины, не разводя их права

§ 10.1.1

Чем чреватоВсе логины указывают на один блок, и разделения не возникает: любой вошедший получает те же права, включая выбор любого потока отправки.
Как заметитьУ всех блоков пользователя одна и та же строка источника.
Как правильноСвой блок на логин — с тем набором прав, который этому отправителю действительно нужен.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
source <name>
Значения
имя блока источника
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<smtp-user>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <smtp-user> и относится к одному логину — сама она не наследуется. Наследуется то, на что она указывает: именованный блок источника вступает в силу после входа и перекрывает подобранное по адресу. Полагаться на то, что неупомянутое в нём достанется из адресного блока, мы не советуем.
Как проверить на узле
Связь логина с блоком видна в конфигурации; действует ли она — только по поведению:
grep -n '^<smtp-user\|^ *source ' /etc/pmta/virtualhost.txt
grep -n '^<source {' /etc/pmta/virtualhost.txt
Каждому логину должен соответствовать объявленный блок с тем же именем. Ссылка на необъявленный блок молча не даёт ничего: логин войдёт и получит настройки, подобранные по адресу.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки · Разделение отправителей