Автор публикации: Похлебаев Сергей,
www.wincity.ru Протокол POP3 имеет ряд существенных недостатков, самый серьёзный из которых - невозможность управления почтой прямо на сервере. Сообщения в этом протоколе загружаются с сервера все сразу, после чего, как правило, удаляются с него - фактически пользователю не дают выбрать, какие сообщения он хочет скачать, а какие - удалить прямо с сервера.
Для решения вот такой проблемы и был создан протокол IMAP - Internet Mail Access Protocol (Протокол Доступа к Почте через Интернет), разработанный в Вашингтонском университете, предполагает возможность получения пользователями электронной почты из одного почтового ящика из различных мест, при этом сообщения находятся в одном месте. Пользователю даётся возможность управлять сообщениями прямо на сервере, не загружая их на свой компьютер. У данного протокола есть и плохая черта - то, что вся почта хранится на сервере, поэтому при управлении почтовым сервером, поддерживающим протокол IMAP, надо особенно осторожно относиться к определению дискового пространства под ящики пользователей, чтобы система вовремя перестала принимать новые сообщения, недопуская переполнения диска и остановки сервера.
Текущая версия протокола - 4 с номером реализации 1 или сокращённо - IMAP4rev1. Протокол полностью описан в документе RFC 2060.
Так же как и POP3, протокол IMAP использует концепцию клиент-сервер с набором команд. С помощью команд осуществляется передача сообщений электронной почты от сервера клиенту. Клиент устанавливает для этой цели TCP-соединение с портом 143 на сервере. Далее сервер должен ответить специальным сообщением-приглашением.
Каждая команда клиента предваряется уникальным идентификатором. Сервер может затем использовать этот идентификатор в своих ответах, что позволяет клиенту определить, к какой команде относится ответ сервера. Это особенно важно при выполнении сервером нескольких команд за один сеанс. Идентификатор - коротка строка алфавитно-цифровых символов. Идентификатор задаётся последовательно и автоматически.
Так же как и в протоколе POP3, в протоколе IMAP имеется несколько методов проверки подлинности клиента. Некоторые из них обеспечивают больший уровень безопасности по сравнению с другими. В отличие от клиентов POP3, клиенты IMAP часто проводят довольно длительные сеансы с сервером при обработке сообщений. Таким образом, идентификатор пользователя и пароль не передаются по сети несколько раз в час, как в протоколе POP3. Несомненно, что передача идентификатора пользователя и пароля в зашифрованном виде остаётся актуальной и применяется по мере возможности.
После регистрации на сервере IMAP клиент может приступить к работе с почтой. Протокол IMAP предлагает довольно много команд для чтения, перемещения и удаления почтовых сообщений в ящиках на сервере. Загрузка сообщений на локальный компьютер производится только для их отображения.
По умолчанию почтовый ящик носит название INBOX. Клиент может создавать новые почтовые ящики, куда может перемещать сообщения из папки INBOX.
Каждое сообщение имеет свой уникальный идентификатор - UID, по которому они идентифицируются в почтовом ящике. Каждому почтовому ящику соответствует уникальный идентификатор достоверности (UIDVALIDITY). Она должна присутствовать во время всех сеансов с почтовым ящиком, если все индикаторы сообщений в ящике остались неизменными.
Каждое сообщение имеет флаг, отображающий его статус:
-
SEEN прочитано,
-
ANSWERED отвечено,
-
FLAGGED послан ответ,
-
DELETED удалено,
-
DRAFT не окончено (черновик),
-
RECENT новое сообщение.
Команды IMAP:
-
LOGIN Позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде - иногда это единственная возможность соединиться с сервером.
-
AUTHENTICATE При помощи этой команды пользователь может использовать при регистрации альтернативные методы проверки подлинности. Такие методы не являются обязательно присутствующими на всех серверах IMAP, а присутствуя, они могут различаться в зависимости от сервера.
-
SELECT Используется в случае успешной регистрации, позволяет выбрать ящик для дальнейшей работы с ним. По умолчанию - это ящик входящих писем (Inbox).
-
EXAMINE Используется для того, чтобы только прочитать содержимое почтового ящика, но не редактировать его.
-
CREATE Создаёт новый почтовый ящик в каталоге пользователя на сервере.
-
DELETE Используется для удаления почтового ящика (ВНИМАНИЕ! НЕ ДЛЯ УДАЛЕНИЯ СООБЩЕНИЯ!).
-
RENAME Позволяет изменить имя почтового ящика.
-
SUBSCRIBE Позволяет добавить почтовый ящик в список активных ящиков клиента.
-
UNSUBSCRIBE Позволяет удалить почтовый ящик из списка активных.
-
LIST Выводит список всех почтовых ящиков пользователя.
-
LSUB Отображает список активных ящиков пользователя.
-
STATUS Формирует запрос о текущем состоянии почтового ящика.
-
APPEND Даёт возможность посылать сообщения в почтовый ящик, добавляя его к концу файла почтового ящика на сервере.
-
CHECK Позволяет проверить целостность почтового ящика после профилактических работ на сервере.
-
CLOSE Позволяет закрыть почтовый ящик, при этом все сообщеняи с флагом "DELETED" удаляются.
-
EXPUNGE Удаление всех сообщений в почтовом ящике, помеченных флагом "DELETED".
-
SEARCH Производит поиск сообщений по критериям в активном почтовом ящике.
-
FETCH Используется для получения текста почтового сообщения.
-
STORE Изменяет информацию о сообщении.
-
COPY Копирует сообщения из одного почтового ящика в другой.
-
UID Используется вместе с другими командами для использования идентификационных номеров сообщений.
-
CAPABILITY Запрашивает сервер IMAP о его возможностях.
-
NOOP рименяется для поддержки активности во врмея сеанса, не производит никаких действий с ящиками или сообщениями
-
LOGOUT Завершает сеанс пользователя.
К сожалению, в связи с нехваткой времени, в статье не были приведены примеры - в связи с этим могу сообщить, что статья будет дополнена отсутствующими компонентами в самое ближайшее время.