Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | imap [2024/08/11 13:03] (текущий) – [Команды IMAP] darkfire | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Команды IMAP ====== | ||
+ | |||
+ | ~~Title: Как использовать IMAP (Internet Mail Access Protocol) протокол доступа к почте интернет | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Что такое сервер IMAP. Описание команд IMAP. Тестирование IMAP telnet SSL.) | ||
+ | }} | ||
+ | |||
+ | {{ :: | ||
+ | |||
+ | * [[Telnet]] и MTA. Тестирование почтовых серверов при помощи telnet. | ||
+ | * [[openssl]] и MTA. Тестирование почтовых серверов с использованием зашифрованного соединения. | ||
+ | Протокол **IMAP** (Internet Mail Access Protocol) (англ. протокол доступа к почте интернет) описывается в [[RFC]] 2060. IMAP — это двусторонний протокол доступа к электронной почте, который копирует её с удалённого сервера, | ||
+ | |||
+ | В отличии от [[pop3|POP3]], | ||
+ | |||
+ | Как и [[pop3|POP3]], | ||
+ | <file bash> | ||
+ | 1 [jessica@shadrach jessical$ telnet localhost 143 | ||
+ | 2 Trying 127.0.0.1 ... | ||
+ | 3 Connected to localhost. | ||
+ | 4 Escape character is ' | ||
+ | 5 * OK shadrach.smallorg.org IMAP4revl V12.250 server ready | ||
+ | 6 a001 LOGOUT | ||
+ | 7 * BYE shadrach.smallorg.org IMAP4rev1 server terminating connection | ||
+ | 8 a001 OK LOGOUT completed | ||
+ | 9 Connection closed by foreign host. | ||
+ | 10 [jessica@snadrach jessica]$ | ||
+ | </ | ||
+ | В строке 1 показана команда на открытие сеанса с помощью telnet с портом 143 (порт IMAP по умолчанию). Строка 5 отображает приглашение, | ||
+ | |||
+ | Каждая команда, | ||
+ | |||
+ | После установления соединения клиент находится в состоянии ожидания проверки подлинности, | ||
+ | ===== Методы проверки подлинности пользователя в IMAP ===== | ||
+ | Так же как и в протоколе POP3, в IMAP имеется несколько методов проверки подлинности клиента. Некоторые из них обеспечивают больший уровень безопасности, | ||
+ | ==== Команда LOGIN ==== | ||
+ | Команда LOGIN позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде. | ||
+ | ==== Команда AUTHENTICATE ==== | ||
+ | С помощью команды AUTHENTICATE клиент может использовать при регистрации на сервере IMAP альтернативные методы проверки подлинности. Индивидуальная проверка подлинности пользователей не является обязательной и поддерживается не всеми серверами IMAP. К тому же реализации такой проверки могут различаться в зависимости от сервера. Когда клиент выдает команду AUTHENTICATE, | ||
+ | <file bash> | ||
+ | 1 [riley@shadrach riley]$ telnet localhost 143 | ||
+ | 2 Trying 127.0.0.1... | ||
+ | 3 Connected to localhost. | ||
+ | 4 Escape character is ' | ||
+ | 5 * OK localhost IMAP4rev1 v12.250 server ready | ||
+ | 6 a1 AUTHENTICATE KERBEROS_V4 | ||
+ | 7 a1 NO AUTHENTICATE KERBEROS_V4 failed | ||
+ | 8 a2 AUTHENTICATE GSSAPI | ||
+ | 9 a2 NO AUTHENTICATE GSSAPI failed | ||
+ | 10 a3 AUTHENTICATE LOGIN | ||
+ | 11 + VXNlciBOYU1lAA== | ||
+ | 12 * | ||
+ | 13 a3 NO AUTHENTICATE LOGIN failed | ||
+ | 14 a4 LOGIN riley firetruck | ||
+ | 15 a4 OK LOGIN completed | ||
+ | 16 a5 LOGOUT | ||
+ | 17 * BYE shadrach.smallorg.org IMAP4rev1 server terminating connection | ||
+ | 18 a5 OK LOGOUT completed | ||
+ | 19 connection closed by foreign host. | ||
+ | 20 [riley@shadrach riley]$ | ||
+ | </ | ||
+ | В строках 6–9 показаны попытки клиента согласовать с сервером IMAP метод проверки подлинности. Как видите, | ||
+ | ===== Клиентская часть протокола IMAP ===== | ||
+ | После регистрации на сервере IMAP клиент может приступить к манипулированию сообщениями. Протокол IMAP предлагает довольном много команд для чтения, | ||
+ | |||
+ | Почтовый ящик для клиента по умолчанию носит название INBOX. Все новые сообщения ложатся именно в INBOX. Клиент имеет возможность создавать новые почтовые ящики (иногда называемые в программах-клиентах для работы с электронной почтой папками). Туда с целью упорядочения он может перемещать сообщения из папки INBOX. | ||
+ | |||
+ | Каждому сообщению назначается уникальный идентификатор (UID), по которому они идентифицируются в почтовом ящике. Метка UID сохраняется в течение всех сеансов IMAP для того, чтобы клиентское программное обеспечение могло правильно идентифицировать сообщения в почтовом ящике. Каждому почтовому ящику соответствует уникальный идентификатор достоверности (UIDVALIDITY). Метка UIDVALIDITY должна присутствовать во время всех сеансов IMAP, только в том случае, | ||
+ | |||
+ | Каждое сообщение снабжается флагом, | ||
+ | |||
+ | Флаги почтового сообщения IMAP | ||
+ | < | ||
+ | Флаг Описание | ||
+ | \Seen Сообщение прочитано | ||
+ | \Answered На сообщение послан ответ | ||
+ | \Flagged Сообщение принудительно отмечено | ||
+ | \Deleted Сообщение удалено | ||
+ | \Draft Сообщение не окончено (черновик) | ||
+ | \Recent Новое сообщение в почтовом ящике | ||
+ | </ | ||
+ | Почтовому сообщению может соответствовать 0 флагов или несколько флагов. Информация о флагах передается клиенту вместе с самим сообщением. В обязанности клиента входит интерпретация флагов соответствующим образом. | ||
+ | |||
+ | В следующем разделе описываются команды IMAP, которые клиент может задавать серверу. < | ||
+ | ==== Команда SELECT ==== | ||
+ | Команда SELECT используется, | ||
+ | < | ||
+ | SELECT mailbox | ||
+ | </ | ||
+ | Здесь mailbox — это название почтового ящика, к которому обращается клиент. Во время одного сеанса IMAP может быть активен только один почтовый ящик. Если ящик существует и у клиента имеется соответствующий доступ к нему, то сервер дает многострочный ответ, где описывается состояние почтового ящика. | ||
+ | ==== Команда CREATE ==== | ||
+ | Команда CREATE используется для создания нового почтового ящика на сервере IMAP. Имя и местоположение новых почтовых ящиков определяются в соответствии с общими спецификациями ОС Linux. В рабочем каталоге пользователя создается новый почтовый ящик с именем, | ||
+ | |||
+ | < | ||
+ | ==== Команда DELETE ==== | ||
+ | Команда DELETE применяется к почтовым ящикам, | ||
+ | ==== Команда RENAME ==== | ||
+ | С помощью команды RENAME клиент может изменить имя почтового ящика. При этом возможно применение двух параметров. Первый параметр — собственно имя почтового ящика, который требуется переименовать. И второй параметр — новое имя почтового ящика.< | ||
+ | ==== Команда LIST ==== | ||
+ | Команда LIST используется для получения списка всех почтовых ящиков клиента. С ней используются два параметра. Формат команды LIST приведен ниже: | ||
+ | < | ||
+ | LIST reference mailbox | ||
+ | </ | ||
+ | Здесь reference — каталог, | ||
+ | ==== Команда LSUB ==== | ||
+ | Команда LSUB используется для устранения проблемы, | ||
+ | |||
+ | Почтовые ящики могут затем добавляться в список активных ящиков с помощью команды SUBSCRIBE, а удаляться из списка с помощью команды UNSUBSCRIBE. С помощью этих команд можно реализовать на базе клиента IMAP чтение групп новостей. При этом каждая группа новостей реализована как отдельный почтовый ящик на сервере, | ||
+ | ==== Команда APPEND ==== | ||
+ | APPEND — еще одна команда из семейства команд IMAP. Как правило, | ||
+ | < | ||
+ | APPEND mailbox [(flags)] [date/time string] {message size} message | ||
+ | </ | ||
+ | ==== Команда CHECK ==== | ||
+ | Команда CHECK используется для установки контрольной точки в почтовом ящике. Любые операции, | ||
+ | ==== Команда CLOSE ==== | ||
+ | Команда CLOSE полностью соответствует своему названию — она закрывает почтовый ящик. <note important> | ||
+ | ==== Команда EXPUNGE ==== | ||
+ | <note important> | ||
+ | < | ||
+ | 1 [alex@shadrach alex]$ telnet localhost 143 | ||
+ | 2 Trying 127.0.0.1... | ||
+ | 3 Connected to localhost. | ||
+ | 4 Escape character is ' | ||
+ | 5 * OK localhost lMAP4rev1 v12.250 server ready | ||
+ | 6 a1 login alex drums | ||
+ | 7 a1 OK LOGIN completed | ||
+ | 8 a2 select newbox | ||
+ | 9 * 6 EXISTS | ||
+ | 10 * 0 RECENT | ||
+ | 11 * OK [UIDVAHDITY 937243866] DID validity status | ||
+ | 12 * OK [UIDNEXT 8] Predicted next UID | ||
+ | 13 * FLAGS (\Answered \Flagged \Deleted \Draft \Seen) | ||
+ | 14 * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft VSeen)] Permanent flags | ||
+ | 15 * OK [UNSEEN 1] first unseen message in / | ||
+ | 16 a2 OK [READ-WRITE] SELECT completed | ||
+ | 17 a3 store 1 +flags \DELETED | ||
+ | 18 * 1 FETCH (FLAGS (\Deleted)) | ||
+ | 19 a3 OK STORE completed | ||
+ | 20 a4 store 2 +flags \DELETED | ||
+ | 21 * 2 FETCH (FLAGS (\Deleted)) | ||
+ | 22 a4 OK STORE completed | ||
+ | 23 a5 status newbox (messages unseen) | ||
+ | 24 * STATUS newbox (MESSAGES 6 UNSEEN 6) | ||
+ | 25 a5 OK STATUS completed | ||
+ | 26 a6 expunge | ||
+ | 27 * 1 EXPUNGE | ||
+ | 28 * 1 EXPUNGE | ||
+ | 29 * 4 EXISTS | ||
+ | 30 * 0 RECENT | ||
+ | 31 a6 OK Expunged 2 messages | ||
+ | 32 a7 status newbox (messages unseen) | ||
+ | 33 * STATUS newbox (MESSAGES 4 UNSEEN 4) | ||
+ | 34 a7 OK STATUS completed | ||
+ | 35 a8 logout | ||
+ | 36 * BYE shadrach.sniallorg.org IMAP4rev1 server terminating connecion | ||
+ | 37 a8 OK LOGOUT completed | ||
+ | 38 Connection closed by foreign host. | ||
+ | 39 [alex@shadrach alex]$ | ||
+ | </ | ||
+ | В строке 8 пользователь alex выбирает почтовый ящик с именем newbox. Строки 9–16 представляют собой ответ сервера с информацией относительно выбранного почтового ящика. Строка 9 говорит о том, что в нем находится 6 сообщений. В строках 17 и 20 пользователь alex воспользовался командой STORE, чтобы пометить два сообщения как удаленные (\DELETED). Затем в строке 23 пользователь alex выдает команду STATUS. Из строки 24 можно сделать заключение, | ||
+ | ==== Команда SEARCH ==== | ||
+ | Команда SEARCH является одним из наиболее мощных средств из арсенала IMAP. С помощью этой команды производится поиск сообщений по критериям в активном почтовом ящике с последующим отображением результатов в виде номера сообщения. Формат команды SEARCH следующий: | ||
+ | < | ||
+ | SEARCH [CHARSET specification] (search criteria) | ||
+ | </ | ||
+ | Здесь CHARSET specification состоит из служебного слова CHARSET, за которым следует обозначение набора символов. Набор символов по умолчанию — ASCII, так что, как правило, | ||
+ | |||
+ | Таблица. Критерии поиска для команды SEARCH | ||
+ | < | ||
+ | Критерий поиска Описание | ||
+ | <message set> | ||
+ | ALL Все сообщения в почтовом ящике | ||
+ | ANSWERED Сообщения с флагом \ANSWERED | ||
+ | BCC < | ||
+ | BEFORE < | ||
+ | BODY Сообщения, | ||
+ | CC < | ||
+ | DELETED Сообщения с флагом \DELETED | ||
+ | DRAFT Сообщения с флагом \DRAFT | ||
+ | FLAGGED Сообщения с набором флагов \FLAGGED | ||
+ | From < | ||
+ | HEADER <field name> < | ||
+ | KEYWORD < | ||
+ | LARGER < | ||
+ | NEW Сообщения с флагом \RECENT, но без флага \SEEN | ||
+ | NOT <search key> | ||
+ | OLD Сообщения без флага \RECENT | ||
+ | ON < | ||
+ | OR < | ||
+ | RECENT Сообщения с флагом \RECENT | ||
+ | SEEN Сообщения с флагом \SEEN | ||
+ | SENTBEFORE < | ||
+ | SENTON < | ||
+ | SENTSINCE < | ||
+ | SINCE < | ||
+ | SMALLER < | ||
+ | TEXT < | ||
+ | UID <message set> | ||
+ | UNANSWERED Сообщения без флага \ANSWERED | ||
+ | UNDELETED Сообщения без флага \DELETED | ||
+ | UNDRAFT Сообщения без флага \DRAFT | ||
+ | UNFLAGGED Сообщения без набора флагов \FLAGGED | ||
+ | UNKEYWORD < | ||
+ | UNSEEN Сообщения без флага \SEEN | ||
+ | </ | ||
+ | Как видно из таблицы существует огромное количество критериев поиска сообщений. Это очень удобно, | ||
+ | < | ||
+ | 1 [alex@shadrach alex]$ telnet localhost 143 | ||
+ | 2 Trying 127.0.0.1... | ||
+ | 3 Connected to localhost. | ||
+ | 2 Escape character is ' | ||
+ | 4 * OK localhost IMAP4rev1 V12.250 server ready | ||
+ | 5 a1 login alex drums | ||
+ | 7 a1 OK LOGIN completed | ||
+ | 8 a2 select inbox | ||
+ | 9 * 2 EXISTS | ||
+ | 10 * 0 RECENT | ||
+ | 11 * OK [UIDVALIDITY 936999597] UID validity status | ||
+ | 12 * OK [UIDNEXT 5] Predicted next UID | ||
+ | 13 * FLAGS (\Answered \Flagged \Deleted \Draft \Seen) | ||
+ | 14 * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)] Permanent fs | ||
+ | 15 * OK [UNSEEN 1] first unseen message in / | ||
+ | 16 a2 OK [READ-WRITE] SELECT completed | ||
+ | 17 a3 search header subject test | ||
+ | 18 * SEARCH 1 2 | ||
+ | 19 a3 OK SEARCH completed | ||
+ | 20 a4 search header subject another | ||
+ | 21 * SEARCH 2 | ||
+ | 22 a4 OK SEARCH completed | ||
+ | 23 a5 search unseen | ||
+ | 24 * SEARCH 1 2 | ||
+ | 25 a5 OK SEARCH completed | ||
+ | 26 a6 logout | ||
+ | 27 * BYE shadrach.smallorg.org IMAP4rev1 server terminating connection | ||
+ | 28 a6 OK LOGOUT completed | ||
+ | 29 Connection closed by foreign host. | ||
+ | 30 [alex@shadrach alex]$ | ||
+ | </ | ||
+ | В строках 17, 20 и 23 показаны примеры использования команды SEARCH. Строки 18, 21 и 24 являются ответами сервера IMAP на команду SEARCH. В ответе содержатся номера сообщений, | ||
+ | ==== Команда FETCH ==== | ||
+ | Команда FETCH используется для получения текста почтового сообщения. Она применяется только для отображения сообщений. В отличие от POP3, клиент IMAP не сохраняет копию сообщения на клиентском ПК. | ||
+ | ==== Команда STORE ==== | ||
+ | Команда STORE применяется для изменения информации о сообщении. Формат команды следующий: | ||
+ | < | ||
+ | STORE <message set> <data item name> <data item value> | ||
+ | </ | ||
+ | Аргумент <message set> задает диапазон номеров сообщений, | ||
+ | |||
+ | Поведением этих типов данных можно управлять, | ||
+ | < | ||
+ | 17 a3 store 1 +flags \DELETED | ||
+ | 18 * 1 FETCH (FLAGS (\Deleted)) | ||
+ | 19 a3 OK STORE completed | ||
+ | </ | ||
+ | В строке 18 этого листинга показано, | ||
+ | ==== Команда COPY ==== | ||
+ | Команда COPY используется для копирования сообщений из одного почтового ящика в другой. Формат команды COPY приведен ниже: | ||
+ | < | ||
+ | COPY <message set> <mailbox name> | ||
+ | </ | ||
+ | Здесь <message set> задает диапазон номеров сообщений, | ||
+ | |||
+ | Для протокола IMAP не определена команда перемещения сообщений, | ||
+ | ==== Команда CAPABILITY ==== | ||
+ | С помощью команды CAPABILITY клиент может запрашивать у сервера IMAP информацию о его возможностях. | ||
+ | ==== Команда NOOP ==== | ||
+ | Действия команды NOOP, как мы знаем, соответствует ее названию, | ||
+ | ==== Команда LOGOUT ==== | ||
+ | Команда LOGOUT используется для завершения сеанса для текущего идентификатора пользователя и закрытия всех открытых почтовых ящиков. Если какие-либо сообщения были помечены флагом \DELETED, то с помощью этой команды они будут физически удалены из почтового ящика. | ||
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга