Протоколы POP3 и IMAP

Протоколы доступа к почтовому ящику POP3 и IMAP

На главную страницу


Доступ к почтовому ящику посредством POP и IMAP

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

Протокол POP3 (Post Office Protocol)

Протокол обмена почтовой информацией POP3 (RFC-1939)предназначен для разбора почты из почтовых ящиков пользователей на их рабочие места при помощи программ-клиентов. Если по протоколу SMTP пользователи отправляют корреспонденцию через Интернет, то по протоколу POP3 пользователи получают корреспонденцию из своих почтовых ящиков на почтовом сервере в локальные файлы.

Итак, РОРЗ (Post Office Protocol version 3). Номер его TCP-порта - 110. Основное отличие РОРЗ от других Интернет-протоколов верхнего уровня заключается в том, что в нем отсутствует широкий спектр кодов ошибок: в ответ на любую команду он посылает строки, начинающиеся с "+ОК" или "-ERR", сигнализирующие соответственно об успешном или неудачном выполнении команды.

Набор основных команд протокола также достаточно прост:

USER name.
Это первое, что посылает клиент после того, как он считал строку-приветствие +ОК РОРЗ served ready. Аргумент name указывает имя пользователя на данном почтовом сервере, для которого требуется получить доступ к почтовому ящику. Пример:
         USER paaa
PASS password.
После того как пользователь указал свое имя, он должен указать пароль к своему почтовому ящику. Пример:
          PASS doom
STAT.
Если пользователь существует и правильно ввел свой пароль, он может посмотреть почту. Команда STAT сообщает текущее состояние ящика. Формат ответа - "+ОК n m", где n - количество сообщений, m - количество байт. Пример (в почтовом ящике находятся 11 писем общим объемом 1594 байт):
     С: STAT
     S: +OK 11 1594
LIST n.
Для оценки размера конкретного письма существует команда LIST. Формат вывода такой же, как у STAT. Пример (третье письмо имеет размер 512 байт):
  
    С: LIST 3 
    S: +ОК 3 512
RETR n.
Для получения письма с сервера используется команда RETR n, где n - номер письма. Пример (получаем четвертое письмо):
    С: RETR 4
    S: +ОК 124 octets
    S: Здесь
    S: идет 
    S: текст
    S: письма
    S:.
DELE n.
После того как письма успешно получены и сохранены локально, их можно удалить с почтового сервера. Для этого служит команда DELE n.. Пример (удаляем первое письмо):
    С: DELE 1 
    S: +ОК message 1 deleted
QUIT.
Для завершения сеанса используется команда QUIT..

Приведем пример взаимодействия по протоколу POP3:

        quest> telnet quest.net.kiae.su
	Trying 144.206.130.138...
	Connected to quest.net.kiae.su.
	Escape character is '^]'.
	+OK QPOP (version 2.2) at quest.net.kiae.su starting.
		  <10124.867839706@quest.net.kiae.su>
	user paul
	+OK Password required for paul.
	pass Kukuru23432
	+OK paul has 6 messages (12576 octets).
	stat
	+OK 6 12576
	list
	+OK 6 messages (12576 octets)
	1 1447
	2 2640
	3 2296
	4 1100
	5 3025
	6 2068
	.
	noop
	+OK
	last
	+OK 4 is the last read message.
	retr 4
	+OK 1100 octets
	Received: from mail1.relcom.ru (mail1.relcom.ru [193.125.152.4]) by 
		quest.net.kiae.su (8.7.5/8.7.3) with ESMTP id CAA09628 for 
		<paul@quest.net.kiae.su>; Wed, 2
	Jul 1997 02:51:43 +0400 (MSD)
	Received: from thevni (uucp@localhost) by mail1.relcom.ru 
		(8.7.5.R.ML.S/Relcom-2A) with UUCP
		 id BAA03544 for paul;Wed, 2 Jul 1997 01:34:45 +0400 (MSD)
	Received: by Relay1.relcom.ru (UUMAIL/2.0); Wed,  2 Jul 97 01:34:44 +0300
	Received: by theor.vniinm.msk.su (UUPC/@ v5.06gamma, 07Feb93);
	          Wed,  2 Jul 1997 01:24:57 +0400
	To: paul@kiae.su
	References: <33B92C6B.9FA2C1A4@kiae.su>
	Message-Id: <AAeMNkpiq1@theor.vniinm.msk.su>
	Organization: A.A. Bochvar Institute for Inorganic Materials, Theoret
	From: "Alexander Z. Solontsov" <sol@theor.vniinm.msk.su>
	Date: Wed,  2 Jul 97 01:24:56 +0400
	X-Mailer: BML [MS/DOS Beauty Mail v.1.36]
	Subject:  life
	Lines: 9
	X-UIDL: 2313051b98ef908dceefe8b801d9e60d
	Status: RO
	 
	To: N.M.Sergeeva
	 
	Dear H.M.,
	 
	I am still alive, publishing a lot, and this year applied to RAN.
	Would be pleased to hear from you in a more derect way.
	Alexander
	 
	.
	dele 4
	+OK Message 4 has been deleted.
	rset 4
	-ERR Too many arguments for the rset command.
	rset
	+OK Maildrop has 6 messages (12576 octets)
	list
	+OK 6 messages (12576 octets)
	1 1447
	2 2640
	3 2296
	4 1100
	5 3025
	6 2068
	.
	quit
	+OK Pop server at quest.net.kiae.su signing off.
	Connection closed by foreign host.

