imapext-2007

annotate docs/rfc/rfc5161.txt @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children
rev   line source
yuuji@0 1
yuuji@0 2
yuuji@0 3
yuuji@0 4
yuuji@0 5
yuuji@0 6
yuuji@0 7 Network Working Group A. Gulbrandsen, Ed.
yuuji@0 8 Request for Comments: 5161 Oryx Mail Systems GmbH
yuuji@0 9 Category: Standards Track A. Melnikov, Ed.
yuuji@0 10 Isode Limited
yuuji@0 11 March 2008
yuuji@0 12
yuuji@0 13
yuuji@0 14 The IMAP ENABLE Extension
yuuji@0 15
yuuji@0 16 Status of This Memo
yuuji@0 17
yuuji@0 18 This document specifies an Internet standards track protocol for the
yuuji@0 19 Internet community, and requests discussion and suggestions for
yuuji@0 20 improvements. Please refer to the current edition of the "Internet
yuuji@0 21 Official Protocol Standards" (STD 1) for the standardization state
yuuji@0 22 and status of this protocol. Distribution of this memo is unlimited.
yuuji@0 23
yuuji@0 24 Abstract
yuuji@0 25
yuuji@0 26 Most IMAP extensions are used by the client when it wants to and the
yuuji@0 27 server supports it. However, a few extensions require the server to
yuuji@0 28 know whether a client supports that extension. The ENABLE extension
yuuji@0 29 allows an IMAP client to say which extensions it supports.
yuuji@0 30
yuuji@0 31 1. Overview
yuuji@0 32
yuuji@0 33 Several IMAP extensions allow the server to return unsolicited
yuuji@0 34 responses specific to these extensions in certain circumstances.
yuuji@0 35 However, servers cannot send those unsolicited responses until they
yuuji@0 36 know that the clients support such extensions and thus won't choke on
yuuji@0 37 the extension response data.
yuuji@0 38
yuuji@0 39 Up until now, extensions have typically stated that a server cannot
yuuji@0 40 send the unsolicited responses until after the client has used a
yuuji@0 41 command with the extension data (i.e., at that point the server knows
yuuji@0 42 the client is aware of the extension). CONDSTORE ([RFC4551]),
yuuji@0 43 ANNOTATE ([ANNOTATE]), and some extensions under consideration at the
yuuji@0 44 moment use various commands to enable server extensions. For
yuuji@0 45 example, CONDSTORE uses a SELECT or FETCH parameter, and ANNOTATE
yuuji@0 46 uses a side effect of FETCH.
yuuji@0 47
yuuji@0 48 The ENABLE extension provides an explicit indication from the client
yuuji@0 49 that it supports particular extensions. This is done using a new
yuuji@0 50 ENABLE command.
yuuji@0 51
yuuji@0 52 An IMAP server that supports ENABLE advertises this by including the
yuuji@0 53 word ENABLE in its capability list.
yuuji@0 54
yuuji@0 55
yuuji@0 56
yuuji@0 57
yuuji@0 58 Gulbrandsen & Melnikov Standards Track [Page 1]
yuuji@0 59
yuuji@0 60 RFC 5161 The IMAP ENABLE Extension March 2008
yuuji@0 61
yuuji@0 62
yuuji@0 63 Most IMAP extensions do not require the client to enable the
yuuji@0 64 extension in any way.
yuuji@0 65
yuuji@0 66 2. Conventions Used in This Document
yuuji@0 67
yuuji@0 68 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
yuuji@0 69 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
yuuji@0 70 document are to be interpreted as described in [RFC2119].
yuuji@0 71
yuuji@0 72 Formal syntax is defined by [RFC5234] and [RFC3501].
yuuji@0 73
yuuji@0 74 Example lines prefaced by "C:" are sent by the client and ones
yuuji@0 75 prefaced by "S:" by the server. The five characters [...] means that
yuuji@0 76 something has been elided.
yuuji@0 77
yuuji@0 78 3. Protocol Changes
yuuji@0 79
yuuji@0 80 3.1. The ENABLE Command
yuuji@0 81
yuuji@0 82 Arguments: capability names
yuuji@0 83
yuuji@0 84 Result: OK: Relevant capabilities enabled
yuuji@0 85 BAD: No arguments, or syntax error in an argument
yuuji@0 86
yuuji@0 87 The ENABLE command takes a list of capability names, and requests the
yuuji@0 88 server to enable the named extensions. Once enabled using ENABLE,
yuuji@0 89 each extension remains active until the IMAP connection is closed.
yuuji@0 90 For each argument, the server does the following:
yuuji@0 91
yuuji@0 92 - If the argument is not an extension known to the server, the server
yuuji@0 93 MUST ignore the argument.
yuuji@0 94
yuuji@0 95 - If the argument is an extension known to the server, and it is not
yuuji@0 96 specifically permitted to be enabled using ENABLE, the server MUST
yuuji@0 97 ignore the argument. (Note that knowing about an extension doesn't
yuuji@0 98 necessarily imply supporting that extension.)
yuuji@0 99
yuuji@0 100 - If the argument is an extension that is supported by the server and
yuuji@0 101 that needs to be enabled, the server MUST enable the extension for
yuuji@0 102 the duration of the connection. At present, this applies only to
yuuji@0 103 CONDSTORE ([RFC4551]). Note that once an extension is enabled,
yuuji@0 104 there is no way to disable it.
yuuji@0 105
yuuji@0 106 If the ENABLE command is successful, the server MUST send an untagged
yuuji@0 107 ENABLED response (see Section 3.2).
yuuji@0 108
yuuji@0 109
yuuji@0 110
yuuji@0 111
yuuji@0 112
yuuji@0 113
yuuji@0 114 Gulbrandsen & Melnikov Standards Track [Page 2]
yuuji@0 115
yuuji@0 116 RFC 5161 The IMAP ENABLE Extension March 2008
yuuji@0 117
yuuji@0 118
yuuji@0 119 Clients SHOULD only include extensions that need to be enabled by the
yuuji@0 120 server. At the time of publication, CONDSTORE is the only such
yuuji@0 121 extension (i.e., ENABLE CONDSTORE is an additional "CONDSTORE
yuuji@0 122 enabling command" as defined in [RFC4551]). Future RFCs may add to
yuuji@0 123 this list.
yuuji@0 124
yuuji@0 125 The ENABLE command is only valid in the authenticated state (see
yuuji@0 126 [RFC3501]), before any mailbox is selected. Clients MUST NOT issue
yuuji@0 127 ENABLE once they SELECT/EXAMINE a mailbox; however, server
yuuji@0 128 implementations don't have to check that no mailbox is selected or
yuuji@0 129 was previously selected during the duration of a connection.
yuuji@0 130
yuuji@0 131 The ENABLE command can be issued multiple times in a session. It is
yuuji@0 132 additive; i.e., "ENABLE a b", followed by "ENABLE c" is the same as a
yuuji@0 133 single command "ENABLE a b c". When multiple ENABLE commands are
yuuji@0 134 issued, each corresponding ENABLED response SHOULD only contain
yuuji@0 135 extensions enabled by the corresponding ENABLE command.
yuuji@0 136
yuuji@0 137 There are no limitations on pipelining ENABLE. For example, it is
yuuji@0 138 possible to send ENABLE and then immediately SELECT, or a LOGIN
yuuji@0 139 immediately followed by ENABLE.
yuuji@0 140
yuuji@0 141 The server MUST NOT change the CAPABILITY list as a result of
yuuji@0 142 executing ENABLE; i.e., a CAPABILITY command issued right after an
yuuji@0 143 ENABLE command MUST list the same capabilities as a CAPABILITY
yuuji@0 144 command issued before the ENABLE command. This is demonstrated in
yuuji@0 145 the following example:
yuuji@0 146
yuuji@0 147 C: t1 CAPABILITY
yuuji@0 148 S: * CAPABILITY IMAP4rev1 ID LITERAL+ ENABLE X-GOOD-IDEA
yuuji@0 149 S: t1 OK foo
yuuji@0 150 C: t2 ENABLE CONDSTORE X-GOOD-IDEA
yuuji@0 151 S: * ENABLED X-GOOD-IDEA
yuuji@0 152 S: t2 OK foo
yuuji@0 153 C: t3 CAPABILITY
yuuji@0 154 S: * CAPABILITY IMAP4rev1 ID LITERAL+ ENABLE X-GOOD-IDEA
yuuji@0 155 S: t3 OK foo again
yuuji@0 156
yuuji@0 157 In the following example, the client enables CONDSTORE:
yuuji@0 158
yuuji@0 159 C: a1 ENABLE CONDSTORE
yuuji@0 160 S: * ENABLED CONDSTORE
yuuji@0 161 S: a1 OK Conditional Store enabled
yuuji@0 162
yuuji@0 163
yuuji@0 164
yuuji@0 165
yuuji@0 166
yuuji@0 167
yuuji@0 168
yuuji@0 169
yuuji@0 170 Gulbrandsen & Melnikov Standards Track [Page 3]
yuuji@0 171
yuuji@0 172 RFC 5161 The IMAP ENABLE Extension March 2008
yuuji@0 173
yuuji@0 174
yuuji@0 175 3.2. The ENABLED Response
yuuji@0 176
yuuji@0 177 Contents: capability listing
yuuji@0 178
yuuji@0 179 The ENABLED response occurs as a result of an ENABLE command. The
yuuji@0 180 capability listing contains a space-separated listing of capability
yuuji@0 181 names that the server supports and that were successfully enabled.
yuuji@0 182 The ENABLED response may contain no capabilities, which means that no
yuuji@0 183 extensions listed by the client were successfully enabled.
yuuji@0 184
yuuji@0 185 3.3. Note to Designers of Extensions That May Use the ENABLE Command
yuuji@0 186
yuuji@0 187 Designers of IMAP extensions are discouraged from creating extensions
yuuji@0 188 that require ENABLE unless there is no good alternative design.
yuuji@0 189 Specifically, extensions that cause potentially incompatible behavior
yuuji@0 190 changes to deployed server responses (and thus benefit from ENABLE)
yuuji@0 191 have a higher complexity cost than extensions that do not.
yuuji@0 192
yuuji@0 193 4. Formal Syntax
yuuji@0 194
yuuji@0 195 The following syntax specification uses the Augmented Backus-Naur
yuuji@0 196 Form (ABNF) notation as specified in [RFC5234] including the core
yuuji@0 197 rules in Appendix B.1. [RFC3501] defines the non-terminals
yuuji@0 198 "capability" and "command-any".
yuuji@0 199
yuuji@0 200 Except as noted otherwise, all alphabetic characters are
yuuji@0 201 case-insensitive. The use of upper or lower case characters to
yuuji@0 202 define token strings is for editorial clarity only. Implementations
yuuji@0 203 MUST accept these strings in a case-insensitive fashion.
yuuji@0 204
yuuji@0 205 capability =/ "ENABLE"
yuuji@0 206
yuuji@0 207 command-any =/ "ENABLE" 1*(SP capability)
yuuji@0 208
yuuji@0 209 response-data =/ "*" SP enable-data CRLF
yuuji@0 210
yuuji@0 211 enable-data = "ENABLED" *(SP capability)
yuuji@0 212
yuuji@0 213 5. Security Considerations
yuuji@0 214
yuuji@0 215 It is believed that this extension doesn't add any security
yuuji@0 216 considerations that are not already present in the base IMAP protocol
yuuji@0 217 [RFC3501].
yuuji@0 218
yuuji@0 219 6. IANA Considerations
yuuji@0 220
yuuji@0 221 The IANA has added ENABLE to the IMAP4 Capabilities Registry.
yuuji@0 222
yuuji@0 223
yuuji@0 224
yuuji@0 225
yuuji@0 226 Gulbrandsen & Melnikov Standards Track [Page 4]
yuuji@0 227
yuuji@0 228 RFC 5161 The IMAP ENABLE Extension March 2008
yuuji@0 229
yuuji@0 230
yuuji@0 231 7. Acknowledgments
yuuji@0 232
yuuji@0 233 The editors would like to thank Randy Gellens, Chris Newman, Peter
yuuji@0 234 Coates, Dave Cridland, Mark Crispin, Ned Freed, Dan Karp, Cyrus
yuuji@0 235 Daboo, Ken Murchison, and Eric Burger for comments and corrections.
yuuji@0 236 However, this doesn't necessarily mean that they endorse this
yuuji@0 237 extension, agree with all details, or are responsible for errors
yuuji@0 238 introduced by the editors.
yuuji@0 239
yuuji@0 240 8. Normative References
yuuji@0 241
yuuji@0 242 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
yuuji@0 243 Requirement Levels", BCP 14, RFC 2119, March 1997.
yuuji@0 244
yuuji@0 245 [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
yuuji@0 246 4rev1", RFC 3501, March 2003.
yuuji@0 247
yuuji@0 248 [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for
yuuji@0 249 Syntax Specifications: ABNF", STD 68, RFC 5234, January
yuuji@0 250 2008.
yuuji@0 251
yuuji@0 252 [RFC4551] Melnikov, A. and S. Hole, "IMAP Extension for Conditional
yuuji@0 253 STORE Operation or Quick Flag Changes Resynchronization",
yuuji@0 254 RFC 4551, June 2006.
yuuji@0 255
yuuji@0 256 9. Informative References
yuuji@0 257
yuuji@0 258 [ANNOTATE] Daboo, C. and R. Gellens, "IMAP ANNOTATE Extension", Work
yuuji@0 259 in Progress, August 2006.
yuuji@0 260
yuuji@0 261
yuuji@0 262
yuuji@0 263
yuuji@0 264
yuuji@0 265
yuuji@0 266
yuuji@0 267
yuuji@0 268
yuuji@0 269
yuuji@0 270
yuuji@0 271
yuuji@0 272
yuuji@0 273
yuuji@0 274
yuuji@0 275
yuuji@0 276
yuuji@0 277
yuuji@0 278
yuuji@0 279
yuuji@0 280
yuuji@0 281
yuuji@0 282 Gulbrandsen & Melnikov Standards Track [Page 5]
yuuji@0 283
yuuji@0 284 RFC 5161 The IMAP ENABLE Extension March 2008
yuuji@0 285
yuuji@0 286
yuuji@0 287 Editors' Addresses
yuuji@0 288
yuuji@0 289 Arnt Gulbrandsen
yuuji@0 290 Oryx Mail Systems GmbH
yuuji@0 291 Schweppermannstr. 8
yuuji@0 292 D-81671 Muenchen
yuuji@0 293 Germany
yuuji@0 294
yuuji@0 295 Fax: +49 89 4502 9758
yuuji@0 296 EMail: arnt@oryx.com
yuuji@0 297
yuuji@0 298
yuuji@0 299 Alexey Melnikov
yuuji@0 300 Isode Ltd
yuuji@0 301 5 Castle Business Village
yuuji@0 302 36 Station Road
yuuji@0 303 Hampton, Middlesex TW12 2BX
yuuji@0 304 UK
yuuji@0 305
yuuji@0 306 EMail: Alexey.Melnikov@isode.com
yuuji@0 307
yuuji@0 308
yuuji@0 309
yuuji@0 310
yuuji@0 311
yuuji@0 312
yuuji@0 313
yuuji@0 314
yuuji@0 315
yuuji@0 316
yuuji@0 317
yuuji@0 318
yuuji@0 319
yuuji@0 320
yuuji@0 321
yuuji@0 322
yuuji@0 323
yuuji@0 324
yuuji@0 325
yuuji@0 326
yuuji@0 327
yuuji@0 328
yuuji@0 329
yuuji@0 330
yuuji@0 331
yuuji@0 332
yuuji@0 333
yuuji@0 334
yuuji@0 335
yuuji@0 336
yuuji@0 337
yuuji@0 338 Gulbrandsen & Melnikov Standards Track [Page 6]
yuuji@0 339
yuuji@0 340 RFC 5161 The IMAP ENABLE Extension March 2008
yuuji@0 341
yuuji@0 342
yuuji@0 343 Full Copyright Statement
yuuji@0 344
yuuji@0 345 Copyright (C) The IETF Trust (2008).
yuuji@0 346
yuuji@0 347 This document is subject to the rights, licenses and restrictions
yuuji@0 348 contained in BCP 78, and except as set forth therein, the authors
yuuji@0 349 retain all their rights.
yuuji@0 350
yuuji@0 351 This document and the information contained herein are provided on an
yuuji@0 352 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
yuuji@0 353 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
yuuji@0 354 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
yuuji@0 355 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
yuuji@0 356 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
yuuji@0 357 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
yuuji@0 358
yuuji@0 359 Intellectual Property
yuuji@0 360
yuuji@0 361 The IETF takes no position regarding the validity or scope of any
yuuji@0 362 Intellectual Property Rights or other rights that might be claimed to
yuuji@0 363 pertain to the implementation or use of the technology described in
yuuji@0 364 this document or the extent to which any license under such rights
yuuji@0 365 might or might not be available; nor does it represent that it has
yuuji@0 366 made any independent effort to identify any such rights. Information
yuuji@0 367 on the procedures with respect to rights in RFC documents can be
yuuji@0 368 found in BCP 78 and BCP 79.
yuuji@0 369
yuuji@0 370 Copies of IPR disclosures made to the IETF Secretariat and any
yuuji@0 371 assurances of licenses to be made available, or the result of an
yuuji@0 372 attempt made to obtain a general license or permission for the use of
yuuji@0 373 such proprietary rights by implementers or users of this
yuuji@0 374 specification can be obtained from the IETF on-line IPR repository at
yuuji@0 375 http://www.ietf.org/ipr.
yuuji@0 376
yuuji@0 377 The IETF invites any interested party to bring to its attention any
yuuji@0 378 copyrights, patents or patent applications, or other proprietary
yuuji@0 379 rights that may cover technology that may be required to implement
yuuji@0 380 this standard. Please address the information to the IETF at
yuuji@0 381 ietf-ipr@ietf.org.
yuuji@0 382
yuuji@0 383
yuuji@0 384
yuuji@0 385
yuuji@0 386
yuuji@0 387
yuuji@0 388
yuuji@0 389
yuuji@0 390
yuuji@0 391
yuuji@0 392
yuuji@0 393
yuuji@0 394 Gulbrandsen & Melnikov Standards Track [Page 7]
yuuji@0 395

UW-IMAP'd extensions by yuuji