
случае содержит только электронный адрес получателя, но может содержать и
список почтовых серверов, которые необходимо пересечь письму, т.е. маршрут,
заявленный отправителем. Обобщенный синтаксис аргумента команды MAIL
имеет вид:
@host1, @host2, …, @hostN:author@next.ru
Где host1, host2, hostN – FQDN почтовых серверов, через которые
необходимо маршрутизировать ответ на данное письмо, user@domain - почтовый
ящик отправителя письма. Но, по причинам, рассмотренным ранее,
маршрутизация от источника сегодня не применяется и поэтому такой синтаксис
аргумента команды MAIL сегодня не используется.
После команды MAIL клиент должен передать команду RCPT, в которой
указывается, КОМУ должно быть передано письмо, формат команды:
RCPT TO:user@mail.ru<CR><LF> или
RCPT TO:Любой текст<user@mail.ru><CR><LF> или
RCPT TO:<user@mail.ru><CR><LF>
Отметим, что в одной команде RCPT не может указываться более одного
адреса получателя, однако клиент может передать серверу несколько команд
RCPT одну за другой, например:
MAIL FROM: author@next.ru<CR><LF>
RCPT TO:user@mail.ru<CR><LF>
RCPT TO:user1@mail.ru<CR><LF>
RCPT TO:user2@mail.ru<CR><LF>
Это приведет к тому, что данное письмо будет доставлено всем
получателям, указанным в командах RCPT. При этом сервер может ограничивать
количество команд RCPT, которые может указать пользователь при отправке
письма на свое усмотрение, так как отправка одного письма с многими
адресатами приводит к умножению трафика (клиент послал одно письмо, сервер
превратил его в сотни или тысячи писем).
Как и в случае с командой MAIL, аргументом команды RCPT тоже может
являться полный путь, в котором перечислены почтовые сервера, которые
необходимо пересечь для того, чтобы доставить письмо в почтовый ящик
получателя, синтаксис аргумента команды RCPT в общем виде имеет вид:
@host1, @host2, …, @hostN:author@next.ru
Где host1, host2, hostN – FQDN почтовых серверов, через которые
необходимо маршрутизировать данное письмо, user@domain - почтовый ящик
получателя письма. Как и в случае с обратными маршрутами, указание прямых
маршрутов отправителями сегодня на практике не используется.
После того, как клиент указал всех получателей письма, клиент должен
передать серверу команду DATA, синтаксис команды очень прост, в ней не
используются аргументы:
DATA<CR><LF>
После передачи команды DATA клиент должен начать передавать само
письмо, все, что теперь передаст клиент, не будет проанализировано сервером,
а будет рассмотрено как текст письма, которое необходимо передать
получателю или получателям, указанным в командах RCPT.
Однако в таком случае возникает закономерный вопрос: как клиент
сообщит серверу, что письмо окончено и может быть принято для передачи?
Очевидно, что, так как длина письма заранее не указана, необходим какой-то
флаг, с помощью которого SMTP сервер поймет, что письмо закончено. В
качестве такого флага выбирается совокупность символов CR LF . CR LF (то есть
перевод строки, точка, перевод строки). Подача этих пяти символов означает,
что клиент закончил передавать письмо. Однако возникает другой вопрос – а
что будет, если в ТЕЛЕ письма встретится данная совокупность байтов, ясно, что