
Если вы считаете электронную почту электронной почтой, то SMTP — это почтальон. Без стандартного сетевого протокола Интернета отправка прикладных документов, электронных открыток и смешных видеороликов с кошками была бы невозможна. Это происходит потому, что когда вы отправляете электронное письмо, оно не просто попадает непосредственно к получателю, а проходит через сложный коммуникационный процесс с многочисленными инстанциями, прежде чем достигнет адресата.
Что такое протокол SMTP?
SMTP расшифровывается как «простой протокол передачи почты». Это ориентированный на соединение, текстовый сетевой протокол из семейства интернет-протоколов, расположенный на седьмом уровне модели OSI: прикладном уровне. Как и любой другой сетевой протокол, он содержит правила для правильного взаимодействия между компьютерами в сети. SMTP отвечает за подачу и пересылку электронных писем от отправителя к получателю.
С момента своего выпуска в 1982 году в качестве преемника «Протокола почтового ящика» в Arpanet, SMTP стал стандартным протоколом для отправки электронной почты. Однако для рядового потребителя протокол SMTP остается практически незаметным, поскольку соответствующая программа электронной почты выполняет его в фоновом режиме. Если программа, приложение веб-почты в браузере или мобильное почтовое приложение не определяют протокол SMTP автоматически при настройке учетной записи, вам придется настроить его вручную, чтобы обеспечить бесперебойную передачу электронной почты.
Sendmail был одним из первых агентов передачи почты (MTA), который поддерживал протокол SMTP.
Ниже приведен обзор адресов SMTP-серверов и SMTP-портов для некоторых наиболее популярных поставщиков услуг электронной почты.
Поставщик электронной почты | Адрес SMTP-сервера | SMTP-порт | |
---|---|---|---|
Yahoo | smtp.mail.yahoo.com | 465 | |
AOL | smtp.aol.com | 587 | |
Outlook | smtp.live.com | 587 | |
Gmail | smtp.gmail.com | 587 (TLS/STARTTLS), 465 (SSL) |
Как работает SMTP?
Чтобы понять протокол SMTP, сначала нужно понять, что такое электронная почта. Вот как это работает:
- SMTP-клиент, то есть отправитель, загружает электронное письмо на SMTP-сервер, то есть сервер исходящей почты соответствующего поставщика услуг электронной почты. Это делается через приложение веб-почты в браузере или программу электронной почты (технически называемую «Mail User Agent», сокращенно MUA), например, Windows Live Mail или Mozilla Thunderbird.
- Затем SMTP-сервер связывается с DNS-сервером, и этот сервер ищет IP-адрес целевого SMTP-сервера (также называемого «Mail Delivery Agent», сокращенно MDA), который хранится для адреса получателя электронного письма.
- SMTP-сервер отправляет электронное письмо на целевой SMTP-сервер через один или несколько «Агентов передачи почты» (MTA). Каждый из этих процессов пересылки работает в соответствии с протоколом SMTP.
- Целевой SMTP-сервер временно сохраняет электронное сообщение в хранилище сообщений.
- Получающий MUA загружает электронное сообщение либо через IMAP, либо через POP3.

