Скачиваний:
62
Добавлен:
22.01.2014
Размер:
258.56 Кб
Скачать

7.7 Протокол iмар4

В этом разделе будет рассмотрена наиболее популярная версия протокола серии IМАР — IМАР4.

Протокол IМАР4(InternetMessageAccessProtocol,Version 4,Протокол дос­тупа к электронной почтеInternet, версия 4)позволяет клиентам получать доступ и манипулировать сообщениями электронной почты на сервере.

Существенным отличием протокола IМАР4 от протокола РОРЗ является то, что IМАР4поддерживает работу с системой каталогов (или папок) сообще­ний. IМАР4позволяет управлять каталогами (папками) удаленных сообще­ний так же, как если бы они располагались на локальном компьютере.IМАР4позволяет клиенту создавать, удалять и переименовывать почтовые ящики, проверять наличие новых сообщений и удалять старые. Благодаря тому что IМАР4поддерживает механизм уникальной идентификации каж­дого сообщения в почтовой папке клиента, он позволяет читать из почтового ящика только сообщения, удовлетворяющие определенным условиям или их части, менять атрибуты сообщений и перемещать отдельные сообщения.

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

Принципы работы

Протокол IМАР4работает поверх транспортного протокола, который обес­печивает надежный и достоверный канал передачи данных между клиентом и сервером IМАР4.При работе поTCP, IМАР4использует 143-й порт. Ко­манды и данные IМАР4передаются по транспортному протоколу в том ви­де, в каком их отправляет сервер или пользователь.

Принцип передачи данных IМАР4такой же как и у других подобных прото­колов. Сначала клиент и сервер обмениваются приветствиями. Затем клиент отправляет на сервер команды и данные. Сервер, соответственно, передает клиенту ответы на обработку команд и данных. После завершения обмена канал закрывается.

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

Весь обмен данными между клиентом и сервером организован в виде строк, завершающихся символами <CRLF>, либо в виде последовательности байт заданной длины. Каждая команда клиента начинается с идентификатора или тега команды. Тег, как правило, представляет собой короткую строку, состоящую из букв и цифр, (например, А0001, А0002 и т. д.). Тег является уникальным идентификатором данной команды клиента. Ответы сервера или следующие команды клиента могут ссылаться на данную команду по ее тегу.

Каждая команда клиента начинается с новой линии. В тех случаях, когда команда передает поток данных заданной длины или когда команда требует ответа с сервера, для того чтобы продолжить работу (например, при аутен­тификации), она может занимать несколько строк.

Строки данных, передаваемые с сервера в ответ на команду клиента, могут не содержать тег, а содержать символ "*".Это означает, что они являются промежуточными строками потока данных ответа, а идентификатор их ко­манды содержится в последней строке потока. В такой поток данных не может вклиниться другая команда.

Если сервер обнаружил ошибку в команде, он отправляет уведомление BADклиенту с тегом неправильной команды. Если команда успешно обработа­на —возвращается уведомление ОК с тегом команды. Если команда вернула отрицательный результат, например, в случае невозможности выполнить данную команду —возвращается уведомлениеNOс тегом невыполненной команды.

Важной особенностью протокола IМАР является то, что взаимодействие клиента с сервером не строится по принципу "запрос-ответ", в котором ка­ждая из сторон "ходит" по очереди. Клиент может отправить новую команду на сервер, не дожидаясь ответа на предыдущую, естественно, когда эти ко­манды не взаимосвязаны или ответ одной не повлияет на результат другой. Сервер может обрабатывать несколько команд одновременно и отвечать на каждую из них по ее окончанию. При этом ответ на более позднюю команду может поступить раньше, поэтому ответ сервера всегда содержит тег той ко­манды, к которой он относится.

Для работы в таком режиме, клиент и сервер должны фиксировать весь по­ток данных обмена, поскольку как сервер так и клиент в своих запросах и ответах могут ссылаться на команды и данные, введенные на предыдущих стадиях сессии обмена.

Для того чтобы обеспечить гибкость и многофункциональность операций работы с сообщениями, почтовые системы IМАРприсваивают сообщениям определенные атрибуты.