Выберите продукт

TLS для SMTP/IMAP: Let's Encrypt, DV и wildcard, SNI и практические настройки Postfix/Dovecot

Шифрование почты — не только «включить STARTTLS». Разберём, какие имена нужны в сертификате для SMTP/IMAP, чем отличаются Let’s Encrypt, DV и wildcard, где помогает SNI, и какие настройки Postfix/Dovecot реально влияют на совместимость и безопасность.
TLS для SMTP/IMAP: Let's Encrypt, DV и wildcard, SNI и практические настройки Postfix/Dovecot

Зачем вообще разбираться в TLS для SMTP/IMAP

В вебе всё довольно прямолинейно: браузер подключился по HTTPS, увидел сертификат, проверил имя и цепочку — и поехали. В почте сложнее: у вас обычно минимум два разных сценария TLS.

SMTP бывает клиентским (пользователь отправляет почту через submission) и сервер-сервер (ваш MTA общается с другими MTA). В обоих случаях встречается smtp tls, но требования и последствия ошибок отличаются. Пользовательский клиент чаще «ругается» на сертификат и отказывается работать, а сервер-сервер может уйти в plaintext или не доставить письмо.

IMAP — это доступ к ящику. Здесь почти всегда критична строгая проверка имени хоста и доверия к цепочке: imap tls с неверным сертификатом быстро превращается в шквал тикетов от пользователей.

Добавьте сюда несколько доменов, автоконфиги, разные хостнеймы для сервисов, и вы получите типичную админскую задачу: как выбрать сертификат (Let’s Encrypt, DV, wildcard), как не сломать старые клиенты и где уместен SNI.

Какие имена должны быть в сертификате для почтовых сервисов

Почтовая инфраструктура почти всегда использует несколько DNS-имён. Чаще всего это:

  • mail.example.com — универсальный хост для IMAP/POP3/SMTP submission;
  • smtp.example.com — иногда выделяют отдельно для отправки;
  • imap.example.com — иногда выделяют отдельно для чтения;
  • mx1.example.com — имя MX, которое светится во внешнем SMTP (25/tcp);
  • example.com — иногда пытаются использовать как «корневой» для почты, но это не всегда удачная идея.

Правило простое: клиент проверяет то имя, к которому подключается. Если в настройках пользователя указан mail.example.com, то и сертификат должен быть действителен для mail.example.com (в SAN или CN, хотя сегодня ориентируемся на SAN).

Для сервер-сервер SMTP история двоякая. Удалённые MTA часто подключаются по имени из MX-записи или по A/AAAA-имени, которое вы отдаёте в EHLO. В строгих режимах TLS (и при некоторых политиках у получателей) несоответствие имени может ухудшать доставляемость.

Если вы хотите меньше сюрпризов, выбирайте один «почтовый» хост (например, mail.example.com), используйте его в инструкциях для пользователей, в автоконфигурации и старайтесь, чтобы он же был корректным rDNS/PTR и HELO-именем там, где это уместно.

Let’s Encrypt vs DV vs wildcard: что выбрать для почты

В контексте TLS-шифрования для SMTP/IMAP слова «DV» и «Let’s Encrypt» часто смешивают. Технически Let’s Encrypt — это УЦ, а DV — тип проверки владения доменом. Большинство «обычных» коммерческих сертификатов для сайтов и почты тоже DV.

Let’s Encrypt: когда отлично подходит

Let’s Encrypt обычно закрывает 95% задач для почтовых сервисов:

  • короткий срок жизни сертификата снижает риск «забыли продлить» (при нормальной автоматизации);
  • поддерживает SAN (несколько имён в одном сертификате);
  • поддерживает wildcard, но только через DNS-01 (важно для автоматизации).

Минусы в почтовом мире тоже есть: если автоматизация настроена «на честном слове», то внезапная ошибка обновления даст массовые отказы клиентов IMAP/SMTP submission. Поэтому для почты особенно важно иметь мониторинг срока действия и понятный план замены.

DV (коммерческий): когда имеет смысл

DV-сертификат от коммерческого УЦ обычно выбирают, когда нужны:

  • внутренние требования комплаенса или привычные процедуры (закупка, SLA, поддержка);
  • централизованное управление сертификатами в компании;
  • иногда — более удобные варианты выпуска wildcard или мультидоменных сертификатов в рамках одного контракта.

