Для обычной аутентифицированной отправки используйте SMTP-порт 587 с STARTTLS. Порт 465 подходит, когда провайдер указывает implicit TLS. Порт 25 предназначен для обмена между почтовыми серверами, а 2525 — неофициальный резервный вариант некоторых провайдеров.
Краткая таблица SMTP-портов
| Порт | Назначение | Шифрование | Когда использовать |
|---|---|---|---|
| 25 | SMTP relay между серверами | Возможен opportunistic STARTTLS | Собственный MTA доставляет письма на MX получателей |
| 465 | Message submission over TLS | Implicit TLS начинается сразу | Провайдер явно указывает порт 465 |
| 587 | Аутентифицированная submission | STARTTLS повышает соединение до TLS | Основной выбор для приложений и клиентов |
| 2525 | Нет стандартного SMTP-назначения | Обычно STARTTLS у поддерживающего провайдера | 587 заблокирован, а провайдер предлагает 2525 |
Порт 465 не является устаревшим: RFC 8314 зарегистрировал его для implicit-TLS submission. Порт 587 остаётся стандартным портом submission по RFC 6409. При правильной обязательной настройке TLS оба дают сопоставимую транспортную безопасность.
Порт 25: обмен между почтовыми серверами
MTA используют TCP 25 для доставки между доменами после запроса MX-записей. Обычным приложениям не следует передавать письма через 25. Хостинги часто ограничивают исходящие соединения на этом порту, а SMTP AUTH может отсутствовать.
Порт 465: implicit TLS
На 465 TLS-handshake начинается сразу после открытия TCP-соединения, до SMTP-команд. Используйте его, если провайдер указывает защищённый endpoint 465. В клиенте нужно выбрать implicit TLS или «SSL/TLS», а не STARTTLS.
Порт 587: submission с STARTTLS
RFC 6409 резервирует 587 для передачи новых сообщений. Клиент подключается, получает SMTP-приветствие, выполняет STARTTLS, проверяет сертификат и только затем аутентифицируется. При ошибке TLS нельзя молча продолжать открытое соединение.
Порт 2525: резерв провайдера
Некоторые SMTP-сервисы предлагают 2525, когда 587 заблокирован, но это не стандартный SMTP submission port IETF. Используйте его только по документации провайдера, с обязательным TLS и проверкой сертификата.
Влияет ли порт на доставляемость?
Нет. Порт определяет соединение приложения с исходящим сервером. Получатель обычно не знает, использовал клиент 465 или 587. На доставляемость влияют аутентификация, репутация домена и IP, качество базы, жалобы, контент и режим отправки.
Примеры Python
587 с STARTTLS
import smtplib
import ssl
context = ssl.create_default_context()
with smtplib.SMTP("smtp.example.com", 587, timeout=30) as smtp:
smtp.ehlo()
smtp.starttls(context=context)
smtp.ehlo()
smtp.login("username", "app-password")
smtp.send_message(message)
465 с implicit TLS
import smtplib
import ssl
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.example.com", 465, context=context, timeout=30) as smtp:
smtp.login("username", "app-password")
smtp.send_message(message)
Проверка ошибок подключения
- Скопируйте hostname, порт и режим шифрования из документации провайдера.
- Не включайте STARTTLS на implicit-TLS endpoint и наоборот.
- Проверьте DNS и доступность порта из вашей сети.
- Используйте app password или отдельный SMTP-пароль.
- Проверяйте сертификат и требуйте TLS 1.2 или новее.
- Читайте полный SMTP-ответ до смены порта.
Стандарты и следующие шаги
Первоисточники: RFC 6409 для порта 587, RFC 8314 для порта 465 и реестр IANA.
Настройки отдельных провайдеров находятся в каталоге SMTP-конфигураций. Для отправки без собственного парка серверов посмотрите управляемый SMTP Bulko.