Для обычной аутентифицированной отправки используйте SMTP-порт 587 с STARTTLS. Порт 465 подходит, когда провайдер указывает implicit TLS. Порт 25 предназначен для обмена между почтовыми серверами, а 2525 — неофициальный резервный вариант некоторых провайдеров.

Краткая таблица SMTP-портов

ПортНазначениеШифрованиеКогда использовать
25SMTP relay между серверамиВозможен opportunistic STARTTLSСобственный MTA доставляет письма на MX получателей
465Message submission over TLSImplicit TLS начинается сразуПровайдер явно указывает порт 465
587Аутентифицированная submissionSTARTTLS повышает соединение до 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)

Проверка ошибок подключения

  1. Скопируйте hostname, порт и режим шифрования из документации провайдера.
  2. Не включайте STARTTLS на implicit-TLS endpoint и наоборот.
  3. Проверьте DNS и доступность порта из вашей сети.
  4. Используйте app password или отдельный SMTP-пароль.
  5. Проверяйте сертификат и требуйте TLS 1.2 или новее.
  6. Читайте полный SMTP-ответ до смены порта.

Стандарты и следующие шаги

Первоисточники: RFC 6409 для порта 587, RFC 8314 для порта 465 и реестр IANA.

Настройки отдельных провайдеров находятся в каталоге SMTP-конфигураций. Для отправки без собственного парка серверов посмотрите управляемый SMTP Bulko.