Интернет магазин китайских планшетных компьютеров



Компьютеры - IMAP

16 июня 2011


Оглавление:
1. IMAP
2. Преимущества по сравнению с POP3



IMAP — протокол прикладного уровня для доступа к электронной почте.

Аналогично 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$

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

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

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

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

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

Команда LOGIN

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

1$ 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$

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

Команда AUTHENTICATE

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

1$ 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$

В строках 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
  • LOGIN

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

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

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

  • CHECK
  • CLOSE
  • EXPUNGE
  • SEARCH — поиск сообщений в почтовом ящике;
  • FETCH — получить сообщение или его часть;
  • STORE
  • COPY
  • UID

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

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

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



Просмотров: 3042


<<< IL Protocol