smtp-listener

GlobalкритичноХаб задаёт сам

Где принимается входящий SMTP
в конфигурации это строкаsmtp-listener 0.0.0.0:25 неявно, если smtp-listener не объявленвнутри блока Global
Где узел принимает входящий SMTP

Объявляет адрес и порт, на которых узел слушает SMTP, и может привязать к ним именованный источник. Приёмников может быть несколько — по одному на адрес и порт; 0.0.0.0 разрешено повторять, открывая несколько портов на всех адресах сразу, и вместо адреса принимается диапазон в записи CIDR.

Если не объявить ни одного, узел поднимет приёмник сам — на 0.0.0.0:25. Это удобно на первом запуске и опасно потом: приёмник на всех адресах живёт там, где о нём уже забыли.

Появление этой строки отключает две старые. smtp-ip и smtp-port MTA перестаёт замечать вовсе, стоит объявить хотя бы один приёмник.

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

Главная ловушка. Порт 25 на узле один, и любой другой почтовый сервер на той же машине его займёт. Узел при этом не запускается и пишет причину в отдельный файл ошибки старта — самая частая причина «не поднялось после установки».
Что делает Хаб. Объявляет два приёмника на всех адресах: 0/0:2525 для подачи кампаний и 0/0:25 для приёма жалоб и отказов. Неявный приёмник не используется никогда, привязкой source= Хаб не пользуется — источник выбирается по адресу подающего. В межсетевом экране установщик открывает только порт подачи и порт монитора: 25-й не открывает, это оставлено человеку и записано предусловием в самом шаблоне.
Рекомендуемые значения

Порт подачи — не 25. Двадцать пятый на узле отправки нужен для приёма отказов и жалоб, и держать на нём же подачу значит смешивать две разные двери. Мы разводим их: 2525 для платформ, 25 для входящих отчётов.

Адрес в строке — это не адрес отправки. Здесь говорится, где узел слушает; с какого адреса он отправляет, решает smtp-source-host в блоке адреса отправки. Путаница между ними — обычное дело на узле с несколькими адресами.

Привязка source= нужна редко и опасна. Она уместна, когда точка входа должна сама выбирать адрес отправки. Без крайней надобности лучше выбирать источник по адресу подающего — тогда разрешение на пересылку не достаётся всякому, кто дотянулся до порта.

Синтаксис, неявный приёмник и предупреждение об открытом релее — вендорские. Разделение «2525 подача, 25 приём» — наше.
Пример в конфигурации
# подача кампаний — отдельный порт
smtp-listener 0/0:2525# приём жалоб и асинхронных отказов — двадцать пятый
smtp-listener 0/0:25
Две двери на всех адресах узла. Обе делят общий потолок входящих соединений (total-max-smtp-in) — он считает соединения на узел целиком.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Не объявляют ни одного приёмника, считая, что узел ничего не слушает

§ 3.3.1.27

Чем чреватоMTA поднимает неявный приёмник на всех адресах, и узел принимает почту там, где этого никто не планировал. Правила источников при этом действуют обычные — то есть умолчания.
Как заметитьСканирование находит открытый 25-й порт на узле, в конфигурации которого о приёмниках не сказано ни слова.
Как правильноОбъявлять приёмники явно, все до одного, и проверять системой, что других не поднялось.

Дают разрешение на пересылку источнику, привязанному к приёмнику

§ 3.3.1.27

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

Держат подачу на 25-м порту

наш опыт

Чем чреватоДвадцать пятый порт нужен для приёма отказов и жалоб. Совмещение лишает узел возможности ограничить подачу отдельно от приёма, а заодно ставит подачу под весь фоновый шум, который прилетает на 25-й.
Как заметитьПодача от платформы и входящие отчёты идут в одну дверь; закрыть одно, не задев другого, не получается.
Как правильноОтдать 25-й приёму, а подачу перенести на отдельный порт.

Открывают порт в конфигурации, но не в межсетевом экране

наш опыт

Чем чреватоСтрока приёмника открывает порт только в MTA. Отчёты и жалобы, приходящие на 25-й, не доходят вовсе, и узнаётся это по молчащей статистике, а не по ошибке.
Как заметитьУзел слушает порт, но снаружи соединение не устанавливается: тайм-аут вместо приветствия.
Как правильноПроверять доступность порта снаружи, а не изнутри узла: наш установщик открывает подачу и монитор, а 25-й оставляет человеку.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
smtp-listener CIDR:PORT [source=SOURCE-NAME]
Значения
адрес или диапазон CIDR с портом — например 0/0:2525 или 1.2.3.4:25; необязательно source=имя, где имя ссылается на блок source
Умолчание
0.0.0.0:25 неявно, если smtp-listener не объявлен § 3.3.1.27
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
можно повторять
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: приёмники — свойство процесса, а не адреса отправки. Строка живёт в корне файла, вне блоков. Подхватывается по pmta reload, но занятый другим сервисом порт перечитыванием не освободится.
⇄

Связанные директивы

4 связи

Как проверить на узле
Что узел действительно слушает, показывает не конфигурация, а система:
ss -lntp | grep pmtad
В выводе видны адрес и порт каждого приёмника. Пустой вывод при живой службе означает, что приёмники не поднялись — причину MTA пишет в отдельный файл ошибки старта, а не в обычный журнал.
В Хабе
Управляется
Инфраструктура → Параметры узла
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
с перерывом: применение прерывает работу узла
Сценарии
Приём входящей почты · Безопасность узла · Подключить платформу отправки
Важность
критично