Лекции 2010-го года (1130544), страница 89
Текст из файла (страница 89)
Затем онвысветит на экране его содержимое с краткой аннотацией каждого сообщения. В таблице7-49 показан пример содержимого почтового ящика в том виде, как это предоставляет АП.В простых почтовых АП высвечиваемые поля встроены в АП, в развитых – пользовательсам определяет, что показывать, а что нет.
(Эта информация содержится в файле «userprofile».)Таблица 7-49. Пример дисплея с содержимым почтового ящикаПосле того как содержимое ящика показано пользователю, последний может выполнятьлюбую из имеющихся команд. Типичный состав команд показан в таблице 7-50.Таблица 7-50. Типичный состав команд почтового ящикаКомандаПараметрОписаниеhct№№Отобразить заголовки на экранеОтобразить только текущий заголовокВывести сообщение на экранsfaaddress№№Отправить сообщениеПереслать сообщениеОтветить на сообщениеdumkr№№№№mailboxУдалить сообщениеВосстановить ранее удаленное сообщениеПереместить сообщение в другой почтовый ящикОставить сообщение после выходаПросмотреть другой почтовый ящик№Перейти к следующему сообщениюВернуться к предыдущему сообщениюПерейти к конкретному сообщению, но не отображать егоnbgeВыйти и обновить почтовый ящик7.4.3. Формат сообщенийРассмотрим формат самого сообщения.
Начнем с формата по RFC 822, а потом перейдемк мультимедийному расширению этого документа.7.4.3.1. RFC 822Сообщение состоит из простейшего конверта (описанного в RFC 821), полей заголовка,пустой строки и тела сообщения. Каждая строка заголовка – это строка ASCII-текста,содержащая название поля, двоеточие и какое-то значение. Стандарт 822 не различалчетко заголовок и конверт. В современных почтовых системах это различие проведенолучше, и агент пользователя имеет дело с заголовком, а агент передачи – с конвертом,который он формирует на основе заголовка.Важные поля заголовка перечислены в таблице 7-51.Таблица 7-51. Поля заголовка RFC 822ЗаголовокЗначениеПоля, относящиеся к транспортировке сообщенияTo:Адрес основного получателяCc:Адрес дополнительного получателяBcc:Адрес для «слепых» копийFrom:Создатель данного сообщенияSender:Адрес отправителяReceived:Строка, добавляемая каждым агентом на пути сообщенияReturn-Path:Может использоваться для определения обратного пути к отправителюНекоторые поля, используемые в заголовке сообщенияDate:Дата и время отправки сообщенияReply-To:Адрес, на который нужно отправлять ответMessage-Id:Уникальный номер сообщения для использования в дальнейшемIn-Reply-To:Идентификатор сообщения, ответом на которое является текущеесообщениеReferences:Другие релевантные идентификаторы сообщенияKeywords:Ключевые слова, выбранные пользователемSubject:Краткий отрывок сообщения для отображения одной строкой7.4.3.2.
MIME – Multipurpose Internet Mail ExtensionКогда Интернет только начинал развиваться, почтовые системы способны былипередавать только текстовые сообщения на английском языке в формате ASCII. Для этихцелей RFC 822 подходило вполне. В наши дни такой подход уже не годится. Необходимо,чтобы почтовая система умела работать:1.с сообщениями на европейских языках (французском, немецком и т.д.)2.с сообщениями не в латинском алфавите (русском, арабском и т.д.)3.с сообщениями не в алфавите (японский, китайский)4.с сообщениями, не содержащими текст (звук, видео, графика)Такое решение предложено в RFC 1341 и RFC 1521.
Это решение называется MIME –многоцелевое расширение почтовой службы в Internet. Основная идея MIME –расширение RFC 822 в целях введения структуры в тело сообщения и правил кодировкиASCII-сообщений. Естественно, что это повлияло на программы доставки и отправкисообщений.MIME определяет пять новых заголовков, показанных в таблице 7-52. Первый сообщаетагенту пользователя, что он имеет дело с MIME-сообщением, и то, какая версия MIMEиспользуется. Второй и третий характеризуют сообщение. Например, второе поле можноиспользовать для фильтрации сообщений.Таблица 7-52. Пять заголовков RCF 822, определенных в MIMEЗаголовокЗначениеMIME-Version:Идентифицирует версию MIMEContent-Description:Строка, описывающая содержимое сообщенияContent-Id:Уникальный идентификаторContent-Transfer-Encoding:Способ подготовки тела письма к передачеContent-Type:Тип сообщенияЗаголовок Content_Transfer_Encoding определяет, как сообщение должно бытьподготовлено для передачи через сеть.
Для этого используется пять основных схем.Простейшая схема – для передачи ASCII-текста – 7 бит на символ. Однако для учетанациональных алфавитов используется 8 битная схема. Однако ни первая, ни втораясхемы не должны превышать 1000 символов в строке.Сложная ситуация с передачей двоичных данных. Для корректной передачи такого типаданных (исполняемый код программ) используется схема base64 encoding. Эта схемаразбивает сообщение на блоки по 24 бита. Каждый блок разбивается на 4 группы по 6 биткаждая. Для сообщений, которые являются «почти» ASCII-сообщениями с небольшимиисключениями, используется другая схема – quoted-printable encoding.
Можно указать икакую-то особую схему в поле Content-Transfer-Encoding.Последнее поле заголовка указывает тип сообщения. Возможные значения этого поляуказаны в таблице 7-53.Таблица 7-53. Типы и подтипы сообщений MIMEТипTextПодтипОписаниеPlainНеформатированный текстRichtextТекст с простым форматированиемGifИзображение в формате GIFJpegИзображение в формате JPEGAudioBasicЗвукVideoMpegФильм в формате MPEGOctet-stream Неинтерпретируемая последовательность байтовApplicationMessageMultipartPostscriptГотовый к печати документ в формате PostScriptRfc822Сообщение MIME RFC 822PartialСообщение перед передачей было разбито на несколькочастейExternalbodyНепосредственно сообщение следует передать через сетьMixedНезависимые части в определенной последовательностиAlternativeВышеупомянутое сообщение в различных форматахParallelЧасти сообщения необходимо просматривать вместеDigestКаждая часть является самостоятельным сообщением RFC 8227.4.4. Передача сообщенийОсновная задача системы передачи почтовых сообщений – надежно доставить сообщениеот отправителя к получателю.
Самый простой способ сделать это – установитьтранспортное соединение и по нему передавать почту.7.4.4.1. SMTP (Simple Mail Transfer Protocol) – Простой протокол передачи почтыВ Internet почта передается следующим образом. Машина отправитель устанавливаетТСР-соединение с 25-м портом машины получателя. На 25 порту находится почтовыйдемон, который работает по протоколу SMTP. Он принимает соединение и распределяетпоступающие сообщения по почтовым ящикам машины-получателя.SMTP - это простой ASCII-протокол. После установления соединения машинаотправитель работает как клиент, а машина-получатель – как сервер.
Сервер шлеттекстовую строку, идентифицирующую его и готовность принимать почту. Если он неготов принимать почту, то клиент разрывает соединение и повторяет всю процедурупозже.Если сервер подтвердил свою готовность, то клиент сообщает, от кого и комупредназначено очередное сообщение. Если сервер подтвердил наличие получателя, то ондает команду клиенту, и сообщение передается без контрольных сумм и подтверждений,так как ТСР-соединение обеспечивает надежный поток байтов. Если сообщенийнесколько, то все они передаются.
Обмен по соединению происходит в обоихнаправлениях.На рисунке 7-54 показан пример мультимедийного сообщения. Обратите внимание, чтозаголовок Content type встречается трижды. Первый раз он указывает, что сообщениесостоит из альтернативных мультимедиа-частей. Одна часть, у нее свой заголовок - этотекст. Другая, у нее свой заголовок - аудио-часть.Рисунок 7-54. (а) Сообщение, содержащее сложный текст и его аудио-вариант; (b)Передача этого сообщенияЗамечание.
Клиент всегда посылает 4-символьные команды. Команды сервера в основномцифровые.На рисунке 7-54 сообщение передается только одному получателю. Однако их может бытьнесколько, тогда используют несколько RCTP-команд.У SMTP протокола, несмотря на то что он хорошо описан в RFC 821, есть несколькопроблем. Первая – длина сообщения не может превосходить 64 Кбайт. Другая – time out.Если время ожидания подтверждения у отправителя и получателя не согласовано, то одинбудет разрывать соединение, не дождавшись, тогда как другой просто очень загружен.Третья – почтовый ураган.
Пусть машина-получатель имеет лист рассылки, где указанамашина-отправитель, и наоборот. Тогда отправка сообщения по листу рассылки вызоветбесконечно долгие обмены сообщениями между этими машинами.Для преодоления этих проблем в RFC 1425 был описан протокол ESMTP. Клиент вначалешлет команду EHLO, если она отвергается сервером, то это означает, что сервер работаетпо SMTP.7.4.4.2.
Почтовые шлюзыПротокол SMTP хорош, когда обе машины находятся в Internet. Однако это не всегда так.Многие компании в целях сетевой защиты соединяют свои сети через надлежащиесредства, либо используют другие протоколы. Например, отправитель или получательмогут использовать протокол Х.400. Такая ситуация показана на рисунке 7-55.Отправитель передает сообщение шлюзу, тот его буферизует и позднее передаетполучателю. Звучит просто, но на деле все сложнее.Рисунок 7-55. Передача электронного письма с использованием почтового шлюза наприкладном уровнеПервая проблема – соответствие адресов.
Вторая – соответствие конвертов и заголовков.Третья – соответствие тела сообщения. Например, в случае, если тело содержитаудиофайл, а на стороне получателя с ним работать не умеют. Или отправитель поставилследующее условие: если передача сообщения не пройдет по почтовому соединению, тонужно повторить его по факсу, а получатель не умеет работать с факсом. Однако дляпростых неструктурированных ASCII-сообщений SMTP-шлюз – решение проблемы.7.4.4.3. Доставка получателюДо сих пор мы предполагали, что машина пользователя может и отправлять сообщения, иполучать их. Однако часто машина пользователя – это персональный компьютер илиноутбук, которая время от времени связывается с почтовым сервером, чтобы отправитьили получить почту.Как это происходит? Простой протокол для изъятия почты из удаленного почтовогоящика – РОР3 (Post Office Protocol – RFC 1225).
Он позволяет входить в удаленнуюсистему и выходить из нее, передавать письма и принимать их. Главное - он позволяетзабирать почту с сервера и хранить ее на машине пользователя.Более сложный протокол IMAP – Interactive Mail Access Protocol (RFC 1064). Онпозволяет одному и тому же пользователю заходить с разных машин на сервер, чтобыпрочесть или отправить почту. Это по существу удаленное хранилище писем. Он,например, позволяет получать доступ к письму не только по его номеру, но и посодержанию.Третий часто используемый протокол – DMSP (Distributed Mail System Protocol RFC1056).