Читайте также:
|
|
Протокол SMTP (Simple Mail Transport Protocol) используется для передачи сообщений электронной почты от локального почтового сервера удаленному почтовому серверу. Кроме того, SMTP может быть использован для отправки сообщений электронной почты от почтового агента пользователя на локальный почтовый сервер.
Доставка сообщения электронной почты от одного пользователя другому вовлекает несколько компонентов. Пользователь запускает почтовый агент для отправки и приема сообщений электронной почты. Агент может также поддерживать множество других функций, таких как распределение сообщений по папкам, создание, редактирование и удаление сообщений. Помимо взаимодействия с пользователем почтовый агент осуществляет взаимодействие с локальным почтовым сервером. Локальный почтовый сервер обслуживает почтовые ящики пользователей и осуществляет обмен сообщениями с другими почтовыми серверами. В качестве примера предположим, что пользователь с именем Viv имеет собственный компьютер и получает электронную почту по адресу viv@foo.com; почтовый сервер обслуживает почтовый ящик viv. Разделение обязанностей между агентом пользователя и почтовым сервером весьма важно — почтовый агент предоставляет богатые возможности для одного пользователя, а почтовый сервер обеспечивает надежный сервис для множества пользователей.
В противоположность передаче файлов, отправка и прием сообщений электронной почты не является интерактивным приложением. При отправке сообщения электронной почты почтовому агенту не обязательно знать, достигло ли сообщение почтового сервера или почтового агента получателя, и когда это произошло. Фактически, отправляющий сообщение пользователь может завершить работу почтового агента до того, как почтовый сервер закончит доставку сообщения электронной почты удаленному почтовому серверу. На практике многие пользователи отправляют и принимают сообщения электронной почты с помощью своих Web-браузеров. Это осуществляется двумя основными способами. В первом случае Web-браузер может действовать как почтовый агент, который взаимодействует с локальным почтовым сервером и предоставляет интерфейс для чтения и составления сообщений. Во втором случае браузер может использоваться для обращения к Web-сайту, который дает возможность пользователям читать сообщения (путем получения HTML-файла) и отправлять сообщения (путем отправки HTML-формы). В этой ситуации Web-сервер координирует взаимодействие с почтовым сервером. Например, сервер может запускать сценарии для извлечения сообщений электронной почты, предназначенных пользователю, и для отправки сообщений электронной почты, созданных пользователем.
Сообщение электронной почты состоит из заголовка и тела сообщения. Тело сообщения представляет собой текст, отправляемый пользователем. Каждое поле заголовка начинается с новой строки и состоит из одной строки, заканчивающейся точкой с запятой (например, Date: Sat Oct 28 2000 11:29:32 GMT). Некоторые из полей, такие как То (Кому) и Subject (Тема), зависят от пользовательского ввода. Другие, такие как Date (Дата) и Message-Id (Идентификатор сообщения), задаются агентом пользователя или локальным почтовым сервером, который отправляет сообщение. Заголовок и тело сообщения состоят из текстовых строк в 7-битном формате ASCII. Первоначально сообщения электронной почты могли содержать только текстовые данные. Позднее спецификация Multipurpose Internet Mail Extensions (MIME) предоставила стандартный способ для преобразования других типов данных в текстовый формат и включения их в сообщения электронной почты. MIME предусматривает дополнительные заголовки, которые указывают на размер и способ кодирования содержимого сообщения.
Протокол SMTP был разработан в 1982 г., чтобы заменить FTP при передаче сообщений электронной почты от одного почтового сервера другому. В SMTP отправляющий почтовый сервер устанавливает TCP-соединение по порту 25 принимающего почтового сервера. Объединенное с заголовком тело сообщения передается от одного почтового сервера другому с помощью последовательности команд. При передаче сообщений электронной почты почтовые серверы не делают различий между заголовком и телом сообщения. Единственно, что делает почтовый сервер с сообщением, это заполнение дополнительных полей заголовка, например, Received (Получено). Это дает возможность получателю идентифицировать последовательность почтовых серверов, участвующих в передаче сообщения. Аналогично FTP, SMTP ориентирован на передачу текста и основывается на командах. Отправитель выдает последовательность команд, по одной за раз, и получает ответы, состоящие из трехзначного кода ответа и текстовой строки.
Локальный почтовый сервер определяет удаленный почтовый сервер, выполняя особый вид DNS-запроса. Локальный почтовый сервер выдает запрос на информацию о записи MX (Mail Exchanger) для полностью заданного имени домена в правой части адреса электронной почты (например, users.foo.com в viv@users.foo.com). DNS-ответ состоит из имен одного или нескольких хостов, действующих в качестве почтовых серверов для данного полного имени домена. После выбора удаленного почтового сервера (например, bigmail.foo.com) локальный почтовый сервер выполняет дополнительный DNS-запрос для определения IP-адреса удаленного почтового сервера. Затем локальный почтовый сервер устанавливает TCP-соединение с удаленным почтовым сервером. Проблемы могут возникнуть на каждом из этих этапов. Во-первых, DNS-запрос может возвратить ошибку. Например, сообщение может быть направлено домену, который не существует (например, viv@users.foo.com, где users.foo.com не существует). Это приведет к тому, что локальный почтовый сервер возвратит ошибку отправителю сообщения. Во-вторых, предположим, что локальный почтовый сервер знает IP-адрес удаленного почтового сервера, но не может установить TCP-соединение. Это может произойти, если удаленный сервер временно отключен, или отказ в сети вызван разрывом соединения двух хостов. В таких ситуациях локальный почтовый сервер сохраняет сообщение и пытается снова его передать через некоторое время. Одновременно отправитель может быть проинформирован, что передача сообщения была задержана.
Помимо передачи сообщения между почтовыми серверами, доставка сообщения электронной почты требует двух дополнительных действий, выполняемых агентом пользователя: передачи сообщения локальному почтовому серверу и получения сообщения от удаленного почтового сервера. Пользовательский агент отправителя инициирует передачу сообщения электронной почты локальному почтовому серверу. Эта передача может также использовать SMTP, хотя возможно применение и других протоколов. Отправка сообщения электронной почты состоит в передаче данных от почтового агента почтовому серверу. Напротив, извлечение сообщения из почтового ящика состоит в получении данных от почтового сервера. При получении сообщений электронной почты SMTP обычно не используется. Для доступа к почтовому ящику в Web может быть использован HTTP. Другие протоколы, такие как Post Office Protocol (POP3) и Internet Message Access Protocol (IMAP), были специально разработаны для получения сообщений электронной почты с почтового сервера.
Дата добавления: 2014-12-23; просмотров: 135 | Поможем написать вашу работу | Нарушение авторских прав |