Минимальный набор 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, прекращает обмен почтой.