Что значит проверка почты по imap
Что такое IMAP и POP?
IMAP и POP — это два метода доступа к электронной почте. Рекомендуется использовать IMAP, если вам требуется проверять почту с нескольких разных устройств (например, телефона, ноутбука и планшета).
IMAP обеспечивает вам доступ к электронной почте с любого устройства, где бы вы при этом ни находились. Когда вы читаете почтовое сообщение с помощью IMAP, оно не скачивается и не сохраняется на вашем компьютере — вы просто читаете его из службы электронной почты. Это приведет к проверке электронной почты с разных устройств в любой точке мира: телефона, компьютера, компьютера друга.
IMAP скачивает сообщение, только когда вы его щелкаете, и вложения не скачиваются автоматически. Так вы сможете проверять сообщения гораздо быстрее, чем с помощью POP.
POP связывается с вашей службой электронной почты и скачивает из нее все новые сообщения. После скачивания на компьютер с Windows или Mac OS сообщения удаляются из почтовой службы. Это значит, что после скачивания почтового сообщения к нему можно обращаться только с того же компьютера. Если вы попытаетесь обратиться к сообщению с другого устройства, ранее скачанные сообщения будут недоступны.
Отправленная почта хранится локально на компьютере с Windows или Mac OS, а не на почтовом сервере.
Многие поставщики услуг Интернета предоставляют учетные записи электронной почты, которые используют POP.
Учетные записи веб-почты или почтовые приложения
Gmail, Outlook.com, Hotmail.com и iCloud — это веб-почта. Вход в учетную запись веб-почты выполняется в Интернете.
Если у вас есть компьютер с Windows или Mac OS, то для управления электронной почтой вы, вероятно, используете программу типа Outlook, Apple Mail или Thunderbird. Outlook, Apple Mail и Thunderbird — это почтовые приложения,которые вы устанавливаете на компьютере для управления электронной почтой. Они взаимодействуют с почтовыми службами, такими как Gmail или Outlook.com, получая и отправляя почту.
В почтовое приложение вы можете добавить любую учетную запись электронной почты, чтобы управлять ею оттуда. Например, вы можете добавить в приложение Outlook или Apple Mail учетные записи веб-почты (Gmail, Outlook.com, Hotmail.com, AOL и Yahoo) и почтовые учетные записи, предоставленные вашей организацией.
Добавление учетных записей веб-почты в почтовые приложения, такие как Outlook, Apple Mail, Thunderbird
Когда вы добавляете учетную запись электронной почты в почтовое приложение, оно пытается настроить доступ методом IMAP без вашего участия.
Трудности, которые могут при этом возникать у почтового приложения, обычно связаны с тем, что учетная запись настроена для доступа методом POP. В этом случае вам нужно перейти к поставщику услуг электронной почты и узнать имена pop- и SMTP-серверов, чтобы ввести данные в почтовое приложение. Эти сведения обычно выглядят как-то так:
Сервер входящих сообщений (IMAP): imap. имя службы>.com
Сервер входящей почты (POP): pop. имя службы>.com
Сервер исходящей почты (SMTP): smtp. имя службы>.com
Проверка подлинности подключения IMAP, POP или SMTP с помощью OAuth
Узнайте, как использовать проверку подлинности OAuth для подключения к протоколам IMAP, POP или SMTP и доступа к данным электронной почты для Office 365 пользователей.
Поддержка OAuth2 протоколов IMAP, POP, SMTP, как описано ниже, поддерживается как для пользователей Microsoft 365 (включая Office в Интернете), так и для Outlook.com.
Если вы не знакомы с протоколом OAuth 2.0, начните с чтения протокола OAuth 2.0в платформа удостоверений Майкрософт обзоре. Дополнительные сведения о библиотеках проверки подлинности Майкрософт (MSAL), которые реализуют протокол OAuth 2.0 для проверки подлинности пользователей и доступа к защищенным API, см. в обзоре MSAL.
Вы можете использовать службу проверки подлинности OAuth, предоставляемую Azure Active Directory, чтобы позволить приложению подключаться к протоколам IMAP, POP или SMTP для доступа к Exchange Online в Office 365. Чтобы использовать OAuth с приложением, необходимо:
Регистрация приложения
Чтобы использовать OAuth, приложение должно быть зарегистрировано в Azure Active Directory.
Следуйте инструкциям, перечисленным в Списке приложения с платформа удостоверений Майкрософт создать новое приложение.
Получение токена доступа
Вы можете использовать одну из наших клиентских библиотек MSAL для получения маркера доступа из клиентского приложения.
Кроме того, вы можете выбрать соответствующий поток из следующего списка и следуйте соответствующим шагам, чтобы вызвать API-API платформы REST и получить маркер доступа.
Доступ OAuth к протоколам IMAP, POP, SMTP AUTH через поток клиентских учетных данных OAuth2 не поддерживается. Если вашему приложению необходим постоянный доступ ко всем почтовым ящикам в Microsoft 365 организации, рекомендуется использовать API Microsoft Graph, которые позволяют получить доступ без пользователя, включить гранулярные разрешения и разрешить администраторам использовать такой доступ к определенному набору почтовых ящиков.
Убедитесь, что при авторизации приложения и запросе маркера доступа укажите полные области, в том числе URL Outlook ресурсов.
Протокол | Строка область разрешений |
---|---|
IMAP | https://outlook.office.com/IMAP.AccessAsUser.All |
POP | https://outlook.office.com/POP.AccessAsUser.All |
SMTP AUTH | https://outlook.office.com/SMTP.Send |
Кроме того, вы можете запросить offline_access области. Когда пользователь утверждает область offline_access, ваше приложение может получать маркеры обновления из конечной точки платформа удостоверений Майкрософт маркера. Маркеры обновления являются длительными. Ваше приложение может получать новые маркеры доступа по мере истечения срока действия старых маркеров.
Проверка подлинности запросов на подключение
SASL XOAUTH2
Интеграция OAuth с требует от приложения использования формата SASL XOAUTH2 для кодиации и передачи маркера доступа. SASL XOAUTH2 кодирует имя пользователя, маркер доступа вместе в следующем формате:
^A представляет управление + A ( %x01 ).
Например, формат SASL XOAUTH2 для доступа test@contoso.onmicrosoft.com с маркером EwBAAl3BAAUFFpUAo7J3Ve0bjLBWZWCclRC3EoAA доступа:
После кодирования base64 это переводится на следующую строку. Обратите внимание, что для читаемости вставляются разрывы строк.
Проверка подлинности SASL XOAUTH2 для общих почтовых ящиков в Office 365
В случае общего доступа к почтовым ящикам с помощью OAuth приложению необходимо получить маркер доступа от имени пользователя, но заменить поле userName в закодированной строке SASL XOAUTH2 на адрес электронной почты общего почтового ящика.
Протокол IMAP Exchange
Чтобы проверить подлинность подключения к серверу IMAP, клиент должен будет ответить командой AUTHENTICATE в следующем формате:
Пример обмена сообщениями клиента и сервера, который приводит к успеху проверки подлинности:
Пример обмена сообщениями клиента и сервера, который приводит к сбою проверки подлинности:
Протокол POP Exchange
Чтобы проверить подлинность подключения к pop-серверу, клиент должен будет ответить командой, разделенной на две строки в AUTH следующем формате:
Пример обмена сообщениями клиента и сервера, который приводит к успеху проверки подлинности:
Пример обмена сообщениями клиента и сервера, который приводит к сбою проверки подлинности:
Протокол SMTP Exchange
Чтобы проверить подлинность подключения smTP-сервера, клиент должен будет ответить командой AUTH в следующем формате:
Пример обмена сообщениями клиента и сервера, который приводит к успеху проверки подлинности:
Пример обмена сообщениями клиента и сервера, который приводит к сбою проверки подлинности:
Диагностика почтовых протоколов
Эта статья о методах диагностики почтовых протоколов. Она предназначена для начинающих администраторов, желающих больше узнать об инструментах для быстрого тестирования авторизации/отправки/приема почтовых сообщений как сервером, так и клиентом. Но также может служить хорошей памяткой соответствующих команд и для более опытных администраторов.
Материал разбит следующим образом:
1. Введение
В сети достаточно материалов по отдельным пунктам, но все разбросано по разным местам и, когда возникает необходимость выполнить ту или иную операцию, приходится по разным ресурсам вспоминать нюансы авторизации, способы быстрой кодировки в base64, ключи к openssl и tshark. Здесь все собрано вместе, а также добавлена информация о дешифровке SSL/TLS трафика.
Обозначения
$ — приглашение в обычном шелле, указанная после него команда выполняется от обычного пользователя
# — приглашение в рутовом шелле, указанная после него команда выполняется с правами администратора
## — строка с комментарием
Запрос клиента в почтовых сессиях выделен жирным шрифтом.
Почтовые порты
Основные порты, использующиеся в работе почтовых серверов по RFC (документы, регламентирующие работу сети интернет и ее основных компонентов):
Здесь перечислены только основные, помимо них разные реализации серверов могут использовать другие порты для своих служебных целей, для пользовательского и административного веб-интерфейса, общения узлов кластера и т.д.
Используемые и рекомендуемые утилиты
В статье используются telnet, openssl, tshark. Для наглядности взаимодействия сервера и клиента, использования команд протокола. На регулярной основе и для автоматизации каких-то процессов можно использовать утилиты, которые скрывают от нас все эти детали, но которые проще включаются в скрипты. Из таких утилит могу порекомендовать скрипт на perl smtp-cli (http://www.logix.cz/michal/devel/smtp-cli/), обладающий широкой функциональностью, в том числе и возможностью SMTP авторизации. Также рекомендую утилиту imtest из состава cyrus-clients, которой можно протестировать IMAP протокол. smtp-sink, утилиту из состава postfix, которая эмулирует почтовый сервер. С ее помощью можно отлаживать работу почтового клиента в том случае, если нет ни доступа к существующим почтовым серверам, ни возможности включения в настройках клиента подробного журналирования.
При помощи nmap можно быстро проверить, доступны ли порты снаружи, то есть, слушаются ли они программами и не закрыты ли при этом файерволом:
По этому выводу видно, что на сервере доступны SMTP/IMAP порты, но недоступны порты для
POP3 протокола.
Через netstat можно посмотреть не только прослушиваемые и используемые порты, как часто предполагают, но и процессы, связанные с этими портами. Вот вывод netstat для этого же почтового сервера:
В этом примере в качестве SMTP сервера используется postfix и dovecot в качестве IMAP. POP3 в списке отсутствует, так как в настройках dovecot этот протокол отключен, как неиспользуемый.
В современных дистрибутивах пакет net-tools уже часто не ставится, считается устаревшим. В качестве замены испольуется утилита ss из состава iproute. Это более узко заточенная и в свой области, вероятно, более функциональная утилита с возможностью настройки фильтров как в tcpdump/tshark. Но мне, например, не нравится, как у нее отформатирован вывод информации. Чтобы чуть это исправить, можно использовать sed:
*) для удобства использования можно поместить следующую bash функцию в
2. Примеры сессий
Здесь приведены примеры сессий по SMTP/IMAP/POP3 протоколам. Для соединения используется клиент телнет, который либо в системе установлен по-умолчанию, либо устанавливается из репозиториев:
Internet Message Access Protocol (imap) — протокол доступа к почте
Первая версия появилась в 1986 году, тогда протокол расшифровывался, как Interim Mail Access Protocol. Вторая версия вышла в 1988 году, название протокола было изменено на Interactive Mail Access Protocol. В 1991 году появилась третья версия, и в 1994 году четвертая версия протокола IMAP4, которую мы используем до сих пор. Спецификация чертой версии протокола IMAP была обновлена в 2003 году, после этого вышли дополнительные расширения протокола IMAP4.
Архитектура электронной почты
Протокол IMAP, также как и протокол РОР3 используется для чтения электронной почты, которая уже пришла в почтовый ящик пользователя. Для передачи почты используется протокол SMTP, а не IMAP.
Протокол IMAP
В отличие от протокола РОР3 в котором почтовые клиенты загружают все письма к себе и сразу их удаляют с сервера, в протоколе IMAP письма постоянно сохраняются на сервере. Клиенты загружают не все письма сразу а только те, которые пользователи явно запросил, кроме этого есть возможность синхронизации, при которой почтовый клиент, переписывает все письма с сервера но не удаляет их. IMAP сервер в отличие от РОР3 сервера, может выполнять с письмами вполне сложные действия, например выполнять поиск писем по заданному шаблону.
Преимущества протокола IMAP заключается в том, что с почтовым ящиком может одновременно работать несколько клиентов, и это соответствует современной модели работы с электронной почтой. У нас у всех есть несколько устройств, некоторые из них мобильные и мы хотим видеть единое состояние почтового ящика с помощью всех этих устройств.
С другой стороны, для того чтобы это обеспечить требуется протокол гораздо более сложный, чем РОР3. Повышенная сложность является существенным недостатком протокола IMAP. Другой недостаток заключается в том, что дисковая пространство на сервере, как правило ограничено, таким образом приходиться удалять письма из почтового ящика, чтобы он не переполнился.
Место в стеке TCP/IP
В стеке протоколов TCP/IP протокол IMAP находится на прикладном уровне.
IMAP использует протокол транспортного уровня TCP. Сервер IMAP работает на 143 порту.
Папки (mailbox)
В отличие от протокола РОР3, протокол IMAP позволяет использовать несколько почтовых ящиков (mailbox) или по-русски папки.
Папки хранятся на сервере, они могут быть вложены в друг друга и письма можно перемещать между разными папками.
В протоколе РОР3 создания папок и фильтрация сообщений используется локально с помощью почтовых клиентов. В IMAP есть папка специального типа INBOX, это почтовый ящик пользователя по умолчанию, именно туда записываются все входящие письма. Затем можно выполнять их сортировку с помощью почтовых клиентов, либо с помощью специальных программ.
Флаги
Другое отличие протокола IMAP от РОР3, это использование флагов. Именно благодаря флагам, протокол IMAP позволяет узнать прочитанное это сообщение или нет, а также много другой полезной информации.
Флаги в IMAP это небольшая метка (token) которая добавляется к письму. Письмо может иметь несколько меток или не иметь ни одной. Флаги в IMAP бывают двух типов: Системные и Пользовательские.
Системные флаги и их назначения заданы в стандарте IMAP и они начинаются с обратного слеша (\).
Также могут создаваться Пользовательские флаги. Они не могут начинаться с символа \.
Состояния сеанса IMAP
При работе по протоколу IMAP клиент проходит через четыре состояния.
Протокол IMAP, также как и другие почтовые протоколы работают в текстовом режиме и использует взаимодействие запрос-ответ. Однако существенным отличием является то, что IMAP позволяет выполнять одновременно несколько команд. Некоторые команды IMAP могут работать достаточно долго, например, поиск какого-то письма в большом почтовом ящике, где много писем, массовое обновление писем или другие подобные операции. Клиент может не дожидаться выполнения текущей команды, а запустить другую команду.
Для того чтобы отличать разные команды и ответы на них, в протоколе IMAP используются идентификаторы или теги команд. Это просто алфавитно-цифровая строка (А0001,А0002). Каждая команда клиента должна начинаться с тега. Сервер включает этот тег в ответ на команду, для того чтобы можно было определить к какой именно команде этот ответ относится.
Ответы IMAP
Ответ IMAP также как и других почтовых протоколов состоит из двух частей: Статус и Поясняющее сообщение.
В Статусе в ответов IMAP всего лишь три:
Пример сеанса IMAP
Команд в протоколе IMAP очень много, поэтому мы не будем перечислять их все.
Рассмотрим пример сеанса чтение писем. Подключаемся к серверу IMAP с использованием соединения TCP порт 143.
* OK Cyrus IMAP 4 server ready //сервер выдает сообщения со статусом ОК, сервер готов. Сеанс находится в состоянии preautentificated.
A0001 LOGIN username password // клиенту необходимо пройти аутентификацию, для этого используется команда LOGIN, в отличие от протокола РОР3 в команде LOGIN указываются одновременно имя пользователя и его пароль. Обратите внимание, что перед началом команды клиент указывает метку А0001
A0001 OK User logged in // в ответ сервер выдает сообщение тоже самой меткой, статус сообщения ОК команда выполнена успешна, поясняющее сообщение USER прошел аутентификацию.
Сейчас мы находимся в состоянии «аутентификация пройдена» и нам необходимо выбрать папку, с которой мы хотим работать.
A0002 LIST “” “*” // для того чтобы получить список всех папок используется команда LIST.
* LIST (\ HasChildren) “/” “INBOX” // Основная папка INBOX именно она считается основным почтовым ящиком пользователя и в нее доставляются все письма. В этой папке есть вложенные папки (\ HasChildren)
* LIST (\ HasChildren) “/” “INBOX/Drafts” // папка Draft черновики
* LIST (\ HasChildren) “/” “INBOX/Junk” // папка Junk спам
* LIST (\ HasChildren) “/” “INBOX/Sent” // папка Sent отправленные письма
* LIST (\ HasChildren) “/” “INBOX/Trash” //папка Trash корзина
A0002 OK Completed //завершается вывод ответом сервера ОК и номером метки А0002 указывающее, к какой команде относится ответ.
Выбор папки
Следующий этап сеанса IMAP это выбор папки из которой мы хотим читать письма.
A0003 SELECT INBOX //для этого используется команда SELECT, выбираем папку INBOX
* OK [UIDVALIDITY 1340776425]
A0003 OK [READ-WRITE] Completed
Просмотр списка писем
А0004 FETCH 1: * FLAGS // для того чтобы посмотреть какие сообщения есть на сервере используется команда FETCH ей необходимо указать номер письма, с которым мы хотим работать, либо диапазон через двоеточия. Диапазон от 1:* говорит от том, что мы хотим получить информацию обо всех письмах, затем указывается именно информацию мы хотим получить.
С начала мы хотим посмотреть флаги, в ответ сервер выдает перечень писем с флагами.
* 1 FETCH (FLAGS (\Seen)) // некоторые письма мы смотрели
* 2 FETCH (FLAGS (\Seen))
* 3 FETCH (FLAGS (\Answered \Seen)) // на некоторые мы отправили ответ
* 177 FETCH (FLAGS ()) // мы к нему подключались, но мы его не посмотрели.
* 178 FETCH (FLAGS (\Recent))
* 179 FETCH (FLAGS (\Recent)) // эти 3 письма мы видим в первый раз
* 180 FETCH (FLAGS (\Recent))
A0004 OK Completed (0.00 sec)
Чтение письма и установка флагов
A0005 FETICH 180 BODY [] // для того чтобы посмотреть письмо используется команда FETCH, указываем номер письма 180 последнее письмо, которое пришло, и что именно мы хотим посмотреть тело сообщения полностью BODY []
* 180 FETICH (FLAGS (\Recent \Seen) BODY [] <7077>//Сначала показываются флаги сообщения (FLAGS (\Recent \Seen), сервер автоматический установил у сообщения флаг Seen, означает то, что оно было просмотрено
Передача тела письма // а после этого выводиться само сообщение
Мы посмотрели сообщение или передали его на клиент, предположим, что мы решили, что в сообщение нет ничего интересного и его нужно удалить.
А0005 OK Completed (0.000 sec)
A0006 STORE 180 +FLAGS \Deleted // для этого необходимо установить флаг Deleted и это делается с помощью команды STORE, нужно указать номер сообщения 180, что именно мы хотим сохранить, хотим установить флаг +FLAGS и какой именно флаг хотим установить Deleted
* 180 FETICH (FLAGS (\Recent \Deleted \Seen)) // результат выполнение команды у сообщения номер 180 установлен флаг Deleted в дополнение к двум флагам, которые уже были установлены Recent и Seen
A0006 OK Completed
Удаление писем и выход
В IMAP также как в РОР3 сообщения не удаляются сразу после того, как они были помечены на удаление.
A0007 EXPUNGE // В IMAP для этого используется специальная команда EXPUNGE. После того как это команда запущена, из папки удаляются все сообщения, которые были помечены на удаление. Если не запустить эту команду, а просто разорвать соединение, то в отличие от протокола РОР3 сообщения удалены не будут.
A0007 OK Completed
A0008 LOGOUT //для разрыва соединений используется команда LOGOUT
* BYE LOGOUT received //сервер отвечает, что полученная команда LOGOUT говорит нам пока.
A0008 OK Completed //и выдает ответ ОК команда выполнена.
После этого соединение разрывается.
Другие команды IMAP
В протоколе IMAP имеется больше количество других команд.
Команда Перемещение писем:
С помощью команды SEARCH можно искать письма на сервере по требуемую шаблону.
Команда CLOSE выполняет закрытие папки, удаление в папке всех сообщений, которые помечены на удаление и переход в состояние authenticated. В этом состоянии клиент может выбрать другую папку и продолжить работу с ней.
Эти команды, а также те же команды, которые мы перед этим рассматривали могут использовать большое количество разных аргументов, для того чтобы разобраться с ними подробно вам придется изучать документацию или стандарт протокола IMAP.
Заключение
И так мы рассмотрели протокол IMAP. Он используется для чтения писем из почтового ящика пользователя.
Все письма хранятся на сервере, и с почтовым ящиком можно одновременно работать с нескольких устройств. Все эти устройства будут видеть согласованное состояние писем на сервере. Для отслеживание статуса сообщений в IMAP используются флаги, также в IMAP для удобства организации сообщений позволяет создавать на сервере папки.
Недостатком протокола — он очень сложный, с одной стороны это обусловлено тем, что задача, которую пытались решить разработчики протокола действительно является сложной, нужно обеспечить одновременную работу с почтовым ящиком нескольких клиентов, при чем эти клиенты могут выполнять запросы одновременно. В том числе конфликтующие между собой. С другой стороны протокол разрабатывался достаточно давно в конце 90-х в начале 2000-х готов и тогда у разработчиков протоколов не было достаточно опыта.
Другой недостаток вызван тем, что все почтовые письма всех пользователей хранятся на сервере, если пользователей много, то серверу требуется большое количество дискового пространства. Однако сейчас, когда жесткие диски стали большими и относительно дешевыми, это уже не является такой большой проблемой.
Что такое POP3 и IMAP-серверы?
POP3 — протокол для приема сообщений электронной почты.
IMAP — более современный протокол, поддерживающий прием и возможность управления электронной почтой прямо на почтовом сервере.
При просмотре почты с использованием протокола POP3 все электронные письма скачиваются пользователю на компьютер и автоматически удаляются с сервера (хотя это можно отключить). Все дальнейшие действия с письмами будут производиться именно на компьютере пользователя. Протокол POP3 может быть удобен, если почтовым ящиком пользуется лишь один человек с одного-единственного компьютера, а доступ в интернет ограничен или непостоянен.
При использовании протокола IMAP электронные письма всегда находятся на сервере и синхронизируются с локальными клиентами. Это очень удобно, когда необходим доступ к почтовому ящику с нескольких устройств (компьютер, ноутбук, телефон, планшет), или когда доступ должны иметь несколько человек — все операции с письмами, которые произведены на одном устройстве (пометка письма как прочтенное, перемещение писем между папками, удаление и т. п.) отобразятся на остальных. Если вы планируете наряду с почтовым клиентом использовать и веб-интерфейс, почтовый клиент надо также настраивать через IMAP.
Недостатком IMAP можно назвать чуть большее количество потребляемого интернет-трафика.
Доступ по протоколам POP3 и IMAP предоставляется только при подключении услуги «Почтовый сервис» в разделе «Почта / Услуги». Эта услуга позволит только принимать входящую почту, а отправлять письма через веб-интерфейс или сторонний SMTP-сервер.
При подключении услуги «SMTP-сервер» вы сможете отправлять почту, используя наш SMTP-сервер.