* Update to version 2.19.1
[alpine.git] / imap / docs / rfc / rfc4466.txt
blobdfde1685e908d6f428b1759e78cf73b04283a268
7 Network Working Group                                        A. Melnikov
8 Request for Comments: 4466                                    Isode Ltd.
9 Updates: 2088, 2342, 3501, 3502, 3516                           C. Daboo
10 Category: Standards Track                                     April 2006
13                    Collected Extensions to IMAP4 ABNF
15 Status of This Memo
17    This document specifies an Internet standards track protocol for the
18    Internet community, and requests discussion and suggestions for
19    improvements.  Please refer to the current edition of the "Internet
20    Official Protocol Standards" (STD 1) for the standardization state
21    and status of this protocol.  Distribution of this memo is unlimited.
23 Copyright Notice
25    Copyright (C) The Internet Society (2006).
27 Abstract
29    Over the years, many documents from IMAPEXT and LEMONADE working
30    groups, as well as many individual documents, have added syntactic
31    extensions to many base IMAP commands described in RFC 3501.  For
32    ease of reference, this document collects most of such ABNF changes
33    in one place.
35    This document also suggests a set of standard patterns for adding
36    options and extensions to several existing IMAP commands defined in
37    RFC 3501.  The patterns provide for compatibility between existing
38    and future extensions.
40    This document updates ABNF in RFCs 2088, 2342, 3501, 3502, and 3516.
41    It also includes part of the errata to RFC 3501.  This document
42    doesn't specify any semantic changes to the listed RFCs.
58 Melnikov & Daboo            Standards Track                     [Page 1]
60 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
63 Table of Contents
65    1. Introduction ....................................................2
66       1.1. Purpose of This Document ...................................2
67       1.2. Conventions Used in This Document ..........................3
68    2. IMAP ABNF Extensions ............................................3
69       2.1. Optional Parameters with the SELECT/EXAMINE Commands .......3
70       2.2. Extended CREATE Command ....................................4
71       2.3. Extended RENAME Command ....................................5
72       2.4. Extensions to FETCH and UID FETCH Commands .................6
73       2.5. Extensions to STORE and UID STORE Commands .................6
74       2.6. Extensions to SEARCH Command ...............................7
75            2.6.1. Extended SEARCH Command .............................7
76            2.6.2. ESEARCH untagged response ...........................8
77       2.7. Extensions to APPEND Command ...............................8
78    3. Formal Syntax ...................................................9
79    4. Security Considerations ........................................14
80    5. Normative References ...........................................15
81    6. Acknowledgements ...............................................15
83 1.  Introduction
85 1.1.  Purpose of This Document
87    This document serves several purposes:
89       1.  rationalize and generalize ABNF for some existing IMAP
90           extensions;
91       2.  collect the ABNF in one place in order to minimize cross
92           references between documents;
93       3.  define building blocks for future extensions so that they can
94           be used together in a compatible way.
96    It is expected that a future revision of this document will be
97    incorporated into a revision of RFC 3501.
99    This document updates ABNF in RFCs 2088, 2342, 3501, 3502, and 3516.
100    It also includes part of the errata to RFC 3501.  This document
101    doesn't specify any semantic changes to the listed RFCs.
103    The ABNF in section 6 of RFC 2342 got rewritten to conform to the
104    ABNF syntax as defined in RFC 4234 and to reference new non-terminals
105    from RFC 3501.  It was also restructured to allow for better
106    readability.  There were no changes "on the wire".
108    Section 2 extends ABNF for SELECT, EXAMINE, CREATE, RENAME, FETCH/UID
109    FETCH, STORE/UID STORE, SEARCH, and APPEND commands in a consistent
110    manner.  Extensions to all the commands but APPEND have the same
114 Melnikov & Daboo            Standards Track                     [Page 2]
116 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
119    structure.  Extensibility for the APPEND command was done slightly
120    differently in order to preserve backward compatibility with existing
121    extensions.
123    Section 2 also defines a new ESEARCH response, whose purpose is to
124    define a better version of the SEARCH response defined in RFC 3501.
126    Section 3 defines the collected ABNF that replaces pieces of ABNF in
127    the aforementioned RFCs.  The collected ABNF got generalized to allow
128    for easier future extensibility.
130 1.2.  Conventions Used in This Document
132    In examples, "C:" and "S:" indicate lines sent by the client and
133    server, respectively.
135    The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
136    in this document are to be interpreted as defined in "Key words for
137    use in RFCs to Indicate Requirement Levels" [KEYWORDS].
139 2.  IMAP ABNF Extensions
141    This section is not normative.  It provides some background on the
142    intended use of different extensions and it gives some guidance about
143    how future extensions should extend the described commands.
145 2.1.  Optional Parameters with the SELECT/EXAMINE Commands
147    This document adds the ability to include one or more parameters with
148    the IMAP SELECT (section 6.3.1 of [IMAP4]) or EXAMINE (section 6.3.2
149    of [IMAP4]) commands, to turn on or off certain standard behaviors,
150    or to add new optional behaviors required for a particular extension.
152    There are two possible modes of operation:
154    o  A global state change where a single use of the optional parameter
155       will affect the session state from that time on, irrespective of
156       subsequent SELECT/EXAMINE commands.
158    o  A per-mailbox state change that will affect the session only for
159       the duration of the new selected state.  A subsequent
160       SELECT/EXAMINE without the optional parameter will cancel its
161       effect for the newly selected mailbox.
163    Optional parameters to the SELECT or EXAMINE commands are added as a
164    parenthesized list of attribute/value pairs, and appear after the
165    mailbox name in the standard SELECT or EXAMINE command.  The order of
166    individual parameters is arbitrary.  A parameter value is optional
170 Melnikov & Daboo            Standards Track                     [Page 3]
172 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
175    and may consist of atoms, strings, or lists in a specific order.  If
176    the parameter value is present, it always appears in parentheses (*).
177    Any parameter not defined by extensions that the server supports must
178    be rejected with a BAD response.
180       Example:
182               C: a SELECT INBOX (ANNOTATE)
183               S: ...
184               S: a OK SELECT complete
186       In the above example, a single parameter is used with the SELECT
187       command.
189       Example:
191               C: a EXAMINE INBOX (ANNOTATE RESPONSES ("UID Responses")
192                  CONDSTORE)
193               S: ...
194               S: a OK EXAMINE complete
196       In the above example, three parameters are used with the EXAMINE
197       command.  The second parameter consists of two items: an atom
198       "RESPONSES" followed by a quoted string.
200       Example:
202               C: a SELECT INBOX (BLURDYBLOOP)
203               S: a BAD Unknown parameter in SELECT command
205       In the above example, a parameter not supported by the server is
206       used.  This results in the BAD response from the server.
208    (*) - if a parameter has a mandatory value, which can always be
209    represented as a number or a sequence-set, the parameter value does
210    not need the enclosing ().  See ABNF for more details.
212 2.2.  Extended CREATE Command
214    Arguments:  mailbox name
215                OPTIONAL list of CREATE parameters
217    Responses:  no specific responses for this command
219    Result:     OK - create completed
220                NO - create failure: cannot create mailbox with
221                     that name
222                BAD - argument(s) invalid
226 Melnikov & Daboo            Standards Track                     [Page 4]
228 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
231    This document adds the ability to include one or more parameters with
232    the IMAP CREATE command (see section 6.3.3 of [IMAP4]), to turn on or
233    off certain standard behaviors, or to add new optional behaviors
234    required for a particular extension.  No CREATE parameters are
235    defined in this document.
237    Optional parameters to the CREATE command are added as a
238    parenthesized list of attribute/value pairs after the mailbox name.
239    The order of individual parameters is arbitrary.  A parameter value
240    is optional and may consist of atoms, strings, or lists in a specific
241    order.  If the parameter value is present, it always appears in
242    parentheses (*).  Any parameter not defined by extensions that the
243    server supports must be rejected with a BAD response.
245    (*) - if a parameter has a mandatory value, which can always be
246    represented as a number or a sequence-set, the parameter value does
247    not need the enclosing ().  See ABNF for more details.
249 2.3.  Extended RENAME Command
251    Arguments:  existing mailbox name
252                new mailbox name
253                OPTIONAL list of RENAME parameters
255    Responses:  no specific responses for this command
257    Result:     OK - rename completed
258                NO - rename failure: cannot rename mailbox with
259                     that name, cannot rename to mailbox with
260                     that name, etc.
261                BAD - argument(s) invalid
263    This document adds the ability to include one or more parameters with
264    the IMAP RENAME command (see section 6.3.5 of [IMAP4]), to turn on or
265    off certain standard behaviors, or to add new optional behaviors
266    required for a particular extension.  No RENAME parameters are
267    defined in this document.
269    Optional parameters to the RENAME command are added as a
270    parenthesized list of attribute/value pairs after the new mailbox
271    name.  The order of individual parameters is arbitrary.  A parameter
272    value is optional and may consist of atoms, strings, or lists in a
273    specific order.  If the parameter value is present, it always appears
274    in parentheses (*).  Any parameter not defined by extensions that the
275    server supports must be rejected with a BAD response.
282 Melnikov & Daboo            Standards Track                     [Page 5]
284 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
287    (*) - if a parameter has a mandatory value, which can always be
288    represented as a number or a sequence-set, the parameter value does
289    not need the enclosing ().  See ABNF for more details.
291 2.4.  Extensions to FETCH and UID FETCH Commands
293    Arguments:  sequence set
294                message data item names or macro
295                OPTIONAL fetch modifiers
297    Responses:  untagged responses: FETCH
299    Result:     OK - fetch completed
300                NO - fetch error: cannot fetch that data
301                BAD - command unknown or arguments invalid
303    This document extends the syntax of the FETCH and UID FETCH commands
304    (see section 6.4.5 of [IMAP4]) to include optional FETCH modifiers.
305    No fetch modifiers are defined in this document.
307    The order of individual modifiers is arbitrary.  Each modifier is an
308    attribute/value pair.  A modifier value is optional and may consist
309    of atoms and/or strings and/or lists in a specific order.  If the
310    modifier value is present, it always appears in parentheses (*).  Any
311    modifiers not defined by extensions that the server supports must be
312    rejected with a BAD response.
314    (*) - if a modifier has a mandatory value, which can always be
315    represented as a number or a sequence-set, the modifier value does
316    not need the enclosing ().  See ABNF for more details.
318 2.5.  Extensions to STORE and UID STORE Commands
320    Arguments:  message set
321                OPTIONAL store modifiers
322                message data item name
323                value for message data item
325    Responses:  untagged responses: FETCH
327    Result:     OK - store completed
328                NO - store error: cannot store that data
329                BAD - command unknown or arguments invalid
331    This document extends the syntax of the STORE and UID STORE commands
332    (see section 6.4.6 of [IMAP4]) to include optional STORE modifiers.
333    No store modifiers are defined in this document.
338 Melnikov & Daboo            Standards Track                     [Page 6]
340 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
343    The order of individual modifiers is arbitrary.  Each modifier is an
344    attribute/value pair.  A modifier value is optional and may consist
345    of atoms and/or strings and/or lists in a specific order.  If the
346    modifier value is present, it always appears in parentheses (*).  Any
347    modifiers not defined by extensions that the server supports must be
348    rejected with a BAD response.
350    (*) - if a modifier has a mandatory value, which can always be
351    represented as a number or a sequence-set, the modifier value does
352    not need the enclosing ().  See ABNF for more details.
354 2.6.  Extensions to SEARCH Command
356 2.6.1.  Extended SEARCH Command
358    Arguments:  OPTIONAL result specifier
359                OPTIONAL [CHARSET] specification
360                searching criteria (one or more)
362    Responses:  REQUIRED untagged response: SEARCH (*)
364    Result:     OK - search completed
365                NO - search error: cannot search that [CHARSET] or
366                     criteria
367                BAD - command unknown or arguments invalid
369    This section updates definition of the SEARCH command described in
370    section 6.4.4 of [IMAP4].
372    The SEARCH command is extended to allow for result options.  This
373    document does not define any result options.
375    The order of individual options is arbitrary.  Individual options may
376    contain parameters enclosed in parentheses (**).  If an option has
377    parameters, they consist of atoms and/or strings and/or lists in a
378    specific order.  Any options not defined by extensions that the
379    server supports must be rejected with a BAD response.
381    (*) - An extension to the SEARCH command may require another untagged
382    response, or no untagged response to be returned.  Section 2.6.2
383    defines a new ESEARCH untagged response that replaces the SEARCH
384    untagged response.  Note that for a given extended SEARCH command the
385    SEARCH and ESEARCH responses SHOULD be mutually exclusive, i.e., only
386    one of them should be returned.
388    (**) - if an option has a mandatory parameter, which can always be
389    represented as a number or a sequence-set, the option parameter does
390    not need the enclosing ().  See ABNF for more details.
394 Melnikov & Daboo            Standards Track                     [Page 7]
396 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
399 2.6.2.  ESEARCH untagged response
401    Contents:   one or more search-return-data pairs
403    The ESEARCH response SHOULD be sent as a result of an extended SEARCH
404    or UID SEARCH command specified in section 2.6.1.
406    The ESEARCH response starts with an optional search correlator.  If
407    it is missing, then the response was not caused by a particular IMAP
408    command, whereas if it is present, it contains the tag of the command
409    that caused the response to be returned.
411    The search correlator is followed by an optional UID indicator.  If
412    this indicator is present, all data in the ESEARCH response refers to
413    UIDs, otherwise all returned data refers to message numbers.
415    The rest of the ESEARCH response contains one or more search data
416    pairs.  Each pair starts with unique return item name, followed by a
417    space and the corresponding data.  Search data pairs may be returned
418    in any order.  Unless specified otherwise by an extension, any return
419    item name SHOULD appear only once in an ESEARCH response.
421    Example:    S: * ESEARCH UID COUNT 5 ALL 4:19,21,28
423    Example:    S: * ESEARCH (TAG "a567") UID COUNT 5 ALL 4:19,21,28
425    Example:    S: * ESEARCH COUNT 5 ALL 1:17,21
427 2.7.  Extensions to APPEND Command
429    The IMAP BINARY extension [BINARY] extends the APPEND command to
430    allow a client to append data containing NULs by using the <literal8>
431    syntax.  The ABNF was rewritten to allow for easier extensibility by
432    IMAP extensions.  This document hasn't specified any semantical
433    changes to the [BINARY] extension.
435    In addition, the non-terminal "literal8" defined in [BINARY] got
436    extended to allow for non-synchronizing literals if both [BINARY] and
437    [LITERAL+] extensions are supported by the server.
439    The IMAP MULTIAPPEND extension [MULTIAPPEND] extends the APPEND
440    command to allow a client to append multiple messages atomically.
441    This document defines a common syntax for the APPEND command that
442    takes into consideration syntactic extensions defined by both
443    [BINARY] and [MULTIAPPEND] extensions.
450 Melnikov & Daboo            Standards Track                     [Page 8]
452 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
455 3.  Formal Syntax
457    The following syntax specification uses the Augmented Backus-Naur
458    Form (ABNF) notation as specified in [ABNF].
460    Non-terminals referenced but not defined below are as defined by
461    [IMAP4].
463    Except as noted otherwise, all alphabetic characters are case-
464    insensitive.  The use of uppercase or lowercase characters to define
465    token strings is for editorial clarity only.  Implementations MUST
466    accept these strings in a case-insensitive fashion.
468    append          = "APPEND" SP mailbox 1*append-message
469                      ;; only a single append-message may appear
470                      ;; if MULTIAPPEND [MULTIAPPEND] capability
471                      ;; is not present
473    append-message  = append-opts SP append-data
475    append-ext      = append-ext-name SP append-ext-value
476                      ;; This non-terminal define extensions to
477                      ;; to message metadata.
479    append-ext-name = tagged-ext-label
481    append-ext-value= tagged-ext-val
482                      ;; This non-terminal shows recommended syntax
483                      ;; for future extensions.
486    append-data     = literal / literal8 / append-data-ext
488    append-data-ext = tagged-ext
489                      ;; This non-terminal shows recommended syntax
490                      ;; for future extensions,
491                      ;; i.e., a mandatory label followed
492                      ;; by parameters.
494    append-opts     = [SP flag-list] [SP date-time] *(SP append-ext)
495                      ;; message metadata
497    charset         = atom / quoted
498                      ;; Exact syntax is defined in [CHARSET].
500    create          = "CREATE" SP mailbox
501                      [create-params]
502                      ;; Use of INBOX gives a NO error.
506 Melnikov & Daboo            Standards Track                     [Page 9]
508 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
511    create-params   = SP "(" create-param *( SP create-param) ")"
513    create-param-name = tagged-ext-label
515    create-param      = create-param-name [SP create-param-value]
517    create-param-value= tagged-ext-val
518                      ;; This non-terminal shows recommended syntax
519                      ;; for future extensions.
522    esearch-response  = "ESEARCH" [search-correlator] [SP "UID"]
523                         *(SP search-return-data)
524                       ;; Note that SEARCH and ESEARCH responses
525                       ;; SHOULD be mutually exclusive,
526                       ;; i.e., only one of the response types
527                       ;; should be
528                       ;; returned as a result of a command.
531    examine         = "EXAMINE" SP mailbox [select-params]
532                      ;; modifies the original IMAP EXAMINE command
533                      ;; to accept optional parameters
535    fetch           = "FETCH" SP sequence-set SP ("ALL" / "FULL" /
536                      "FAST" / fetch-att /
537                      "(" fetch-att *(SP fetch-att) ")")
538                      [fetch-modifiers]
539                      ;; modifies the original IMAP4 FETCH command to
540                      ;; accept optional modifiers
542    fetch-modifiers = SP "(" fetch-modifier *(SP fetch-modifier) ")"
544    fetch-modifier  = fetch-modifier-name [ SP fetch-modif-params ]
546    fetch-modif-params  = tagged-ext-val
547                      ;; This non-terminal shows recommended syntax
548                      ;; for future extensions.
550    fetch-modifier-name = tagged-ext-label
552    literal8        = "~{" number ["+"] "}" CRLF *OCTET
553                       ;; A string that might contain NULs.
554                       ;; <number> represents the number of OCTETs
555                       ;; in the response string.
556                       ;; The "+" is only allowed when both LITERAL+ and
557                       ;; BINARY extensions are supported by the server.
562 Melnikov & Daboo            Standards Track                    [Page 10]
564 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
567    mailbox-data      =/ Namespace-Response /
568                         esearch-response
570    Namespace         = nil / "(" 1*Namespace-Descr ")"
572    Namespace-Command = "NAMESPACE"
574    Namespace-Descr   = "(" string SP
575                           (DQUOTE QUOTED-CHAR DQUOTE / nil)
576                            *(Namespace-Response-Extension) ")"
578    Namespace-Response-Extension = SP string SP
579                      "(" string *(SP string) ")"
581    Namespace-Response = "NAMESPACE" SP Namespace
582                         SP Namespace SP Namespace
583          ;; This response is currently only allowed
584          ;; if the IMAP server supports [NAMESPACE].
585          ;; The first Namespace is the Personal Namespace(s)
586          ;; The second Namespace is the Other Users' Namespace(s)
587          ;; The third Namespace is the Shared Namespace(s)
589    rename          = "RENAME" SP mailbox SP mailbox
590                      [rename-params]
591                      ;; Use of INBOX as a destination gives
592                      ;; a NO error, unless rename-params
593                      ;; is not empty.
595    rename-params     = SP "(" rename-param *( SP rename-param) ")"
597    rename-param      = rename-param-name [SP rename-param-value]
599    rename-param-name = tagged-ext-label
601    rename-param-value= tagged-ext-val
602                      ;; This non-terminal shows recommended syntax
603                      ;; for future extensions.
606    response-data   = "*" SP response-payload CRLF
608    response-payload= resp-cond-state / resp-cond-bye /
609                      mailbox-data / message-data / capability-data
611    search          = "SEARCH" [search-return-opts]
612                      SP search-program
614    search-correlator  = SP "(" "TAG" SP tag-string ")"
618 Melnikov & Daboo            Standards Track                    [Page 11]
620 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
623    search-program     = ["CHARSET" SP charset SP]
624                         search-key *(SP search-key)
625                         ;; CHARSET argument to SEARCH MUST be
626                         ;; registered with IANA.
628    search-return-data = search-modifier-name SP search-return-value
629                         ;; Note that not every SEARCH return option
630                         ;; is required to have the corresponding
631                         ;; ESEARCH return data.
633    search-return-opts = SP "RETURN" SP "(" [search-return-opt
634                         *(SP search-return-opt)] ")"
636    search-return-opt = search-modifier-name [SP search-mod-params]
638    search-return-value = tagged-ext-val
639                         ;; Data for the returned search option.
640                         ;; A single "nz-number"/"number" value
641                         ;; can be returned as an atom (i.e., without
642                         ;; quoting).  A sequence-set can be returned
643                         ;; as an atom as well.
645    search-modifier-name = tagged-ext-label
647    search-mod-params = tagged-ext-val
648                      ;; This non-terminal shows recommended syntax
649                      ;; for future extensions.
652    select          = "SELECT" SP mailbox [select-params]
653                      ;; modifies the original IMAP SELECT command to
654                      ;; accept optional parameters
656    select-params   = SP "(" select-param *(SP select-param) ")"
658    select-param    = select-param-name [SP select-param-value]
659                      ;; a parameter to SELECT may contain one or
660                      ;; more atoms and/or strings and/or lists.
662    select-param-name= tagged-ext-label
664    select-param-value= tagged-ext-val
665                      ;; This non-terminal shows recommended syntax
666                      ;; for future extensions.
669    status-att-list = status-att-val *(SP status-att-val)
670                      ;; Redefines status-att-list from RFC 3501.
674 Melnikov & Daboo            Standards Track                    [Page 12]
676 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
679                      ;; status-att-val is defined in RFC 3501 errata
681    status-att-val  = ("MESSAGES" SP number) /
682                      ("RECENT" SP number) /
683                      ("UIDNEXT" SP nz-number) /
684                      ("UIDVALIDITY" SP nz-number) /
685                      ("UNSEEN" SP number)
686                      ;; Extensions to the STATUS responses
687                      ;; should extend this production.
688                      ;; Extensions should use the generic
689                      ;; syntax defined by tagged-ext.
691    store           = "STORE" SP sequence-set [store-modifiers]
692                      SP store-att-flags
693                      ;; extend [IMAP4] STORE command syntax
694                      ;; to allow for optional store-modifiers
696    store-modifiers =  SP "(" store-modifier *(SP store-modifier)
697                        ")"
699    store-modifier  = store-modifier-name [SP store-modif-params]
701    store-modif-params = tagged-ext-val
702                      ;; This non-terminal shows recommended syntax
703                      ;; for future extensions.
705    store-modifier-name = tagged-ext-label
707    tag-string         = string
708                         ;; tag of the command that caused
709                         ;; the ESEARCH response, sent as
710                         ;; a string.
712    tagged-ext          = tagged-ext-label SP tagged-ext-val
713                           ;; recommended overarching syntax for
714                           ;; extensions
716    tagged-ext-label    = tagged-label-fchar *tagged-label-char
717                          ;; Is a valid RFC 3501 "atom".
719    tagged-label-fchar  = ALPHA / "-" / "_" / "."
721    tagged-label-char   = tagged-label-fchar / DIGIT / ":"
730 Melnikov & Daboo            Standards Track                    [Page 13]
732 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
735    tagged-ext-comp     = astring /
736                          tagged-ext-comp *(SP tagged-ext-comp) /
737                          "(" tagged-ext-comp ")"
738                           ;; Extensions that follow this general
739                           ;; syntax should use nstring instead of
740                           ;; astring when appropriate in the context
741                           ;; of the extension.
742                           ;; Note that a message set or a "number"
743                           ;; can always be represented as an "atom".
744                           ;; An URL should be represented as
745                           ;; a "quoted" string.
747    tagged-ext-simple   = sequence-set / number
749    tagged-ext-val      = tagged-ext-simple /
750                          "(" [tagged-ext-comp] ")"
752 4.  Security Considerations
754    This document updates ABNF in RFCs 2088, 2342, 3501, 3502, and 3516.
755    The updated documents must be consulted for security considerations
756    for the extensions that they define.
758    As a protocol gets more complex, parser bugs become more common
759    including buffer overflow, denial of service, and other common
760    security coding errors.  To the extent that this document makes the
761    parser more complex, it makes this situation worse.  To the extent
762    that this document makes the parser more consistent and thus simpler,
763    the situation is improved.  The impact will depend on how many
764    deployed IMAP extensions are consistent with this document.
765    Implementers are encouraged to take care of these issues when
766    extending existing implementations.  Future IMAP extensions should
767    strive for consistency and simplicity to the greatest extent
768    possible.
770    Extensions to IMAP commands that are permitted in NOT AUTHENTICATED
771    state are more sensitive to these security issues due to the larger
772    possible attacker community prior to authentication, and the fact
773    that some IMAP servers run with elevated privileges in that state.
774    This document does not extend any commands permitted in NOT
775    AUTHENTICATED state.  Future IMAP extensions to commands permitted in
776    NOT AUTHENTICATED state should favor simplicity over consistency or
777    extensibility.
786 Melnikov & Daboo            Standards Track                    [Page 14]
788 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
791 5.  Normative References
793    [KEYWORDS]    Bradner, S., "Key words for use in RFCs to Indicate
794                  Requirement Levels", BCP 14, RFC 2119, March 1997.
796    [IMAP4]       Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL -
797                  VERSION 4rev1", RFC 3501, March 2003.
799    [ABNF]        Crocker, D., Ed., and P. Overell, "Augmented BNF for
800                  Syntax Specifications: ABNF", RFC 4234, October 2005.
802    [CHARSET]     Freed, N. and J. Postel, "IANA Charset Registration
803                  Procedures", BCP 19, RFC 2978, October 2000.
805    [MULTIAPPEND] Crispin, M., "Internet Message Access Protocol (IMAP) -
806                  MULTIAPPEND Extension", RFC 3502, March 2003.
808    [NAMESPACE]   Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342,
809                  May 1998.
811    [LITERAL+]    Myers, J., "IMAP4 non-synchronizing literals", RFC
812                  2088, January 1997.
814    [BINARY]      Nerenberg, L., "IMAP4 Binary Content Extension", RFC
815                  3516, April 2003.
817 6.  Acknowledgements
819    This documents is based on ideas proposed by Pete Resnick, Mark
820    Crispin, Ken Murchison, Philip Guenther, Randall Gellens, and Lyndon
821    Nerenberg.
823    However, all errors and omissions must be attributed to the authors
824    of the document.
826    Thanks to Philip Guenther, Dave Cridland, Mark Crispin, Chris Newman,
827    Elwyn Davies, and Barry Leiba for comments and corrections.
829    literal8 syntax was taken from RFC 3516.
842 Melnikov & Daboo            Standards Track                    [Page 15]
844 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
847 Authors' Addresses
849    Alexey Melnikov
850    Isode Limited
851    5 Castle Business Village
852    36 Station Road
853    Hampton, Middlesex, TW12 2BX
854    UK
856    EMail: Alexey.Melnikov@isode.com
859    Cyrus Daboo
861    EMail: cyrus@daboo.name
898 Melnikov & Daboo            Standards Track                    [Page 16]
900 RFC 4466           Collected Extensions to IMAP4 ABNF         April 2006
903 Full Copyright Statement
905    Copyright (C) The Internet Society (2006).
907    This document is subject to the rights, licenses and restrictions
908    contained in BCP 78, and except as set forth therein, the authors
909    retain all their rights.
911    This document and the information contained herein are provided on an
912    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
913    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
914    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
915    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
916    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
917    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
919 Intellectual Property
921    The IETF takes no position regarding the validity or scope of any
922    Intellectual Property Rights or other rights that might be claimed to
923    pertain to the implementation or use of the technology described in
924    this document or the extent to which any license under such rights
925    might or might not be available; nor does it represent that it has
926    made any independent effort to identify any such rights.  Information
927    on the procedures with respect to rights in RFC documents can be
928    found in BCP 78 and BCP 79.
930    Copies of IPR disclosures made to the IETF Secretariat and any
931    assurances of licenses to be made available, or the result of an
932    attempt made to obtain a general license or permission for the use of
933    such proprietary rights by implementers or users of this
934    specification can be obtained from the IETF on-line IPR repository at
935    http://www.ietf.org/ipr.
937    The IETF invites any interested party to bring to its attention any
938    copyrights, patents or patent applications, or other proprietary
939    rights that may cover technology that may be required to implement
940    this standard.  Please address the information to the IETF at
941    ietf-ipr@ietf.org.
943 Acknowledgement
945    Funding for the RFC Editor function is provided by the IETF
946    Administrative Support Activity (IASA).
954 Melnikov & Daboo            Standards Track                    [Page 17]