Тарифы Услуги Сим-карты

Что такое IMAP и POP? Методы проверки подлинности пользователя в IMAP. Сообщения и их атрибуты

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

Иногда встаёт задача перейти на новую и более удобную почтовую систему, но мешают накопленные архивы писем. Бросить их на прежнем месте? Жалко. Пароли забываются. Бывает, утрачиваются номера мобильных и email-адреса, введённые для их восстановления. Однажды можно потерять архивы навсегда. Скачать на локальный жесткий диск? Переписать на болванку или флешку? Но они ненадёжны: ломаются, теряются, портятся.

Самое логичное решение - импортировать архив почты в новый ящик. Но недостаточно это сделать один раз, ведь в старый ящик могут продолжать приходить важные письма. Можно настроить безусловное перенаправление всей входящей почты на другой адрес, и с технической точки зрения это - самый предпочтительный вариант. Но мы не роботы, и далеко не всегда технически экономное решение удобно использовать.

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

POP3 ведёт свою историю с 1984 года, когда одна из сотрудниц Института Информатики в составе Университета Южной Калифорнии, Джойс Рейнольдс, опубликовала RFC 918 - предложение стандартного протокола для получения электронной почты (POP - Post Office Protocol). Через 4 года появилась третья редакция протокола POP, а текущая, современная версия стандарта на POP3 опубликована весной 1996 года, почти 17 лет назад.

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

Сейчас уже сложно представить, что электронные письма не хранили на серверах. Их перекачивали на локальный компьютер при первой возможности и читали, сортировали по адресатам, темам и важности локально.

Интересно, что в протоколе POP2 была предусмотрена возможность работы с несколькими папками на сервере, но она оказалась невостребована, да и сам протокол распространения не получил. Поэтому в POP3 команду FOLD, которая реализовала эту возможность, убрали. POP2 обогнал время.

Сейчас в POP3 нет возможности скачивать с сервера структуру папок, только «плоский» список писем, состоящий, как правило, либо из входящих писем, либо из объединения пользовательских папок. Невозможно учитывать флажки прочтённости и важности. Несмотря на эти ограничения, протокол всё ещё широко используется, в основном из-за своей простоты и очень широкой поддержки в любых устройствах.

Было много попыток улучшить POP3, но ни одна из них не достигла такого успеха, как протокол IMAP, почти параллельно разивавшийся с 1985 года. История IMAP тоже весьма интересна. Например, первая реализация была сделана на Lisp-е, и его наследие навсегда осталось в протоколе в виде S-выражений , которыми кодируются сложные ответы сервера, такие как BODYSTRUCTURE.

Автор и идеолог IMAP Марк Криспин заложил в него принцип постоянного хранения писем на почтовом сервере. IMAP оказался одним из ранних «облачных» протоколов Интернета, рассчитанных на то, что локальное хранилище на персональном компьютере ненадёжно. Кроме того, персональных компьютеров и других терминалов для работы с почтой у человека может быть несколько - базовые вещи для нас теперешних.

Последняя версия IMAP - 4rev1 - описана в документе RFC 3501, увидевшем свет в 2003 году. Несмотря на кажущийся возраст, протокол получился живым благодаря предусмотренному на ранних этапах механизму расширений. Этот механизм, конечно, тоже не без недостатков, но тем не менее, он позволил различным людям выпустить более пятидесяти публичных расширений , многие из которых были разработаны совсем недавно и нашли широкое применение.

Современная почтовая система без поддержки доступа по IMAP - нонсенс. На протяжении нескольких лет Яндекс.Почта поддерживает IMAP в качестве сервера для работы из таких популярных клиентских программ, как Outlook, Thunderbird, Apple Mail, а также многочисленных мобильных клиентов. Кстати, именно благодаря смартфонам IMAP получил вторую волну развития. Если на персональных компьютерах уже довольно давно подавляющее большинство пользователей сделали выбор в пользу веб-интерфейса к своей почте, то с мобильными устройствами ситуация совсем не такая. Быстрые и красивые IMAP-клиенты, например в iOS, заставляют пересматривать подход к IMAP как к выбору исключительно профессиональных и «продвинутых» пользователей.

Недавно в Яндекс.Почте появилась и функция IMAP-клиента - сборщика почты с внешних серверов по IMAP - в дополнение к POP3-сборщику.

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

Включить сбор с папками в Яндекс.Почте можно со всех почтовых систем, поддерживающих протокол IMAP. Протокол непростой, у каждой реализации IMAP-сервера есть свои закидоны, и нам было важно в первую очередь обработать самый массовый вариант перехода со старой почты на новую.

