Miami-art.ru

Создание и развитие сайта

IMAP

10-06-2023

Перейти к: навигация, поиск
IMAP
Название:

Internet Message Access Protocol

Уровень (по модели OSI):

Прикладной

Семейство:

TCP/IP, E-Mail

Создан в:

1986 г.

Порт/ID:

143/TCP, 993/TCP (IMAP over SSL)

Назначение протокола:

Доступ к почтовым ящикам

Спецификация:

RFC 3501

Основные реализации (клиенты):

MUA (Outlook Express, Opera, Mozilla Thunderbird, The Bat! и др.)

Основные реализации (серверы):

UW IMAP, Courier, Cyrus, Dovecot

IMAP (англ. Internet Message Access Protocol — «Протокол доступа к электронной почте Интернета») — протокол прикладного уровня для доступа к электронной почте.

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

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

Для отправки писем используется протокол SMTP.

Описание протокола IMAP

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

Пример сеанса по протоколу IMAP:

1 [jessica@shadrach jessical$ telnet localhost 143
2 Trying 127.0.0.1 ...
3 Connected to localhost.
4 Escape character is '^]'.
5 * OK shadrach.smallorg.org IMAP4rev1 V12.250 server ready
6 a001 LOGOUT
7 * BYE shadrach.smallorg.org IMAP4rev1 server terminating connection
8 a001 OK LOGOUT completed
9 Connection closed by foreign host.
10 [jessica@snadrach jessica]$

В строке 1 показана команда на открытие сеанса с помощью telnet с портом 143 (порт IMAP по умолчанию). Строка 5 отображает приглашение, выданное сервером IMAP. В строке 6 клиентом задана команда закончить сеанс с сервером. Затем сервер посылает сообщение об окончании сеанса (строка 7) и закрывает соединение с клиентом.

Каждая команда, выдаваемая клиентом, предваряется уникальным идентификатором. Сервер может затем использовать этот идентификатор в своих ответах, что позволяет клиенту определить, к какой команде относится ответ сервера. Это особенно важно при выполнении сервером нескольких команд за сеанс. Идентификатор обычно представляет собой короткую строку алфавитно-цифровых символов, которая генерируется клиентом. Так, в строке 6 листинга клиентом был выбран идентификатор a001. Если бы клиенту потребовалось задавать и другие команды, то следующим идентификатором был бы a002 и т.д. Часто для упрощения идентификаторы команд в течение сеанса IMAP просто последовательно увеличивают один из своих разрядов.

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

Методы проверки подлинности пользователя в IMAP

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

Команда LOGIN

Команда LOGIN позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде. Хотя это и не наилучший метод, все же иногда это единственная возможность подключиться к серверу. В следующем листинге представлен сеанс IMAP с использованием команды LOGIN:

1 [katie@shadrach katie]$ telnet localhost 143
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 * OK localhost IMAP4rev1 v12.250 server ready
6 a001 LOGIN katie boxcar
7 a001 OK LOGIN completed
8 a002 LOGOUT
9 * BYE shadrach.smallorg.org IMAP4rev1 server terminating connection
10 a002 OK LOGOUT completed
11 Connection closed by foreign host.
12 [katie@shadrach katie]$

В строке 6 видно, как пользователь katie регистрируется на сервере IMAP с помощью команды LOGIN. В строке 7 показан ответ сервера. Сервер в ответе указал идентификатор команды клиента (a001).

Команда AUTHENTICATE

С помощью команды AUTHENTICATE клиент может использовать при регистрации на сервере IMAP альтернативные методы проверки подлинности. Индивидуальная проверка подлинности пользователей не является обязательной и поддерживается не всеми серверами IMAP. К тому же реализации такой проверки могут различаться в зависимости от сервера. Когда клиент выдает команду AUTHENTICATE, сервер отвечает на нее строкой вызова в кодировке base64. Далее в обязанности клиента входит ответ на вызов сервера о проверке подлинности, также закодированный base64. Если на сервере не поддерживается метод проверки подлинности, предложенный клиентом, он включает в свой ответ отрицательное слово NO. После этого клиент должен продолжить переговоры по согласованию метода проверки подлинности. Если все попытки определить метод проверки подлинности потерпели неудачу, то клиент предпринимает попытку зарегистрироваться на сервере посредством команды LOGIN. Пример сеанса с применением AUTHENTICATE представлен в листинге:

1 [riley@shadrach riley]$ telnet localhost 143
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 * OK localhost IMAP4rev1 v12.250 server ready
6 a1 AUTHENTICATE KERBEROS_V4
7 a1 NO AUTHENTICATE KERBEROS_V4 failed
8 a2 AUTHENTICATE GSSAPI
9 a2 NO AUTHENTICATE GSSAPI failed
10 a3 AUTHENTICATE LOGIN
11 + VXNlciBOYU1lAA==
12 *
13 a3 NO AUTHENTICATE LOGIN failed
14 a4 LOGIN riley firetruck
15 a4 OK LOGIN completed
16 a5 LOGOUT
17 * BYE shadrach.smallorg.org IMAP4rev1 server terminating connection
18 a5 OK LOGOUT completed
19 connection closed by foreign host.
20 [riley@shadrach riley]$

В строках 6–9 показаны попытки клиента согласовать с сервером IMAP метод проверки подлинности. В строке 10 показано, что метод проверки, приемлемый и для клиента, и для сервера, найден. Отвечая, сервер в строке 11 выдает кодированную строку с вызовом в кодировке base64. Однако в строке 12 клиент отвергает попытку регистрации и возобновляет ее лишь в строке 14 с помощью команды LOGIN.

Клиентская часть протокола IMAP

Флаги почтового сообщения IMAP

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

Варианты флагов почтовых сообщений:

  • \Seen — Сообщение прочитано
  • \Answered — На сообщение послан ответ
  • \Flagged — Сообщение принудительно отмечено
  • \Deleted — Сообщение удалено
  • \Draft — Сообщение не окончено (черновик)
  • \Recent — Новое сообщение в почтовом ящике

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

Команды протокола

Доступные в любом состоянии:

  • CAPABILITY — запрос списка поддерживаемых возможностей (расширений) и их параметров
  • NOOP — пустая команда, используется чтобы не разорвать сессию по тайм-ауту;
  • LOGOUT — конец сеанса
  • STARTTLS — перевод сеанса в защищенный режим

Доступные в неаутентифицированном состоянии:

  • STARTTLS — перевод сеанса в защищенный режим
  • AUTHENTICATE — передача зашифрованных аутентификационных данных с использованием SASL
  • LOGIN — аутентификация при помощи регистрационного имени и пароля, передаваемых открытым текстом

Доступные в аутентифицированном состоянии:

  • SELECT — принимает папку за текущую;
  • EXAMINE — аналогична SELECT, но доступ будет дан только для чтения;
  • CREATE — создать почтовый ящик;
  • DELETE — удалить почтовый ящик;
  • RENAME — переименовать почтовый ящик;
  • SUBSCRIBE — почтовый ящик помечается как «активный». Эта пометка используется для вывода списка почтовых ящиков при помощи команды LSUB
  • UNSUBSCRIBE — снимает с почтового ящика пометку «активный»
  • LIST — возвращает список папок в почтовом ящике;
  • LSUB — возвращает имена почтовых ящиков с пометкой «активный»
  • STATUS — информация о почтовом ящике, в том числе количество непрочитанных сообщений;
  • APPEND — добавить сообщение в почтовый ящик.

Доступные в состоянии selected:

  • CHECK — проверка выбранного почтового ящика
  • CLOSE — выбранный почтовый ящик закрывается
  • EXPUNGE — из выбранного почтового ящика удаляются все помеченные для удаления сообщения
  • SEARCH — поиск сообщений в почтовом ящике;
  • FETCH — получить сообщение или его часть;
  • STORE — изменяет значения флагов для указанного сообщения или сообщений
  • COPY — копирует указанные сообщения из текущего почтового ящика в указанный почтовый ящик
  • UID — команда префикс, запрос на получение уникальных идентификаторов сообщений

Экспериментальные/расширения:

  • X<atom> — любые команды, начинающиеся с «X» — экспериментальные.

В IMAP нет команды на перемещение сообщения из одного ящика в другой. Вместо этого, нужно сделать COPY, а потом отметить сообщение на удаление. Некоторые IMAP-серверы предоставляют команды из раздела расширенных для перемещения сообщения: например, сервер GroupWise поддерживает команду XGWMOVE[1].

Преимущества по сравнению с POP3

IMAP был разработан для замены более простого протокола POP3 и имеет следующие преимущества по сравнению с последним:

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

Текущая версия протокола имеет обозначение IMAP4rev1 (IMAP, версия 4, ревизия 1). Протокол поддерживает передачу пароля пользователя в зашифрованном виде. Кроме того, IMAP-трафик можно зашифровать с помощью SSL.

См. также

Примечания

  1. Сервер GroupWise: расширения IMAP-команд (англ.)

Ссылки

  • RFC 3501 Internet Message Access Protocol v4rev1  (англ.)
  • The IMAP Connection (англ.) (Вашингтонский университет, штат Вашингтон, США)
  • Howto: Configuring KMail with Gmail — IMAP and Disconnected IMAP (англ.)
  • Протокол IMAP  (рус.) Протокол IMAP
  • 7. Лекция: Протокол IMAP. (Интернет Университет информационных технологий)


IMAP.

© 2018–2023 miami-art.ru, Россия, Смоленск, ул. Загорская 8, офис 99, +7 (4812) 12-23-90