Кому разрешено сдавать почту и для кого её принимать

критично

relaying control
Одно слово «релей», два разных вопроса

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

Дальше начинается место, на котором чаще всего спотыкаются. Словом «релей» руководство называет два разных вопроса, и решаются они разными директивами:

Вопрос Чем решается Когда нужен
Кто может сдавать нам почту для кого угодно always-allow-relaying в блоке источника отправка: узел принимает почту от своих подающих машин
На чьи адреса мы принимаем почту от кого угодно relay-domain и relay-address приём: узел обслуживает входящую почту

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

Отсюда и самая частая путаница: отправитель, которому нужно «разрешить релей», берётся за relay-domain, потому что имя подходит, — и не получает ничего.

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

Второй край тише и от этого хуже: разрешение по адресу не переживает переезд. Платформа сменила адрес — подача встала; вернули широкую маску «на время» — она осталась навсегда.

Что делает Хаб. Разводит оба вопроса и решает их по-разному.

Отправка — по адресу из списка или по логину. Разрешение always-allow-relaying yes стоит в трёх местах: в источнике 127.0.0.1 (подача с самой машины), в блоке на каждый адрес из «Кому разрешена подача» и в каждом именованном источнике подачи, куда попадают только вошедшие. В общем блоке 0/0 его нет — значит соединению с адреса не из списка сдать почту без логина нельзя.

Список адресов годится для машин с постоянным адресом. Платформе, которая может переехать к другому хостеру, надёжнее логин: разрешение по адресу пришлось бы править при каждом переезде.

Приём — тремя правилами по образцу. Хаб открывает приём на жалобы (fbl@fbl.<домен>), на асинхронные отказы (bounce@bounce.<домен>) и на роль-адреса — dmarc@, postmaster@, abuse@. Последнее правило появилось не сразу: без него анти-релей отбивал агрегатные отчёты DMARC ответом 550 relaying denied.

Пример в конфигурации
# два разных вопроса — две разные строки
<source 127.0.0.1>
    always-allow-relaying yes     # кто может слать через нас</source>

relay-address /^bounce@bounce\./    # на чьи адреса мы принимаем
relay-address /^(dmarc|postmaster|abuse)@/
Первая строка про отправку, две вторых — про приём. Настроив только вторые, отправлять через узел вы не сможете; настроив только первую, не получите ни отказов, ни отчётов.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Берутся за приём, когда нужна отправка

§ 2.3

Чем чреватоИмя relay-domain подходит по звучанию, но эта пара решает обратную задачу — приём почты на ваши домены. Право отправлять через узел она не даёт, и подача продолжает получать отказ.
Как заметитьДомены получателей перечислены в конфигурации, а подача по-прежнему отбивается с relaying denied.
Как правильноРазрешать подачу строкой в блоке источника, а перечисление доменов оставить для входящей почты.

Открывают релей широкой маской, чтобы заработало

наш опыт

Чем чреватоУзел становится открытым релеем. Через несколько часов через него идёт чужой спам, адреса попадают в чёрные списки, и репутация домена восстанавливается неделями.
Как заметитьРезкий рост исходящего объёма без запуска рассылки; в очередях домены, которых у вас нет.
Как правильноНемедленно убрать широкую маску и разрешать подачу по логину — тогда переезд платформы ничего не ломает.

Разрешают релей по адресу и забывают про переезд

§ 2.3

Чем чреватоПлатформа сменила адрес, подача встала. Быстрое лечение — расширить маску, и расширенная маска остаётся навсегда, потому что «работает же».
Как заметитьВ конфигурации маски шире, чем нужно, и никто не помнит, откуда они взялись.
Как правильноПеревести подачу на логины: право следует за учётной записью, а не за адресом.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
⇄

Связанные записи

4 связи

Как проверить на узле
Настоящая проверка одна — попробовать сдать почту с чужой машины:
grep -n 'always-allow-relaying\|relay-address\|relay-domain' /etc/pmta/config /etc/pmta/virtualhost.txt
printf 'HELO test\r\nMAIL FROM:<a@example.com>\r\nRCPT TO:<b@gmail.com>\r\nQUIT\r\n' | nc <адрес-узла> 25
Вторая команда выполняется с постороннего адреса и должна получить отказ на строке RCPT. Ответ 250 означает открытый релей — это надо чинить немедленно, а не откладывать.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Приём входящей почты · Безопасность узла · Подключить платформу отправки
Важность
критично