SMTP — протокол передачи почты. У него две основные задачи. Первая — проверить настройки системы и разрешить отправку письма. Вторая — отправить сообщение и оповестить о доставке или ошибке.
Вы используете SMTP-протокол каждый раз, когда отправляете письмо по электронной почте. Не имеет значения, чем вы пользуетесь: веб-сервисами вроде Gmail, десктопными приложениями вроде Thunderbird или собственным клиентом на хостинге timeweb.cloud. Везде применяется сервер исходящей почты SMTP.
Немного технических подробностей
SMTP-port имеет номер 25. Через него пересылается почта между серверами. Второй SMTP-порт — 587. Через него сообщения пересылаются от почтового клиента к серверу.
Если при отправке используется защищенное соединение, то вместо TCP 25 используют порт 465. Номер порта также могут изменить, чтобы обойти ограничения провайдеров. Некоторые компании блокируют 25 порт, чтобы избежать потоков спама.
Команды и ответы
Команды SMTP состоят из четырех символов. Вместе с ними могут указываться необязательные параметры, которые определяют тип данных.
Основные команды:
|
Команда |
Что делает |
| HELO | Открывает приглашение от клиента |
| Определяет отправителя сообщения | |
| RCPT | Определяет получателей сообщения |
| DATA | Определяет начало сообщения |
| DATA | Посылает сообщение на терминал |
| SOML | Send-or-Mail |
| SAML | Send-and-Mail |
| RSET | Сбрасывает SMTP-соединения |
| VRFY | Проверяет имя пользователя системы |
| EXPN | Запрашивает список псевдонимов |
| HELP | Запрашивает список команд |
| NOOP | Говорит, что не нужно ничего делать |
| QUIT | Останавливает сеанс SMTP |
| TURN | Реверс ролей в SMTP |
| AUTH | Показывает механизм аутентификации |
Ответы составлены из двух частей:
- Код сообщения — нужен для проверки корректности отправки.
- Текстовое сообщение — объясняет, что случилось при отправке или получении. Чаще всего оно предназначено для людей, а не компьютеров.
Что означает email с кодом ошибки? Зависит от того, какие цифры вы получили. Коды сообщений начинаются на цифры 2, 3 и 5.
Логика та же, что и в кодах статуса HTTP-запросов. Если код начинается с 2, это значит, что команда выполнена успешно. Цифра 3 в начале кода говорит о том, что SMTP-сервер нуждается в дополнительных данных. Если код начинается с цифры 5, то произошел сбой на стороне сервера.
VDS и VPS
биллингом по всему миру: Россия, Азия и Европа.
Принцип работы SMTP
Чтобы понять, какие действия выполняет сервер электронной почты SMTP, достаточно хотя бы на базовом уровне понимать, как работает электронная почта.
Например, вы хотите написать другу электронное письмо. Для этого даже настроили свой почтовый сервер — это несложно. Как проходит процесс снаружи и внутри:
- Вы указываете адрес отправителя. Система определяет его принадлежность и соединяется с нужным сервисом — например, с Mail.
- Бэкенд получает данные: почтовые адреса отправителя и адресата (или нескольких адресатов), тему и содержание сообщения.
- Система ищет SMTP-сервер адресата (или нескольких адресатов).
Дальше процесс разделяется в зависимости от результатов поиска. Если сервер не обнаружен или не реагирует на запрос, система отправляет еще несколько запросов. В случае неудачи отправителю приходит сообщение об ошибке. Письмо не уходит, а отправитель получает подробное описание проблемы.
Если поиск сервера получателя прошел успешно, то включается проверка почты по IMAP — что это такое, знать необязательно в рамках изучения SMTP. Если коротко, то это еще один протокол электронной почты, который проверяет подлинность отправки. Существуют и другие почтовые протоколы — например, POP3.
Пример работы протокола
Особенность SMTP в том, что серверы того, кто отправляет письмо, и того, кто его получает, постоянно общаются. Пересылка не происходит одним запросом. Сначала серверы здороваются, затем обмениваются по очереди важной информацией: от кого письмо, что внутри.
Для наглядности пример очень простого обмена командами и ответами:
Проблемы безопасности
SMTP — простой протокол. По умолчанию у него нет средств защиты пользовательских данных. Шифрование добавили, но оно работает только при использовании STARTTLS, а не «из коробки». То есть зашифрованное соединение создается поверх обычного.
Еще одна большая проблема этого протокола — огромное количество спама. Для защиты от него приходится использовать внешние инструменты.
Тем не менее SMTP остается популярным решением для обмена сообщениями. Большинство пользователей не замечает его недостатков, потому что защищены теми механизмами, которые внедряют почтовые сервисы.
Разверните свой почтовый сервер на VDS
477 ₽/мес
657 ₽/мес
Когда стоит создавать свой SMTP-сервер
В большинстве случаев пользователям хватает возможностей, которые предоставляют SMTP-серверы бесплатных почтовых сервисов: Gmail, Яндекс.Почты, Mail.ru. Однако их достоинства становятся несущественными, когда требуется массовая рассылка. Причина — ограничения по количеству писем.
Например, через бесплатную почту Яндекса нельзя отправлять более 150 писем в сутки, а на Mail.ru используется лимит 1 письмо в минуту. Если превысить порог, письма будут падать в папку «Спам». Получатели рискуют их не увидеть.
Решением может стать создание собственного SMTP-сервера. Это посильная задача. SMTP — простой и хорошо задокументированный протокол. Его можно быстро проверить, есть подробный отчет об ошибках.
Но у такого подхода есть и недостатки. Для доработки под свои задачи нужны разработчики. К тому же не все провайдеры поддерживают SMTP, потому что часто он становится источником спама. Поэтому чаще для массовых рассылок используют специализированные сервисы.
Создание же собственного SMTP-сервиса может быть разумным для организации внутрикорпоративной почты, доступ к которой есть только у авторизованных пользователей.