Как работает SMTP-сессия?
Взаимодействие между SMTP-клиентом и SMTP-сервером, упомянутое в первом шаге процедуры SMTP, представляет собой фактическую SMTP-сессию. Остальная часть процедуры SMTP, т.е. пересылка электронного письма по протоколу SMTP от сервера к получателю, рассматривается в отдельной статье. Каждый сеанс состоит из последовательности команд SMTP от клиента и ответов в виде кодов состояния от сервера.
Обзор команд SMTP
Согласно применимым спецификациям SMTP, каждая реализация сетевого протокола должна поддерживать, по крайней мере, следующие восемь команд, состоящих из 7-битных символов ASCII:
Команда SMTP | Значение | |
---|---|---|
HELO | «Привет.»- клиент входит в систему под именем своего компьютера и начинает сеанс. | |
MAIL FROM | Клиент называет имя отправителя электронной почты | |
RCPT TO | «Получатель» — клиент называет получателя электронного письма | |
ДАННЫЕ | Клиент инициирует передачу электронного сообщения | |
RSET | Клиент завершает инициированную передачу, но сохраняет соединение между клиентом и сервером | |
VRFY/EXPN | «Verify»/»Expand» — клиент проверяет, доступен ли почтовый ящик для передачи сообщений. |
Обзор кодов состояния сервера
Сервер отвечает на каждую из этих SMTP-команд клиента трехзначным кодом статуса, включая текстовое сообщение:
Код состояния | Обычное текстовое сообщение | |
Коды состояния, указывающие на то, что сервер успешно выполнил команду: | ||
200 | (Нестандартный успех) | |
211 | Ответ о состоянии системы или системной помощи | |
214 | Справочное сообщение | |
220 | Сервер готов к сеансу SMTP | |
221 | Сервер завершает соединение | |
250 | Запрошенное почтовое действие ОК, выполнено | |
251 | Пользователь не локальный; почта пересылается | |
252 | Невозможно проверить (VRFY) пользователя, но он примет сообщение и попытается его доставить | |
253 | Ожидающие сообщения для запущенного узла | |
Коды состояния, указывающие на то, что сервер понял команду, но требует дополнительной информации для обработки: | ||
354 | Сервер начинает ввод почты | |
Коды состояния, указывающие на то, что сервер обнаружил временную ошибку, но команда все еще может быть обработана: | ||
421 | Сервер недоступен, соединение прервано | |
450 | Команда не выполнена, почтовый ящик недоступен | |
451 | Запрошенное действие прервано: локальная ошибка при обработке | |
452 | Запрошенное действие не выполнено: недостаточно системного хранилища | |
Коды состояния, указывающие на то, что сервер обнаружил фатальную ошибку и команда не может быть обработана: | ||
500 | Ошибка синтаксиса, команда не распознана | |
501 | Синтаксическая ошибка в параметрах или аргументах | |
502 | Команда не выполнена | |
503 | Неправильная последовательность команд | |
504 | Параметр команды не реализован | |
521 | Сервер не принимает почту | |
530 | Доступ запрещен; требуется аутентификация | |
550 | Запрошенное действие не выполнено: почтовый ящик недоступен | |
551 | Пользователь не локальный; пожалуйста, попробуйте прямой путь | |
552 | Запрошенное почтовое действие отменено: превышен объем выделенного хранилища | |
553 | Запрошенное действие не выполнено: имя почтового ящика не разрешено | |
554 | Транзакция не выполнена |
Пример сеанса SMTP
Пример SMTP-сессии между клиентом и сервером может быть следующим:

Каковы недостатки протокола SMTP?
Недостатком протокола SMTP является то, что пользователи не проверяются при установлении соединения, что означает, что отправитель электронного письма может не заслуживать доверия. В результате открытые SMTP-реле часто используются для массовой рассылки спама. Спамеры используют поддельные адреса отправителей, чтобы их нельзя было отследить (подмена почты). Сегодня существует множество технологий безопасности, позволяющих предотвратить злоупотребление SMTP-серверами. Например, подозрительные письма отклоняются или перемещаются в карантин (папку спама). Для этого может использоваться протокол идентификации DomainKeys (DK), Sender Policy Framework (SPF) или greylisting. Кроме того, более или менее стандартным стало получение электронной почты не только через традиционный порт 25/TCP, но и через порт 587/TCP, так что передача разрешена только для проверенных пользователей.
Что такое ESMTP?
В ответ на проблему спама в Интернете в 1995 году было выпущено расширение SMTP: расширенный SMTP (сокращенно ESMTP). Оно добавляет в протокол дополнительные команды в 8-битовом коде ASCII, позволяя использовать множество новых функций для экономии пропускной способности и защиты серверов. К ним относятся, например, следующие:
- аутентификация отправителя
- SSL-шифрование электронных писем
- Возможность прикрепления мультимедийных файлов к электронным письмам
- Ограничения на размер электронных писем в соответствии со спецификациями сервера
- Одновременная передача нескольким получателям
- Стандартизированные сообщения об ошибках в случае недоставки.
И наконец, вот несколько примеров команд ESMTP:
Команда ESMTP | Значение | |
---|---|---|
EHLO | Альтернатива «HELO» в расширенном протоколе. Клиент входит в систему под именем своего компьютера и начинает сеанс. Если сервер поддерживает ESMTP, сеанс будет успешно запущен. В противном случае клиент должен использовать SMTP. | |
8BITMIME | Клиент просит сервер разрешить использование 8-битного набора символов ASCII в тексте сообщения. | |
SIZE | Клиент предлагает серверу указать максимально допустимый размер письма в байтах. | |
STARTTLS | Клиент спрашивает, поддерживает ли сервер шифрование TLS. |