IMAP: различия между версиями
Polistern (обсуждение | вклад) (Новая страница: «{{Карточка протокола | Аббр = IMAP | Название = Internet Message Access Protocol | Уровень = Прикладной | Семей...») |
Visix (обсуждение | вклад) (Формулировка упрощена.) |
||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{Карточка протокола | {{Вика}}{{Зрада}}{{Карточка протокола | ||
| Аббр = IMAP | | Аббр = IMAP | ||
| Название = Internet Message Access Protocol | | Название = Internet Message Access Protocol | ||
| Уровень = Прикладной | | Уровень = Прикладной | ||
| Семейство = [[стек протоколов TCP/IP|TCP/IP]], [[E-Mail]] | | Семейство = [[стек протоколов TCP/IP|TCP/IP]], [[E-Mail]] | ||
| Создан = | | Создан = 1986 | ||
| Порт = 143/[[TCP]], 993/TCP (IMAP over SSL) | | Порт = 143/[[TCP]], 993/TCP (IMAP over SSL) | ||
| Назначение = Доступ к почтовым ящикам | | Назначение = Доступ к почтовым ящикам | ||
| Спецификация = RFC 3501 | | Спецификация = RFC 3501 | ||
| Клиенты = [[MUA]] ( | | Клиенты = [[MUA]] (Outlook Express, [[Opera]], [[Mozilla Thunderbird]], [[The Bat!]], Claws Mail, [[mutt]] и др.) | ||
| Серверы = [http://www.washington.edu/imap/ UW IMAP], [http://www.courier-mta.org/ Courier], [http://cyrusimap.web.cmu.edu/ Cyrus], [[Dovecot]] | | Серверы = [http://www.washington.edu/imap/ UW IMAP], [http://www.courier-mta.org/ Courier], [http://cyrusimap.web.cmu.edu/ Cyrus], [[Dovecot]] | ||
}} | }} | ||
'''IMAP''' ({{lang-en|Internet Message Access Protocol}}) — [[Сетевой протокол|протокол]] [[Протоколы прикладного уровня|прикладного уровня]] для доступа к [[электронная почта|электронной почте]]. | '''IMAP''' ({{lang-en|Internet Message Access Protocol}}) — [[Сетевой протокол|протокол]] [[Протоколы прикладного уровня|прикладного уровня]] для доступа к [[электронная почта|электронной почте]]. | ||
Базируется на [[Транспортный протокол|транспортном протоколе]] [[Transmission Control Protocol|TCP]] и использует [[Порт (компьютерные сети)|порт]] 143, а IMAPS (IMAP поверх [[SSL]]) — порт 993. IMAP работает только с | Базируется на [[Транспортный протокол|транспортном протоколе]] [[Transmission Control Protocol|TCP]] и использует [[Порт (компьютерные сети)|порт]] 143, а IMAPS (IMAP поверх [[SSL]]) — порт 993. IMAP работает только с сообщениями и не требует каких-либо [[Пакет (сетевые технологии)|пакетов]] со специальными заголовками{{sfn|Семенов|2014}}. | ||
IMAP предоставляет пользователю широкие возможности для работы с | IMAP предоставляет пользователю широкие возможности для работы с почтовыми ящиками, находящимися на почтовом [[Сервер (программное обеспечение)|сервере]]. [[Почтовая программа]], использующая этот [[Протокол установления сеанса|протокол]], получает доступ к хранилищу корреспонденции на [[Сервер (аппаратное обеспечение)|сервере]] так, как будто эта корреспонденция расположена на компьютере получателя. [[Электронное письмо|Электронными письмами]] можно манипулировать с [[компьютер]]а пользователя ([[Клиент (информатика)|клиента]]) без постоянной пересылки с [[Сервер (аппаратное обеспечение)|сервера]] и обратно полного содержания писем. | ||
Для отправки писем используется обычно протокол [[Simple Mail Transfer Protocol|SMTP]], так как собственная команда отправки протокола IMAP, называемая [[Список крылатых латинских выражений|APPEND]], не содержит в себе механизма передачи служебной информации{{sfn|Семенов|2014}}. | Для отправки писем используется обычно протокол [[Simple Mail Transfer Protocol|SMTP]], так как собственная команда отправки протокола IMAP, называемая [[Список крылатых латинских выражений|APPEND]], не содержит в себе механизма передачи служебной информации{{sfn|Семенов|2014}}. | ||
Для имён | Для имён почтовых ящиков (папок) с символами вне диапазона [[ASCII]] используется модифицированная версия кодировки [[UTF-7]]{{sfn|Семенов|2014}}. | ||
== Цель разработки протокола IMAP == | == Цель разработки протокола IMAP == | ||
Протокол IMAP представляет собой альтернативу [[POP3|POP]] с зачаточными способностями по отправке. | Протокол IMAP представляет собой альтернативу [[POP3|POP]] с зачаточными способностями по отправке. | ||
В первой версии протокола [[Post Office Protocol|POP]] отсутствовала возможность работать с письмами на почтовом сервере: клиент мог только скачать с него все сообщения сразу, после чего они с сервера удалялись. | |||
Для решения проблем, связанных с этой особенностью [[POP3|POP]], в 1986 году | Для решения проблем, связанных с этой особенностью [[POP3|POP]], в 1986 году Марк Криспин (англ. Mark Crispin), работавший тогда в Стэнфордском университете, создал новый [[Протокол передачи данных|протокол]] получения почты с [[Сервер (аппаратное обеспечение)|сервера]]{{sfn|University of Washington}}. | ||
Новый протокол предоставил пользователям возможность получения электронной почты в различных местах из одного почтового ящика | Новый протокол предоставил пользователям возможность получения электронной почты в различных местах из одного почтового ящика, а также управления электронной почтой на сервере. | ||
В дальнейшем протокол [[POP3|POP]] был доработан, в [[POP3]] (POP версии 3) есть возможность получать с сервера избранные сообщения и оставлять избранные сообщения на сервере. В последних версиях между IMAP и [[POP3|POP]] основное различие для пользователя — IMAP4 | В дальнейшем протокол [[POP3|POP]] был доработан, в [[POP3]] (POP версии 3) есть возможность получать с сервера избранные сообщения и оставлять избранные сообщения на сервере. В последних версиях между IMAP и [[POP3|POP]] основное различие для пользователя — в IMAP4 поддерживаются почтовые папки, а в [[POP3]] – нет. | ||
; Версии протокола IMAP{{sfn|University of Washington}} | ; Версии протокола IMAP{{sfn|University of Washington}} | ||
* IMAP: в | * IMAP: в 1986 реализован на [[DEC]], спецификация отсутствует | ||
* IMAP2: реализован в | * IMAP2: реализован в 1987, описан в [[1988]] в RFC 1064, доработан в 1990 (RFC 1176) | ||
* IMAP3: | * IMAP3: 1991 RFC 1203 | ||
* IMAP2bis, спецификация существует только в черновом варианте [[1993 год]]а, плюс в RFC 2061 ([[1996]]) описаны различия между IMAP4 и IMAP2bis | * IMAP2bis, спецификация существует только в черновом варианте [[1993 год]]а, плюс в RFC 2061 ([[1996]]) описаны различия между IMAP4 и IMAP2bis | ||
* IMAP4: [[1994]] RFC 1730 | * IMAP4: [[1994]] RFC 1730 | ||
* IMAP4rev1: 1996 RFC 2060, | * IMAP4rev1: 1996 RFC 2060, 2003 RFC 3501 | ||
== Преимущества по сравнению с POP3 == | == Преимущества по сравнению с POP3 == | ||
Строка 59: | Строка 59: | ||
=== UID === | === UID === | ||
Каждому сообщению ставится в соответствие [[32 бита|32-битный код]], который при использовании совместно с уникальным идентификатором образует | Каждому сообщению ставится в соответствие [[32 бита|32-битный код]], который при использовании совместно с уникальным идентификатором образует 64-битовую последовательность, гарантирующую однозначную идентификацию сообщения в почтовом ящике. Чем позже сообщение пришло, тем больше его UID. | ||
UID ассоциируется с почтовым ящиком и посылается в виде кода uidvalidity отклика (ok) на фазе выбора почтового ящика. Если UID из предыдущей | UID ассоциируется с почтовым ящиком и посылается в виде кода uidvalidity отклика (ok) на фазе выбора почтового ящика. Если UID из предыдущей сессии по какой-то причине не может быть использован, UID должен быть инкрементирован. | ||
UID сообщения не должно изменяться в пределах сессии, его не следует изменять и от сессии к сессии. Однако если невозможно сохранить UID сообщения в последующей сессии, каждая следующая сессия должна иметь новый уникальный код идентификатора, который должен быть больше, чем любой UID, использованный ранее. | UID сообщения не должно изменяться в пределах сессии, его не следует изменять и от сессии к сессии. Однако если невозможно сохранить UID сообщения в последующей сессии, каждая следующая сессия должна иметь новый уникальный код идентификатора, который должен быть больше, чем любой UID, использованный ранее. | ||
Строка 251: | Строка 251: | ||
[[Категория:Протоколы прикладного уровня]] | [[Категория:Протоколы прикладного уровня]] | ||
[[Категория:Электронная почта]] | [[Категория:Электронная почта]] | ||
Текущая версия на 05:46, 3 мая 2025
|
IMAP | ||||||||||||||||||||||||||
IMAP (англ. Internet Message Access Protocol) — протокол прикладного уровня для доступа к электронной почте. Базируется на транспортном протоколе TCP и использует порт 143, а IMAPS (IMAP поверх SSL) — порт 993. IMAP работает только с сообщениями и не требует каких-либо пакетов со специальными заголовкамиШаблон:Sfn. IMAP предоставляет пользователю широкие возможности для работы с почтовыми ящиками, находящимися на почтовом сервере. Почтовая программа, использующая этот протокол, получает доступ к хранилищу корреспонденции на сервере так, как будто эта корреспонденция расположена на компьютере получателя. Электронными письмами можно манипулировать с компьютера пользователя (клиента) без постоянной пересылки с сервера и обратно полного содержания писем. Для отправки писем используется обычно протокол SMTP, так как собственная команда отправки протокола IMAP, называемая APPEND, не содержит в себе механизма передачи служебной информацииШаблон:Sfn. Для имён почтовых ящиков (папок) с символами вне диапазона ASCII используется модифицированная версия кодировки UTF-7Шаблон:Sfn. Цель разработки протокола IMAP[править]Протокол IMAP представляет собой альтернативу POP с зачаточными способностями по отправке. В первой версии протокола POP отсутствовала возможность работать с письмами на почтовом сервере: клиент мог только скачать с него все сообщения сразу, после чего они с сервера удалялись. Для решения проблем, связанных с этой особенностью POP, в 1986 году Марк Криспин (англ. Mark Crispin), работавший тогда в Стэнфордском университете, создал новый протокол получения почты с сервераШаблон:Sfn. Новый протокол предоставил пользователям возможность получения электронной почты в различных местах из одного почтового ящика, а также управления электронной почтой на сервере. В дальнейшем протокол POP был доработан, в POP3 (POP версии 3) есть возможность получать с сервера избранные сообщения и оставлять избранные сообщения на сервере. В последних версиях между IMAP и POP основное различие для пользователя — в IMAP4 поддерживаются почтовые папки, а в POP3 – нет.
Преимущества по сравнению с POP3[править]При использовании POP3 клиент подключается к серверу только на промежуток времени, необходимый для загрузки новых сообщений. При использовании IMAP соединение не разрывается, пока пользовательский интерфейс активен, а сообщения загружаются только по требованию клиента. Это позволяет уменьшить время отклика для пользователей, в чьих ящиках имеется много сообщений большого объёма. Протокол POP требует, чтобы текущий клиент был единственным подключённым к ящику. IMAP допускает одновременный доступ нескольких клиентов к ящику и предоставляет клиенту возможность отслеживать изменения, вносимые другими клиентами, подключёнными одновременно с ним. Благодаря системе флагов, определённой в IMAP4, клиент может отслеживать состояние сообщения (прочитано, отправлен ответ, удалено и т. д.); данные о флагах хранятся на сервере. Клиенты IMAP4 могут создавать, переименовывать и удалять ящики и перемещать сообщения между ящиками. Кроме того, можно использовать расширение «IMAP4 Access Control List (ACL) Extension» (RFC 4314) для управления правами доступа к ящикам. Поиск сообщений происходит на стороне сервера. IMAP4 имеет явный механизм расширения.[1] Сообщения и их атрибуты[править]IMAP работает только с сообщениями и не требует каких-либо пакетов со специальными заголовками. Каждое сообщение имеет несколько связанных с ним атрибутов. Эти атрибуты могут быть определены индивидуально или совместно с другими атрибутами. UID[править]Каждому сообщению ставится в соответствие 32-битный код, который при использовании совместно с уникальным идентификатором образует 64-битовую последовательность, гарантирующую однозначную идентификацию сообщения в почтовом ящике. Чем позже сообщение пришло, тем больше его UID. UID ассоциируется с почтовым ящиком и посылается в виде кода uidvalidity отклика (ok) на фазе выбора почтового ящика. Если UID из предыдущей сессии по какой-то причине не может быть использован, UID должен быть инкрементирован. UID сообщения не должно изменяться в пределах сессии, его не следует изменять и от сессии к сессии. Однако если невозможно сохранить UID сообщения в последующей сессии, каждая следующая сессия должна иметь новый уникальный код идентификатора, который должен быть больше, чем любой UID, использованный ранее. Порядковый номер сообщения[править]Порядковый номер сообщения в почтовом ящике начинается с 1. Каждое сообщение, начиная со второго, имеет порядковый номер ровно на 1 больше, чем предшествующее ему. В течение сессии допустимо изменение порядкового номера сообщения. Например, когда сообщение удаляется из почтового ящика, номера всех последующих сообщений изменяются. Флаги сообщения[править]Этот атрибут представляет собой список из нуля или более именованных лексем, соотнесённых с данным сообщением. Флаг устанавливается путём его добавления к этому списку и обнуляется путём его удаления. В IMAP 4.1 существует два типа флагов. Флаг может быть постоянным или действующим только на время данной сессии. Системным флагом является флаг, имя которого определено в спецификации протокола. Все системные флаги начинаются с символа В настоящее время определены следующие системные флаги:
Внутренние дата и время сообщения на сервере[править]Время и дата получения сообщения. В случае доставки сообщения посредством протокола SMTP — дата и время доставки конечному адресату. Для сообщений, доставленных командой копирования — внутренняя дата и время отправителя сообщения. При использовании команды Прочие атрибуты[править]
Взаимодействие клиента и сервера[править]Соединение IMAP 4.1 подразумевает установление связи между клиентом и сервером. Клиент посылает серверу команды, сервер клиенту — данные и уведомления о статусе выполнения запроса. Все сообщения, как клиента, так и сервера, имеют форму строк, завершающихся специальной последовательностью. Любая процедура начинается с команды клиента. Любая команда клиента начинается с префикса-идентификатора (обычно короткая буквенно-цифровая строка, например, Возможны два случая, когда строка, отправленная клиентом, не представляет собой законченную команду. В первом — аргумент команды снабжается кодом, определяющим число октетов в строке. Во втором — аргументы команды требуют отклика со стороны сервера. В обоих случаях сервер посылает запрос продолжения команды, начинающийся с символа Клиент должен завершить отправку одной команды, прежде чем отправить другую. Протокольный приемник сервера читает строку команды, пришедшей от клиента, осуществляет её разбор, выделяет параметры и передаёт серверу данные. По завершении команды сервер посылает отклик. Данные, передаваемые сервером клиенту, а также статусные отклики, которые не указывают на завершение выполнения команды, имеют префикс Данные могут быть отправлены сервером в ответ на команду клиента или по собственной инициативе. Формат данных не зависит от причины отправки. Отклик указывает на удачное/неудачное выполнение операции. Он использует ту же метку, что и команда клиента, запустившая процедуру. Таким образом, если осуществляется более, чем одна команда, метка сервера указывает на команду, вызвавшую данный отклик. Имеется три вида отклика завершения сервера: Протокольный приемник клиента IMAP 4.1 читает строку отклика от сервера и предпринимает действия в соответствии с первым символом Клиент должен быть готов принять любой отклик сервера в любое время. Данные сервера должны быть записаны так, чтобы клиент мог их непосредственно использовать, не посылая серверу уточняющих запросов. Состояния сервера IMAP[править]Сервер IMAP 4.1 находится в одном из четырёх состояний. Большинство команд можно использовать только в определённых состояниях. В состоянии без аутентификации клиент должен предоставить имя и пароль, прежде чем ему станет доступно большинство команд. Переход в это состояние производится при установлении соединения без предварительной аутентификации. В состоянии аутентификации клиент идентифицирован и должен выбрать почтовый ящик, после чего ему станут доступны команды для работы с сообщениями. Переход в это состояние происходит при установлении соединения с предварительной аутентификацией, когда выданы все необходимые идентификационные данные или при ошибочном выборе почтового ящика. В состояние выбора система попадает, когда успешно осуществлен выбор почтового ящика. В состояние выхода система попадает при прерывании соединения в результате запроса клиента или вследствие независимого решения сервера.
Команды протокола IMAP[править]
C A003 APPEND saved-messages (\Seen) {247} S + Ready for literal data C Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) C From: Fred Foobar <foobar@Blurdybloop.COM> C Subject: afternoon meeting C To: mooch@owatagu.siam.edu C Message-Id: <B27397-0100000@Blurdybloop.COM> C C Hello Joe, do you think we can meet at 3:30 tomorrow? S A003 OK APPEND completed
Литература[править]Ссылки[править]
Примечания[править]Шаблон:Мало внутренних ссылок Шаблон:URI scheme Шаблон:IPstack |