С точки зрения криптографии и доверия клиентами DV от Let’s Encrypt и DV от коммерческого CA в большинстве сценариев равнозначны: решает корректность цепочки, имён и параметров TLS.

Wildcard: удобно, но не всегда лучше

Wildcard (например, *.example.com) — это удобство, когда у вас много поддоменов и вы хотите закрыть их одним сертификатом. Для почты аргументы такие:

  • Плюс: меньше сущностей для управления (один сертификат на много имён).
  • Минус: компрометация ключа от wildcard бьёт сразу по всем сервисам на домене.
  • Минус: wildcard не покрывает голый домен example.com; он покрывает только поддомены.
  • Практика: для почты чаще достаточно SAN-сертификата на 2–5 конкретных имён (например, mail, smtp, imap).

Если у вас одна машина обслуживает много доменов, wildcard «на домен» может быть удобен, но тогда встаёт вопрос SNI и раздельных сертификатов.

Схема потоков TLS в почтовых протоколах: SMTP 25/587/465 и IMAP 143/993

SNI в SMTP/IMAP: что это и почему вокруг него столько боли

SNI (Server Name Indication) — расширение TLS, позволяющее клиенту передать серверу имя хоста ещё до того, как выбран сертификат. Это даёт возможность держать на одном IP несколько разных сертификатов и отдавать «правильный» по имени.

В HTTPS SNI давно стал нормой. В почтовых протоколах ситуация неоднородная:

  • в IMAP/POP3 клиенты чаще поддерживают SNI, но не всегда (особенно старые и встроенные клиенты);
  • в SMTP всё зависит от реализации и режима: submission-клиенты обычно современнее, а вот MTA между собой могут быть консервативны;
  • даже если клиент поддерживает SNI, серверное ПО должно уметь выбирать сертификат по SNI именно для этого протокола и порта.

Отсюда типовая дилемма: «хочу много доменов на одном IP и разные сертификаты» против «хочу максимальную совместимость». Компромисс часто такой: один основной сертификат на mail.example.com для пользовательских протоколов, а дополнительные домены — через отдельные IP или через единый SAN, если имён не слишком много.

Где SNI особенно полезен

SNI помогает в двух распространённых случаях:

  • много доменов на одном почтовом сервере (хостинг/аутсорс), каждому нужен свой сертификат;
  • разные сертификаты на разные «фронтенды» (например, один сертификат для внешнего SMTP, другой для внутреннего submission).

Где SNI может быть ловушкой

Если часть клиентов без SNI, они увидят «дефолтный» сертификат. В IMAP это почти гарантированный отказ подключения. В SMTP submission — тоже. На 25 порту сервер-сервер это может ухудшать репутацию и приводить к downgrade шифрования у некоторых партнёров.

Практическое правило: если у вас аудитория — «неизвестные клиенты по миру» (почтовый хостинг, корпоративные устройства, старые почтовики), закладывайте сценарий без SNI и выбирайте дефолтный сертификат максимально универсальным.

FastFox SSL
Надежные SSL-сертификаты
Мы предлагаем широкий спектр SSL-сертификатов от GlobalSign по самым низким ценам. Поможем с покупкой и установкой SSL бесплатно!

Рекомендованные порты и режимы TLS для почты

Чтобы не путаться в терминах, закрепим «нормальную» карту портов:

  • SMTP 25/tcp — сервер-сервер, обычно STARTTLS (оппортунистический), иногда принудительный по политике;
  • Submission 587/tcp — клиентская отправка, STARTTLS + AUTH (самый совместимый вариант);
  • SMTPS 465/tcp — TLS с первого байта (implicit TLS), сегодня снова считается стандартным для клиентов;
  • IMAP 143/tcp — STARTTLS;
  • IMAPS 993/tcp — implicit TLS (почти всегда предпочтительно для пользователей).

Для пользователей обычно проще и надёжнее давать 993 и 465/587, а 143 и 25 оставлять для совместимости и межсерверного обмена.

Postfix: базовая TLS-настройка без лишней магии

Ниже — опорные параметры Postfix, которые чаще всего требуются, чтобы smtp tls работал предсказуемо. Конкретные значения зависят от вашей политики и версии ОС, но логика одинакова: указать сертификат, ключ, CA-цепочку и включить STARTTLS там, где надо.

