require-auth

<source>Хаб задаёт сам

Требовать ли вход до приёма любой почты от этого источника
в конфигурации это строкаrequire-auth falseвнутри блока <source>
Право сдавать почту переезжает с адреса на логин

Умолчание — false. С true MTA требует вход до приёма любого письма по SMTP — и руководство отдельно оговаривает: локального в том числе.

Смысл директивы — сменить основание, по которому решается «можно ли этому клиенту». Без неё основание — адрес: попал в блок, которому разрешена ретрансляция, значит можно. С ней основание — логин.

Строка нужна ещё и второй директиве: предел неудачных попыток входа, по словам руководства, действует только там, где вход требуется, — smtp-max-auth-failure-rate.

Главная ловушка — место, где написана строка. В именованном источнике логина она почти ничего не делает: чтобы туда попасть, отправитель уже вошёл. Пример самого руководства (§ 10.1.1) пишет её именно там — как подпорку, а не как замок.

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

Отсюда правило: требование входа ставят в адресный блок, а не только в именованный.

Что делает Хаб. Пишет true — в каждом именованном источнике подачи рабочей конфигурации, по образцу руководства.

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

Порог неудачных входов smtp-max-auth-failure-rate Хаб пишет в 0/0 как раз без этой строки — и порог срабатывает: в журнале узла отказы с пометкой smtp-max-auth-failure-rate reached (проверено 15.09.2026).

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

Что ставить. Вопрос — на чём держится право сдавать почту:

Значение Когда
no (умолчание) право даёт адрес: подача идёт с известной машины из узкого диапазона
yes право даёт логин: адрес подающей стороны меняется или заранее неизвестен

Второе — почти всегда выбор парка: узлы стоят у разных хостеров, диапазон подачи не удержать. Тогда строка нужна в адресном блоке, а не только в именованных, и вместе с ней — smtp-max-auth-failure-rate.

Умолчание false и оговорка «локального в том числе» — из руководства, § 3.3.7.10. Требование для предела неудачных попыток — § 3.3.7.8. Разбор про место строки — наш.
Пример в конфигурации
# требование входа стоит в адресном блоке — там, где решается судьба
# ещё не вошедшего соединения
<source 0/0>
    require-auth true    smtp-max-auth-failure-rate 5/m
</source>
По руководству предел неудачных попыток действует только вместе с первой строкой; MTA 6.0 применяет его и без неё. Ставить её в 0/0 можно, только если через этот блок не принимают почту без входа: жалобы и отказы на порту 25 её не пройдут.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ставят требование только в именованный источник

§ 10.1.1

Чем чреватоСтрока попадает туда, куда доходят уже вошедшие. Невошедшее соединение обрабатывается адресным блоком, и если ретрансляция разрешена там, требование входа его не остановит.
Как заметитьТребование входа стоит в конфигурации, а подача без пароля с чужой машины проходит.
Как правильноСтавить требование в адресный блок, под который попадает подача, — в именованном оно только подпорка.

Требуют вход без предела неудачных попыток

§ 3.3.7.8

Чем чреватоПорт подачи открыт, пароль один, попыток — сколько угодно. Перебор пароля ничем не ограничен, и в журналах он выглядит обычной чередой неудачных входов.
Как заметитьrequire-auth true есть, smtp-max-auth-failure-rate нет.
Как правильноСтавить обе строки парой и в одном блоке.

Забывают про «локального в том числе»

§ 3.3.7.10

Чем чреватоТребование распространяется и на подачу с самой машины. Локальный скрипт, привыкший сдавать почту без пароля, перестаёт работать сразу после перечитывания конфигурации.
Как заметитьПосле включения требования встала подача с самого сервера.
Как правильноЛибо завести логин и локальному отправителю, либо оставить для адреса 127.0.0.1 отдельный блок без требования.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
require-auth <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.7.10
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и подчиняется слиянию источников: соединение попадает под все адресные блоки, которые его накрывают, и узкий перекрывает широкий. Требование, выданное в блоке 0/0, достаётся всем подсетям, которые сами не сказали обратного, — здесь это ровно то, что нужно.
Как проверить на узле
Проверять надо не строку, а поведение — и снаружи узла:
grep -n 'require-auth\|always-allow-relaying' /etc/pmta/config /etc/pmta/virtualhost.txt
printf 'HELO test\r\nMAIL FROM:<a@example.com>\r\nRCPT TO:<b@example.net>\r\nQUIT\r\n' | nc <адрес-узла> 2525
Вторая команда выполняется с чужой машины и должна получить отказ на RCPT. Ответ 250 означает, что узел ретранслирует без входа, — и строка требования стоит не там, где нужно.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла · Разделение отправителей