IMAP (англ. Internet Message Access Protocol) — протокол прикладного уровня для доступа к электронной почте.
Базируется на транспортном протоколе TCP и использует порт 143, а IMAPS (IMAP поверх SSL) — порт 993. IMAP работает только с сообщениями и не требует каких-либо пакетов со специальными заголовками.
IMAP предоставляет пользователю широкие возможности для работы с почтовыми ящиками, находящимися на почтовом сервере. Почтовая программа, использующая этот протокол, получает доступ к хранилищу корреспонденции на сервере так, как будто эта корреспонденция расположена на компьютере получателя. Электронными письмами можно манипулировать с компьютера пользователя (клиента) без постоянной пересылки с сервера и обратно полного содержания писем.
Для отправки писем используется обычно протокол SMTP, так как собственная команда отправки протокола IMAP, называемая APPEND, не содержит в себе механизма передачи служебной информации.
Для имён почтовых ящиков (папок) с символами вне диапазона ASCII используется модифицированная версия кодировки UTF-7.
Цель разработки протокола IMAP
Протокол IMAP представляет собой альтернативу POP3 с зачаточными способностями по отправке.
Первая версия протокола POP3 имела ряд недостатков, и наиболее серьёзный из них — отсутствие возможностей по управлению перемещением и хранением сообщений на сервере. В POP3 сообщения загружаются с почтового сервера все сразу, после чего они с сервера удаляются, то есть отсутствует возможность выбирать сообщения для получения.
Для решения проблем, связанных с этой особенностью POP3, в 1986 году Марк Криспин , работавший тогда в Стэнфордском университете, создал новый протокол получения почты с сервера.
Новый протокол предоставил пользователям возможность получения электронной почты в различных местах из одного почтового ящика. Пользователю предоставляется возможность управлять сообщениями в его почтовом ящике и дополнительные функции по обслуживанию почтовых ящиков на сервере.
В дальнейшем протокол POP был доработан, в POP3 (POP версии 3) есть возможность получать с сервера избранные сообщения и оставлять избранные сообщения на сервере. В последних версиях между IMAP и POP основное отличие для пользователя — IMAP4 может обращаться к письмам в разных почтовых папках на сервере и перемещать письма между ними, а POP3 обращается к письмам на сервере по номерам в линейном списке (т. е. работает только с одной почтовой папкой).
Преимущества по сравнению с POP3
При использовании POP3 клиент подключается к серверу только на промежуток времени, необходимый для загрузки новых сообщений. При использовании IMAP соединение не разрывается, пока пользовательский интерфейс активен, а сообщения загружаются только по требованию клиента. Это позволяет уменьшить время отклика для пользователей, в чьих ящиках имеется много сообщений большого объёма.
Протокол POP требует, чтобы текущий клиент был единственным подключённым к ящику. IMAP допускает одновременный доступ нескольких клиентов к ящику и предоставляет клиенту возможность отслеживать изменения, вносимые другими клиентами, подключёнными одновременно с ним.
Благодаря системе флагов, определённой в IMAP4, клиент может отслеживать состояние сообщения (прочитано, отправлен ответ, удалено и т. д.); данные о флагах хранятся на сервере.
Клиенты IMAP4 могут создавать, переименовывать и удалять ящики и перемещать сообщения между ящиками. Кроме того, можно использовать расширение «IMAP4 Access Control List (ACL) Extension» (RFC 4314) для управления правами доступа к ящикам.
Поиск сообщений происходит на стороне сервера.
IMAP4 имеет явный механизм расширения.
Протокол IMAP заметно сложнее чем POP3 и просто по набору возможностей и команд, и по некоторых базовым принципам функционирования. Например, в IMAP используется тегирование команд клиента и ответов сервера на эти команды, что позволяет серверу отвечать на команды в произвольном порядке.
Каждая команда должна быть предварена некоторым идентификатором — тегом, который затем будет использован сервером при генерации ответа на эту команду. Это позволяет «беседе» клиента с сервером быть абсолютно асинхронной — сервер (например Communigate Pro или Courier Mail Server) имеют полное право отвечать на команды клиента в любом порядке, так как теги позволяют однозначно сопоставить ответ ранее поданной команде.