SMTP

211.png

Теперь рассмотрим подробнее, каким образом осуществляется передача сообщения между почтовыми серверами. Любопытно отметить, что протокол SMTP по своей сути напоминает непосредственное общение между двумя людьми. Итак, сначала SMTP-клиент пытается установить ТСР-соединение с портом 25 сервера; если сервер не отвечает, попытка повторяется позднее. После того как соединение установлено, клиент и сервер обмениваются рукопожатиями на прикладном уровне по аналогии с людьми, которые представляются друг другу перед тем, как начать общение. В ходе процедуры рукопожатия клиент определяет адреса почтовых ящиков отправителя и получателя сообщения. По завершении рукопожатия начинается процесс передачи сообщения от клиента к серверу. Поскольку передача осуществляется с помощью протокола TCP, гарантируется надежная доставка данных. Если в очереди клиента имеются другие сообщения, предназначенные этому же серверу, все они пересылаются последовательно через одно ТСР-соединение. После передачи всех сообщений клиент закрывает соединение с сервером.

Рассмотрим пример обмена сообщениями между SMTP-клиентом (С) и SMTP-сервером (S). Хост клиента имеет имя _crepes.fr, а хост сервера — имя _hamburger.edu. Строки, помеченные литерой С, передаются клиентом в свой сокет в той же кодировке ASCII, в которой они приведены ниже; то же самое касается строк, помеченных литерой S и относящихся к серверу. Итак, после установления ТСР-соедине-ния обмен происходит следующим образом:

S: 220 hamburger.edu
С: НЕLLO _crepes.fr
S: 250 Hello _crepes.fr. pleased to meet you
С: MAIL FROM:
S: 250 _alice@crepes.fr … Sender ok
C: RCPT TO:
S: 250 bob@hamburger.edu … Recipient ok
C: DATA
S: 354 Enter mail, end with «.» on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 _hamburger.edu closing connection

В приведенном примере клиент послал почтовому серверу hamburger.edu сообщение «Do you like ketchup? How about pickles?» с почтового сервера crepes.fr. Клиент использовал пять различных команд: НЕЮ, MAIL FROM, RCPT ТО, DATA и QUIT. Смысл этих команд вполне понятен. Кроме того, клиент использовал символ точки, указывающий на конец сообщения. Если пару символов перехода на следующую строку (возврат каретки и перевод строки) обозначить как CR и LF соответственно, то каждое сообщение оканчивается сочетанием CRLF.CRLF. Сервер посылает ответы на все команды клиента; ответ включает код и (необязательно) описание на английском языке. Обратите внимание на то, что протокол SMTP поддерживает постоянные соединения: если клиенту необходимо отправить несколько сообщений подряд, все сообщения передаются через одно ТСР-соединение. Передача каждого нового сообщения начинается с команды MAIL FROM: crepes.fr, а заканчивается одиночным символом точки. После того как все сообщения посланы, клиент генерирует команду QUIT.

Рекомендуем вам самостоятельно «пообщаться» с SMTP-сервером, используя программу Telnet. Для этого введите следующую строку:

telnet serverName 25

Здесь serverName — имя удаленного почтового сервера. При этом будет установлено ТСР-соединение вашего хоста с почтовым сервером. Вероятнее всего, сервер сразу же ответит сообщением с кодом 220. После этого введите команды HELO, MAIL FROM, RCPT ТО, DATA, CRLF.CRLF и QUIT в нужном порядке. Подобным образом вы можете, не прибегая к агенту пользователя, посылать сообщения электронной почты своим знакомым.

Данная статья "SMTP" размещена на сайте Компьютерные сети и многоуровневая архитектура интернета (conlex.kz) в ознакомительных целях.

Уточнения, корректировки и обсуждения статьи "SMTP" - под данным текстом, в комментариях.

Ответственность, за все изменения, внесённые в систему по советам данной статьи, Вы берёте на себя.

Копирование статьи "SMTP", без указания ссылки на сайт первоисточника Компьютерные сети и многоуровневая архитектура интернета (conlex.kz), строго запрещено.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *