tls-certificate

<smtp-listener>

Сертификат этого слушателя
в конфигурации это строкаtls-certificate inherited from smtp-server-tls-certificateвнутри блока <smtp-listener>
То же имя ещё 2:<smtp-listener><smtp-user><transmissions-api-listener>— часть из них другие настройки, часть та же самая
Свой сертификат на отдельный вход

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

Наследуется от smtp-server-tls-certificate — руководство говорит это прямо. Не задали здесь — предъявляется сертификат узла.

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

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

Настройка наследуется от узла — задавать её здесь стоит только тогда, когда у этого входа должно быть иначе:

Что Когда
не задавать один вход или общее имя — берётся сертификат узла
свой файл у входа своё имя, и клиенты его проверяют
ссылка в хранилище закрытый ключ не должен лежать файлом на узле
Наследование от сертификата узла и форма записи — из руководства (§ 3.3.17.4). Совет про имя входа — наш.
Пример в конфигурации
# настройка одного входа, остальные берут значение узла
<smtp-listener 127.0.0.1:25>
    tls-certificate /var/lib/pmta/smtp.pem aaaa</smtp-listener>
Пример руководства. Пароль здесь открытым текстом — ровно то, ради чего в поставке есть ссылки на хранилище секретов.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Настраивают слушатель вместо узла при единственном входе

§ 3.3.17.4

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

Меняют у одного слушателя, ожидая изменения у всех

наш опыт

Чем чреватоСтрока действует только на свой адрес и порт. Соседний вход продолжает работать по значению узла, и разница обнаруживается по поведению разных клиентов.
Как заметитьОдни подающие видят новое поведение, другие прежнее.
Как правильноМенять на уровне узла — тогда изменение достанется всем входам, где не задано своё.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
tls-certificate <path>
Значения
путь к файлу PEM или ссылка на хранилище секретов, при необходимости пароль вторым словом
Умолчание
inherited from smtp-server-tls-certificate § 3.3.17.4
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<smtp-listener>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <smtp-listener> и действует на соединения его адреса и порта. Не заданная здесь, она наследуется с уровня узла — от smtp-server-tls-certificate. Уровней между ними нет: слушатель либо задаёт своё, либо берёт общее.
Как проверить на узле
Проверять надо порт того слушателя, о котором речь, — у соседнего значение может быть другим:
openssl s_client -starttls smtp -connect 127.0.0.1:25 2>/dev/null | openssl x509 -noout -subject
Имя в сертификате должно совпадать с тем, по которому клиенты обращаются к этому входу. Если оно от узла, а не от слушателя, — строки здесь нет, и действует общий сертификат.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла · Подключить платформу отправки