По-прежнему кроме самих писем импортируются контакты из адресных книг самых распространённых почтовых сервисов.

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

Каждая команда должна быть предварена некоторым идентификатором - тегом, который затем будет использован сервером при генерации ответа на эту команду. Это позволяет «беседе» клиента с сервером быть абсолютно асинхронной - сервер вправе отвечать на команды клиента в любом порядке, так как теги позволяют однозначно сопоставить ответ ранее поданной команде. Более того, сервер может выполнять такие команды одновременно, ускоряя скорость работы с почтой, и Яндекс.Почта умеет это использовать. Одновременно это требует особого подхода к программированию как клиента, так и сервера. Если вам в этом месте вспомнился механизм sequence numbers в TCP, то запишите себе +1 в geek cred:)

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

Переходите на Яндекс.Почту, настраивайте сборщик по IMAP - и вы всегда сможете найти любое старое письмо. Уж что-что, а искать Яндекс умеет.

Что лучше: POP3 или IMAP – это не только дело вкуса.

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

Вместе с тем, POP3 до сих пор остается самым распространенным протоколом загрузки электронной почты. Расшифровывается аббревиатура «POP», как «Post Office Protocol». Он и работает, как традиционное почтовое отделение. Отличие IMAP от POP3 состоит в том, что последний похож на почтальона, который переносит письмо из конторы к вам домой. Естественно, что, если письмо находится у вас, оно уже не может быть ни в каком другом месте.

Рассматривая вопрос, что лучше: IMAP или POP3, отдавайте предпочтение второму варианту, если на сервере вам выделено немного места, а получение дополнительных мегабайт обойдется слишком дорого. Большинство поставщиков услуг электронной почты устанавливают определенную квоту на объем корреспонденции. Если она исчерпана, то получать новые электронные письма вы сможете только после удаления части старых.

IMAP – это более новая разработка. Расшифровывается он, как «Internet Message Access Protocol», и, как следует из названия, лишь обеспечивает доступ к сообщениям на сервере. Отличие IMAP от POP3 состоит в том, что первый протокол вначале запрашивает список сообщений, хранимых на почтовом сервере. После этого ваш почтовый клиент загружает локальные копии электронных писем и позволяет работать с ними, но сами письма остаются на сервере, до тех пор, пока вы явно не удалите их оттуда.

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

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

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

Уже некоторое время IMAP работает в Почте Mail.Ru в полную силу, и я готов рассказать о том, с какими проблемами мы столкнулись при его запуске. Часть из них была связана с особенностями самого протокола и с его историей, другие были обусловлены спецификой взаимодействия IMAP с нашим хранилищем. Отдельная категория трудностей вызвана многообразием почтовых клиентов.

За подробностями - добро пожаловать под кат.

Нынешний запуск IMAP - наш второй подход к снаряду. В прошлый раз мы взяли сервер Dovecot и попробовали заточить его под себя. Результат нас не устроил: с нашими нагрузками и нашей инфраструктурой он сочетался плохо. В этот раз мы решили выбрать другой путь, и написали собственное решение.


IMAP мы запустили в мае, но анонсировали только в июне. Фактически, майская аудитория - это наши сотрудники и те пользователи, у которых клиенты автоматически определили наличие IMAP в нашей Почте и подключили к нему новые добавленные аккаунты.

Трудности, специфичные для протокола IMAP

1. Громоздкость самого протокола
Первая версия протокола IMAP появилась в 1986 году. В данный момент актуален стандарт IMAP версии 4rev1, который был обновлен в 2003 году. За такой долгий срок стандарт существенно разросся: его текущая версия насчитывает порядка 200 страниц.

Сейчас многие моменты, описанные в стандарте, устарели - в сегодняшних условиях они уже не являются необходимостью. Например, в протоколе предусмотрен возврат количества строк и MD5-суммы частей письма - функционал, который фактически не используется в современных клиентах.

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

Чтобы побороть историческое наследие, нам пришлось реализовать несколько расширений. Одно из них - UID+: когда мы копируем или добавляем письмо, мы возвращаем ID нового письма, которое появилось на сервере в результате копирования или добавления. Это позволяет нам сэкономить на ресурсоемкой операции поиска, которую приходилось проводить клиенту, чтобы распознать, какое именно письмо было добавлено.

2. Отсутствие стандартного паттерна работы с сервером
IMAP предоставляет множество способов решить одну и ту же задачу и, как следствие, практически у всех клиентов паттерн работы различен. Также важно, что паттерны работы существенно отличаются от того, как работает веб-почта или POP3.


