Битлента
Словарь терминов3 мин чтения·

SMTP: как электронные письма отправляются между серверами

Что такое SMTP: путь письма от клиента до получателя, порты 25, 465 и 587, записи MX, SPF и DKIM, коды ответов и как проверить почтовый сервер вручную.

Почтовое отделение интернета

SMTP, Simple Mail Transfer Protocol, отвечает за одну задачу: доставить письмо от отправителя к серверу получателя. Он ничего не делает с чтением: за это отвечают IMAP и POP3, которым посвящены отдельные страницы. Аналогия с почтовым отделением почти дословная: SMTP забирает конверт у автора и передаёт из рук в руки между промежуточными узлами, пока он не окажется в ящике адресата.

Протокол текстовый и очень старый, его основа появилась в начале 1980-х. Из-за этого он изначально не содержал никакой проверки отправителя, и весь современный слой защиты от подделок добавлялся позднее, поверх него.

Путь письма от кнопки «Отправить» до ящика

Почтовая программа передаёт сообщение вашему исходящему серверу, обычно с аутентификацией. Тот выясняет, куда доставлять, запрашивая в DNS запись MX домена получателя: она перечисляет почтовые серверы с приоритетами. Затем сервер устанавливает соединение с самым приоритетным из них и передаёт письмо. Если сервер недоступен, письмо ставится в очередь и отправка повторяется несколько раз, пока не истечёт срок ожидания, после чего автору возвращается уведомление о недоставке.

Внутри сеанса стороны обмениваются короткими командами: приветствие EHLO, адрес отправителя MAIL FROM, адрес получателя RCPT TO и собственно данные DATA. Ответы сервера — трёхзначные коды: 250 означает успех, 4xx временную ошибку, при которой стоит повторить, 5xx постоянный отказ.

Когда сообщение не может быть доставлено сразу, различают временные отказы 4xx и постоянные 5xx. Первые часто относятся к серым спискам: сервер получателя просит повторить попытку позже, чтобы отсечь спамеров, не умеющих ставить письма в очередь. Вторые означают, что адреса не существует, ящик переполнен или письмо отклонено правилами получателя.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Порты 25, 465 и 587

Порт 25 традиционно используется для передачи почты между серверами. Порт 587 предназначен для отправки письма клиентом на свой сервер: обычно с обязательной аутентификацией и шифрованием, включаемым командой STARTTLS. Порт 465 применяется для варианта, где TLS включён сразу с первого байта.

Многие провайдеры и хостинги ограничивают исходящие подключения на порт 25 с домашних и облачных адресов, чтобы затруднить рассылку спама с заражённых устройств. Поэтому просто запустить почтовый сервер дома обычно не получится: помимо самого порта, приёмная сторона сомневается в репутации незнакомого адреса, и письма уходят в спам.

Ещё одна причина недоставки — отсутствие обратной DNS-записи, то есть PTR: получающие серверы часто сверяют, соответствует ли имя хоста адресу отправителя. Без неё, а также при отправке с динамических домашних адресов письма нередко отклоняются на первом рукопожатии, и в журнале видны коды 5xx с пояснением о репутации.

SPF, DKIM и DMARC: как защищают от подделки отправителя

Так как исходный SMTP не проверяет поле «От», подделать адрес было тривиально. Проблему решают три механизма, записываемые в DNS. SPF перечисляет серверы, которым домен разрешает отправлять от своего имени. DKIM добавляет к письму цифровую подпись, ключ проверки которой опубликован в DNS. DMARC указывает получателю, как поступить с письмом, не прошедшим проверки, и куда отправлять отчёты.

Все три записи хранятся как TXT-записи, о формате которых написано на странице про запись TXT. Крупные почтовые сервисы всё строже относятся к домену без этих настроек: сообщения от него легко попадают в спам или отклоняются.

Заблуждения и проверка вручную

Часто полагают, что если письмо дошло, то оно защищено. Шифрование между серверами бывает оппортунистическим: если удалённая сторона поддерживает STARTTLS, канал шифруется, если нет, письмо иногда уходит открыто, а само содержимое лежит на серверах в читаемом виде, если не применяется сквозное шифрование. Вторая ошибка — считать, что SMTP нужен и для чтения почты. Получение писем — задача других протоколов.

Увидеть заголовки уже полученного письма можно в почтовом клиенте через пункт «Показать исходный текст»: цепочки Received показывают, через какие серверы оно прошло, а строки Authentication-Results сообщают о результате SPF, DKIM и DMARC. В терминале записи MX домена покажет утилита dig или nslookup.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
smtpпочтапротоколы

Часто задаваемые вопросы

Читайте также