reuse-ssl-session

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

Использовать ли повторно параметры прошлого сеанса TLS
в конфигурации это строкаreuse-ssl-session falseвнутри блока <domain>
Мелкая оптимизация с очень узкой областью применения

При переподключении к тому же узлу вскоре после предыдущего сеанса можно не проводить полное рукопожатие, а воспользоваться прежними параметрами. Строка это разрешает. Умолчание — false.

Два ограничения делают её почти ненужной. Первое: на TLS 1.3 механизм не работает и директива игнорируется — а именно 1.3 всё чаще и согласуется. Второе: приёмник должен уметь то же самое, и руководство прямо говорит, что известен один такой — gmail.com.

Вендор советует включать только тем, про кого известно, что они это поддерживают.

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

Значение булево, и осмысленный случай ровно один:

Значение Когда
no (умолчание) всегда
yes приёмник заведомо поддерживает — по руководству это gmail.com

И только при версии ниже 1.3. На 1.3 строка игнорируется, так что включать её вместе с современными версиями бессмысленно.

Умолчание false, игнорирование на TLS 1.3 и упоминание единственного известного приёмника — из руководства (§ 3.3.10.108.5). Совет не трогать потолок версии ради этого — наш.
Пример в конфигурации
# явное «нет» — так конфигурация читается без знания умолчаний
<domain $mailru>
    use-starttls yes
    reuse-ssl-session no</domain>
Так и стоит в шаблоне политик Хаба. Включать имеет смысл только приёмнику, про которого известно, что он поддерживает повторное использование, — и только если соединения идут по версии ниже 1.3.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают всем приёмникам

§ 3.3.10.108.5

Чем чреватоПоддерживает механизм, по руководству, один известный приёмник. У остальных строка либо игнорируется, либо приводит к лишней попытке при каждом переподключении.
Как заметитьСтрока стоит в <domain *>.
Как правильноОставить умолчание везде, кроме тех приёмников, про которых известно обратное.

Опускают потолок версии ради оптимизации

наш опыт

Чем чреватоСоединения переходят на TLS 1.2 ради сокращённого рукопожатия, хотя полное рукопожатие в 1.3 и так короче. Итог — версия ниже при том же или худшем результате.
Как заметитьУ приёмника smtp-tls-max-version стоит tlsv1.2, а в комментарии — про производительность.
Как правильноСнять ограничение потолка и оставить умолчание этой строки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
reuse-ssl-session <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.10.108.5
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <domain> и сливается по обычному правилу блоков получателей: побеждает самое точное совпадение по имени приёмника. Те же три уровня действуют по адресу отправки. На версии 1.3 директива игнорируется независимо от того, на каком уровне задана.
Как проверить на узле
Косвенно проверяется по согласованной версии: если она 1.3, строка не участвует:
pmtaacctfind --output csv[rcpt,dlvTlsProtocol] /var/log/pmta/acct-*.csv | head -20
Версия TLSv1.3 означает, что повторное использование не применяется, что бы ни стояло в конфигурации. Отдельного счётчика сокращённых рукопожатий узел не показывает. Столбец версии заполнен, только если dlvTlsProtocol назван в record-fields; на узлах Хаба он не назван.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Настроить темп под провайдера