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

Итак, пользователи обрабатывают электронные сообщения с помощью своих персональных компьютеров, используя почтовые серверы лишь для отправки и получения почты. Возникает вопрос: каким образом осуществляется взаимодействие между агентами пользователей и почтовыми серверами? Сначала рассмотрим, как письмо Алии попадает на почтовый сервер Вовы. Разумеется, прочитав предыдущий материал, вы можете уверенно заявить, что для этого используется протокол SMTP, и будете правы. Однако протокол SMTP описывает передачу сообщений между почтовыми серверами, а агент пользователя Алии не имеет прямого соединения с почтовым сервером Вовы. Дело обстоит так: сначала агент пользователя устанавливает SMTP-соединение с почтовым сервером Алии и осуществляет передачу сообщения, а уже затем происходит соединение почтовых серверов Алии и Вовы, о котором шла речь ранее. Возникает вопрос: зачем использовать промежуточную передачу? Первой важной причиной является то, что агент пользователя Алии не располагает эффективным механизмом реагирования на отсутствие ответов от почтового сервера Боба. Как вы помните, почтовый сервер Алии предпринимает периодические попытки установления соединения с почтовым сервером Боба до тех пор, пока одна из попыток не окажется удачной. В документах RFC содержатся описания способов передачи сообщений между несколькими SMTP-серверами с помощью SMTP-команд.

НЕ нашли? Не то? Что вы ищете?

Теперь остается рассмотреть, каким образом агент пользователя Боба получает сообщения, находящиеся в его почтовом ящике. Вспомним о том, что SMTP является протоколом отправки, а операция извлечения и доставки сообщений, очевидно, требует применения протокола получения. Таким образом, мы приходим к необходимости создания специального протокола получения электронной почты, находящейся в почтовом ящике сервера. Существует несколько таких протоколов, наиболее распространенными из которых являются РОРЗ (Post Office Protocol Version 3 — протокол почтового отделения, версия 3), IMAP (Internet Mail Access Protocol — протокол доступа к почте Интернета) и HTTP.

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

Рис. 4.5 Протоколы электронной почты и их взаимосвязь

2.5 Протокол POP3

Протокол РОРЗ, описанный в документе RFC 1939, является одним из самых простых протоколов доступа к электронной почте. Увы, простота протокола РОРЗ оборачивается его весьма ограниченной функциональностью. Протокол начинает действовать после того, как агент пользователя (клиент) устанавливает ТСР-со-единение с портом 110 почтового сервера, и подразумевает выполнение трех основных фаз: авторизации, транзакции и обновления. Во время авторизации агент передает серверу имя пользователя и пароль для того, чтобы сервер предоставил агенту доступ к сообщениям электронной почты. В фазе транзакции пользователь получает сообщения, а также может пометить сообщения, предназначенные для удаления, и получить почтовую статистику. Наконец, фаза обновления наступает после того, как клиент посылает команду quit и закрывает РОРЗ-сеанс. Почтовый сервер производит удаление сообщений, помеченных пользователем.

Во время РОРЗ-транзакции агент пользователя посылает почтовому серверу команды, на каждую из которых сервер реагирует посылкой одного из двух ответных сообщений: +0К (иногда с последующей передачей данных сервера клиенту) и - ERR, указывающего на ошибку в команде клиента.

Авторизация включает в себя две возможные команды: user <имя пользователя> и pass <пароль>. Для того чтобы проиллюстрировать действие этих команд, предположим, что вы устанавливаете соединение с РОРЗ-сервером через порт 110. Если mailServer — имя вашего почтового сервера, то процесс авторизации в программе Telnet будет выглядеть следующим образом:

telnet mailServer 110

+0КРОРЗ server ready

user bob

+0K

pass hungry

+0K user successfully logged on

Если какая-либо из команд будет введена неверно, сервер выдаст сообщение - ERR.

Теперь обратимся к фазе транзакции. Как правило, агент пользователя, использующий протокол РОРЗ, в зависимости от настроек может автоматически удалять или не удалять сообщения после их приема; при этом во время транзакции будут применяться различные команды. Если загруженные сообщения необходимо удалять, агент посылает серверу команды list, retr и dele. Пусть, например, в почтовом ящике пользователя находятся два сообщения. Ниже приведен диалог клиента (С) и сервера (S) во время транзакции:

С: list

S: 1 498

S: 2 912

