Найти в Дзене
Игорь Лисицев

1.3. Функционирование электронной почты. Протокол SMTP.

Перед прочтением ознакомиться: 1.2. Функционирование электронной почты. Типы серверов.

Simple Mail Transfer Protocol – это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP от клиента к серверу и между серверами.

В качестве транспортного протокола SMTP использует TCP, соединение устанавливается через порт с номером 25.

Впервые протокол был описан в RFC 821, последнее обновление в RFC 5321 включает масштабируемое расширение ESMTP (англ. Extended SMTP).

В настоящее время под «протоколом SMTP», как правило, подразумевают и его расширения.

Передача сообщения по SMTP протоколу производится поэтапно в виде SMTP-сессии. Во время передачи электронного письма клиент отправителя и сам SMTP-сервер обмениваются друг с другом командами в рамках этой сессии.

Результатом исполнения данных команд, является перемещение письма на сервер и завершение SMTP-сеанса.

Этапы передачи сообщения по SMTP протоколу:

Этапы передачи сообщения по SMTP протоколу
Этапы передачи сообщения по SMTP протоколу

В свою очередь SMTP-сессия представляет собой некий диалог между клиентом (C) и сервером (S).

Пример SMTP-сессии:

S: (ожидает соединения)
C: (подключается к порту 25 сервера)
S: 220 mail.stankin.ru SMTP sendmail 8.13.5 is glad to see you!
C: HELO
S: 250 domain name should be qualified
C: MAIL FROM: <somebody@somecompany.com>
S: 250 somebody@somecompany.com sender accepted
C: RCPT TO: <user1@stankin.ru>
S: 250 user1@stankin.ru ok
C: RCPT TO: <user2@stankin.ru>
S: 550 user2@stankin.ru unknown user account
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Hi!
C: .
S: 250 769947 message accepted for delivery
C: QUIT
S: 221 mail.stankin.ru SMTP sendmail 8.13.5 closing connection
S: (закрывает соединение)

Как вы видите SMTP-сессия похожа на своеобразное "общение" между клиентом и сервером. Каждый из участников такого разговора производит ответ на команды своего собеседника.

Основные команды SMTP мы сейчас и разберем:

HELO - идентифицирует SMTP-сервер отправителя, открывает сеанс.
C: HELO user.example.net
S: 250 server.example.com Hello user.example.net [192.168.1.1] pleased to meet you

MAIL FROM – задает адрес отправителя.
C: MAIL FROM: <user@example.com>
S: 250 2.1.0 user@example.com... Sender ok

RCPT TO – задает адрес получателя.
C: RCPT TO: <user2@example.com>
S: 250 2.1.5 user2@example.com... Recipient ok

DATA – указывает на начало сообщения. Для окончания сообщения указывается точка.
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: This is a test message.
C: .
S: 250 2.0.0 I3PDY91f000484 Message accepted for delivery


QUIT – завершает SMTP-сеанс.
C: QUIT
S: 221 2.0.0 server.example.com closing connection

Протокол SMTP изменился незначительно. На смену команде HELO, использовавшейся для начала диалога, пришла команда EHLO, позволяющая работать с расширениями ESMTP.

Команды, применяемые для настройки почтовых систем и для получения справочной информации о пользователях, теперь используются значительно осторожнее, чем в восьмидесятые годы.

Эти команды, к сожалению, создают удобства не только для сетевых администраторов, но и для злоумышленников. Поэтому такие команды обычно используют только на этапе настройки почтовой системы. В работающей системе их, как правило, отключают.

Главной целью протокола SMTP является надежная и эффективная доставка электронных почтовых сообщений. Для реализации протокола требуется только надежный канал связи. Средой для SMTP может служить отдельная локальная сеть, система сетей или же всемирная сеть Internet.

Эта передача обычно осуществляется непосредственно с хоста отправителя на хост получателя, когда оба хоста используют один транспортный сервис. Если же хосты не подключены к общей транспортной системе, передача осуществляется с использованием одного или нескольких промежуточных серверов SMTP.

Сегодня в Internet обычной практикой является представление исходного сообщения промежуточному серверу, который выполняет некоторые дополнительные функции. Промежуточный сервер в таких случаях действует как шлюз в другие среды передачи и выбирается обычно с использованием MX-записей DNS (служба доменных имен).

Перейдите к следующей статье: 1.4. Функционирование электронной почты. Протокол ESMTP.