8. Sample IMAP4 session The following is a transcript of an IMAP4 session. A long line in this sample is broken for editorial clarity. S: * OK IMAP4 Service Ready C: a001 login mrc secret S: a001 OK LOGIN completed C: a002 select inbox S: * 18 EXISTS S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) S: * 2 RECENT S: * OK [UNSEEN 17] Message 17 is the first unseen message S: * OK [UIDVALIDITY 3857529045] UIDs valid S: a002 OK [READ-WRITE] SELECT completed C: a003 fetch 12 full S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "14-Jul-1993 02:44:25 -0700" RFC822.SIZE 4282 ENVELOPE ("Wed, 14 Jul 1993 02:23:25 -0700 (PDT)" "IMAP4 WG mtg summary and minutes" (("Terry Gray" NIL "gray" "cac.washington.edu")) (("Terry Gray" NIL "gray" "cac.washington.edu")) (("Terry Gray" NIL "gray" "cac.washington.edu")) ((NIL NIL "imap" "cac.washington.edu")) ((NIL NIL "minutes" "CNRI.Reston.VA.US") ("John Klensin" NIL "KLENSIN" "INFOODS.MIT.EDU")) NIL NIL "<B27397-0100000@cac.washington.edu>") BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 92)) S: a003 OK FETCH completed C: a004 fetch 12 rfc822.header S: * 12 FETCH (RFC822.HEADER {346} S: Date: Wed, 14 Jul 1993 02:23:25 -0700 (PDT) S: From: Terry Gray <gray@cac.washington.edu> S: Subject: IMAP4 WG mtg summary and minutes S: To: imap@cac.washington.edu S: cc: minutes@CNRI.Reston.VA.US, John Klensin <KLENSIN@INFOODS.MIT.EDU> S: Message-Id: <B27397-0100000@cac.washington.edu> S: MIME-Version: 1.0 S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII S: S: ) S: a004 OK FETCH completed C: a005 store 12 +flags \deleted S: * 12 FETCH (FLAGS (\Seen \Deleted)) S: a005 OK +FLAGS completed C: a006 logout S: * BYE IMAP4 server terminating connection S: a006 OK LOGOUT completed
9. Formal Syntax The following syntax specification uses the augmented Backus-Naur Form (BNF) notation as specified in [RFC-822] with one exception; the delimiter used with the "#" construct is a single space (SPACE) and not a comma. Except as noted otherwise, all alphabetic characters are case-insensitive. The use of upper or lower case characters to define token strings is for editorial clarity only. Implementations MUST accept these strings in a case-insensitive fashion. Syntax marked as obsolete may be encountered with implementations written for an earlier version of this protocol (e.g. IMAP2). New implementations SHOULD accept obsolete syntax as input, but MUST NOT otherwise use such syntax. address ::= "(" addr_name SPACE addr_adl SPACE addr_mailbox SPACE addr_host ")" addr_adl ::= nstring addr_host ::= nstring ;; NIL indicates [RFC-822] group syntax addr_mailbox ::= nstring ;; NIL indicates end of [RFC-822] group; if ;; non-NIL and addr_host is NIL, holds ;; [RFC-822] group name addr_name ::= nstring alpha ::= "A" / "B" / "C" / "D" / "E" / "F" / "G" / "H" / "I" / "J" / "K" / "L" / "M" / "N" / "O" / "P" / "Q" / "R" / "S" / "T" / "U" / "V" / "W" / "X" / "Y" / "Z" / "a" / "b" / "c" / "d" / "e" / "f" / "g" / "h" / "i" / "j" / "k" / "l" / "m" / "n" / "o" / "p" / "q" / "r" / "s" / "t" / "u" / "v" / "w" / "x" / "y" / "z" / ;; Case-sensitive append ::= "APPEND" SPACE mailbox [SPACE flag_list] [SPACE date_time] SPACE literal astring ::= atom / string
atom ::= 1*ATOM_CHAR ATOM_CHAR ::= <any CHAR except atom_specials> atom_specials ::= "(" / ")" / "{" / SPACE / CTLs / list_wildcards / quoted_specials authenticate ::= "AUTHENTICATE" SPACE auth_type *(CRLF base64) auth_type ::= atom base64 ::= *(4base64_char) [base64_terminal] base64_char ::= alpha / digit / "+" / "/" base64_terminal ::= (2base64_char "==") / (3base64_char "=") body ::= "(" body_type_1part / body_type_mpart ")" body_extension ::= nstring / number / "(" 1#body_extension ")" ;; Future expansion. Client implementations ;; MUST accept body_extension fields. Server ;; implementations MUST NOT generate ;; body_extension fields except as defined by ;; future standard or standards-track ;; revisions of this specification. body_ext_1part ::= body_fld_md5 [SPACE 1#body_extension] ;; MUST NOT be returned on non-extensible ;; "BODY" fetch body_ext_mpart ::= body_fld_param [SPACE 1#body_extension]] ;; MUST NOT be returned on non-extensible ;; "BODY" fetch body_fields ::= body_fld_param SPACE body_fld_id SPACE body_fld_desc SPACE body_fld_enc SPACE body_fld_octets body_fld_desc ::= nstring body_fld_enc ::= (<"> ("7BIT" / "8BIT" / "BINARY" / "BASE64"/ "QUOTED-PRINTABLE") <">) / string body_fld_id ::= nstring body_fld_lines ::= number
body_fld_md5 ::= nstring body_fld_octets ::= number body_fld_param ::= "(" 1#(string string) ")" / nil body_fld_subtyp ::= string body_type_1part ::= (body_type_basic / body_type_msg / body_type_text) [SPACE body_ext_1part] body_type_basic ::= (<"> ("APPLICATION" / "AUDIO" / "IMAGE" / "MESSAGE" / "VIDEO") <">) / string) SPACE body_fld_subtyp SPACE body_fields ;; MESSAGE subtype MUST NOT be "RFC822" body_type_mpart ::= 1*body SPACE body_fld_subtyp [SPACE body_ext_mpart] body_type_msg ::= <"> "MESSAGE" <"> SPACE <"> "RFC822" <"> SPACE body_fields SPACE envelope SPACE body SPACE body_fld_lines body_type_text ::= <"> "TEXT" <"> SPACE body_fld_subtyp SPACE body_fields SPACE body_fld_lines capability ::= atom ;; Must begin with "X" or be registered with ;; IANA as standard or standards-track capability_data ::= "CAPABILITY" SPACE "IMAP4" [SPACE 1#capability] CHAR ::= <any 7-bit US-ASCII character except NUL, 0x01 - 0x7f> CHAR8 ::= <any 8-bit octet except NUL, 0x01 - 0xff> command ::= tag SPACE (command_any / command_auth / command_nonauth / command_select) CRLF ;; Modal based on state command_any ::= "CAPABILITY" / "LOGOUT" / "NOOP" / x_command ;; Valid in all states command_auth ::= append / create / delete / examine / find / list / lsub / rename / select / subscribe / unsubscribe / ;; Valid only in Authenticated or Selected state
command_nonauth ::= login / authenticate ;; Valid only when in Non-Authenticated state command_select ::= "CHECK" / "CLOSE" / "EXPUNGE" / copy / fetch / partial / store / uid / search ;; Valid only when in Selected state continue_req ::= "+" SPACE (resp_text / base64) copy ::= "COPY" SPACE set SPACE mailbox CR ::= <ASCII CR, carriage return, 0x0C> create ::= "CREATE" SPACE mailbox ;; Use of INBOX gives a NO error CRLF ::= CR LF CTL ::= <any ASCII control character and DEL, 0x00 - 0x1f, 0x7f> date ::= date_text / <"> date_text <"> date_day ::= 1*2digit ;; Day of month date_day_fixed ::= (SPACE digit) / 2digit ;; Fixed-format version of date_day date_month ::= "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" date_text ::= date_day "-" date_month "-" (date_year / date_year_old) date_year ::= 4digit date_year_old ::= 2digit ;; OBSOLETE, (year - 1900) date_time ::= <"> (date_time_new / date_time_old) <"> date_time_new ::= date_day_fixed "-" date_month "-" date_year SPACE time SPACE zone date_time_old ::= date_day_fixed "-" date_month "-" date_year_old SPACE time "-" zone_old ;; OBSOLETE
delete ::= "DELETE" SPACE mailbox ;; Use of INBOX gives a NO error digit ::= "0" / digit_nz digit_nz ::= "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" envelope ::= "(" env_date SPACE env_subject SPACE env_from SPACE env_sender SPACE env_reply-to SPACE env_to SPACE env_cc SPACE env_bcc SPACE env_in-reply-to SPACE env_message-id ")" env_bcc ::= "(" 1*address ")" / nil env_cc ::= "(" 1*address ")" / nil env_date ::= nstring env_from ::= "(" 1*address ")" / nil env_in-reply-to ::= nstring env_message-id ::= nstring env_reply-to ::= "(" 1*address ")" / nil env_sender ::= "(" 1*address ")" / nil env_subject ::= nstring env_to ::= "(" 1*address ")" / nil examine ::= "EXAMINE" SPACE mailbox fetch ::= "FETCH" SPACE set SPACE ("ALL" / "FULL" / "FAST" / fetch_att / "(" 1#fetch_att ")") fetch_att ::= "BODY" / "BODYSTRUCTURE" / "BODY" [".PEEK"] "[" section "]" / "ENVELOPE" / "FLAGS" / "INTERNALDATE" / "UID" / "RFC822" (([".TEXT"] [".PEEK"]) / ".SIZE" / (".HEADER" [".LINES" [".NOT"] SPACE header_list]) find ::= "FIND" SPACE ["ALL."] "MAILBOXES" SPACE list_mailbox ;; OBSOLETE
flag ::= "\Answered" / "\Flagged" / "\Deleted" / "\Seen" / "\Draft" / flag_keyword / flag_extension flag_extension ::= "\" atom ;; Future expansion. Client implementations ;; MUST accept flag_extension flags. Server ;; implementations MUST NOT generate ;; flag_extension flags except as defined by ;; future standard or standards-track ;; revisions of this specification. flag_keyword ::= atom flag_list ::= "(" #flag ")" greeting ::= "*" SPACE (resp_cond_auth / resp_cond_bye) CRLF header_line ::= astring header_list ::= "(" 1#header_line ")" LF ::= <ASCII LF, line feed, 0x0A> list ::= "LIST" SPACE mailbox SPACE list_mailbox list_mailbox ::= 1*(ATOM_CHAR / list_wildcards) / string list_wildcards ::= "%" / "*" literal ::= "{" number "}" CRLF *CHAR8 ;; Number represents the number of CHAR8 octets login ::= "LOGIN" SPACE userid SPACE password lsub ::= "LSUB" SPACE mailbox SPACE list_mailbox mailbox ::= "INBOX" / astring ;; INBOX is case-insensitive; other names may be ;; case-sensitive depending on implementation. mailbox_data ::= "FLAGS" SPACE flag_list / "LIST" SPACE mailbox_list / "LSUB" SPACE mailbox_list / "MAILBOX" SPACE text / "SEARCH" [SPACE 1#nz_number] / number SPACE "EXISTS" / number SPACE "RECENT"
mailbox_list ::= "(" #("\Marked" / "\Noinferiors" / "\Noselect" / "\Unmarked" / flag_extension) ")" SPACE (<"> QUOTED_CHAR <"> / nil) SPACE mailbox message_data ::= nz_number SPACE ("EXPUNGE" / ("FETCH" SPACE msg_fetch) / msg_obsolete) msg_fetch ::= "(" 1#("BODY" SPACE body / "BODYSTRUCTURE" SPACE body / "BODY[" section "]" SPACE nstring / "ENVELOPE" SPACE envelope / "FLAGS" SPACE "(" #(flag / "\Recent") ")" / "INTERNALDATE" SPACE date_time / "RFC822" [".HEADER" / ".TEXT"] SPACE nstring / "RFC822.SIZE" SPACE number / "UID" SPACE uniqueid) ")" msg_obsolete ::= "COPY" / ("STORE" SPACE msg_fetch) ;; OBSOLETE untagged data responses nil ::= "NIL" nstring ::= string / nil number ::= 1*digit ;; Unsigned 32-bit integer ;; (0 <= n < 4,294,967,296) nz_number ::= digit_nz *digit ;; Non-zero unsigned 32-bit integer ;; (0 < n < 4,294,967,296) partial ::= "PARTIAL" SPACE nz_number SPACE ("BODY" [".PEEK"] "[" section "]" / "RFC822" (([".TEXT"] [".PEEK"]) / ".HEADER") SPACE number SPACE number password ::= astring quoted ::= <"> *QUOTED_CHAR <"> QUOTED_CHAR ::= <any TEXT_CHAR except quoted_specials> / "\" quoted_specials quoted_specials ::= <"> / "\" rename ::= "RENAME" SPACE mailbox SPACE mailbox ;; Use of INBOX as a destination gives a NO error
response ::= *response_data response_done response_data ::= "*" SPACE (resp_cond_state / resp_cond_bye / mailbox_data / message_data / capability_data) CRLF response_done ::= response_tagged / response_fatal response_fatal ::= "*" SPACE resp_cond_bye CRLF response_tagged ::= tag SPACE resp_cond_state CRLF resp_cond_auth ::= ("OK" / "PREAUTH") SPACE resp_text ;; Authentication condition resp_cond_bye ::= "BYE" SPACE resp_text ;; Server will disconnect condition resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text ;; Status condition resp_text ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text) resp_text_code ::= "ALERT" / "PARSE" / "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" / "READ-ONLY" / "READ-WRITE" / "TRYCREATE" / "UIDVALIDITY" SPACE nz_number / "UNSEEN" SPACE nz_number / atom [SPACE 1*<any TEXT_CHAR except "]">] search ::= "SEARCH" SPACE ["CHARSET" SPACE astring SPACE] search_criteria ;; Character set must be registered with IANA ;; as a MIME character set search_criteria ::= 1#search_key search_key ::= search_new / search_old search_new ::= "DRAFT" / "HEADER" SPACE header_line SPACE astring / "LARGER" SPACE number / "NOT" SPACE search_key / "OR" SPACE search_key SPACE search_key / "SENTBEFORE" SPACE date / "SENTON" SPACE date / "SENTSINCE" SPACE date / "SMALLER" SPACE number / "UID" SPACE set / "UNDRAFT" / set / "(" search_criteria ")" ;; New in IMAP4
search_old ::= "ALL" / "ANSWERED" / "BCC" SPACE astring / "BEFORE" SPACE date / "BODY" SPACE astring / "CC" SPACE astring / "DELETED" / "FLAGGED" / "FROM" SPACE astring / "KEYWORD" SPACE flag_keyword / "NEW" / "OLD" / "ON" SPACE date / "RECENT" / "SEEN" / "SINCE" SPACE date / "SUBJECT" SPACE astring / "TEXT" SPACE astring / "TO" SPACE astring / "UNANSWERED" / "UNDELETED" / "UNFLAGGED" / "UNKEYWORD" SPACE flag_keyword / "UNSEEN" ;; Defined in [IMAP2] section ::= "0" / nz_number ["." section] select ::= "SELECT" SPACE mailbox sequence_num ::= nz_number / "*" ;; * is the largest number in use. For message ;; sequence numbers, it is the number of messages ;; in the mailbox. For unique identifiers, it is ;; the unique identifier of the last message in ;; the mailbox. set ::= sequence_num / (sequence_num ":" sequence_num) / (set "," set) ;; Identifies a set of messages. For message ;; sequence numbers, these are consecutive ;; numbers from 1 to the number of messages in ;; the mailbox ;; Comma delimits individual numbers, colon ;; delimits between two numbers inclusive. ;; Example: 2,4:7,9,12:* is 2,4,5,6,7,9,12,13, ;; 14,15 for a mailbox with 15 messages. SPACE ::= <ASCII SP, space, 0x20> store ::= "STORE" SPACE set SPACE store_att_flags store_att_flags ::= (["+" / "-"] "FLAGS" [".SILENT"]) SPACE (flag_list / #flag) string ::= quoted / literal subscribe ::= ("SUBSCRIBE" SPACE mailbox) / subscribe_obs subscribe_obs ::= "SUBSCRIBE" SPACE "MAILBOX" SPACE mailbox ;;OBSOLETE
tag ::= 1*<any ATOM_CHAR except "+"> text ::= 1*TEXT_CHAR text_mime2 ::= "=?" <charset> "?" <encoding> "?" <encoded-text> "?=" ;; Syntax defined in [MIME-2] TEXT_CHAR ::= <any CHAR except CR and LF> time ::= 2digit ":" 2digit ":" 2digit ;; Hours minutes seconds uid ::= "UID" SPACE (copy / fetch / search / store) ;; Unique identifiers used instead of message ;; sequence numbers uniqueid ::= nz_number ;; Strictly ascending unsubscribe ::= ("UNSUBSCRIBE" SPACE mailbox) / unsubscribe_obs unsubscribe_obs ::= "UNSUBSCRIBE" SPACE "MAILBOX" SPACE mailbox ;;OBSOLETE userid ::= astring x_command ::= "X" atom <experimental command arguments> zone ::= ("+" / "-") 4digit ;; Signed four-digit value of hhmm representing ;; hours and minutes west of Greenwich (that is, ;; (the amount that the given time differs from ;; Universal Time). Subtracting the timezone ;; from the given time will give the UT form. ;; The Universal Time zone is "+0000".
zone_old ::= "UT" / "GMT" / "Z" / ;; +0000 "AST" / "EDT" / ;; -0400 "EST" / "CDT" / ;; -0500 "CST" / "MDT" / ;; -0600 "MST" / "PDT" / ;; -0700 "PST" / "YDT" / ;; -0800 "YST" / "HDT" / ;; -0900 "HST" / "BDT" / ;; -1000 "BST" / ;; -1100 "A" / "B" / "C" / "D" / "E" / "F" / ;; +1 to +6 "G" / "H" / "I" / "K" / "L" / "M" / ;; +7 to +12 "N" / "O" / "P" / "Q" / "R" / "S" / ;; -1 to -6 "T" / "U" / "V" / "W" / "X" / "Y" ;; -7 to -12 ;; OBSOLETE
10. Author's Note This document is a revision or rewrite of earlier documents, and supercedes the protocol specification in those documents: IMAP4 Internet drafts, the IMAP2bis Internet drafts, unpublished IMAP2bis.TXT document, RFC 1176, and RFC 1064. 11. Security Considerations IMAP4 protocol transactions, including electronic mail data, are sent in the clear over the network unless the optional privacy protection is negotiated in the AUTHENTICATE command. A server error message for an AUTHENTICATE command which fails due to invalid credentials should not detail why the credentials are invalid. Use of the LOGIN command sends passwords in the clear. This can be avoided by using the AUTHENTICATE command instead. A server error message for a failing LOGIN command should not specify that the user name, as opposed to the password, is invalid. Additional security considerations are discussed in the section discussing the AUTHENTICATE and LOGIN commands. 12. Author's Address Mark R. Crispin Networks and Distributed Computing, JE-30 University of Washington Seattle, WA 98195 Phone: (206) 543-5762 EMail: MRC@CAC.Washington.EDU
Appendices A. Obsolete Commands The following commands are OBSOLETE. It is NOT required to support any of these commands in new server implementations. These commands are documented here for the benefit of implementors who may wish to support them for compatibility with old client implementations. The section headings of these commands are intended to correspond with where they would be located in the main document if they were not obsoleted. A.6.3.OBS.1. FIND ALL.MAILBOXES Command Arguments: mailbox name with possible wildcards Data: untagged responses: MAILBOX Result: OK - find completed NO - find failure: can't list that name BAD - command unknown or arguments invalid The FIND ALL.MAILBOXES command returns a subset of names from the complete set of all names available to the user. It returns zero or more untagged MAILBOX replies. The mailbox argument to FIND ALL.MAILBOXES is similar to that for LIST with an empty reference, except that the characters "%" and "?" match a single character. Example: C: A002 FIND ALL.MAILBOXES * S: * MAILBOX blurdybloop S: * MAILBOX INBOX S: A002 OK FIND ALL.MAILBOXES completed A.6.3.OBS.2. FIND MAILBOXES Command Arguments: mailbox name with possible wildcards Data: untagged responses: MAILBOX Result: OK - find completed NO - find failure: can't list that name BAD - command unknown or arguments invalid The FIND MAILBOXES command returns a subset of names from the set of names that the user has declared as being "active" or
"subscribed". It returns zero or more untagged MAILBOX replies. The mailbox argument to FIND MAILBOXES is similar to that for LSUB with an empty reference, except that the characters "%" and "?" match a single character. Example: C: A002 FIND MAILBOXES * S: * MAILBOX blurdybloop S: * MAILBOX INBOX S: A002 OK FIND MAILBOXES completed A.6.3.OBS.3. SUBSCRIBE MAILBOX Command Arguments: mailbox name Data: no specific data for this command Result: OK - subscribe completed NO - subscribe failure: can't subscribe to that name BAD - command unknown or arguments invalid The SUBSCRIBE MAILBOX command is identical in effect to the SUBSCRIBE command. A server which implements this command must be able to distinguish between a SUBSCRIBE MAILBOX command and a SUBSCRIBE command with a mailbox name argument of "MAILBOX". Example: C: A002 SUBSCRIBE MAILBOX #news.comp.mail.mime S: A002 OK SUBSCRIBE MAILBOX to #news.comp.mail.mime completed C: A003 SUBSCRIBE MAILBOX S: A003 OK SUBSCRIBE to MAILBOX completed A.6.3.OBS.4. UNSUBSCRIBE MAILBOX Command Arguments: mailbox name Data: no specific data for this command Result: OK - unsubscribe completed NO - unsubscribe failure: can't unsubscribe that name BAD - command unknown or arguments invalid The UNSUBSCRIBE MAILBOX command is identical in effect to the UNSUBSCRIBE command. A server which implements this command must be able to distinguish between a UNSUBSCRIBE MAILBOX command and an UNSUBSCRIBE command with a mailbox name argument of "MAILBOX".
Example: C: A002 UNSUBSCRIBE MAILBOX #news.comp.mail.mime S: A002 OK UNSUBSCRIBE MAILBOX from #news.comp.mail.mime completed C: A003 UNSUBSCRIBE MAILBOX S: A003 OK UNSUBSCRIBE from MAILBOX completed
B. Obsolete Responses The following responses are OBSOLETE. Except as noted below, these responses MUST NOT be transmitted by new server implementations. The section headings of these responses are intended to correspond with where they would be located in the main document if they were not obsoleted. B.7.2.OBS.1. MAILBOX Response Data: name The MAILBOX response MUST NOT be transmitted by server implementations except in response to the obsolete FIND MAILBOXES and FIND ALL.MAILBOXES commands. Client implementations that do not use these commands MAY ignore this response. It is documented here for the benefit of implementors who may wish to support it for compatibility with old client implementations. This response occurs as a result of the FIND MAILBOXES and FIND ALL.MAILBOXES commands. It returns a single name that matches the FIND specification. There are no attributes or hierarchy delimiter. Example: S: * MAILBOX blurdybloop B.7.3.OBS.1. COPY Response Data: none The COPY response MUST NOT be transmitted by new server implementations. Client implementations MUST ignore the COPY response. It is documented here for the benefit of client implementors who may encounter this response from old server implementations. In some experimental versions of this protocol, this response was returned in response to a COPY command to indicate on a per-message basis that the message was copied successfully. Example: S: * 44 COPY
B.7.3.OBS.2. STORE Response Data: message data The STORE response MUST NOT be transmitted by new server implementations. Client implementations MUST treat the STORE response as equivalent to the FETCH response. It is documented here for the benefit of client implementors who may encounter this response from old server implementations. In some experimental versions of this protocol, this response was returned instead of FETCH in response to a STORE command to report the new value of the flags. Example: S: * 69 STORE (FLAGS (\Deleted))
C. References [IMAP-AUTH] Myers, J., "IMAP4 Authentication Mechanism", RFC 1731. Carnegie-Mellon University, December 1994. [IMAP-COMPAT] Crispin, M. "IMAP4 Compatibility with IMAP2 and IMAP2bis", RFC 1732, University of Washington, December 1994. [IMAP-DISC] Austein, R. "Synchronization Operations for Disconnected IMAP4 Clients", Work in Progress. [IMAP-MODEL] Crispin, M. "Distributed Electronic Mail Models in IMAP4", RFC 1733, University of Washington, December 1994. [IMAP-NAMING] Crispin, M. "Mailbox Naming Convention in IMAP4", Work in Progress. [IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2", RFC 1176, University of Washington, August 1990. [IMSP] Myers, J. "IMSP -- Internet Message Support Protocol", Work in Progress. [MIME-1] Borenstein, N., and Freed, N., "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1521, Bellcore, Innosoft, September 1993. [MIME-2] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part Two: Message Header Extensions for Non-ASCII Text", RFC 1522, University of Tennessee, September 1993. [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, University of Delaware, August 1982. [SMTP] Postel, Jonathan B. "Simple Mail Transfer Protocol", STD 10, RFC 821, USC/Information Sciences Institute, August 1982.
E. IMAP4 Keyword Index +FLAGS <flag list> (store command data item) ............... 34 +FLAGS.SILENT <flag list> (store command data item) ........ 34 -FLAGS <flag list> (store command data item) ............... 34 -FLAGS.SILENT <flag list> (store command data item) ........ 34 ALERT (response code) ...................................... 39 ALL (fetch item) ........................................... 29 ALL (search key) ........................................... 27 ANSWERED (search key) ...................................... 27 APPEND (command) ........................................... 22 AUTHENTICATE (command) ..................................... 12 BAD (response) ............................................. 41 BCC <string> (search key) .................................. 27 BEFORE <date> (search key) ................................. 27 BODY (fetch item) .......................................... 29 BODY (fetch result) ........................................ 46 BODY <string> (search key) ................................. 27 BODY.PEEK[<section>] (fetch item) .......................... 30 BODYSTRUCTURE (fetch item) ................................. 31 BODYSTRUCTURE (fetch result) ............................... 47 BODY[<section>] (fetch item) ............................... 29 BODY[section] (fetch result) ............................... 46 BYE (response) ............................................. 41 CAPABILITY (command) ....................................... 10 CAPABILITY (response) ...................................... 42 CC <string> (search key) ................................... 27 CHECK (command) ............................................ 23 CLOSE (command) ............................................ 24 COPY (command) ............................................. 34 COPY (response) ............................................ 68 CREATE (command) ........................................... 17 DELETE (command) ........................................... 18 DELETED (search key) ....................................... 27 DRAFT (search key) ......................................... 27 ENVELOPE (fetch item) ...................................... 31 ENVELOPE (fetch result) .................................... 49 EXAMINE (command) .......................................... 16 EXISTS (response) .......................................... 45 EXPUNGE (command) .......................................... 25 EXPUNGE (response) ......................................... 45 FAST (fetch item) .......................................... 31 FETCH (command) ............................................ 29 FETCH (response) ........................................... 46 FIND ALL.MAILBOXES (command) ............................... 65 FIND MAILBOXES (command) ................................... 65 FLAGGED (search key) ....................................... 27 FLAGS (fetch item) ......................................... 31
FLAGS (fetch result) ....................................... 50 FLAGS (response) ........................................... 44 FLAGS <flag list> (store command data item) ................ 34 FLAGS.SILENT <flag list> (store command data item) ......... 34 FROM <string> (search key) ................................. 27 FULL (fetch item) .......................................... 31 HEADER <field-name> <string> (search key) .................. 27 INTERNALDATE (fetch item) .................................. 31 INTERNALDATE (fetch result) ................................ 50 KEYWORD <flag> (search key) ................................ 27 LARGER <n> (search key) .................................... 27 LIST (command) ............................................. 20 LIST (response) ............................................ 43 LOGIN (command) ............................................ 14 LOGOUT (command) ........................................... 11 LSUB (command) ............................................. 22 LSUB (response) ............................................ 44 MAILBOX (response) ......................................... 68 NEW (search key) ........................................... 27 NO (response) .............................................. 40 NOOP (command) ............................................. 11 NOT <search-key> (search key) .............................. 28 OK (response) .............................................. 40 OLD (search key) ........................................... 28 ON <date> (search key) ..................................... 28 OR <search-key1> <search-key2> (search key) ................ 28 PARSE (response code) ...................................... 39 PARTIAL (command) .......................................... 32 PERMANENTFLAGS (response code) ............................. 39 PREAUTH (response) ......................................... 41 READ-ONLY (response code) .................................. 39 READ-WRITE (response code) ................................. 39 RECENT (response) .......................................... 45 RECENT (search key) ........................................ 28 RENAME (command) ........................................... 18 RFC822 (fetch item) ........................................ 31 RFC822 (fetch result) ...................................... 50 RFC822.HEADER (fetch item) ................................. 31 RFC822.HEADER (fetch result) ............................... 50 RFC822.HEADER.LINES <header_list> (fetch item) ............. 31 RFC822.HEADER.LINES.NOT <header_list> (fetch item) ......... 32 RFC822.PEEK (fetch item) ................................... 31 RFC822.SIZE (fetch item) ................................... 32 RFC822.SIZE (fetch result) ................................. 50 RFC822.TEXT (fetch item) ................................... 32 RFC822.TEXT (fetch result) ................................. 51 RFC822.TEXT.PEEK (fetch item) .............................. 32 SEARCH (command) ........................................... 25
SEARCH (response) .......................................... 44 SEEN (search key) .......................................... 28 SELECT (command) ........................................... 15 SENTBEFORE <date> (search key) ............................. 28 SENTON <date> (search key) ................................. 28 SENTSINCE <date> (search key) .............................. 28 SINCE <date> (search key) .................................. 28 SMALLER <n> (search key) ................................... 28 STORE (command) ............................................ 33 STORE (response) ........................................... 69 SUBJECT <string> (search key) .............................. 28 SUBSCRIBE (command) ........................................ 19 SUBSCRIBE MAILBOX (command) ................................ 66 TEXT <string> (search key) ................................. 28 TO <string> (search key) ................................... 28 TRYCREATE (response code) .................................. 39 UID (command) .............................................. 35 UID (fetch item) ........................................... 32 UID (fetch result) ......................................... 51 UID <message set> (search key) ............................. 28 UIDVALIDITY (response code) ................................ 40 UNANSWERED (search key) .................................... 29 UNDELETED (search key) ..................................... 29 UNDRAFT (search key) ....................................... 29 UNFLAGGED (search key) ..................................... 29 UNKEYWORD <flag> (search key) .............................. 29 UNSEEN (response code) ..................................... 40 UNSEEN (search key) ........................................ 29 UNSUBSCRIBE (command) ...................................... 19 UNSUBSCRIBE MAILBOX (command) .............................. 66 X<atom> (command) .......................................... 37 \Answered (system flag) .................................... 50 \Deleted (system flag) ..................................... 50 \Draft (system flag) ....................................... 50 \Flagged (system flag) ..................................... 50 \Marked (mailbox name attribute) ........................... 43 \Noinferiors (mailbox name attribute) ...................... 43 \Noselect (mailbox name attribute) ......................... 43 \Recent (system flag) ...................................... 50 \Seen (system flag) ........................................ 50 \Unmarked (mailbox name attribute) ......................... 43