123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955 |
- Network Working Group A. Melnikov
- Request for Comments: 4466 Isode Ltd.
- Updates: 2088, 2342, 3501, 3502, 3516 C. Daboo
- Category: Standards Track April 2006
- Collected Extensions to IMAP4 ABNF
- Status of This Memo
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
- Copyright Notice
- Copyright (C) The Internet Society (2006).
- Abstract
- Over the years, many documents from IMAPEXT and LEMONADE working
- groups, as well as many individual documents, have added syntactic
- extensions to many base IMAP commands described in RFC 3501. For
- ease of reference, this document collects most of such ABNF changes
- in one place.
- This document also suggests a set of standard patterns for adding
- options and extensions to several existing IMAP commands defined in
- RFC 3501. The patterns provide for compatibility between existing
- and future extensions.
- This document updates ABNF in RFCs 2088, 2342, 3501, 3502, and 3516.
- It also includes part of the errata to RFC 3501. This document
- doesn't specify any semantic changes to the listed RFCs.
- Melnikov & Daboo Standards Track [Page 1]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- Table of Contents
- 1. Introduction ....................................................2
- 1.1. Purpose of This Document ...................................2
- 1.2. Conventions Used in This Document ..........................3
- 2. IMAP ABNF Extensions ............................................3
- 2.1. Optional Parameters with the SELECT/EXAMINE Commands .......3
- 2.2. Extended CREATE Command ....................................4
- 2.3. Extended RENAME Command ....................................5
- 2.4. Extensions to FETCH and UID FETCH Commands .................6
- 2.5. Extensions to STORE and UID STORE Commands .................6
- 2.6. Extensions to SEARCH Command ...............................7
- 2.6.1. Extended SEARCH Command .............................7
- 2.6.2. ESEARCH untagged response ...........................8
- 2.7. Extensions to APPEND Command ...............................8
- 3. Formal Syntax ...................................................9
- 4. Security Considerations ........................................14
- 5. Normative References ...........................................15
- 6. Acknowledgements ...............................................15
- 1. Introduction
- 1.1. Purpose of This Document
- This document serves several purposes:
- 1. rationalize and generalize ABNF for some existing IMAP
- extensions;
- 2. collect the ABNF in one place in order to minimize cross
- references between documents;
- 3. define building blocks for future extensions so that they can
- be used together in a compatible way.
- It is expected that a future revision of this document will be
- incorporated into a revision of RFC 3501.
- This document updates ABNF in RFCs 2088, 2342, 3501, 3502, and 3516.
- It also includes part of the errata to RFC 3501. This document
- doesn't specify any semantic changes to the listed RFCs.
- The ABNF in section 6 of RFC 2342 got rewritten to conform to the
- ABNF syntax as defined in RFC 4234 and to reference new non-terminals
- from RFC 3501. It was also restructured to allow for better
- readability. There were no changes "on the wire".
- Section 2 extends ABNF for SELECT, EXAMINE, CREATE, RENAME, FETCH/UID
- FETCH, STORE/UID STORE, SEARCH, and APPEND commands in a consistent
- manner. Extensions to all the commands but APPEND have the same
- Melnikov & Daboo Standards Track [Page 2]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- structure. Extensibility for the APPEND command was done slightly
- differently in order to preserve backward compatibility with existing
- extensions.
- Section 2 also defines a new ESEARCH response, whose purpose is to
- define a better version of the SEARCH response defined in RFC 3501.
- Section 3 defines the collected ABNF that replaces pieces of ABNF in
- the aforementioned RFCs. The collected ABNF got generalized to allow
- for easier future extensibility.
- 1.2. Conventions Used in This Document
- In examples, "C:" and "S:" indicate lines sent by the client and
- server, respectively.
- The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
- in this document are to be interpreted as defined in "Key words for
- use in RFCs to Indicate Requirement Levels" [KEYWORDS].
- 2. IMAP ABNF Extensions
- This section is not normative. It provides some background on the
- intended use of different extensions and it gives some guidance about
- how future extensions should extend the described commands.
- 2.1. Optional Parameters with the SELECT/EXAMINE Commands
- This document adds the ability to include one or more parameters with
- the IMAP SELECT (section 6.3.1 of [IMAP4]) or EXAMINE (section 6.3.2
- of [IMAP4]) commands, to turn on or off certain standard behaviors,
- or to add new optional behaviors required for a particular extension.
- There are two possible modes of operation:
- o A global state change where a single use of the optional parameter
- will affect the session state from that time on, irrespective of
- subsequent SELECT/EXAMINE commands.
- o A per-mailbox state change that will affect the session only for
- the duration of the new selected state. A subsequent
- SELECT/EXAMINE without the optional parameter will cancel its
- effect for the newly selected mailbox.
- Optional parameters to the SELECT or EXAMINE commands are added as a
- parenthesized list of attribute/value pairs, and appear after the
- mailbox name in the standard SELECT or EXAMINE command. The order of
- individual parameters is arbitrary. A parameter value is optional
- Melnikov & Daboo Standards Track [Page 3]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- and may consist of atoms, strings, or lists in a specific order. If
- the parameter value is present, it always appears in parentheses (*).
- Any parameter not defined by extensions that the server supports must
- be rejected with a BAD response.
- Example:
- C: a SELECT INBOX (ANNOTATE)
- S: ...
- S: a OK SELECT complete
- In the above example, a single parameter is used with the SELECT
- command.
- Example:
- C: a EXAMINE INBOX (ANNOTATE RESPONSES ("UID Responses")
- CONDSTORE)
- S: ...
- S: a OK EXAMINE complete
- In the above example, three parameters are used with the EXAMINE
- command. The second parameter consists of two items: an atom
- "RESPONSES" followed by a quoted string.
- Example:
- C: a SELECT INBOX (BLURDYBLOOP)
- S: a BAD Unknown parameter in SELECT command
- In the above example, a parameter not supported by the server is
- used. This results in the BAD response from the server.
- (*) - if a parameter has a mandatory value, which can always be
- represented as a number or a sequence-set, the parameter value does
- not need the enclosing (). See ABNF for more details.
- 2.2. Extended CREATE Command
- Arguments: mailbox name
- OPTIONAL list of CREATE parameters
- Responses: no specific responses for this command
- Result: OK - create completed
- NO - create failure: cannot create mailbox with
- that name
- BAD - argument(s) invalid
- Melnikov & Daboo Standards Track [Page 4]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- This document adds the ability to include one or more parameters with
- the IMAP CREATE command (see section 6.3.3 of [IMAP4]), to turn on or
- off certain standard behaviors, or to add new optional behaviors
- required for a particular extension. No CREATE parameters are
- defined in this document.
- Optional parameters to the CREATE command are added as a
- parenthesized list of attribute/value pairs after the mailbox name.
- The order of individual parameters is arbitrary. A parameter value
- is optional and may consist of atoms, strings, or lists in a specific
- order. If the parameter value is present, it always appears in
- parentheses (*). Any parameter not defined by extensions that the
- server supports must be rejected with a BAD response.
- (*) - if a parameter has a mandatory value, which can always be
- represented as a number or a sequence-set, the parameter value does
- not need the enclosing (). See ABNF for more details.
- 2.3. Extended RENAME Command
- Arguments: existing mailbox name
- new mailbox name
- OPTIONAL list of RENAME parameters
- Responses: no specific responses for this command
- Result: OK - rename completed
- NO - rename failure: cannot rename mailbox with
- that name, cannot rename to mailbox with
- that name, etc.
- BAD - argument(s) invalid
- This document adds the ability to include one or more parameters with
- the IMAP RENAME command (see section 6.3.5 of [IMAP4]), to turn on or
- off certain standard behaviors, or to add new optional behaviors
- required for a particular extension. No RENAME parameters are
- defined in this document.
- Optional parameters to the RENAME command are added as a
- parenthesized list of attribute/value pairs after the new mailbox
- name. The order of individual parameters is arbitrary. A parameter
- value is optional and may consist of atoms, strings, or lists in a
- specific order. If the parameter value is present, it always appears
- in parentheses (*). Any parameter not defined by extensions that the
- server supports must be rejected with a BAD response.
- Melnikov & Daboo Standards Track [Page 5]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- (*) - if a parameter has a mandatory value, which can always be
- represented as a number or a sequence-set, the parameter value does
- not need the enclosing (). See ABNF for more details.
- 2.4. Extensions to FETCH and UID FETCH Commands
- Arguments: sequence set
- message data item names or macro
- OPTIONAL fetch modifiers
- Responses: untagged responses: FETCH
- Result: OK - fetch completed
- NO - fetch error: cannot fetch that data
- BAD - command unknown or arguments invalid
- This document extends the syntax of the FETCH and UID FETCH commands
- (see section 6.4.5 of [IMAP4]) to include optional FETCH modifiers.
- No fetch modifiers are defined in this document.
- The order of individual modifiers is arbitrary. Each modifier is an
- attribute/value pair. A modifier value is optional and may consist
- of atoms and/or strings and/or lists in a specific order. If the
- modifier value is present, it always appears in parentheses (*). Any
- modifiers not defined by extensions that the server supports must be
- rejected with a BAD response.
- (*) - if a modifier has a mandatory value, which can always be
- represented as a number or a sequence-set, the modifier value does
- not need the enclosing (). See ABNF for more details.
- 2.5. Extensions to STORE and UID STORE Commands
- Arguments: message set
- OPTIONAL store modifiers
- message data item name
- value for message data item
- Responses: untagged responses: FETCH
- Result: OK - store completed
- NO - store error: cannot store that data
- BAD - command unknown or arguments invalid
- This document extends the syntax of the STORE and UID STORE commands
- (see section 6.4.6 of [IMAP4]) to include optional STORE modifiers.
- No store modifiers are defined in this document.
- Melnikov & Daboo Standards Track [Page 6]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- The order of individual modifiers is arbitrary. Each modifier is an
- attribute/value pair. A modifier value is optional and may consist
- of atoms and/or strings and/or lists in a specific order. If the
- modifier value is present, it always appears in parentheses (*). Any
- modifiers not defined by extensions that the server supports must be
- rejected with a BAD response.
- (*) - if a modifier has a mandatory value, which can always be
- represented as a number or a sequence-set, the modifier value does
- not need the enclosing (). See ABNF for more details.
- 2.6. Extensions to SEARCH Command
- 2.6.1. Extended SEARCH Command
- Arguments: OPTIONAL result specifier
- OPTIONAL [CHARSET] specification
- searching criteria (one or more)
- Responses: REQUIRED untagged response: SEARCH (*)
- Result: OK - search completed
- NO - search error: cannot search that [CHARSET] or
- criteria
- BAD - command unknown or arguments invalid
- This section updates definition of the SEARCH command described in
- section 6.4.4 of [IMAP4].
- The SEARCH command is extended to allow for result options. This
- document does not define any result options.
- The order of individual options is arbitrary. Individual options may
- contain parameters enclosed in parentheses (**). If an option has
- parameters, they consist of atoms and/or strings and/or lists in a
- specific order. Any options not defined by extensions that the
- server supports must be rejected with a BAD response.
- (*) - An extension to the SEARCH command may require another untagged
- response, or no untagged response to be returned. Section 2.6.2
- defines a new ESEARCH untagged response that replaces the SEARCH
- untagged response. Note that for a given extended SEARCH command the
- SEARCH and ESEARCH responses SHOULD be mutually exclusive, i.e., only
- one of them should be returned.
- (**) - if an option has a mandatory parameter, which can always be
- represented as a number or a sequence-set, the option parameter does
- not need the enclosing (). See ABNF for more details.
- Melnikov & Daboo Standards Track [Page 7]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- 2.6.2. ESEARCH untagged response
- Contents: one or more search-return-data pairs
- The ESEARCH response SHOULD be sent as a result of an extended SEARCH
- or UID SEARCH command specified in section 2.6.1.
- The ESEARCH response starts with an optional search correlator. If
- it is missing, then the response was not caused by a particular IMAP
- command, whereas if it is present, it contains the tag of the command
- that caused the response to be returned.
- The search correlator is followed by an optional UID indicator. If
- this indicator is present, all data in the ESEARCH response refers to
- UIDs, otherwise all returned data refers to message numbers.
- The rest of the ESEARCH response contains one or more search data
- pairs. Each pair starts with unique return item name, followed by a
- space and the corresponding data. Search data pairs may be returned
- in any order. Unless specified otherwise by an extension, any return
- item name SHOULD appear only once in an ESEARCH response.
- Example: S: * ESEARCH UID COUNT 5 ALL 4:19,21,28
- Example: S: * ESEARCH (TAG "a567") UID COUNT 5 ALL 4:19,21,28
- Example: S: * ESEARCH COUNT 5 ALL 1:17,21
- 2.7. Extensions to APPEND Command
- The IMAP BINARY extension [BINARY] extends the APPEND command to
- allow a client to append data containing NULs by using the <literal8>
- syntax. The ABNF was rewritten to allow for easier extensibility by
- IMAP extensions. This document hasn't specified any semantical
- changes to the [BINARY] extension.
- In addition, the non-terminal "literal8" defined in [BINARY] got
- extended to allow for non-synchronizing literals if both [BINARY] and
- [LITERAL+] extensions are supported by the server.
- The IMAP MULTIAPPEND extension [MULTIAPPEND] extends the APPEND
- command to allow a client to append multiple messages atomically.
- This document defines a common syntax for the APPEND command that
- takes into consideration syntactic extensions defined by both
- [BINARY] and [MULTIAPPEND] extensions.
- Melnikov & Daboo Standards Track [Page 8]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- 3. Formal Syntax
- The following syntax specification uses the Augmented Backus-Naur
- Form (ABNF) notation as specified in [ABNF].
- Non-terminals referenced but not defined below are as defined by
- [IMAP4].
- Except as noted otherwise, all alphabetic characters are case-
- insensitive. The use of uppercase or lowercase characters to define
- token strings is for editorial clarity only. Implementations MUST
- accept these strings in a case-insensitive fashion.
- append = "APPEND" SP mailbox 1*append-message
- ;; only a single append-message may appear
- ;; if MULTIAPPEND [MULTIAPPEND] capability
- ;; is not present
- append-message = append-opts SP append-data
- append-ext = append-ext-name SP append-ext-value
- ;; This non-terminal define extensions to
- ;; to message metadata.
- append-ext-name = tagged-ext-label
- append-ext-value= tagged-ext-val
- ;; This non-terminal shows recommended syntax
- ;; for future extensions.
- append-data = literal / literal8 / append-data-ext
- append-data-ext = tagged-ext
- ;; This non-terminal shows recommended syntax
- ;; for future extensions,
- ;; i.e., a mandatory label followed
- ;; by parameters.
- append-opts = [SP flag-list] [SP date-time] *(SP append-ext)
- ;; message metadata
- charset = atom / quoted
- ;; Exact syntax is defined in [CHARSET].
- create = "CREATE" SP mailbox
- [create-params]
- ;; Use of INBOX gives a NO error.
- Melnikov & Daboo Standards Track [Page 9]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- create-params = SP "(" create-param *( SP create-param) ")"
- create-param-name = tagged-ext-label
- create-param = create-param-name [SP create-param-value]
- create-param-value= tagged-ext-val
- ;; This non-terminal shows recommended syntax
- ;; for future extensions.
- esearch-response = "ESEARCH" [search-correlator] [SP "UID"]
- *(SP search-return-data)
- ;; Note that SEARCH and ESEARCH responses
- ;; SHOULD be mutually exclusive,
- ;; i.e., only one of the response types
- ;; should be
- ;; returned as a result of a command.
- examine = "EXAMINE" SP mailbox [select-params]
- ;; modifies the original IMAP EXAMINE command
- ;; to accept optional parameters
- fetch = "FETCH" SP sequence-set SP ("ALL" / "FULL" /
- "FAST" / fetch-att /
- "(" fetch-att *(SP fetch-att) ")")
- [fetch-modifiers]
- ;; modifies the original IMAP4 FETCH command to
- ;; accept optional modifiers
- fetch-modifiers = SP "(" fetch-modifier *(SP fetch-modifier) ")"
- fetch-modifier = fetch-modifier-name [ SP fetch-modif-params ]
- fetch-modif-params = tagged-ext-val
- ;; This non-terminal shows recommended syntax
- ;; for future extensions.
- fetch-modifier-name = tagged-ext-label
- literal8 = "~{" number ["+"] "}" CRLF *OCTET
- ;; A string that might contain NULs.
- ;; <number> represents the number of OCTETs
- ;; in the response string.
- ;; The "+" is only allowed when both LITERAL+ and
- ;; BINARY extensions are supported by the server.
- Melnikov & Daboo Standards Track [Page 10]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- mailbox-data =/ Namespace-Response /
- esearch-response
- Namespace = nil / "(" 1*Namespace-Descr ")"
- Namespace-Command = "NAMESPACE"
- Namespace-Descr = "(" string SP
- (DQUOTE QUOTED-CHAR DQUOTE / nil)
- *(Namespace-Response-Extension) ")"
- Namespace-Response-Extension = SP string SP
- "(" string *(SP string) ")"
- Namespace-Response = "NAMESPACE" SP Namespace
- SP Namespace SP Namespace
- ;; This response is currently only allowed
- ;; if the IMAP server supports [NAMESPACE].
- ;; The first Namespace is the Personal Namespace(s)
- ;; The second Namespace is the Other Users' Namespace(s)
- ;; The third Namespace is the Shared Namespace(s)
- rename = "RENAME" SP mailbox SP mailbox
- [rename-params]
- ;; Use of INBOX as a destination gives
- ;; a NO error, unless rename-params
- ;; is not empty.
- rename-params = SP "(" rename-param *( SP rename-param) ")"
- rename-param = rename-param-name [SP rename-param-value]
- rename-param-name = tagged-ext-label
- rename-param-value= tagged-ext-val
- ;; This non-terminal shows recommended syntax
- ;; for future extensions.
- response-data = "*" SP response-payload CRLF
- response-payload= resp-cond-state / resp-cond-bye /
- mailbox-data / message-data / capability-data
- search = "SEARCH" [search-return-opts]
- SP search-program
- search-correlator = SP "(" "TAG" SP tag-string ")"
- Melnikov & Daboo Standards Track [Page 11]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- search-program = ["CHARSET" SP charset SP]
- search-key *(SP search-key)
- ;; CHARSET argument to SEARCH MUST be
- ;; registered with IANA.
- search-return-data = search-modifier-name SP search-return-value
- ;; Note that not every SEARCH return option
- ;; is required to have the corresponding
- ;; ESEARCH return data.
- search-return-opts = SP "RETURN" SP "(" [search-return-opt
- *(SP search-return-opt)] ")"
- search-return-opt = search-modifier-name [SP search-mod-params]
- search-return-value = tagged-ext-val
- ;; Data for the returned search option.
- ;; A single "nz-number"/"number" value
- ;; can be returned as an atom (i.e., without
- ;; quoting). A sequence-set can be returned
- ;; as an atom as well.
- search-modifier-name = tagged-ext-label
- search-mod-params = tagged-ext-val
- ;; This non-terminal shows recommended syntax
- ;; for future extensions.
- select = "SELECT" SP mailbox [select-params]
- ;; modifies the original IMAP SELECT command to
- ;; accept optional parameters
- select-params = SP "(" select-param *(SP select-param) ")"
- select-param = select-param-name [SP select-param-value]
- ;; a parameter to SELECT may contain one or
- ;; more atoms and/or strings and/or lists.
- select-param-name= tagged-ext-label
- select-param-value= tagged-ext-val
- ;; This non-terminal shows recommended syntax
- ;; for future extensions.
- status-att-list = status-att-val *(SP status-att-val)
- ;; Redefines status-att-list from RFC 3501.
- Melnikov & Daboo Standards Track [Page 12]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- ;; status-att-val is defined in RFC 3501 errata
- status-att-val = ("MESSAGES" SP number) /
- ("RECENT" SP number) /
- ("UIDNEXT" SP nz-number) /
- ("UIDVALIDITY" SP nz-number) /
- ("UNSEEN" SP number)
- ;; Extensions to the STATUS responses
- ;; should extend this production.
- ;; Extensions should use the generic
- ;; syntax defined by tagged-ext.
- store = "STORE" SP sequence-set [store-modifiers]
- SP store-att-flags
- ;; extend [IMAP4] STORE command syntax
- ;; to allow for optional store-modifiers
- store-modifiers = SP "(" store-modifier *(SP store-modifier)
- ")"
- store-modifier = store-modifier-name [SP store-modif-params]
- store-modif-params = tagged-ext-val
- ;; This non-terminal shows recommended syntax
- ;; for future extensions.
- store-modifier-name = tagged-ext-label
- tag-string = string
- ;; tag of the command that caused
- ;; the ESEARCH response, sent as
- ;; a string.
- tagged-ext = tagged-ext-label SP tagged-ext-val
- ;; recommended overarching syntax for
- ;; extensions
- tagged-ext-label = tagged-label-fchar *tagged-label-char
- ;; Is a valid RFC 3501 "atom".
- tagged-label-fchar = ALPHA / "-" / "_" / "."
- tagged-label-char = tagged-label-fchar / DIGIT / ":"
- Melnikov & Daboo Standards Track [Page 13]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- tagged-ext-comp = astring /
- tagged-ext-comp *(SP tagged-ext-comp) /
- "(" tagged-ext-comp ")"
- ;; Extensions that follow this general
- ;; syntax should use nstring instead of
- ;; astring when appropriate in the context
- ;; of the extension.
- ;; Note that a message set or a "number"
- ;; can always be represented as an "atom".
- ;; An URL should be represented as
- ;; a "quoted" string.
- tagged-ext-simple = sequence-set / number
- tagged-ext-val = tagged-ext-simple /
- "(" [tagged-ext-comp] ")"
- 4. Security Considerations
- This document updates ABNF in RFCs 2088, 2342, 3501, 3502, and 3516.
- The updated documents must be consulted for security considerations
- for the extensions that they define.
- As a protocol gets more complex, parser bugs become more common
- including buffer overflow, denial of service, and other common
- security coding errors. To the extent that this document makes the
- parser more complex, it makes this situation worse. To the extent
- that this document makes the parser more consistent and thus simpler,
- the situation is improved. The impact will depend on how many
- deployed IMAP extensions are consistent with this document.
- Implementers are encouraged to take care of these issues when
- extending existing implementations. Future IMAP extensions should
- strive for consistency and simplicity to the greatest extent
- possible.
- Extensions to IMAP commands that are permitted in NOT AUTHENTICATED
- state are more sensitive to these security issues due to the larger
- possible attacker community prior to authentication, and the fact
- that some IMAP servers run with elevated privileges in that state.
- This document does not extend any commands permitted in NOT
- AUTHENTICATED state. Future IMAP extensions to commands permitted in
- NOT AUTHENTICATED state should favor simplicity over consistency or
- extensibility.
- Melnikov & Daboo Standards Track [Page 14]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- 5. Normative References
- [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119, March 1997.
- [IMAP4] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL -
- VERSION 4rev1", RFC 3501, March 2003.
- [ABNF] Crocker, D., Ed., and P. Overell, "Augmented BNF for
- Syntax Specifications: ABNF", RFC 4234, October 2005.
- [CHARSET] Freed, N. and J. Postel, "IANA Charset Registration
- Procedures", BCP 19, RFC 2978, October 2000.
- [MULTIAPPEND] Crispin, M., "Internet Message Access Protocol (IMAP) -
- MULTIAPPEND Extension", RFC 3502, March 2003.
- [NAMESPACE] Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342,
- May 1998.
- [LITERAL+] Myers, J., "IMAP4 non-synchronizing literals", RFC
- 2088, January 1997.
- [BINARY] Nerenberg, L., "IMAP4 Binary Content Extension", RFC
- 3516, April 2003.
- 6. Acknowledgements
- This documents is based on ideas proposed by Pete Resnick, Mark
- Crispin, Ken Murchison, Philip Guenther, Randall Gellens, and Lyndon
- Nerenberg.
- However, all errors and omissions must be attributed to the authors
- of the document.
- Thanks to Philip Guenther, Dave Cridland, Mark Crispin, Chris Newman,
- Elwyn Davies, and Barry Leiba for comments and corrections.
- literal8 syntax was taken from RFC 3516.
- Melnikov & Daboo Standards Track [Page 15]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- Authors' Addresses
- Alexey Melnikov
- Isode Limited
- 5 Castle Business Village
- 36 Station Road
- Hampton, Middlesex, TW12 2BX
- UK
- EMail: Alexey.Melnikov@isode.com
- Cyrus Daboo
- EMail: cyrus@daboo.name
- Melnikov & Daboo Standards Track [Page 16]
- RFC 4466 Collected Extensions to IMAP4 ABNF April 2006
- Full Copyright Statement
- Copyright (C) The Internet Society (2006).
- This document is subject to the rights, licenses and restrictions
- contained in BCP 78, and except as set forth therein, the authors
- retain all their rights.
- This document and the information contained herein are provided on an
- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
- ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
- INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
- INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- Intellectual Property
- The IETF takes no position regarding the validity or scope of any
- Intellectual Property Rights or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; nor does it represent that it has
- made any independent effort to identify any such rights. Information
- on the procedures with respect to rights in RFC documents can be
- found in BCP 78 and BCP 79.
- Copies of IPR disclosures made to the IETF Secretariat and any
- assurances of licenses to be made available, or the result of an
- attempt made to obtain a general license or permission for the use of
- such proprietary rights by implementers or users of this
- specification can be obtained from the IETF on-line IPR repository at
- http://www.ietf.org/ipr.
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights that may cover technology that may be required to implement
- this standard. Please address the information to the IETF at
- ietf-ipr@ietf.org.
- Acknowledgement
- Funding for the RFC Editor function is provided by the IETF
- Administrative Support Activity (IASA).
- Melnikov & Daboo Standards Track [Page 17]
|