SMTP — простой протокол передачи электронной почты

Протокол SMTP (Simple Mail Transfer Protocol) [Pos82J используется для передачи сообщений электронной почты от локального почтового сервера удаленному почтовому серверу. Кроме того, SMTP может быть использован для отправки сообщений электронной почты от почтового агента пользователя на локальный почтовый сервер.

ПРИМЕНЕНИЕ ЭЛЕКТРОННОЙ ПОЧТЫ

Доставка сообщения электронной почты от одного пользователя другому вовлекает несколько компонентов. Пользователь запускает почтовый агент для отправки и приема сообщений электронной почты. Агент может также поддерживать множество других функций, таких как распределение сообщений по панкам, создание, редактирование и удаление сообщений. Помимо взаимодействия с пользователем, почтовый агент осуществляет взаимодействие с локальным почтовым сервером. Локальный почтовый сервер обслуживает почтовые ящики пользователей и осуществляет обмен сообщениями с другими почтовыми серверами. В качестве примера предположим, что пользователь с именем Viv имеет собственный Компьютер и получает электронную почту по адресу viv@foo.com; почтовый сервер обслуживает почтовый ящик viv. Разделение обязанностей между агентом пользователя и почтовым сервером весьма важно — почтовый Агент предоставляет богатые возможности для одного пользователя, а почтовый сервер обеспечивает падежный сервис для множества пользователей.

В противоположность передаче файлов отправка и прием сообщений электронной почты не является интерактивным приложением. При отправке сообщения электронной почты почтовому агенту не обязательно знать, достигло ли сообщение почтового сервера или почтового агента получателя, и когда это произошло. Фактически, отправляющий сообщение пользователь может завершить работу почтового агеита до того, как почтовый сервер закончит доставку сообщения электронной почты удаленному почтовому серверу. На практике многие пользователи отправляют и принимают сообщения электронной почты с помощью своих Web-6pay3e- ров. Это осуществляется двумя основными способами. В первом случае Web-браузер может действовать как почтовый агент, который взаимодействует с локальным почтовым сервером и предоставляет интерфейс для чтения и составления сообщений. Во втором случае браузер может использоваться для обращения к Web-сайту, который дает возможность пользователям читать сообщения (путем получения HTML-файла) и отправлять сообщения (путем отправки HTML-формы). В этой ситуации Web-сервер координирует взаимодействие с почтовым сервером. Например, сервер может запускать сценарии для извлечения сообщений электронной почты, предназначенных пользователю, и для отправки сообщений электронной почты, созданных пользователем.

Сообщение электронной почты состоит из заголовка и тела сообщения. Тело сообщения представляет собой текст, отправляемый пользователем. Каждое поле заголовка начинается с повой строки и состоит из одной строки, заканчивающейся точкой с запятой (например, Date: Sat Oct 28 2000 11:29:32 GMT). Некоторые из полей, такие как То (Кому) и Subject (Тема), зависят от пользовательского ввода. Другие, такие как Date (Дата) и Message-Id (Идентификатор сообщения), задаются агентом пользователя или локальным почтовым сервером, который отправляет сообщение. Заголовок и тело сообщения состоят из текстовых строк в 7-битпом формате ASCII. Каждая строка заканчивается последовательностью из двух символов: возврата каретки (CR) и перевода строки (LF). Первоначально сообщения электронной почты могли содержать только текстовые данные. Позднее спецификация Multipurpose Internet Mail Extensions (MIME) [FB96a, FB96bJ предоставила стандартный способ для преобразования других типов данных в текстовый формат и включения их в сообщения электронной почты. MIME предусматривает дополнительные заголовки, которые указывают на размер и способ кодирования содержимого сообщения.

ПРОТОКОЛ SMTP

SMTP был разработан в 1982 г., чтобы заменить FTP при передаче сообщений электронной почты от одного почтового сервера другому. В SMTP отправляющий почтовый сервер устанавливает ТСР-соединение по порту 25 принимающего почтового сервера. Объединенное с заголовком тело сообщения передается от одного почтового сервера другому с помощью последовательности команд. При передаче сообщений электронной почты почтовые серверы не делают различий между заголовком и телом сообщения. Единственно, что делает почтовый сервер с сообщением, это занолпепие доиолНительпых полей заголовка, например, Received (Получено). Это дает возможность получателю идентифицировать последовательность почтовых серверов, участвующих в передаче сообщения. Аналогично FTP, SMTP ориентирован на передачу текста и основывается на командах. Отправитель выдает последовательность команд, по одной за раз, и получает ответы, состоящие из трех- значного кода ответа и текстовой строки.

Локальный почтовый сервер определяет удаленный иочговый сервер, выполняя особый вид DNS-запроса. Локальный почтовый сервер выдает запрос на информацию о записи MX (Mail Exchanger) для полностью заданного имени домепа в правой части адреса электроииой почты (например, users.foo.com в viv@users.foo.com). DNS-ответ состоит из имеп одного или нескольких хостов, действующих в качестве почтовых серверов для данного полного имени домепа. После выбора удаленного почтового сервера (например, bigmail.foo.com) локальный почтовый сервер выполняет дополнительный DNS-запрос для определения IP-адреса удаленного почтового сервера. Затем локальный почтовый сервер устанавливает ТСР-соединение с удаленным почтовым сервером. Проблемы могут возпикпуть на каждом из этих этапов. Во-первых, DNS-запрос может возвратить ошибку. Например, сообщение может быть направлено домепу, который не существует (например, viv@users.foo.com, где users.foo.com не существует). Это приведет к тому, что Локальный иочтовый сервер возвратит ошибку отправителю сообщения. Во-вторых, предположим, что Локальный почтовый сервер знает IP-адрес удаленного почтового сервера, но не может установить ТСР-соединение. Это может произойти, если удаленный сервер временно отключен, или отказ в сети вызван разрывом соединения двух хостов. В таких ситуациях Локальный почтовый сервер сохраняет сообщение и пытается снова его передать через некоторое время. Одновременно отправитель может быть проинформирован, что передача сообщения была задержана.

Коммуникационное взаимодействие между двумя серверами начинается с приветственного сообщения от удаленного почтового сервера. Затем Локальный почтовый сервер выдает команды для передачи сообщения электронной почты. Тиничный обмен включает отдельные команды для:

•    идентификации локального почтового сервера;

•    идентификации отправителя сообщения электронной почты;

•    идентификации каждого получателя сообщения электронной почты;

•    отправки данного сообщения электронной почты.

В противоположность FTP, SMTP использует одно ТСР-соединение для обмена командами и передачи сообщения электронной почты. Отправитель помечает конец сообщения последовательностью CRLF с последующей точкой (".") и еще одной последовательностью CRLF. Однако сообщение электронной почты может содержать строку, начинающуюся с символа ".", что может ввести в заблуждение получателя. В связи с этим локальный почтовый сервер добавляет второй символ "." к таким строкам, и отправляя ".." вместо ".". Лишний символ "." удаляется получателем перед отображением сообщения пользователю.

Помимо передачи сообщения между почтовыми серверами, доставка сообщения электронной почты требует двух дополнительных действий, выполняемых Агентом пользователя: передачи сообщения локальному почтовому серверу и получение сообщения от удалепиого почтового сервера. Пользовательский Агент отправителя инициирует передачу сообщения электронной почты локальному почтовому серверу. Эта передача может также использовать SMTP, хотя возможно применение и других протоколов. Отправка сообщения электронной почты состоит в передаче данных от почтового агента почтовому серверу. Напротив, извлечение сообщения из почтового ящика состоит в получении данных от почтового сервера. При получении сообщений электронной почты SMTP Обычно не используется. Для доступа к почтовому ящику в Web может быть использован HTTP. Другие протоколы, такие как Post Office Protocol (POP3) и Internet Message Access Protocol (IMAP), были специально разработаны для получения сообщений электронной почты с почтового сервера. Более подробный обзор протоколов, используемых для обмена сообщениями электронной почты, можно найти в соответствующей литературе [JoxOOJ.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100