use-starttls

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

Шифровать ли соединение с этим приёмником
в конфигурации это строкаuse-starttls trueвнутри блока <domain>
Шифрование к приёмнику — включено по умолчанию

Строка разрешает узлу пользоваться расширением STARTTLS, когда приёмник его предлагает. Умолчание — true, то есть шифрование уже работает, и трогать эту строку обычно нужно не чтобы включить, а чтобы понять, почему выключено.

Это разрешение, а не требование. Приёмник может STARTTLS не предложить, или согласование может сорваться, — и тогда письмо уйдёт открытым текстом. Настаивать на шифровании умеет соседняя строка require-starttls.

От неё зависят почти все остальные настройки TLS этого блока: версии протокола, наборы шифров, проверка сертификата, DANE и MTA-STS. Выключив её, вы выключаете их все разом.

Главная ловушка — принять включённое шифрование за гарантированное. use-starttls без require-starttls означает «зашифруем, если получится». Доля писем, ушедших открытым текстом, при этом нигде не бросается в глаза: доставка прошла, отказа не было.
Что делает Хаб. Пишет yes во всех пятнадцати блоках шаблона политик — у крупных приёмников и в общем — явно, хотя это и умолчание: конфигурация должна читаться без знания умолчаний. Рядом там же стоит require-starttls yes: шифрование у нас обязательно для всех приёмников, и незашифрованная доставка считается неудачей, а не запасным вариантом.
Рекомендуемые значения

Умолчание уже правильное. Осмысленные случаи выключения наперечёт:

Значение Когда
yes (умолчание) всегда
no приёмник объявляет STARTTLS и на нём же срывается — редкое, но встречающееся поведение старых узлов

Выключать — только по конкретному приёмнику, в его блоке, а не в <domain *>. И только после того, как в журнале видно, что согласование действительно срывается.

Умолчание true и зависимость остальных настроек TLS — из руководства (§ 3.3.10.108.1). Совет выключать только точечно — наш.
Пример в конфигурации
# шифрование включено и обязательно — так пишет шаблон политик Хаба
<domain $mailru>
    use-starttls yes    require-starttls yes
</domain>
Первая строка разрешает шифрование, вторая делает его обязательным. Без второй письмо уйдёт открытым текстом, если приёмник не поддержал STARTTLS, — и это будет обычная успешная доставка.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают шифрование гарантированным

§ 3.3.10.108.2

Чем чреватоБез require-starttls письмо уходит открытым текстом всякий раз, когда шифрование не сложилось. Доставка при этом успешна, отказа нет, и заметить это можно только по учёту.
Как заметитьВ поле версии протокола у части писем пусто, хотя шифрование «включено».
Как правильноДля приёмников, где шифрование обязательно, ставить рядом require-starttls yes — и принимать, что часть писем тогда не уйдёт вовсе.

Выключают шифрование целиком из-за одного приёмника

наш опыт

Чем чреватоСтрока в <domain *> выключает шифрование всему парку. Вместе с ним перестают работать проверка сертификата, DANE и MTA-STS — то есть всё, что зависит от шифрования.
Как заметитьУ всех приёмников в учёте пусто в поле версии протокола.
Как правильноВыключать в блоке конкретного приёмника, а не в общем. И сначала убедиться по журналу, что дело действительно в согласовании.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
use-starttls <boolean>
Значения
yes | no | true | false
Умолчание
true § 3.3.10.108.1
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <domain> и сливается по обычному правилу блоков получателей: значение из <domain *> задаёт базу, блок конкретного приёмника её уточняет, побеждает самое точное совпадение. Те же три уровня действуют и по адресу отправки: узел, <virtual-mta-pool>, <virtual-mta>.
⇄

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

2 связи

Как проверить на узле
Что соединение действительно шифруется, видно в учёте — там есть поле с версией протокола:
pmtaacctfind --output csv[rcpt,dsnStatus,dlvTlsProtocol] /var/log/pmta/acct-*.csv | head -20
Пустое поле версии означает, что письмо ушло без шифрования, — если dlvTlsProtocol назван в record-fields; на узлах Хаба он не назван, и столбец пуст всегда. Если таких записей много при включённой строке — приёмник STARTTLS не предлагает либо согласование срывается; подробности пишет log-tls.
В Хабе
Управляется
DNS → Ключи подписи
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Шифрование соединений