immediate-tls

<smtp-listener>

Шифровать соединение с первого байта — SMTPS
в конфигурации это строкаimmediate-tls falseвнутри блока <smtp-listener>
Шифрование до приветствия, а не после

Два разных способа зашифровать подачу. STARTTLS: соединение открывается обычным, клиент видит приветствие, объявляет STARTTLS и только потом начинается шифрование. SMTPS — то, что включает эта строка: шифрование начинается с первого байта, до приветствия.

Умолчание — false. Строка привязана к слушателю: действует на соединения, пришедшие на его адрес и порт.

Исторически SMTPS живёт на порту 465, а STARTTLS — на 25 и 587. Поэтому включают его на отдельном слушателе, а не на основном: клиент, ожидающий обычного приветствия, на зашифрованном порту просто зависнет.

Что не меняется — сертификат, версии и шифры берутся оттуда же, откуда и для STARTTLS: у слушателя или у узла.

Главная ловушка — включить на существующем слушателе. Все клиенты, подключающиеся к этому адресу и порту, ждут текстового приветствия и получают шифрованный поток. Подача останавливается целиком и сразу, а сообщение об ошибке у клиента будет невнятным — обычно таймаут.
Что делает Хаб. Не пишет: подача идёт по STARTTLS на обычном порту, и этого достаточно. SMTPS понадобится, если появится платформа, умеющая только его, — тогда заводят отдельный слушатель на 465 и включают строку там, не трогая основной.
Рекомендуемые значения

Значение булево, а решение — про отдельный слушатель:

Что Как
обычная подача STARTTLS на 25 или 587, эта строка не нужна
платформа умеет только SMTPS отдельный слушатель на 465, строка true
включить на существующем слушателе не делать: подача остановится целиком

Порт — не часть этой строки, а часть имени слушателя. Строка лишь меняет способ начала шифрования.

Умолчание false и то, что строка реализует SMTPS, — из руководства (§ 3.3.17.2). Привязка к порту 465 и совет заводить отдельный слушатель — наши.
Пример в конфигурации
# отдельный слушатель для SMTPS — основной не трогаем
smtp-listener 0.0.0.0:25

<smtp-listener 0.0.0.0:465>
    immediate-tls true</smtp-listener>
Основной слушатель продолжает принимать обычную подачу со STARTTLS; новый шифрует с первого байта. Сертификат оба берут у узла, если своего у слушателя нет.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают на основном слушателе

наш опыт

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

Ждут, что строка сама откроет порт 465

§ 3.3.17.2

Чем чреватоПорт задаётся именем слушателя, а не этой строкой. Без объявления слушателя на 465 подключаться будет некуда.
Как заметитьСтрока есть, порт закрыт.
Как правильноОбъявить <smtp-listener> на нужном адресе и порту, а строку писать внутри него.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
immediate-tls <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.17.2
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<smtp-listener>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <smtp-listener> и действует на соединения его адреса и порта; уровней у неё нет — каждый слушатель настраивается сам. Сертификат при этом наследуется от узла, если у слушателя не задан свой; про остальные параметры шифрования руководство этого не говорит.
Как проверить на узле
Проверяется подключением без ожидания приветствия — сразу с шифрованием:
openssl s_client -connect localhost:465 -quiet
Приветствие узла появляется после согласования шифрования — это и есть SMTPS. Если на том же порту работает STARTTLS, команда зависнет: клиент ждёт шифрования, а узел — текстовой команды.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла · Подключить платформу отправки