Узел, отвечающий только своему парку

Подача закрыта для всех, кроме тех, кого мы знаем

Задача. Любой узел парка: порт подачи должен обслуживать платформы, которые знает Хаб, и никого больше, а порт MX — принимать отчёты, не становясь лазейкой внутрь.

Из чего складывается:

  • smtp-service — выключен в общем источнике 0/0, включён адресам подачи;
  • always-allow-relaying — только источникам подачи и никогда источнику, привязанному к открытому слушателю;
  • reserved-smtp-in — резерв входящих соединений за группой подачи;
  • allowed-sender-lists — от чьего имени источнику можно отправлять.

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

Как они взаимодействуют. Схему со smtp-service руководство даёт прямо, а про always-allow-relaying в источнике открытого слушателя предупреждает отдельно. Резерв и списки отправителей — наши: первый потому, что подача и отчёты на MX делят один входящий предел узла, вторые потому, что иначе ничто не мешает источнику отправлять от чужого домена.

Главная ловушка — закрыть 0/0, забыв про порт MX. Отчёты об отказах и жалобы приходят с любых адресов и попадают в 0/0: выключенный там smtp-service закроет и их — слушателю MX нужен свой источник через source=, без разрешения ретрансляции.
Что делает Хаб. Применяет частично. Разрешение на ретрансляцию выдано только источнику 127.0.0.1, адресам из «Кому разрешена подача» и именованным источникам логина; у общего 0/0 его нет, а источников, привязанных к слушателю, Хаб не пишет. Остального нет: smtp-service yes стоит и в 0/0 — через него принимаются отчёты на порт MX, — входящие слоты за подачей не резервируются, а кем источнику представляться, не ограничено.
Рекомендуемые значения

Четыре строки:

Строка Где Значение
smtp-service 0/0 no; адресам подачи и источнику слушателя MX — yes
always-allow-relaying источники подачи yes; больше нигде
reserved-smtp-in группа источников подачи сколько соединений держат платформы
allowed-sender-lists источники подачи списки, от чьего имени источник вправе отправлять
Закрытый 0/0, предупреждение про источник слушателя, резерв и списки отправителей — из руководства (§ 3.3.7.63, § 9.4.3, § 3.3.9.2, § 3.3.7.43). Резерв и списки в этой схеме — наша гипотеза.
Пример в конфигурации
smtp-listener 0/0:2525
smtp-listener 0/0:25 source=mx-reports
<source 0/0>
    smtp-service no</source>
<source 203.0.113.20>
    smtp-service yes
    always-allow-relaying yes
</source>
<source mx-reports>
    smtp-service yes
</source>
Подача идёт на 2525 и решается по адресу источника, отчёты — на 25 через свой источник без ретрансляции; блоки 0/0 и 203.0.113.20 — пример руководства, отказ в них видят приветствием 521.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверить, кому открыта подача и ретрансляция:
grep -n '<source\|smtp-service\|always-allow-relaying\|smtp-listener' /etc/pmta/config
smtp-service yes в 0/0 — порт открыт всем; always-allow-relaying yes там же — открытая ретрансляция.