smtp-tls-max-version

<domain>

Верхняя граница версии TLS к приёмнику
в конфигурации это строкаsmtp-tls-max-version none — действует как tlsv1.3внутри блока <domain>
Выше какой версии не подниматься

Вторая граница диапазона. Значения те же — tlsv1, tlsv1.1, tlsv1.2, tlsv1.3; умолчания нет, то есть верхняя граница не ограничена и на практике равна tlsv1.3.

Строка нужна редко и почти всегда для обхода чужой поломки. Нормальный случай — согласовать самую новую версию, которую понимают обе стороны; ограничивать сверху имеет смысл, когда приёмник объявляет tlsv1.3, а на ней срывается.

Одно известное следствие снижения потолка: reuse-ssl-session не работает на tlsv1.3. Опустив потолок до tlsv1.2, вы включаете возможность повторного использования сессии — но это не повод так делать, а побочный эффект, о котором стоит знать.

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

Ставить только по поводу. Поводов ровно два:

Значение Когда
не задано (умолчание) всегда
tlsv1.2 приёмник объявляет tlsv1.3 и на ней срывается
tlsv1.2 ради reuse-ssl-session известен лишь один такой приёмник — Gmail; выигрыш мелкий, версия ниже

И записывать повод рядом, комментарием: снять строку через год будет некому, если непонятно, зачем она.

Значения и отсутствие умолчания — из руководства (§ 3.3.10.108.12). Связь с повторным использованием сессии — из § 3.3.10.108.5; совет записывать повод — наш.
Пример в конфигурации
# обход поломки конкретного приёмника, с поводом рядом
<domain broken.example.com>
    use-starttls yes
    smtp-tls-max-version tlsv1.2   # объявляет 1.3 и срывается на ней, проверено 28.08</domain>
Комментарий здесь важнее самой строки: без него через полгода никто не поймёт, можно ли её снять. Приёмник обновится, а ограничение останется.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ограничивают потолок «на всякий случай»

наш опыт

Чем чреватоСоединение остаётся на старой версии навсегда. Приёмник обновляется, а узел продолжает согласовывать то, что ему велели годы назад.
Как заметитьУ приёмника версия ниже, чем у соседей по парку, без видимой причины.
Как правильноНе задавать без конкретного повода. Заданное — снабжать комментарием с датой и причиной.

Опускают потолок ради повторного использования сессии

§ 3.3.10.108.5

Чем чреватоВыигрыш — ускорение начального рукопожатия при переподключении к тому же узлу; цена — версия протокола ниже возможной. И поддерживает такое, по руководству, только один известный приёмник.
Как заметитьПотолок опущен без явного повода, в комментарии — про производительность.
Как правильноОставить tlsv1.3 и не пользоваться повторным использованием сессии: на tlsv1.3 рукопожатие и так быстрее.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
smtp-tls-max-version <enumeration>
Значения
tlsv1 | tlsv1.1 | tlsv1.2 | tlsv1.3
Умолчание
none — действует как tlsv1.3 § 3.3.10.108.12
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <domain> и сливается по обычному правилу блоков получателей: побеждает самое точное совпадение по имени приёмника. Те же три уровня действуют по адресу отправки — узел, <virtual-mta-pool>, <virtual-mta>.
Как проверить на узле
Согласованная версия видна в учёте — по ней и проверяют, что потолок подействовал:
pmtaacctfind --output csv[rcpt,dlvTlsProtocol] /var/log/pmta/acct-*.csv | head -20
У приёмника с заданным потолком версия не должна его превышать. Если она и так была ниже, строка ничего не изменила — и, скорее всего, не нужна. Столбец версии заполнен, только если dlvTlsProtocol назван в record-fields; на узлах Хаба он не назван.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Шифрование соединений