TLS для входящих соединений (smtpd)

postconf -e 'smtpd_tls_cert_file=/etc/ssl/mail/fullchain.pem'
postconf -e 'smtpd_tls_key_file=/etc/ssl/mail/privkey.pem'
postconf -e 'smtpd_tls_security_level=may'
postconf -e 'smtpd_tls_loglevel=1'
postconf -e 'smtpd_tls_received_header=yes'

smtpd_tls_security_level=may — типичный выбор для 25 порта: если удалённая сторона умеет STARTTLS, шифруемся, если нет — не ломаем доставку. Для submission часто делают жёстче (см. ниже).

TLS для исходящих соединений (smtp)

postconf -e 'smtp_tls_security_level=may'
postconf -e 'smtp_tls_loglevel=1'
postconf -e 'smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt'

Важно понимать: включить TLS на исходящем SMTP — это не то же самое, что «проверять сертификаты всех получателей». Жёсткая проверка имени и цепочки для всех доменов в интернете может привести к недоставкам, поэтому обычно оставляют оппортунистический режим и применяют строгую политику точечно (для партнёров или внутренних доменов).

Submission: где уместно требовать TLS

Для 587 порта нормальная политика: требовать TLS перед AUTH, а иногда и полностью запретить plaintext. Минимум, что обычно включают:

postconf -e 'smtpd_tls_auth_only=yes'

Дальше это связывается с master.cf (служба submission) и ограничениями, но ключевая мысль: пользовательская отправка не должна уходить без шифрования.

Dovecot: IMAP TLS, цепочка и совместимость

Dovecot закрывает imap tls (и POP3, если используете). Самое частое место ошибок — неправильный файл цепочки или права на ключ.

# /etc/dovecot/conf.d/10-ssl.conf (фрагмент)
ssl = required
ssl_cert = </etc/ssl/mail/fullchain.pem
ssl_key = </etc/ssl/mail/privkey.pem

Обратите внимание на синтаксис Dovecot: символ < означает «прочитать содержимое файла». Если вы поставите путь без <, можно получить неожиданные результаты в зависимости от версии и настроек.

Если у вас много пользователей и нужна аккуратная серверная фильтрация писем на стороне Dovecot, пригодится отдельный материал про Sieve-фильтры на сервере.

Минимальная версия TLS и шифры

Если у вас нет требований поддержки очень старых клиентов, логично ориентироваться на TLS 1.2+ (а лучше 1.2/1.3). Но почта часто живёт дольше веба: встречаются старые мобильные клиенты, MFP-принтеры и т.п. Поэтому изменения делайте аккуратно и через проверку логов.

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

Как связаны сертификат, MX и имя в EHLO: практические последствия

В идеальном мире у вас совпадают:

  • имя MX (например, mx1.example.com);
  • PTR/rDNS для IP этого MX;
  • имя в EHLO вашего Postfix;
  • сертификат, валидный для того имени, которое видит клиент при TLS.

В реальности часто есть компромиссы: например, пользователи подключаются к mail.example.com, а MX указывает на mx1.example.com. Это нормально, если вы понимаете, какой сертификат показывается на каком порту и какой хостнейм ожидает увидеть клиент.

Если вы используете один сертификат, проще всего включить в него все ключевые имена через SAN. Если имён много и они меняются — wildcard или SNI, но с учётом совместимости.

Проверка TLS через openssl s_client: цепочка сертификатов и SNI для IMAPS и SMTP STARTTLS

Проверка и диагностика: как быстро понять, что именно не так

Когда жалуются «TLS не работает», в половине случаев проблема не в TLS как таковом, а в несоответствии имени, цепочки или в том, что клиент подключается не к тому порту/протоколу.

Проверяем IMAPS (993) и SMTP submission (465/587)

openssl s_client -connect mail.example.com:993 -servername mail.example.com -showcerts
openssl s_client -connect mail.example.com:465 -servername mail.example.com -showcerts
openssl s_client -connect mail.example.com:587 -servername mail.example.com -starttls smtp -showcerts

Флаги, на которые смотрим:

  • какой сертификат реально отдал сервер (CN/SAN);
  • есть ли полная цепочка (обычно нужен fullchain.pem);
  • нет ли ошибок валидации (verify return code);
  • совпадает ли имя, которое вы проверяете, с тем, что в сертификате.