Более половины приходится на долю клиентов под устройства Apple: причина в том, что у них хорошо работает автоопределение IMAP. Outloook же, напротив, по умолчанию работает по POP3, и настраивать IMAP нужно руками.

Здесь можно выделить 2 основные категории: десктопные клиенты, которые сразу запрашивают информацию обо всех письмах в ящике или папке, и мобильные клиенты, которые изначально запрашивают информацию только о самых новых письмах. Далее нам оставалось изучить запросы, которые они делают, чтобы обновить состояние, как именно они вытягивают информацию о письмах.

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

3. Количество одновременных сессий
По стандарту, минимальный таймаут сервера - 30 минут. Кроме того, один клиент может держать сразу несколько соединений к серверу (в протоколе не указано максимальное количество разрешенных соединений). Фактически, в нашем масштабе, это означает, что один сервер должен оптимально работать с десятками тысяч одновременных соединений. При работе в синхронном режиме такое количество соединений просто поглотило бы все ресурсы.

Для решения этой проблемы я написал библиотеку для асинхронной работы, построенную на базе edge-triggered epoll. Изначально я ставил перед собой задачу сделать библиотеку, при помощи которой можно было бы в будущем за пару дней написать свой асинхронный сервер для решения других задач, помимо IMAP; в результате практически весь код можно использовать для написания других сервисов.

4. Невозможность однозначно идентифицировать клиент
Наш сервер поддерживает расширение ID, которое позволяет нам идентифицировать примерно половину клиентов. К сожалению, другая половина об этом расширении не знает (из популярных можно назвать, например, Outlook).
Понимание того, с каким клиентом мы работаем, позволяет обойти его характерные баги, а также предсказать, каким будет паттерн работы в рамках данной сессии и, соответственно, оптимизировать работу. Для нас это критично, поэтому, если клиент не называет ID, мы стараемся идентифицировать его другими путями (в случае Outlook - по тегам).
5. Отсутствие команды перемещения сообщений
В клиентах перемещение реализовано через копирование+удаление. Нам, разумеется, хочется, чтобы при этом копия письма помещалась в нужную папку, а оригинал удалялся и не захламлял корзину. С другой стороны, иногда сам пользователь копирует письмо в новую папку, а затем удаляет оригинал: в этом случае удаленное письмо должно помещаться в корзину.
Чтобы различать эти два кейса, после копирования мы в этой же сессии помечаем письмо специальным внутренним флажком. Когда сам пользователь копирует письмо и удаляет оригинал, клиент, как правило, обновляет список писем. При обновлении флажок автоматически сбрасывается, а удаленное письмо оказывается в корзине. Если же письмо (в рамках перемещения) удаляет клиент, обновления не происходит, и письмо, помеченное флажком, удаляется окончательно.

Трудности, связанные с адаптацией текущего хранилища писем и индексов

1. Идентификация сообщений
Для работы по IMAP необходимо было поддержать два вида идентификаторов сообщений: порядковый номер, который может отличаться от сессии к сессии, а также уникальный номер, который сохраняется на все время жизни сообщения. Оба идентификатора должны удовлетворять довольно строгим критериям, которые не соответствовали схеме, используемой веб-почтой и POP3-сервером.

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

Обо всех изменениях порядкового номера в рамках одной сессии мы должны оповещать клиент. Согласно стандарту, последовательность IMAP ID должна соответствовать последовательности порядковых номеров. Порядковые номера мы получим, отсортировав список писем по уникальным номерам. Когда клиент выдает новую команду, мы заново открываем соединение с хранилищем, запрашиваем время последних изменений, которые были сделаны в ящике. Если изменений со времени последнего такого запроса не было, то мы просто возвращаем ответ на команду. В ином случае мы заново запрашиваем список сообщений в папке и сравниваем с аналогичным списком клиента. Далее мы либо возвращаем информацию об изменениях, либо, если протокол не позволяет этого сделать сразу, делаем у себя пометку о том, что письмо удалено, и ждем подходящего момента, чтобы сообщить об этом клиенту.

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

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

Сейчас мы кэшируем до 50 сообщений. Почему не 2-3? Дело в том, что некоторые клиенты сначала запрашивают структуру письма, а потом тело, причем сразу для нескольких сообщений; максимальное число писем в такой «пачке» обычно составляет 50 штук.

