28. Архитектура и службы электронной почты. Пользовательский агент и агент передачи сообщения. Перечислите протоколы электронной почты Internet.

Рассмотрим возможности и организацию систем электронной почты. Обычно они состоят из двух

подсистем: пользовательских агентов, позволяющих пользователям читать и отправлять электронную почту, и агентов передачи сообщений, пересылающих сообщения от отправителя к

получателю. Пользовательские агенты представляют собой локальные программы, предоставляющие различные методы взаимодействия пользователя с почтовой системой. Эти методы (или интерфейсы) могут быть командными, графическими или основанными на меню. Агенты передачи сообщений обычно являются системными демонами — процессами, работающими в фоновом режиме, и перемещающими электронную почту по системе.

Обычно системами электронной почты поддерживаются следующие пять основных функций.

Составление — процесс создания сообщений и ответов. Хотя для создания тела сообщения можно использовать любой текстовый редактор, система поможет в составлении адреса и многочисленных полей заголовков, добавляемых к каждому сообщению. Например, при составлении ответа на сообщение система электронной почты может извлечь адрес отправителя из полученного

письма и автоматически поместить его в нужное место в ответе.

Передача — перемещение сообщений от отправителя к получателю. Для этого требуется установить соединение с адресатом или с какой-либо промежуточной машиной, переслать сообщение и разорвать соединение. Система электронной почты должна выполнять все эти действия автоматически, не беспокоя пользователя.

Уведомление — информирование отправителя о состоянии сообщения. Что с ним стало? Доставлено оно, потеряно или отвергнуто? Существует множество приложений, в которых подтверждение доставки имеет большую важность и даже может иметь юридическую значимость.

Отображение приходящих сообщений на экране необходимо, чтобы пользователи имели возможность читать свою электронную почту. Иногда требуется преобразование текста

или вызов специальной программы просмотра, например, для просмотра файла формата PostScript или прослушивания оцифрованного звукового сообщения. Иногда также применяются простые преобразования и форматирование текста.

Обработка. Наконец, на последнем этапе работы с электронным письмом решается дальнейшая судьба полученного сообщения. Получатель может удалить его, не читая, удалить после прочтения, сохранить и т.д. Также должна быть обеспечена возможность найти полученное ранее письмо и прочитать его еще раз, переслать его другому адресату или обрабатывать по-

лученную почту другим способом.

В основе всех современных систем электронной почты лежит ключевая идея о разграничении конверта и содержимого письма. Конверт заключает в себе сообщение. Он содержит всю

информацию, необходимую для доставки сообщения — адрес получателя, приоритет, уровень секретности и т. п. Все эти сведения отделены от самого сообщения. Агенты передачи сообщений используют конверт для маршрутизации, аналогично тому, как это делает обычная почтовая служба. Сообщение внутри конверта состоит из двух частей: заголовка и тела письма. Заголовок содержит управляющую информацию для пользовательских агентов. Тело письма целиком предназначается для человека-получателя.

Пользовательский агент

Как уже было показано, системы электронной почты состоят из двух основных частей: пользовательских агентов и агентов передачи сообщений. В данном разделе мы рассмотрим пользовательских агентов. Как правило, пользовательский агент — это программа (иногда называемая почтовым редактором), управляемая множеством команд для составления и получения сообщений, а также для ответа на сообщения и управления почтовыми ящиками. Некоторые пользовательские агенты снабжены причудливым интерфейсом с использованием меню или графическим интерфейсом, для работы с которым требуется мышь, тогда как другие управляются односимвольными командами, вводимыми с клавиатуры. Функционально все они примерно

одинаковы. В некоторых из них есть меню или ярлыки, но для основных действий обычно существуют комбинации клавиш.

Отправление электронной почты

Чтобы послать письмо электронной почтой, пользователь должен составить текст сообщения, указать адрес получателя, а также, возможно, некоторые дополнительные параметры.

Текст сообщения может быть набран в отдельном текстовом редакторе, с помощью программы изготовления документов или в текстовом редакторе, встроенном в почтовый редактор. Адрес

получателя должен быть указан в формате, понятном для пользовательского агента. Многие пользовательские агенты ожидают DNS-адреса вида полъзователъ@ВМ5-адрес.

Однако следует отметить, что существуют и другие формы адресации. В частности, адреса стандарта Х.400 абсолютно не похожи на DNS-адреса и состоят из пар атрибут = значение, разделенных косыми чертами, например:

