SMTP

Минимальный набор SMTP команд: HELO, MAIL, RCPT, DATA и QUIT. Сервер отвечает трехзначной комбинацией цифр, называемой кодом ответа. Вместе с кодом ответа, как правило, передается одна или несколько строк текстовой информации. Первая цифра кода ответа означает, было ли выполнение команды успешно 2, неуспешно 4 и 5 или еще не закончилось 3.

Знаками >>> выделены команды клиента, а знаком <<< сервера. Проверить работу протокола можно командами telnet или netcat

 telnet mxs.mail.ru 25

<<<220  mxs.mail.ru ESMTP ready

Клиент осуществляет подключение к TCP порту 25, после чего ожидает приветственного сообщения с кодом 220 от сервера. Ответ сервера обязательно должен начинаться с полного доменного имени сервера: mxs.mail.ru в данном примере. В остальных командах возвращается необязательный текст в произвольной форме.

>>>HELO client.example.com
<<<250  mxs.mail.ru

Клиент идентифицирует себя посылкой команды HELO. В качестве аргумента указывается имя клиента: client.example.com. На этом этапе могут быть отвергнуты клиенты с именами, отсутсвующими в DNS.

>>>MAIL From:<user@example.com>
<<<250 sender OK

Команда MAIL идентифицирует автора сообщения. На этом этапе сервером может выполняться блокировка нежелательных отправителей.

>>>RCPT To:<user@mail.ru>
<<<250 recipient ОК

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

>>> DATA
<<<354 Enter mail, end with "." on a line by itself
>>>From: "Example user" <user@example.com>
>>>To: Test users
>>>Subject: Do not reply
>>>
>>>Test
>>> .
<<<250 Mail accepted

Клиент отправляет содержимое почтового сообщения с использованием команды DATA. Строка, содержащая только точку, указывает на конец сообщения.

>>>QUIT
<<<221 Bye

Команда, QUIT, прекращает обмен почтой.