3. Оптимальная отдача частей письма
Часто клиенты просят лишь текстовые части письма, которые могут находиться в конце самого сообщения. Для отображения сниппетов клиенты могут просить текстовые части сразу у 50-200 писем. Читать весь файл сообщения целиком (и обрабатывать 10 МБ письма для того, чтобы отдать 10 КБ текста) при этом не хочется; использовать индекс для определения позиции части внутри файла при каждом запросе также было бы накладно. В этой ситуации также спасает кэш структуры письма.
Преимущества такого подхода особенно наглядны тогда, когда клиент подгружает сниппеты для нескольких десятков писем: если бы мы не использовали кэш структуры, то для этого приходилось бы просмотреть много мегабайт и пожертвовать скоростью.

Для экономии места в наших хранилищах base64-части хранятся в декодированном виде внутри письма: при работе с веб-почтой это позволяет отдавать аттачи без лишнего перекодирования. Нужно было сделать схему отдачи частей с учетом этого перекодирования. Мы написали потоковое перекодирование на IMAP-сервере. Здесь также помог кэш - благодаря ему мы без перечитывания структуры можем понять, в каком виде (бинарном или нет) хранится тот или иной фрагмент.

4. Особенности работы некоторых клиентов
Некоторые клиенты не полностью соответствуют стандарту RFC: например, стандартные клиенты Android версий 2.2 - 2.3 не могут корректно отображать письма без возврата некоторых необязательных полей. Основная трудность заключалась в том, чтобы определить, какие именно поля каждый из таких клиентов считает для себя обязательными: приходилось решать это методом перебора.

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

Интересно ведет себя Outlook: по команде удаления письма не перемещаются в корзину, а помечаются как перечеркнутые, и затем удаляются позже. Выяснилось, что для пользователей это выглядит, как баг - многие просто не понимают, что делать дальше и как добиться того, чтобы клиент вел себя привычным образом и письма оказались в корзине.

В условиях такого разнообразия нам также было необходимо эмпирически понять, как ведет себя каждый из клиентов, и подстроиться под эти варианты - причем таким образом, чтобы пользователь мог быть уверен: независимо от того, в каком клиенте он работает, почта отреагирует на его действия привычно и предсказуемо (в данном случае - удаленное письмо окажется к корзине). Решали мы это, пробуя различные ответы через тестовый прокси-сервер и отслеживая реакцию клиента на каждый из вариантов.

То, что мы вынесли для себя: IMAP - достаточно «развесистая» штука, с множеством исторических особенностей, нажитых за 26 лет, которые умножаются на разнообразие почтовых клиентов. При наших нагрузках это выливается в то, что брать готовое решение и пытаться заточить его под себя нерационально: в лучшем случае объем работы будет таким же, как при самостоятельной разработке решения. Этим путем мы и пошли:)

Виктор Стародуб,
команда Почты Mail.ru

Вопрос безопасности становится все более важным по мере распространения информационных технологий. Здесь приходится прорабатывать различные аспекты, которые касаются многих разработок. Так, например, многих интересует вопрос, что такое IMAP безопасность. Насколько надежен InternetAccessProtocol?


Какие преимущества он имеет? Для чего разрабатывался? Какие существуют версии? Какой механизм работы используется? Со всеми этими вопросами мы попытаемся разобраться в рамках данного обзора.

Что такое IMAP?

Безопасность переписки особенно важна в связи с тем, что в ней может содержаться различная информация. Протокол IMAP используется для обеспечения доступа к данным электронной почты только для тех пользователей, которые имеют на это право. Он был разработан на основе TCP. Данный протокол использует 143 порт. IMAP позволяет работать с почтой, которая находится на центральном сервере. Программное обеспечение, которое использует данный протокол, совершает необходимые действия так, что создается впечатление, будто вся корреспонденция хранится на компьютере пользователя.

При больших объемах пересылки может использоваться специальный сервер IMAP. Для манипуляции с письмами не требуется постоянная пересылка к получателю файлов с содержимым. Это далеко не единственный протокол, который сегодня используется в работе с почтовыми сервисами. Для отправки писем может использоваться протокол SMTP, так как в IMAP команда отправки не может гарантировать безопасность на все 100%. У этого протокола имеются некоторые известные уязвимости.

Для чего был разработан протокол IMAP?

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

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

Почему же стал применяться именно протокол IMAP? Все дело в том, что помимо перечисленных выше, этот протокол предоставляет целый ряд преимуществ:

— соединение не разрывается, пока пользовательский интерфейс активен;
— сообщения будут загружены только в случае наличия со стороны клиента соответствующих требований;
— возможно осуществление одновременного доступа нескольких пользователей, при этом каждый из пользователей может следить за выполненными изменениями;
— клиент получает возможность создать, удалять или менять название ящиков. Также между ящиками можно перемещать сообщения;
— при наличии расширения IMAP 4 AccessControlList имеется возможность изменения прав доступа;
— можно также следить за состоянием самого сообщения. Данные об операциях называются флагами и хранятся на серверах;
— поиск нужного сообщения осуществляется на сервере. Существует специальный механизм расширениям.

Сообщения и их атрибуты

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

При работе с протоколом IMAP каждое сообщение получает свой собственный 32-битный код. К коду добавляется уникальный идентификатор. Код и идентификатор вместе образуют 64-битную последовательность. Она необходима для идентификации сообщения. Вот так реализуется безопасность в протоколе IMAP. Чем позднее пришло сообщение, тем большее значение будет иметь UID. Данный параметр используется в виде кода отклика в процессе выбора почтового ящика. Этот код не изменяется во время сессии или между ними. Если по техническим условиям требуется редактирование данного параметра, то UID обязательно должен быть больше, чем ранее. Для передачи информации используется порт IMAP.

Номер сообщения

Порядковый номер сообщения начинается с 1. Каждое последующее сообщение будет иметь номер больше на 1 по сравнению с предыдущим. Отличие от почтового ящика состоит в том, что данный номер может меняться во время сессии, например, в том случае, если было выполнено удаление письма.

Флаги сообщений

Данный атрибут представляет собой список, в котором имеется нуль или большое количество именованных лексем, соотнесенных с основной информацией. В протоколе IMAP 4.1 были внедрены флаги двух типов. Действовать они могут временно, например, на протяжении сессии, а могут быть постоянными. Системным называют тот флаг, для которого имя определяется в спецификации протокола. Все флаги обязательно должны начинаться с символа «\». На сегодняшний день определены следующие системные флаги:

— \seen– сообщение уже прочитано;
— \answered – ответ отправлен;
— \recent – сообщение появилось во время текущей сессии;
— \draft – сообщение было отмечено как черновой вариант;
— \flagged – пользователь отметил данное сообщение как важное;
— \deleted – пользователь удалил сообщение.

Внутренние дата и время

Каким образом определяются данные параметры и какие величины должны в них быть указаны? Если сообщение было доставлено при помощи протокола SMTP, то берется время и дата конечного адресата. Если применялась команда копирования, то берутся параметры отправителя. Можно задать собственную дату и время. Для этого необходимо использовать команду append.

Взаимодействие клиента и сервера

При использовании протокола IMAP связь устанавливается по принципу клиент-сервер. Клиент посылает от себя все полученные команды, а сервер шлет запрошенные данные и информацию на выполнение запроса. Сообщения имеют форму строк, которые завершаются специальной последовательностью. Все процедуры выполняются по команде клиента. Распознаются они при помощи специального префикса-идентификатора. В качестве данного идентификатора используется краткая буквенно-цифровая строка.

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

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

Что можно сказать про использование популярных почтовых сервисов? Простым пользователям IMAP настройки недоступны. Их можно выполнить только в том случае, если письмо отправляется при помощи специальной клиентской программы. Причем, данные настройки действуют только по отношению к входящим письмам. Для чего нужны отклики? Они сообщают пользователю об успешном или неудачном выполнении запроса. Отклик всегда использует ту же метку, которую использовала команда клиента при запуске процедуры.

По этой причине возможна многопоточная передача данных. Для разъяснения данной ситуации могут использоваться три типа откликов: успешное выполнение, неудача и протокольная ошибка IMAP. Клиент должен быть готов всегда обработать любой отклик, который поступает к нему. Данные должны быть записаны так, чтобы клиент мог использовать их без необходимости отправки уточняющих запросов серверу. Подобное довольно часто можно видеть в Gmail. Настройки IMAP могут быть изменены или отредактированы при использовании почтовых клиентов с широким набором функций.

Базируется на транспортном протоколе TCP и использует порт 143.

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

Для отправки писем используется обычно протокол SMTP , так как собственная команда отправки протокола IMAP, называемая APPEND, считается «неудачной» и «небезопасной».

Энциклопедичный YouTube

    1 / 5

    ✪ Principais diferenças entre IMAP e POP3

    ✪ POP3 vs IMAP, which one should you choose? | 123-reg Support

    ✪ REPORTAJE IMAP

    ✪ How To Enable Gmail IMAP Settings

    ✪ What is IMAP and How To Use It | Email Tutorial

    Субтитры

Цель разработки протокола IMAP

Протокол IMAP представляет собой, в основном, альтернативу POP3 с зачаточными способностями по отправке.