/C=US/ST=MASSACHUSETTS/L=CAMBRIDGE/PA=360

MEMORIAL DR../CN=KEN SMITH/

В этом адресе указаны государство, штат, местоположение, личный адрес и имя получателя (Ken Smith). Возможно также использование различных других атрибутов, что делает возможным отправку электронного письма человеку, чьего имени вы не знаете, при условии, что вам известны другие атрибуты (например, название компании и должность получателя). Хотя форма адресации Х.400 значительно менее удобна, чем DNS, большинством систем электронной почты поддерживаются так называемые псевдонимы, с помощью которых пользователи мо-

гут вводить или выбирать имя адресата и получать корректный электронный адрес. Поэтому даже при использовании адресации Х.400 пользователю не приходится вводить такие, мягко говоря,

странные строки. Большинством систем электронной почты поддерживаются

списки рассылки, позволяющие пользователю рассылать одно и то же сообщение группе получателей при помощи одной команды. Если список рассылки хранится локально, пользовательский агент может просто послать каждому получателю отдельное со-

общение. Однако при удаленном расположении списка рассылки сообщения будут тиражироваться там, где хранится список. Каждая отображаемая строка содержит несколько полей, извлеченных из конверта или заголовка соответствующего сообщения. В простой системе электронной почты список отображаемых полей встроен в программу. В более сложных системах

пользователь может выбрать отображаемые поля, а настройки пользователя будут храниться в специальном файле, называющемся профилем пользователя. В данном примере первое отображаемое поле — номер сообщения. Второе поле, Flags (флаги) может содержать флаг К, означающий, что сообщение не является новым, уже было прочитано и хранится в почтовом ящике; флаг А, означающий, что на данное сообщение уже был отправлен ответ; и/или флаг F, означающий, что сообщение было переадресовано кому-то еще. Возможно также использование и других флагов.

Третье поле содержит размер сообщения в байтах, а в четвертом поле указывается отправитель сообщения. Поскольку значение этого поля просто извлекается из заголовка сообщения, это

поле может содержать имена, полные имена, инициалы, имена регистрации в системе, а также все, что отправитель захочет указать в качестве своего имени. Наконец, поле Subject (тема) со-

держит краткое изложение содержания сообщения. Пользователи, забывающие заполнять поле Subject, часто обнаруживают, что их письма читаются респондентами далеко не в первую очередь.

 

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

В Интернете для доставки электронной почты машина-источник устанавливает TCP-соединение с портом 25 машины-приемника. Этот порт прослушивается почтовым демоном, и их общение происходит с помощью протокола SMTP (Simple Mail Transfer Protocol — простой протокол электронной почты). Этот демон принимает входящие соединения и копирует сообщения из них в соответствующие почтовые ящики. Если письмо невозможно доставить, отправителю возвращается сообщение об ошибке, содержащее первую часть этого письма.

После установления соединения, как правило, используя 25 порт, клиент должен обязательно отправить на сервер команду HELO <HOST>. Эта команда используется для идентификации машины отправителя (HOST) на SMTP сервере.

Следующее командой должна идти команда MAIL, идентифицирующая отправителя:

MAIL <SP> FROM: <reverse-path> <CRLF>

Следующей командой идёт команда RCPT:

RCPT <SP> TO:<forward-path> <CRLF>

Эта команда передаёт на сервер почтовый адрес получателя письма.

Следующей командой идёт команда DATA <CRLF>

После этого, на сервер можно передавать текст почтового сообщения. Признаком окончания передачи почтового сообщения является символ точки «.» в начале новой строки.

После принятия сервером сообщения к отправке, клиент должен отправить команду QUIT, которая сигнализирует серверу, что больше отправки писем не будет. После принятия от сервера подтверждения этой команды, следует закрыть соединение с сервером.

 

РОРЗ

К сожалению, такое решение создает новую проблему: как пользователю забрать свою почту у агента передачи сообщений провайдера? Ответ таков: следует создать специальный протокол, который позволил бы пользовательскому агенту (на машине клиента) соединиться с агентом передачи сообщений провайдера (на машине провайдера) и скопировать хранящуюся для него почту. Одним из таких протоколов является РОРЗ (Post Office Protocol v. 3 — почтовый протокол, 3-я версия), определенный в документе RFC 1939. При доставке сообщений возможны две ситуации: первая — когда и отправитель и получатель постоянно подключены к Интернет (рис. 5.2,а); вторая ситуация — когда отправитель подключен к линии, а получатель — нет (рис. 5.2,б).

Протокол РОРЗ запускается, вместе с почтовым клиентом. Последний дозванивается до провайдера (если только машина уже не находится в подключенном состоянии) и устанавливает TCP-соединение с агентом передачи сообщений с использованием порта 110. После установки соединения протокол РОРЗ проходит три последовательных состояния.

1. Авторизация.

2. Транзакции.

3. Обновление.

Авторизация связана с процессом входа пользователя в систему. В состоянии транзакций пользователь забирает свою почту и может пометить ее для удаления из почтового ящика. В состоянии обновления происходит удаление помеченной корреспонденции.

Авторизация пользователя. После того как программа установила TCP-соединение с портом протокола РОРЗ (официальный номер 110), необходимо послать команду USER с именем пользователя в качестве параметра. Если ответ сервера будет +ОК, нужно послать команду PASS

с паролем этого пользователя:

Транзакции РОРЗ. После того как стадия авторизации окончена, обмен переходит на стадию транзакции. В следующих примерах демонстрируется возможный обмен сообщениями на этой стадии.

Команда STAT возвращает количество сообщений и количество байтов в сообщениях:

Команда LIST (без параметра) возвращает список сообщений в почтовом ящике и их размеры:

Команда LIST с параметром возвращает информацию о заданном сообщении:

Команда TOP возвращает заголовок, пустую строку и первые десять строк тела сообщения:

Команда NOOP не возвращает никакой полезной информации, за исключением позитивного ответа сервера. Однако позитивный ответ означает, что сервер находится в соединении с клиентом и ждет запросов:

Команда RETR извлекает сообщение с указанным номером и помещает его в буфер местного UA (почтового агента):

Команда DELE отмечает сообщение, которое нужно удалить:

Команда RSET снимает метки удаления со всех отмеченных ранее сообщений:

Как и следовало ожидать, команда QUIT закрывает соединение с сервером.

 

IMAP

Пользователю, имеющему одну учетную запись у одного провайдера и всегда соединяющемуся с провайдером с одной и той же машины, вполне достаточно протокола РОРЗ. Этот протокол и используется повсеместно благодаря его простоте и надежности. У многих пользователей есть одна учетная запись в учебном заведении или на работе, но они хотят иметь доступ к ней и из дома, и с работы (учебы), и во время поездок (с портативного компьютера), и из интернет-кафе во время так называемого отпуска. Хотя РОРЗ и предоставляет возможность разрешения такой ситуации (так как с его помощью все могут получить всю хранящуюся почту), но проблема в том, что корреспонденция пользователя очень быстро распространится более или менее случайным образом по всем машинам, с которых он получает доступ в Интернет, и некоторые из этих машин могут даже не принадлежать этому пользователю. Это неудобство привело к созданию альтернативного протокола доставки сообщений, IMAP (Interactive Mail Access Protocol — протокол интерактивного доступа к электронной почте), определенного в RFC 2060. В отличие от протокола РОРЗ, который подразумевает, что пользователь будет очищать почтовый ящик после каждого контакта с провайдером и будет работать с почтой в отключенном режиме, протокол IMAP предполагает, что вся почта будет оставаться в почтовых ящиках на сервере неограниченно долго. IMAP обладает широким набором механизмов для чтения сообщений или даже частей сообщений. Такое свойство полезно при использовании медленных модемов, поскольку можно прочесть только текстовую часть письма, к которому приложены большие видео- и аудио-фрагменты. Поскольку основное предположение состоит в том, что пользователь не будет копировать на свой компьютер письма, в IMAP входят также инструменты для создания, удаления и других видов управления почтовыми ящиками, размещающимися на сервере. Таким образом, пользователь может завести собственный почтовый ящик для каждого лица, с которым ведется переписка, и переносить сообщения из почтового ящика для всех входящих писем в эти персональные ящики.

Протокол IMAP обладает разнообразными возможностями, например, способностью упорядочивать почту не по порядку ее поступления, а по атрибутам писем (например, «сначала дайте мне письмо от Бобби»). В отличие от РОРЗ, IMAP может заниматься как доставкой исходящей почты от пользователя в направлении места назначения, так и доставлять входящую почту пользователя.

В целом u1089 стиль протокола IMAP подобен РОРЗ. Различаются они количеством команд — в IMAP их десятки. Сервер IMAP прослушивает порт 143.

Hosted by uCoz