allow-auth

<source>

Разрешена ли этому источнику команда AUTH
в конфигурации это строкаallow-auth trueвнутри блока <source>
Выключатель, который выключают редко и намеренно

Умолчание — true: команда AUTH разрешена. С false MTA её не предлагает и не принимает — значит ни один логин на этом источнике не работает.

Пара с require-auth читается так: эта директива говорит, можно ли войти, та — нужно ли. Сочетание «нельзя войти, но нужно» превращает источник в неработающий: сдать почту через него не сможет никто.

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

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

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

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

Директива пригодилась бы на источнике, с которого подача не задумана вовсе, — например, на том, что принимает жалобы и отказы на почтовом порту. Сегодня Хаб такого разделения не делает.

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

Что ставить. Выключают её редко и по одной причине:

Значение Когда
yes (умолчание) подача под логином задумана — обычный случай
no на этом источнике логинов быть не должно, и любая попытка входа заведомо чужая

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

Умолчание true — из руководства, § 3.3.7.7. Разбор сочетания с требованием входа и случая «источник только для приёма» — наш.
Пример в конфигурации
# на приёмном источнике логины не нужны — попытка входа заведомо чужая
<source 0/0>
    allow-auth false</source>
Такой блок годится только там, где через него ничего не подают. Вместе с требованием входа он сделал бы источник неработающим: пускать без входа нельзя, войти нечем.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Запрещают вход в широком блоке ради сужения поверхности

наш опыт

Чем чреватоЗапрет по правилу слияния достаётся всем подсетям, которые сами не сказали обратного, — включая ту, с которой идёт подача. Вместе с требованием входа источник становится неработающим.
Как заметитьПлатформа подачи сообщает, что сервер не предлагает аутентификацию.
Как правильноСтавить запрет только в тот блок, где подача не задумана, и проверять приветствием приёмника с нужного адреса.

Считают запрет команды защитой подачи

§ 3.3.7.7

Чем чреватоЗапрет закрывает вход, а не ретрансляцию. Если адресному блоку разрешено ретранслировать, почта пойдёт через него и без всякого входа.
Как заметитьallow-auth false стоит, а узел всё равно ретранслирует чужую почту.
Как правильноСмотреть на разрешение ретрансляции: именно оно решает, пропустить письмо или нет.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
allow-auth <boolean>
Значения
yes | no | true | false
Умолчание
true § 3.3.7.7
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и подчиняется слиянию источников: соединение попадает под все адресные блоки, которые его накрывают, и узкий перекрывает широкий. Запрет, поставленный в блоке 0/0, достанется и подсетям подачи — а вместе с требованием входа сделает их неработающими.
Как проверить на узле
Разрешена ли команда — видно прямо в приветствии приёмника:
printf 'EHLO test\r\nQUIT\r\n' | nc <адрес-узла> 2525 | grep -i auth
Строка 250-AUTH в ответе означает, что вход предлагается. Её отсутствие — что команда запрещена либо, при обязательном шифровании, объявляется только после STARTTLS.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла