((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, RFC1176, and RFC1064.
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", RFC1731.
Carnegie-Mellon University, December 1994.
[IMAP-COMPAT] Crispin, M. "IMAP4 Compatibility with IMAP2 and
IMAP2bis", RFC1732, 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", RFC1733, 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",
RFC1176, 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", RFC1521, Bellcore, Innosoft,
September 1993.
[MIME-2] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
Part Two: Message Header Extensions for Non-ASCII Text", RFC1522,
University of Tennessee, September 1993.
[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
Messages", STD 11, RFC822, University of Delaware, August 1982.
[SMTP] Postel, Jonathan B. "Simple Mail Transfer Protocol", STD 10,
RFC821, 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