Проверяем SMTP 25 с STARTTLS

openssl s_client -connect mx1.example.com:25 -servername mx1.example.com -starttls smtp -showcerts

Даже если часть серверов не использует SNI, эта проверка покажет, что отдаёт ваш сервер и насколько цепочка выглядит «здоровой».

Частые ошибки и как их исправлять без паники

1) Отдали не тот сертификат (дефолтный вместо нужного)

Это классика при попытке «много доменов на одном IP» с SNI. Клиент без SNI всегда увидит дефолтный сертификат. Решение: сделать дефолтный сертификат максимально совместимым (например, на mail.example.com), а остальное — либо через SAN, либо через отдельные IP.

2) Неполная цепочка

На IMAP это проявляется особенно ярко: некоторые клиенты не умеют «достраивать» цепочку. Лечится почти всегда заменой файла сертификата на вариант с цепочкой (условно fullchain.pem вместо cert.pem).

3) Права на ключ и перезапуск сервисов

После обновления сертификата Postfix/Dovecot могут продолжать держать старый сертификат в памяти. Убедитесь, что вы перечитали конфигурацию и перезапустили сервисы в нужный момент. И проверьте, что пользователи (группы) сервисов имеют право читать ключ.

4) Смешали implicit TLS и STARTTLS

Если вы проверяете 587 порт без -starttls smtp, вы получите «кашу» и ложные выводы. Аналогично, 465/993 — это implicit TLS, там STARTTLS не нужен.

FastFox VDS
Облачный VDS-сервер в России
Аренда виртуальных серверов с моментальным развертыванием инфраструктуры от 195₽ / мес

Мини-стратегия выбора: что поставить «по уму» для малого и среднего проекта

  1. Выберите единый хост для пользователей: mail.example.com.

  2. Выпустите сертификат (Let’s Encrypt или DV) минимум на mail.example.com; при необходимости добавьте smtp.example.com и imap.example.com в SAN.

  3. Включите IMAPS 993 и submission 587 (и/или 465) как основные.

  4. На 25 порту оставьте smtpd_tls_security_level=may, если нет строгих партнёрских требований.

  5. Если доменов много: сначала оцените, можно ли закрыть всё SAN-сертификатами; если нет — планируйте SNI с дефолтным универсальным сертификатом или разделение по IP.

Вывод

TLS для почты — это не только «прикрутить сертификат». На практике решают три вещи: правильные имена в сертификате, корректная цепочка и понимание, где SNI реально работает у ваших клиентов. Let’s Encrypt удобен и надёжен при нормальной автоматизации, DV-коммерческий уместен, когда важны процессы и поддержка, а wildcard — инструмент, который экономит время, но повышает радиус поражения при утечке ключа.

Если вы выстроите единый «почтовый» хостнейм, аккуратно настроите Postfix/Dovecot и будете проверять порты правильными командами, то smtp tls и imap tls перестанут быть лотереей, а станут предсказуемой частью инфраструктуры.

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

Поделиться статьей

Вам будет интересно

Shared IPv4 vs Dedicated IPv4: rDNS (PTR), rate limiting, SSL SNI и репутация OpenAI Статья написана AI (GPT 5)

Shared IPv4 vs Dedicated IPv4: rDNS (PTR), rate limiting, SSL SNI и репутация

Shared и dedicated IPv4 отличаются не «магией», а контролем: PTR/rDNS, репутацией, rate limiting и влиянием соседей по IP. Разберё ...
OpenTelemetry: Jaeger vs Grafana Tempo vs Elastic APM — практичное сравнение для distributed tracing OpenAI Статья написана AI (GPT 5)

OpenTelemetry: Jaeger vs Grafana Tempo vs Elastic APM — практичное сравнение для distributed tracing

OpenTelemetry стандартизирует distributed tracing, но выбор бэкенда определяет цену хранения и удобство расследований. Сравниваем ...
Sentry vs GlitchTip vs self-hosted: как выбрать error tracking и monitoring под команду и бюджет OpenAI Статья написана AI (GPT 5)

Sentry vs GlitchTip vs self-hosted: как выбрать error tracking и monitoring под команду и бюджет

Без маркетинга сравниваем Sentry, GlitchTip и self-hosted подход: что реально нужно для error tracking и performance monitoring, к ...