tls-min-version

<transmissions-api-listener>

Нижняя граница версии TLS на входе Transmissions API
в конфигурации это строкаtls-min-version tlsv1.2внутри блока <transmissions-api-listener>
То же имя ещё 1:<smtp-listener><transmissions-api-listener>— часть из них другие настройки, часть та же самая
Пол версии на втором способе подачи

Строка задаёт, ниже какой версии протокола вход по API не опустится. Умолчание — tlsv1.2, руководство называет его прямо (§ 3.3.21.7).

Этот вход — не уровень почтового слушателя, а отдельный вход. Имена строк совпадают с <smtp-listener>, и от этого кажется, что одна настройка перекрывает другую. Ничего подобного: у каждого входа свои значения, и между ними нет ни наследования, ни приоритета.

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

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

Умолчание разумно; снижать — только под конкретный клиент:

Значение Когда
tlsv1.2 (умолчание) всегда
tlsv1.3 все подающие клиенты свои и современные
tlsv1.1 и ниже старый клиент, который нельзя обновить

Ключ подачи идёт заголовком Authorization — то есть внутри шифрованного разговора. Снижение границы ослабляет именно его защиту.

Значения и умолчание tlsv1.2 — из руководства (§ 3.3.21.7). Что ключ идёт заголовком Authorization — оттуда же (§ 8.1.1). Замечание про отсутствие наследования от почтового слушателя — наше.
Пример в конфигурации
# у каждого входа свои границы; наследования между входами нет
<transmissions-api-listener 1.2.3.4:8585>
    tls-certificate /etc/pmta/transmissions-api-certificate.pem
    tls-min-version tlsv1.2</transmissions-api-listener>
Умолчание, записанное явно. Смысл записывать появляется тогда, когда входов несколько и границы у них разные.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ждут, что настройка почтового слушателя достанется входу API

наш опыт

Чем чреватоИмена строк совпадают, блоки разные. Настройка почтового входа на вход по API не действует никак, и наоборот.
Как заметитьГраница задана у слушателя, а вход по API согласует другое.
Как правильноЗадавать в том блоке, о котором речь. Общего уровня у этих двух входов нет.

Снижают границу, чтобы «заработал старый клиент»

§ 3.3.21.7

Чем чреватоКлюч подачи идёт внутри того же шифрованного разговора. Снижение границы ослабляет защиту ключа, который даёт право слать письма от вашего имени.
Как заметитьВ блоке входа стоит tlsv1 или tlsv1.1.
Как правильноОбновить клиент. Снижение — временная мера с записанным сроком.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
tls-min-version { tlsv1 | tlsv1.1 | tlsv1.2 | tlsv1.3 }
Значения
tlsv1 | tlsv1.1 | tlsv1.2 | tlsv1.3
Умолчание
tlsv1.2 § 3.3.21.7
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<transmissions-api-listener>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка действует внутри своего <transmissions-api-listener>. Уровня выше у этого входа не существует — ни настройки узла, ни настройки почтового слушателя на него не влияют.
⇄

Связанные директивы

3 связи

Как проверить на узле
Спрашиваем вход со стороны клиента; версия, которая должна согласоваться:
openssl s_client -connect NODE:8585 -tls1_2 -brief </dev/null
Protocol version: TLSv1.2 — пол не выше. Запрещённую версию надо спрашивать, разрешив её сначала своему клиенту: -tls1_1 -cipher ‘DEFAULT:@SECLEVEL=0’; ответ tlsv1 alert protocol version означает отказ узла, а не свой.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Безопасность узла