Россия, Казань, Казанский Национальный Исследовательский Технический Университет |
Протокол IMAP
Команда EXPUNGE
Команда EXPUNGE используется для удаления из почтового ящика всех сообщений, помеченных флагом \DELETED, при этом почтовый ящик не закрывается. Ответ сервера на команду EXPUNGE представляет собой отчет о новом состоянии почтового ящика. В листинге 11 показан пример работы с командой EXPUNGE.
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 /home/alex/newbox 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]$Листинг 7.11. Пример сеанса IMAP с применением команды EXPUNGE
В строке 8 пользователь alex выбирает почтовый ящик с именем newbox. Строки 9–16 представляют собой ответ сервера с информацией относительно выбранного почтового ящика. Строка 9 говорит о том, что в нем находится 6 сообщений. В строках 17 и 20 пользователь alex воспользовался командой STORE (о ней мы поговорим позже), чтобы пометить два сообщения как удаленные ( \DELETED ). Затем в строке 23 пользователь alex выдает команду STATUS. Из строки 24 можно сделать заключение, что, с точки зрения сервера IMAP, в почтовом ящике все еще находятся шесть сообщений, хотя два из них помечены как удаленные. В строке 26 пользователь выдает команду EXPUNGE, по которой сообщения, помеченные как удаленные, стираются. Ответ сервера в строках 27–31 подтверждает, что сообщения были удалены из ящика и в нем осталось четыре сообщения. Это же подтверждает и команда STATUS, заданная в строке 32. На нее сервер отвечает, что в почтовом ящике теперь только четыре сообщения.
Команда SEARCH
Команда SEARCH является одним из наиболее мощных средств из арсенала IMAP. С помощью этой команды производится поиск сообщений по критериям в активном почтовом ящике с последующим отображением результатов в виде номера сообщения. Формат команды SEARCH следующий:
SEARCH [CHARSET specification] (search criteria)
Здесь CHARSET specification состоит из служебного слова CHARSET, за которым следует обозначение набора символов. Набор символов по умолчанию — ASCII, так что, как правило, этот параметр опускается. Параметр search criteria определяет ключевые критерии поиска и их значения. Критерии поиска описаны в табл. 7.3.
Как видно из табл. 7.3, существует огромное количество критериев поиска сообщений. Это очень удобно, когда требуется найти специфическое сообщение в почтовых ящиках, которые заполнены большим количеством сообщений. В листинге 7.12 представлен короткий пример с использованием команды SEARCH.
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 /var/spool/mail/alex 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]$Листинг 7.12. Пример сеанса IMAP с применением команды SEARCH
В строках 17, 20 и 23 показаны примеры использования команды SEARCH. Строки 18, 21 и 24 являются ответами сервера IMAP на команду SEARCH. В ответе содержатся номера сообщений, которые соответствуют критерию поиска. Если соответствий не найдено, то сервер возвращает слово SEARCH без идентификатора сообщения UID.