allow-starttls

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

Разрешать ли клиенту начинать шифрование при подаче
в конфигурации это строкаallow-starttls falseвнутри блока <source>
Без этой строки узел даже не предлагает шифрование

Строка разрешает узлу объявлять расширение STARTTLS клиентам, которые подают через этот источник. Умолчание — false, и это важно: без строки узел о шифровании даже не сообщает, и подача идёт открытым текстом, включая пароли.

Работает только вместе с сертификатом. smtp-server-tls-certificate на уровне узла — то, что узел предъявит; без него предъявлять нечего.

Это разрешение, а не требование. Клиент может им не воспользоваться. Настоять умеют две соседние строки: require-starttls — шифрование до любых команд, и require-starttls-before-auth — шифрование хотя бы до пароля.

Ставить надо в правильный источник. Разрешение выдаётся тому блоку, под который попадает адрес подающего; в узком блоке оно перекрывает значение широкого.

Главная ловушка — поставить разрешение в источник подачи, а не в общий. Источники подачи выбираются по логину, а STARTTLS предлагается до авторизации: на момент объявления расширения узел ещё не знает, кто пришёл. Значит, разрешать шифрование надо в источнике, совпавшем по адресу, — обычно в <source> 0/0.
Что делает Хаб. Пишет true — в базовой конфигурации, в общем источнике 0/0, и в комментарии там объяснено почему: STARTTLS предлагается до авторизации, а источники подачи выбираются по логину, и в них строка не сработала бы. Без неё платформа, настроенная на шифрованную подачу, отваливается с «не удалось отправить тест».
Рекомендуемые значения

Значение булево, а вопрос — в каком источнике:

Где Действует Почему
<source> 0/0 на всех подающих STARTTLS объявляется до авторизации — это единственное рабочее место
источник по логину ни на кого к моменту объявления логин ещё не назван
узкая подсеть на неё если подача идёт только оттуда

И обязательно сертификат на уровне узла: без него разрешение ничего не даёт.

Умолчание false — из руководства (§ 3.3.7.13). Правило про источник, совпавший по адресу, — наше, из шаблона базовой конфигурации.
Пример в конфигурации
# так пишет базовую конфигурацию Хаб — в общем источнике
<source 0/0>
    allow-starttls true    allow-unencrypted-plain-auth yes
</source>
Строка стоит в блоке, совпадающем по адресу, а не в источниках подачи: те выбираются по логину, а шифрование предлагается раньше. Комментарий об этом стоит в самом шаблоне.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ставят разрешение в источник подачи

our-experience

Чем чреватоИсточники подачи выбираются по логину, а STARTTLS предлагается до авторизации. Строка не срабатывает, узел молчит о шифровании, и платформа с обязательным TLS не подключается вовсе.
Как заметитьПлатформа сообщает «не удалось отправить тест», подача не идёт.
Как правильноСтавить в <source> 0/0 или в блок подсети, совпадающий по адресу подающего.

Разрешают шифрование без сертификата узла

our-experience

Чем чреватоПредъявлять нечего, и согласование срывается. В конфигурации при этом «шифрование разрешено».
Как заметитьКлиент видит предложение STARTTLS, но соединение не поднимается.
Как правильноЗадать smtp-server-tls-certificate на уровне узла. Хаб выпускает самоподписанный сам.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
allow-starttls <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.7.13
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и сливается по правилу источников: более узкий блок перекрывает более широкий. Но выбор источника происходит до авторизации, по адресу подающего, — поэтому именованные источники и источники по логину до этой строки не доходят.
Как проверить на узле
Проверяется снаружи — объявляет ли узел расширение вообще:
openssl s_client -starttls smtp -connect localhost:25 -quiet
Успешное согласование означает, что и разрешение, и сертификат на месте. Отказ с сообщением о неподдержке STARTTLS — либо строки нет, либо она в источнике, который не совпал по адресу.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Шифрование соединений