Подача — сетевая служба, и в неё можно войти

remote submission with credentials
Граница подачи — сетевая, а не машинная

Библиотека подачи предлагает две функции соединения: одна подключается к названному серверу и порту без всякого входа, вторая передаёт имя и пароль. Порт при этом обычный почтовый — руководство прямо советует 25 как умолчание.

Отсюда практическая картина. Поверхность подачи узла доступна отовсюду, откуда доступен его приёмник, а единственное, что отличает вошедшего отправителя от невошедшего, — как настроен источник. Клиент всегда может попробовать без пароля: требовать вход или нет, решает конфигурация узла, а не клиент.

Для парка это значит, что права подачи — граница сетевая, а не местная. Источник, разрешающий подачу, разрешает её отовсюду, куда он дотягивается своим диапазоном адресов.

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

Проверять это нужно снаружи, а не изнутри узла: изнутри всё выглядит правильно всегда.

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

Невошедшему соединению с другого адреса разрешения на ретрансляцию не достаётся: в общем блоке 0/0 его нет. Приняты у него будут только те адреса, что перечислены правилами приёма отчётов, — жалобы, отказы и роль-адреса.

Пример в конфигурации
# приёмник подачи слушает всю сеть, право сдавать почту даёт логин
smtp-listener 0/0:2525

<smtp-user pmtauser>
    password s3cret
    source {pmta-auth}</smtp-user>
Порт открыт всем, но без входа сдать через него почту нельзя: разрешение на ретрансляцию живёт в именованном источнике, а тот достаётся только вошедшему.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают подачу внутренним делом узла

§ 7.5.4

Чем чреватоПриёмник, слушающий всю сеть, делает подачу доступной из интернета. Если разрешение на ретрансляцию при этом выдано адресному блоку без требования входа, узел становится открытым ретранслятором — и находят такие узлы быстро.
Как заметитьПриёмник слушает 0/0, а в блоке источника стоит разрешение на ретрансляцию без требования входа.
Как правильноЛибо сузить диапазон приёмника, либо выдавать разрешение только именованным источникам, которые достаются вошедшим.

Проверяют доступность изнутри узла

§ 7.5.4

Чем чреватоИзнутри соединение идёт с локального адреса и попадает в блок, написанный для него. Настоящая поверхность — та, что видна снаружи, — остаётся непроверенной.
Как заметитьПроверка «всё закрыто» выполнена на самом узле.
Как правильноПроверять с чужой машины: сначала доступность порта, потом попытку подачи без пароля.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверять надо снаружи узла — изнутри поверхность подачи выглядит правильной всегда:
nc -vz <адрес-узла> 2525
grep -n 'smtp-listener\|always-allow-relaying\|require-auth' /etc/pmta/config /etc/pmta/virtualhost.txt
Открытый порт — это ещё не открытая подача: смотреть надо, кому выдано разрешение на ретрансляцию. Опасно сочетание «приёмник слушает всех» плюс «разрешение в адресном блоке без требования входа».
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла · Подключить платформу отправки