S:.

С: retr 1

S: (blah blah …

S: …………..

S: ………blah)

S: .

C: dele 1

C: retr 2

S: (blah blah …

S: …………..

S: ………blah)

S: .

C: dele 2

C: quit

S: +0K P0P3 server signong off

Сначала агент пользователя получает от сервера список сообщений с указанием размера каждого сообщения, а затем последовательно принимает и удаляет сообщения с сервера. Во время транзакции агентом используются лишь четыре команды: list, retr, dele и quit. Синтаксис этих команд описан в документе RFC 1939. После обработки команды quit РОРЗ-сервер переходит в фазу обновления и производит фактическое удаление переданных сообщений.

Режим удаления переданных сервером сообщений имеет важный недостаток. Предположим, Вова является мобильным пользователем и получает доступ к почтовому серверу с разных компьютеров (например, домашнего, офисного и портативного). Если каждый раз после передачи сообщений сервер будет удалять их, то часть сообщений окажется на персональном компьютере, часть — на офисном, а часть — на портативном. Таким образом, Вова будет лишен возможности одновременного доступа ко всем полученным сообщениям. Если агенты пользователя на компьютерах Вовы будут настроены на загрузку сообщений без удаления, копии всех входящих сообщений останутся в почтовом ящике, что обеспечит доступ к ним с любого компьютера.

Хотя во время РОРЗ-сеанса между почтовым сервером и агентом пользователя почтовый сервер сохраняет определенную информацию о состоянии (в основном это относится к списку сообщений, предназначенных для удаления), сохранять полную информацию о сеансе не нужно. Это в значительной степени упрощает реализацию почтового РОРЗ-сервера.

2.6 Протокол IMAP

Если Вова использует протокол доступа к электронной почте РОРЗ, он может создавать на своем компьютере специальные почтовые папки, в которые будут попадать загруженные с сервера сообщения. Кроме того, Вова может удалять загруженные сообщения, перемещать их между папками и производить поиск сообщений по имени отправителя или теме. Такая система хранения сообщений, реализованная в виде папок на локальном компьютере, удобна для резидентного пользователя, однако вряд ли подходит в случае, если пользователь регулярно меняет вычислительные машины, с которых осуществляет доступ к электронной почте. Организация иерархии папок на почтовом сервере была бы весьма удобна для «мульти-компьютерных» пользователей. Именно по этой причине был разработан другой протокол доступа к почте — IMAP.

Протокол IMAP описан в документе RFC 2060. Он имеет много общего с протоколом РОРЗ, однако его структура значительно сложнее; сложнее и реализация клиентской и серверной сторон IMAP.

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

Удобной функцией является возможность поиска в каждой из папок писем, удовлетворяющих заданному критерию. Обратите внимание на то, что, в отличие от РОРЗ, IMAP-сервер сохраняет информацию о ходе IMAP-сеанса, в том числе об именах папок, о том, какие сообщения в каких папках находятся, и т. п.

Еще одним важным достоинством IMAP является наличие команд, позволяющих пользователю получать отдельные компоненты сообщений: заголовки, части составных MIME-сообщений и т. д. Эта возможность удобна при низкоскоростных соединениях между пользователем и Интернет-провайдером. Некоторые пользователи предпочитают избегать загрузки длинных сообщений, содержащих несколько объемных вложений (например, аудио - или видеоклипов), и возможность выбирать нужные фрагменты для них весьма кстати.

2.7 Электронная почта с web-интерфейсом

Все больше и больше пользователей Интернета получают доступ к своим электронным почтовым ящикам с помощью web-браузеров. Компания Hotmail первой применила web-технологии для работы с электронной почтой в середине прошлого десятилетия; в настоящее время эта услуга предлагается практически каждым порталом Интернета, а также большинством Интернет-провайдеров. При доступе к электронной почте через web-интерфейс роль агента пользователя играет web-браузер, который взаимодействует с удаленным почтовым ящиком по протоколу HTTP. Когда Вова хочет получить новые сообщения, он подключается к своему почтовому серверу, который отсылает Вове сообщения по протоколу HTTP (а не SMTP или ШАР). Аналогично Алия передает новые сообщения своему почтовому серверу через браузер по протоколу HTTP. Следует обратить внимание на то, что обмен сообщениями между почтовыми серверами Алии и Вовы, как и ранее, происходит по протоколу SMTP.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76