В данном примере используется прием доступа к серверу через программу Telnet по 110 порту TCP. Заметим, что команда dele только помечает сообщение к удалению. Удаляются сообщения только в момент окончания сеанса, а во время сеанса они только помечаются как удаленные, поэтому по команде RSET эти пометки можно снять.

Протокол IMAP

Другим протоколом разбора почты является протокол IMAP (Interactive Mail Access Protocol) (RFC-2060), который по своим возможностям очень похож на POP3, но был разработан как более надежная альтернатива последнего и к тому же обладает более широкими возможностями по управлению процессом обмена с сервером.

Работа протокола осуществляется по 143 потру TCP. Главным отличием от POP является возможность поиска нужного сообщения и разбор заголовков сообщения.

Ниже приведен пример взаимодействия по протоколу IMAP:

	OK IMAP2 Server Ready
	A001 LOGIN Fred Secret
	A001 OK User Fred logged in
	A002 SELECT INBOX
	* FLAGS (Meeting Notice \Answered \Flagged \Deleted \Seen)
	* 19 Exists
	* 2 Recent
	* A002 OK Select compete
	A003 FETCH 1:19 ALL
	* 1 Fetch ( .....
	* 19 Fetch (....
	A003 OK Fetch complete
	A004 LOGOUT
	* Bye IMAP2 server quitting
	A004 OK Logout complete

Для поиска информации используются команды FIND с различными аргументами.

Сравнение способов доступа к почтовому ящику

Существует несколько способов доступа, используемых для доступа к почтовому ящику. Среди них: стратегия разделяемой файловой системы, частные LAN-ориентированные протоколы, X.400 P7 протокол и Internet протоколы для доступа к сообщениям. Рассмотрим Internet протоколы: POP (Post Office Protocol) и IMAP(Internet Message Access Protocol). Из них POP наиболее старый и поэтому самый известный. IMAP (на данный момент IMAP4 revision 1) предоставляет надмножество возможностей POP, и предлагает хорошую поддержку всех трёх моделей доступа к удалённому почтовому ящику: offline, online и отсоединённый (disconnected). (Определения этих моделей можно найти в RFC-1733.)

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

Об offline доступе можно думать как о сервисе "хранения и пересылки" (store-and-forward service), предназначенном для пересылки почты (по требованию) с почтового сервера на единственную конечную машину, обычно ПК или Mac. Однажды доставленные на конечную машину, сообщения удаляются с почтового сервера. Хотя ограничения offline доступа могут быть скомпенсированы использованием POP в online режиме, POP просто-напросто не имеет некоторой функциональности, требуемой для высококачественного online (или отсоединённого) доступа. В действительности, псевдо-онлайн режим доступа, поддерживаемый POP3, который заключается в том, что пользователь оставляет почту на сервере, часто требует наличие широко распространенного файлово-ориентированного протокола (remote file system protocol), для того, чтобы почтовый клиент сумел обновить почтовый ящик или установить флаги сообщения.

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

Как offline, так и online почтовые программы позволяют получить доступ к новым поступающим сообщениям на почтовом сервере с различных клиентских платформ. Однако на этом их сходство заканчивается. Эти две парадигмы отражают различные требования и стили использования, и они не очень хорошо комбинируются друг с другом. Offline доступ лучше подходит для людей, которые всегда используют единственную клиентскую машину. Он не очень хорошо подходит для таких задач как доступ к чьему-либо ящику входящих писем или ящикам с сохраненной корреспонденцией с различных машин в различное время. Все это можно объяснить тем, что при использовании offline ("скачал и удалил") доступа к почте с различных компьютеров, Ваша почта рассеивается по различным машинам, если только они не объединены общей файловой системой (в последнем случае Вы на самом деле имеете доступ в большей мере online, чем offline). С другой стороны, хорошим качеством offline доступа является то, что он минимизирует использование серверных ресурсов и время соединения, если используется удаленный доступ по модему. Суммируя всё вышесказанное, можно привести различия между online и offline парадигмами:

Основное преимущество online парадигмы состоит в том, что почтовые ящики с входящей и архивной почтой хранятся на сервере и к ним можно единообразно получить доступ с различных компьютеров в различное время. И всё это можно осуществлять без использования протоколов общего доступа к файлам (эти протоколы существуют далеко не на каждой платформе, могут уступать в производительности и вызывать проблемы блокировки файлов (file locking). Всё это не нужно для тех пользователей, которые всегда использует один и тот же компьютер для доступа к почте, но становится очень важным для тех, кто использует несколько компьютеров.

Приведём теперь краткое сравнение протоколов POP3 и IMAP4

А теперь подробнее:

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

IMAP может позволять одновременный доступ и обновление общих почтовых ящиков. Эта способность удобна в случае если несколько клиентов обрабатывают сообщения, приходящие в общий inbox. Все активные клиенты оповещаются об изменениях состояния почтового ящика через IMAP.

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

Не все IMAP клиенты предлагают поддержку offline режима, но протокол это позволяет в полной мере. Для IMAP существует протокол-компаньон, предназначенный для управления настройками пользователей, который называется IMSP, Internet Message Support Protocol. IMSP позволяет независимый от расположения (многоплатформенный) доступ к персональным настройкам пользователя, например к адресной книге. [Его потомок ACAP позволяет хранить также настройки для серверов, групп пользователей. ACAP специально оптимизирован для уменьшения количества пересылаемых по сети данных, имеет богатые возможности по поиску на стороне сервера, позволяет управлять правами доступа к данным.]

IMAP имеет конструкции для оптимизации online доступа, в особенности по низкоскоростным каналам. Эти конструкции включают возможность получить структуру сообщения не скачивая его целиком на клиентскую машину, избирательное скачивание частей сообщения и способность использовать сервер для поиска, с целью уменьшения количества передаваемых данных между клиентом и сервером. Очень полезным бывает отложить пересылку до подходящего момента некоторых сообщений или их частей [с сервера на клиентскую машину], если сообщения не представляют непосредственного интереса. Особенно это удобно в случае, когда соединение с сервером происходит по низкоскоростному каналу связи. В случае если сообщение содержит прикрепленные документы или мультимедиа данные, передача только части сообщения может оказаться большим преимуществом. Это можно достаточно наглядно ощутить, например, если Вы находитесь в гостинице и Вам присылают короткое сообщения с присоединенным 10Mb видео клипом.

Эффективная обработка MIME сообщений является значимым преимуществом IMAP над POP.

Подытожив, можно сказать, что IMAP выигрывает у POP в трех областях:

В связи с тем, что существуют свободно распространяемые IMAP библиотеки для разработчиков, то сложность IMAP не должна быть значительным препятствием. Таким образом, получается, что единственным преимуществом POP над IMAP является наличие большего числа реализаций, как клиентов, так и серверов. Эта ситуация будет продолжаться недолго и со временем IMAP должен вытеснить POP.

back contents next