imapext-2007

annotate docs/rfc/rfc4467.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 M. Crispin
yuuji@0 8 Request for Comments: 4467 University of Washington
yuuji@0 9 Updates: 3501 May 2006
yuuji@0 10 Category: Standards Track
yuuji@0 11
yuuji@0 12
yuuji@0 13 Internet Message Access Protocol (IMAP) - URLAUTH Extension
yuuji@0 14
yuuji@0 15 Status of This Memo
yuuji@0 16
yuuji@0 17 This document specifies an Internet standards track protocol for the
yuuji@0 18 Internet community, and requests discussion and suggestions for
yuuji@0 19 improvements. Please refer to the current edition of the "Internet
yuuji@0 20 Official Protocol Standards" (STD 1) for the standardization state
yuuji@0 21 and status of this protocol. Distribution of this memo is unlimited.
yuuji@0 22
yuuji@0 23 Copyright Notice
yuuji@0 24
yuuji@0 25 Copyright (C) The Internet Society (2006).
yuuji@0 26
yuuji@0 27 Abstract
yuuji@0 28
yuuji@0 29 This document describes the URLAUTH extension to the Internet Message
yuuji@0 30 Access Protocol (IMAP) (RFC 3501) and the IMAP URL Scheme (IMAPURL)
yuuji@0 31 (RFC 2192). This extension provides a means by which an IMAP client
yuuji@0 32 can use URLs carrying authorization to access limited message data on
yuuji@0 33 the IMAP server.
yuuji@0 34
yuuji@0 35 An IMAP server that supports this extension indicates this with a
yuuji@0 36 capability name of "URLAUTH".
yuuji@0 37
yuuji@0 38 1. Introduction
yuuji@0 39
yuuji@0 40 In [IMAPURL], a URL of the form imap://fred@example.com/INBOX/;uid=20
yuuji@0 41 requires authorization as userid "fred". However, [IMAPURL] implies
yuuji@0 42 that it only supports authentication and confuses the concepts of
yuuji@0 43 authentication and authorization.
yuuji@0 44
yuuji@0 45 The URLAUTH extension defines an authorization mechanism for IMAP
yuuji@0 46 URLs to replace [IMAPURL]'s authentication-only mechanism. URLAUTH
yuuji@0 47 conveys authorization in the URL string itself and reuses a portion
yuuji@0 48 of the syntax of the [IMAPURL] authentication mechanism to convey the
yuuji@0 49 authorization identity (which also defines the default namespace in
yuuji@0 50 [IMAP]).
yuuji@0 51
yuuji@0 52 The URLAUTH extension provides a means by which an authorized user of
yuuji@0 53 an IMAP server can create URLAUTH-authorized IMAP URLs. A URLAUTH-
yuuji@0 54 authorized URL conveys authorization (not authentication) to the data
yuuji@0 55
yuuji@0 56
yuuji@0 57
yuuji@0 58 Crispin Standards Track [Page 1]
yuuji@0 59
yuuji@0 60 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 61
yuuji@0 62
yuuji@0 63 addressed by that URL. This URL can be used in another IMAP session
yuuji@0 64 to access specific content on the IMAP server, without otherwise
yuuji@0 65 providing authorization to any other data (such as other data in the
yuuji@0 66 mailbox specified in the URL) owned by the authorizing user.
yuuji@0 67
yuuji@0 68 Conceptually, a URLAUTH-authorized URL can be thought of as a "pawn
yuuji@0 69 ticket" that carries no authentication information and can be
yuuji@0 70 redeemed by whomever presents it. However, unlike a pawn ticket,
yuuji@0 71 URLAUTH has optional mechanisms to restrict the usage of a URLAUTH-
yuuji@0 72 authorized URL. Using these mechanisms, URLAUTH-authorized URLs can
yuuji@0 73 be usable by:
yuuji@0 74
yuuji@0 75 . anonymous (the "pawn ticket" model)
yuuji@0 76 . authenticated users only
yuuji@0 77 . a specific authenticated user only
yuuji@0 78 . message submission acting on behalf of a specific user only
yuuji@0 79
yuuji@0 80 There is also a mechanism for expiration.
yuuji@0 81
yuuji@0 82 A URLAUTH-authorized URL can be used in the argument to the BURL
yuuji@0 83 command in message composition, as described in [BURL], for such
yuuji@0 84 purposes as allowing a client (with limited memory or other
yuuji@0 85 resources) to submit a message forward or to resend from an IMAP
yuuji@0 86 mailbox without requiring the client to fetch that message data.
yuuji@0 87
yuuji@0 88 The URLAUTH is generated using an authorization mechanism name and an
yuuji@0 89 authorization token, which is generated using a secret mailbox access
yuuji@0 90 key. An IMAP client can request that the server generate and assign
yuuji@0 91 a new mailbox access key (thus effectively revoking all current URLs
yuuji@0 92 using URLAUTH with the old mailbox access key) but cannot set the
yuuji@0 93 mailbox access key to a key of its own choosing.
yuuji@0 94
yuuji@0 95 1.1. Conventions Used in this Document
yuuji@0 96
yuuji@0 97 The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
yuuji@0 98 in this document are to be interpreted as defined in [KEYWORDS].
yuuji@0 99
yuuji@0 100 The formal syntax uses the Augmented Backus-Naur Form (ABNF) notation
yuuji@0 101 including the core rules defined in Appendix A of [ABNF].
yuuji@0 102
yuuji@0 103 In examples, "C:" and "S:" indicate lines sent by the client and
yuuji@0 104 server, respectively. If a single "C:" or "S:" label applies to
yuuji@0 105 multiple lines, then the line breaks between those lines are for
yuuji@0 106 editorial clarity only and are not part of the actual protocol
yuuji@0 107 exchange.
yuuji@0 108
yuuji@0 109
yuuji@0 110
yuuji@0 111
yuuji@0 112
yuuji@0 113
yuuji@0 114 Crispin Standards Track [Page 2]
yuuji@0 115
yuuji@0 116 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 117
yuuji@0 118
yuuji@0 119 2. Concepts
yuuji@0 120
yuuji@0 121 2.1. URLAUTH
yuuji@0 122
yuuji@0 123 The URLAUTH is a component, appended at the end of a URL, that
yuuji@0 124 conveys authorization to access the data addressed by that URL. It
yuuji@0 125 contains an authorized access identifier, an authorization mechanism
yuuji@0 126 name, and an authorization token. The authorization token is
yuuji@0 127 generated from the URL, the authorized access identifier, the
yuuji@0 128 authorization mechanism name, and a mailbox access key.
yuuji@0 129
yuuji@0 130 2.2. Mailbox Access Key
yuuji@0 131
yuuji@0 132 The mailbox access key is a random string with at least 128 bits of
yuuji@0 133 entropy. It is generated by software (not by the human user) and
yuuji@0 134 MUST be unpredictable.
yuuji@0 135
yuuji@0 136 Each user has a table of mailboxes and an associated mailbox access
yuuji@0 137 key for each mailbox. Consequently, the mailbox access key is per-
yuuji@0 138 user and per-mailbox. In other words, two users sharing the same
yuuji@0 139 mailbox each have a different mailbox access key for that mailbox,
yuuji@0 140 and each mailbox accessed by a single user also has a different
yuuji@0 141 mailbox access key.
yuuji@0 142
yuuji@0 143 2.3. Authorized Access Identifier
yuuji@0 144
yuuji@0 145 The authorized access identifier restricts use of the URLAUTH
yuuji@0 146 authorized URL to certain users authorized on the server, as
yuuji@0 147 described in section 3.
yuuji@0 148
yuuji@0 149 2.4. Authorization Mechanism
yuuji@0 150
yuuji@0 151 The authorization mechanism is the algorithm by which the URLAUTH is
yuuji@0 152 generated and subsequently verified, using the mailbox access key.
yuuji@0 153
yuuji@0 154 2.4.1. INTERNAL Authorization Mechanism
yuuji@0 155
yuuji@0 156 This specification defines the INTERNAL mechanism, which uses a token
yuuji@0 157 generation algorithm of the server's choosing and does not involve
yuuji@0 158 disclosure of the mailbox access key to the client.
yuuji@0 159
yuuji@0 160 Note: The token generation algorithm chosen by the server
yuuji@0 161 implementation should be modern and reasonably secure. At the
yuuji@0 162 time of the writing of this document, an [HMAC] such as HMAC-SHA1
yuuji@0 163 is recommended.
yuuji@0 164
yuuji@0 165
yuuji@0 166
yuuji@0 167
yuuji@0 168
yuuji@0 169
yuuji@0 170 Crispin Standards Track [Page 3]
yuuji@0 171
yuuji@0 172 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 173
yuuji@0 174
yuuji@0 175 If it becomes necessary to change the token generation algorithm
yuuji@0 176 of the INTERNAL mechanism (e.g., because an attack against the
yuuji@0 177 current algorithm has been discovered), all currently existing
yuuji@0 178 URLAUTH-authorized URLs are invalidated by the change in
yuuji@0 179 algorithm. Since this would be an unpleasant surprise to
yuuji@0 180 applications that depend upon the validity of a URLAUTH-authorized
yuuji@0 181 URL, and there is no good way to do a bulk update of existing
yuuji@0 182 deployed URLs, it is best to avoid this situation by using a
yuuji@0 183 secure algorithm as opposed to one that is "good enough".
yuuji@0 184
yuuji@0 185 Server implementations SHOULD consider the possibility of changing
yuuji@0 186 the algorithm. In some cases, it may be desirable to implement
yuuji@0 187 the change of algorithm in a way that newly-generated tokens use
yuuji@0 188 the new algorithm, but that for a limited period of time tokens
yuuji@0 189 using either the new or old algorithm can be validated.
yuuji@0 190 Consequently, the server SHOULD incorporate some means of
yuuji@0 191 identifying the token generation algorithm within the token.
yuuji@0 192
yuuji@0 193 Although this specification is extensible for other mechanisms, none
yuuji@0 194 are defined in this document. In addition to the mechanism name
yuuji@0 195 itself, other mechanisms may have mechanism-specific data, which is
yuuji@0 196 to be interpreted according to the definition of that mechanism.
yuuji@0 197
yuuji@0 198 2.5. Authorization Token
yuuji@0 199
yuuji@0 200 The authorization token is a deterministic string of at least 128
yuuji@0 201 bits that an entity with knowledge of the secret mailbox access key
yuuji@0 202 and URL authorization mechanism can use to verify the URL.
yuuji@0 203
yuuji@0 204 3. IMAP URL Extensions
yuuji@0 205
yuuji@0 206 [IMAPURL] is extended by allowing the addition of
yuuji@0 207 ";EXPIRE=<datetime>" and ";URLAUTH=<access>:<mech>:<token>" to IMAP
yuuji@0 208 URLs that refer to a specific message or message parts.
yuuji@0 209
yuuji@0 210 The URLAUTH is comprised of ";URLAUTH=<access>:<mech>:<token>" and
yuuji@0 211 MUST be at the end of the URL.
yuuji@0 212
yuuji@0 213 URLAUTH does not apply to, and MUST NOT be used with, any IMAP URL
yuuji@0 214 that refers to an entire IMAP server, a list of mailboxes, an entire
yuuji@0 215 IMAP mailbox, or IMAP search results.
yuuji@0 216
yuuji@0 217 When ";EXPIRE=<datetime>" is used, this indicates the latest date and
yuuji@0 218 time that the URL is valid. After that date and time, the URL has
yuuji@0 219 expired, and server implementations MUST reject the URL. If
yuuji@0 220 ";EXPIRE=<datetime>" is not used, the URL has no expiration, but
yuuji@0 221 still can be revoked as discussed below.
yuuji@0 222
yuuji@0 223
yuuji@0 224
yuuji@0 225
yuuji@0 226 Crispin Standards Track [Page 4]
yuuji@0 227
yuuji@0 228 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 229
yuuji@0 230
yuuji@0 231 The URLAUTH takes the form ";URLAUTH=<access>:<mech>:<token>". It is
yuuji@0 232 composed of three parts. The <access> portion provides the
yuuji@0 233 authorized access identifiers, which may constrain the operations and
yuuji@0 234 users that are permitted to use this URL. The <mech> portion
yuuji@0 235 provides the authorization mechanism used by the IMAP server to
yuuji@0 236 generate the authorization token that follows. The <token> portion
yuuji@0 237 provides the authorization token.
yuuji@0 238
yuuji@0 239 The "submit+" access identifier prefix, followed by a userid,
yuuji@0 240 indicates that only a userid authorized as a message submission
yuuji@0 241 entity on behalf of the specified userid is permitted to use this
yuuji@0 242 URL. The IMAP server does not validate the specified userid but does
yuuji@0 243 validate that the IMAP session has an authorization identity that is
yuuji@0 244 authorized as a message submission entity. The authorized message
yuuji@0 245 submission entity MUST validate the userid prior to contacting the
yuuji@0 246 IMAP server.
yuuji@0 247
yuuji@0 248 The "user+" access identifier prefix, followed by a userid, indicates
yuuji@0 249 that use of this URL is limited to IMAP sessions that are logged in
yuuji@0 250 as the specified userid (that is, have authorization identity as that
yuuji@0 251 userid).
yuuji@0 252
yuuji@0 253 Note: If a SASL mechanism that provides both authorization and
yuuji@0 254 authentication identifiers is used to authenticate to the IMAP
yuuji@0 255 server, the "user+" access identifier MUST match the authorization
yuuji@0 256 identifier.
yuuji@0 257
yuuji@0 258 The "authuser" access identifier indicates that use of this URL is
yuuji@0 259 limited to IMAP sessions that are logged in as an authorized user
yuuji@0 260 (that is, have authorization identity as an authorized user) of that
yuuji@0 261 IMAP server. Use of this URL is prohibited to anonymous IMAP
yuuji@0 262 sessions.
yuuji@0 263
yuuji@0 264 The "anonymous" access identifier indicates that use of this URL is
yuuji@0 265 not restricted by session authorization identity; that is, any IMAP
yuuji@0 266 session in authenticated or selected state (as defined in [IMAP]),
yuuji@0 267 including anonymous sessions, may issue a URLFETCH using this URL.
yuuji@0 268
yuuji@0 269 The authorization token is represented as an ASCII-encoded
yuuji@0 270 hexadecimal string, which is used to authorize the URL. The length
yuuji@0 271 and the calculation of the authorization token depends upon the
yuuji@0 272 mechanism used; but, in all cases, the authorization token is at
yuuji@0 273 least 128 bits (and therefore at least 32 hexadecimal digits).
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 Crispin Standards Track [Page 5]
yuuji@0 283
yuuji@0 284 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 285
yuuji@0 286
yuuji@0 287 4. Discussion of URLAUTH Authorization Issues
yuuji@0 288
yuuji@0 289 In [IMAPURL], the userid before the "@" in the URL has two purposes:
yuuji@0 290
yuuji@0 291 1) It provides context for user-specific mailbox paths such as
yuuji@0 292 "INBOX".
yuuji@0 293
yuuji@0 294 2) It specifies that resolution of the URL requires logging in as
yuuji@0 295 that user and limits use of that URL to only that user.
yuuji@0 296
yuuji@0 297 An obvious limitation of using the same field for both purposes is
yuuji@0 298 that the URL can only be resolved by the mailbox owner.
yuuji@0 299
yuuji@0 300 URLAUTH overrides the second purpose of the userid in the IMAP URL
yuuji@0 301 and by default permits the URL to be resolved by any user permitted
yuuji@0 302 by the access identifier.
yuuji@0 303
yuuji@0 304 The "user+<userid>" access identifier limits resolution of that URL
yuuji@0 305 to a particular userid, whereas the "submit+<userid>" access
yuuji@0 306 identifier is more general and simply requires that the session be
yuuji@0 307 authorized by a user that has been granted a "submit" role within the
yuuji@0 308 authentication system. Use of either of these access identifiers
yuuji@0 309 makes it impossible for an attacker, spying on the session, to use
yuuji@0 310 the same URL, either directly or by submission to a message
yuuji@0 311 submission entity.
yuuji@0 312
yuuji@0 313 The "authuser" and "anonymous" access identifiers do not have this
yuuji@0 314 level of protection and should be used with caution. These access
yuuji@0 315 identifiers are primarily useful for public export of data from an
yuuji@0 316 IMAP server, without requiring that it be copied to a web or
yuuji@0 317 anonymous FTP server. Refer to the Security Considerations for more
yuuji@0 318 details.
yuuji@0 319
yuuji@0 320 5. Generation of URLAUTH-Authorized URLs
yuuji@0 321
yuuji@0 322 A URLAUTH-authorized URL is generated from an initial URL as follows:
yuuji@0 323
yuuji@0 324 An initial URL is built, ending with ";URLAUTH=<access>" but without
yuuji@0 325 the ":<mech>:<token>" components. An authorization mechanism is
yuuji@0 326 selected and used to calculate the authorization token, with the
yuuji@0 327 initial URL as the data and a secret known to the IMAP server as the
yuuji@0 328 key. The URLAUTH-authorized URL is generated by taking the initial
yuuji@0 329 URL and appending ":", the URL authorization mechanism name, ":", and
yuuji@0 330 the ASCII-encoded hexadecimal representation of the authorization
yuuji@0 331 token.
yuuji@0 332
yuuji@0 333
yuuji@0 334
yuuji@0 335
yuuji@0 336
yuuji@0 337
yuuji@0 338 Crispin Standards Track [Page 6]
yuuji@0 339
yuuji@0 340 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 341
yuuji@0 342
yuuji@0 343 Note: ASCII-encoded hexadecimal is used instead of BASE64 because
yuuji@0 344 a BASE64 representation may have "=" padding characters, which
yuuji@0 345 would be problematic in a URL.
yuuji@0 346
yuuji@0 347 In the INTERNAL mechanism, the mailbox access key for that mailbox is
yuuji@0 348 the secret known to the IMAP server, and a server-selected algorithm
yuuji@0 349 is used as described in section 2.4.1.
yuuji@0 350
yuuji@0 351 6. Validation of URLAUTH-authorized URLs
yuuji@0 352
yuuji@0 353 A URLAUTH-authorized URL is validated as follows:
yuuji@0 354
yuuji@0 355 The URL is split at the ":" that separates "<access>" from
yuuji@0 356 "<mech>:<token>" in the ";URLAUTH=<access>:<mech>:<token>" portion of
yuuji@0 357 the URL. The "<mech>:<token>" portion is first parsed and saved as
yuuji@0 358 the authorization mechanism and the authorization token. The URL is
yuuji@0 359 truncated, discarding the ":" described above, to create a "rump URL"
yuuji@0 360 (the URL minus the ":" and the "<mech>:<token>" portion). The rump
yuuji@0 361 URL is then analyzed to identify the mailbox.
yuuji@0 362
yuuji@0 363 If the mailbox cannot be identified, an authorization token is
yuuji@0 364 calculated on the rump URL, using random "plausible" keys (selected
yuuji@0 365 by the server) as needed, before returning a validation failure.
yuuji@0 366 This prevents timing attacks aimed at identifying mailbox names.
yuuji@0 367
yuuji@0 368 If the mailbox can be identified, the authorization token is
yuuji@0 369 calculated on the rump URL and a secret known to the IMAP server
yuuji@0 370 using the given URL authorization mechanism. Validation is
yuuji@0 371 successful if, and only if, the calculated authorization token for
yuuji@0 372 that mechanism matches the authorization token supplied in
yuuji@0 373 ";URLAUTH=<access>:<mech>:<token>".
yuuji@0 374
yuuji@0 375 Removal of the ":<mech>:<token>" portion of the URL MUST be the only
yuuji@0 376 operation applied to the URLAUTH-authorized URL to get the rump URL.
yuuji@0 377 In particular, URL percent escape decoding and case-folding
yuuji@0 378 (including to the domain part of the URL) MUST NOT occur.
yuuji@0 379
yuuji@0 380 In the INTERNAL mechanism, the mailbox access key for that mailbox is
yuuji@0 381 used as the secret known to the IMAP server, and the same server-
yuuji@0 382 selected algorithm used for generating URLs is used to calculate the
yuuji@0 383 authorization token for verification.
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 Crispin Standards Track [Page 7]
yuuji@0 395
yuuji@0 396 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 397
yuuji@0 398
yuuji@0 399 7. Additional Commands
yuuji@0 400
yuuji@0 401 These commands are extensions to the [IMAP] base protocol.
yuuji@0 402
yuuji@0 403 The section headings of these commands are intended to correspond
yuuji@0 404 with where they would be located in the base protocol document if
yuuji@0 405 they were part of that document.
yuuji@0 406
yuuji@0 407 BASE.6.3.RESETKEY. RESETKEY Command
yuuji@0 408
yuuji@0 409 Arguments: optional mailbox name
yuuji@0 410 optional mechanism name(s)
yuuji@0 411
yuuji@0 412 Responses: none other than in result
yuuji@0 413
yuuji@0 414 Result: OK - RESETKEY completed, URLMECH containing new data
yuuji@0 415 NO - RESETKEY error: can't change key of that mailbox
yuuji@0 416 BAD - command unknown or arguments invalid
yuuji@0 417
yuuji@0 418 The RESETKEY command has two forms.
yuuji@0 419
yuuji@0 420 The first form accepts a mailbox name as an argument and generates a
yuuji@0 421 new mailbox access key for the given mailbox in the user's mailbox
yuuji@0 422 access key table, replacing any previous mailbox access key (and
yuuji@0 423 revoking any URLs that were authorized with a URLAUTH using that key)
yuuji@0 424 in that table. By default, the mailbox access key is generated for
yuuji@0 425 the INTERNAL mechanism; other mechanisms can be specified with the
yuuji@0 426 optional mechanism argument.
yuuji@0 427
yuuji@0 428 The second form, with no arguments, removes all mailbox access keys
yuuji@0 429 in the user's mailbox access key table, revoking all URLs currently
yuuji@0 430 authorized using URLAUTH by the user.
yuuji@0 431
yuuji@0 432 Any current IMAP session logged in as the user that has the mailbox
yuuji@0 433 selected will receive an untagged OK response with the URLMECH status
yuuji@0 434 response code (see section BASE.7.1.URLMECH for more details about
yuuji@0 435 the URLMECH status response code).
yuuji@0 436
yuuji@0 437 Example:
yuuji@0 438
yuuji@0 439 C: a31 RESETKEY
yuuji@0 440 S: a31 OK All keys removed
yuuji@0 441 C: a32 RESETKEY INBOX
yuuji@0 442 S: a32 OK [URLMECH INTERNAL] mechs
yuuji@0 443 C: a33 RESETKEY INBOX XSAMPLE
yuuji@0 444 S: a33 OK [URLMECH INTERNAL XSAMPLE=P34OKhO7VEkCbsiYY8rGEg==] done
yuuji@0 445
yuuji@0 446
yuuji@0 447
yuuji@0 448
yuuji@0 449
yuuji@0 450 Crispin Standards Track [Page 8]
yuuji@0 451
yuuji@0 452 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 453
yuuji@0 454
yuuji@0 455 BASE.6.3.GENURLAUTH. GENURLAUTH Command
yuuji@0 456
yuuji@0 457 Argument: one or more URL/mechanism pairs
yuuji@0 458
yuuji@0 459 Response: untagged response: GENURLAUTH
yuuji@0 460
yuuji@0 461 Result: OK - GENURLAUTH completed
yuuji@0 462 NO - GENURLAUTH error: can't generate a URLAUTH
yuuji@0 463 BAD - command unknown or arguments invalid
yuuji@0 464
yuuji@0 465 The GENURLAUTH command requests that the server generate a URLAUTH-
yuuji@0 466 authorized URL for each of the given URLs using the given URL
yuuji@0 467 authorization mechanism.
yuuji@0 468
yuuji@0 469 The server MUST validate each supplied URL as follows:
yuuji@0 470
yuuji@0 471 (1) The mailbox component of the URL MUST refer to an existing
yuuji@0 472 mailbox.
yuuji@0 473
yuuji@0 474 (2) The server component of the URL MUST contain a valid userid
yuuji@0 475 that identifies the owner of the mailbox access key table that
yuuji@0 476 will be used to generate the URLAUTH-authorized URL. As a
yuuji@0 477 consequence, the iserver rule of [IMAPURL] is modified so that
yuuji@0 478 iuserauth is mandatory.
yuuji@0 479
yuuji@0 480 Note: the server component of the URL is generally the
yuuji@0 481 logged in userid and server. If not, then the logged in
yuuji@0 482 userid and server MUST have owner-type access to the
yuuji@0 483 mailbox access key table owned by the userid and server
yuuji@0 484 indicated by the server component of the URL.
yuuji@0 485
yuuji@0 486 (3) There is a valid access identifier that, in the case of
yuuji@0 487 "submit+" and "user+", will contain a valid userid. This
yuuji@0 488 userid is not necessarily the same as the owner userid
yuuji@0 489 described in (2).
yuuji@0 490
yuuji@0 491 (4) The server MAY also verify that the iuid and/or isection
yuuji@0 492 components (if present) are valid.
yuuji@0 493
yuuji@0 494 If any of the above checks fail, the server MUST return a tagged BAD
yuuji@0 495 response with the following exception. If an invalid userid is
yuuji@0 496 supplied as the mailbox access key owner and/or as part of the access
yuuji@0 497 identifier, the server MAY issue a tagged OK response with a
yuuji@0 498 generated mailbox key that always fails validation when used with a
yuuji@0 499 URLFETCH command. This exception prevents an attacker from
yuuji@0 500 validating userids.
yuuji@0 501
yuuji@0 502
yuuji@0 503
yuuji@0 504
yuuji@0 505
yuuji@0 506 Crispin Standards Track [Page 9]
yuuji@0 507
yuuji@0 508 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 509
yuuji@0 510
yuuji@0 511 If there is currently no mailbox access key for the given mailbox in
yuuji@0 512 the owner's mailbox access key table, one is automatically generated.
yuuji@0 513 That is, it is not necessary to use RESETKEY prior to first-time use
yuuji@0 514 of GENURLAUTH.
yuuji@0 515
yuuji@0 516 If the command is successful, a GENURLAUTH response code is returned
yuuji@0 517 listing the requested URLs as URLAUTH-authorized URLs.
yuuji@0 518
yuuji@0 519 Examples:
yuuji@0 520
yuuji@0 521 C: a775 GENURLAUTH "imap://joe@example.com/INBOX/;uid=20/
yuuji@0 522 ;section=1.2" INTERNAL
yuuji@0 523 S: a775 BAD missing access identifier in supplied URL
yuuji@0 524 C: a776 GENURLAUTH "imap://example.com/Shared/;uid=20/
yuuji@0 525 ;section=1.2;urlauth=submit+fred" INTERNAL
yuuji@0 526 S: a776 BAD missing owner username in supplied URL
yuuji@0 527 C: a777 GENURLAUTH "imap://joe@example.com/INBOX/;uid=20/
yuuji@0 528 ;section=1.2;urlauth=submit+fred" INTERNAL
yuuji@0 529 S: * GENURLAUTH "imap://joe@example.com/INBOX/;uid=20/;section=1.2
yuuji@0 530 ;urlauth=submit+fred:internal:91354a473744909de610943775f92038"
yuuji@0 531 S: a777 OK GENURLAUTH completed
yuuji@0 532
yuuji@0 533 BASE.6.3.URLFETCH. URLFETCH Command
yuuji@0 534
yuuji@0 535 Argument: one or more URLs
yuuji@0 536
yuuji@0 537 Response: untagged response: URLFETCH
yuuji@0 538
yuuji@0 539 Result: OK - urlfetch completed
yuuji@0 540 NO - urlfetch failed due to server internal error
yuuji@0 541 BAD - command unknown or arguments invalid
yuuji@0 542
yuuji@0 543 The URLFETCH command requests that the server return the text data
yuuji@0 544 associated with the specified IMAP URLs, as described in [IMAPURL]
yuuji@0 545 and extended by this document. The data is returned for all
yuuji@0 546 validated URLs, regardless of whether or not the session would
yuuji@0 547 otherwise be able to access the mailbox containing that data via
yuuji@0 548 SELECT or EXAMINE.
yuuji@0 549
yuuji@0 550 Note: This command does not require that the URL refer to the
yuuji@0 551 selected mailbox; nor does it require that any mailbox be
yuuji@0 552 selected. It also does not in any way interfere with any selected
yuuji@0 553 mailbox.
yuuji@0 554
yuuji@0 555
yuuji@0 556
yuuji@0 557
yuuji@0 558
yuuji@0 559
yuuji@0 560
yuuji@0 561
yuuji@0 562 Crispin Standards Track [Page 10]
yuuji@0 563
yuuji@0 564 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 565
yuuji@0 566
yuuji@0 567 The URLFETCH command effectively executes with the access of the
yuuji@0 568 userid in the server component of the URL (which is generally the
yuuji@0 569 userid that issued the GENURLAUTH). By itself, the URLAUTH does NOT
yuuji@0 570 grant access to the data; once validated, it grants whatever access
yuuji@0 571 to the data is held by the userid in the server component of the URL.
yuuji@0 572 That access may have changed since the GENURLAUTH was done.
yuuji@0 573
yuuji@0 574 The URLFETCH command MUST return an untagged URLFETCH response and a
yuuji@0 575 tagged OK response to any URLFETCH command that is syntactically
yuuji@0 576 valid. A NO response indicates a server internal failure that may be
yuuji@0 577 resolved on later retry.
yuuji@0 578
yuuji@0 579 Note: The possibility of a NO response is to accommodate
yuuji@0 580 implementations that would otherwise have to issue an untagged BYE
yuuji@0 581 with a fatal error due to an inability to respond to a valid
yuuji@0 582 request. In an ideal world, a server SHOULD NOT issue a NO
yuuji@0 583 response.
yuuji@0 584
yuuji@0 585 The server MUST return NIL for any IMAP URL that references an entire
yuuji@0 586 IMAP server, a list of mailboxes, an entire IMAP mailbox, or IMAP
yuuji@0 587 search results.
yuuji@0 588
yuuji@0 589 Example:
yuuji@0 590
yuuji@0 591 Note: For clarity, this example uses the LOGIN command, which
yuuji@0 592 SHOULD NOT be used over a non-encrypted communication path.
yuuji@0 593
yuuji@0 594 This example is of a submit server, obtaining a message segment
yuuji@0 595 for a message that it has already validated was submitted by
yuuji@0 596 "fred".
yuuji@0 597
yuuji@0 598 S: * OK [CAPABILITY IMAP4REV1 URLAUTH] example.com IMAP server
yuuji@0 599 C: a001 LOGIN submitserver secret
yuuji@0 600 S: a001 OK submitserver logged in
yuuji@0 601 C: a002 URLFETCH "imap://joe@example.com/INBOX/;uid=20/
yuuji@0 602 ;section=1.2;urlauth=submit+fred:internal
yuuji@0 603 :91354a473744909de610943775f92038"
yuuji@0 604 S: * URLFETCH "imap://joe@example.com/INBOX/;uid=20/;section=1.2
yuuji@0 605 ;urlauth=submit+fred:internal
yuuji@0 606 :91354a473744909de610943775f92038" {28}
yuuji@0 607 S: Si vis pacem, para bellum.
yuuji@0 608 S:
yuuji@0 609 S: a002 OK URLFETCH completed
yuuji@0 610
yuuji@0 611
yuuji@0 612
yuuji@0 613
yuuji@0 614
yuuji@0 615
yuuji@0 616
yuuji@0 617
yuuji@0 618 Crispin Standards Track [Page 11]
yuuji@0 619
yuuji@0 620 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 621
yuuji@0 622
yuuji@0 623 8. Additional Responses
yuuji@0 624
yuuji@0 625 These responses are extensions to the [IMAP] base protocol.
yuuji@0 626
yuuji@0 627 The section headings of these responses are intended to correspond
yuuji@0 628 with where they would be located in the base protocol document if
yuuji@0 629 they were part of that document.
yuuji@0 630
yuuji@0 631 BASE.7.1.URLMECH. URLMECH Status Response Code
yuuji@0 632
yuuji@0 633 The URLMECH status response code is followed by a list of URL
yuuji@0 634 authorization mechanism names. Mechanism names other than INTERNAL
yuuji@0 635 may be appended with an "=" and BASE64-encoded form of mechanism-
yuuji@0 636 specific data.
yuuji@0 637
yuuji@0 638 This status response code is returned in an untagged OK response in
yuuji@0 639 response to a RESETKEY, SELECT, or EXAMINE command. In the case of
yuuji@0 640 the RESETKEY command, this status response code can be sent in the
yuuji@0 641 tagged OK response instead of requiring a separate untagged OK
yuuji@0 642 response.
yuuji@0 643
yuuji@0 644 Example:
yuuji@0 645
yuuji@0 646 C: a33 RESETKEY INBOX XSAMPLE
yuuji@0 647 S: a33 OK [URLMECH INTERNAL XSAMPLE=P34OKhO7VEkCbsiYY8rGEg==] done
yuuji@0 648
yuuji@0 649 In this example, the server supports the INTERNAL mechanism and an
yuuji@0 650 experimental mechanism called XSAMPLE, which also holds some
yuuji@0 651 mechanism-specific data (the name "XSAMPLE" is for illustrative
yuuji@0 652 purposes only).
yuuji@0 653
yuuji@0 654 BASE.7.4.GENURLAUTH. GENURLAUTH Response
yuuji@0 655
yuuji@0 656 Contents: One or more URLs
yuuji@0 657
yuuji@0 658 The GENURLAUTH response returns the URLAUTH-authorized URL(s)
yuuji@0 659 requested by a GENURLAUTH command.
yuuji@0 660
yuuji@0 661 Example:
yuuji@0 662
yuuji@0 663 C: a777 GENURLAUTH "imap://joe@example.com/INBOX/;uid=20/
yuuji@0 664 ;section=1.2;urlauth=submit+fred" INTERNAL
yuuji@0 665 S: * GENURLAUTH "imap://joe@example.com/INBOX/;uid=20/;section=1.2
yuuji@0 666 ;urlauth=submit+fred:internal:91354a473744909de610943775f92038"
yuuji@0 667 S: a777 OK GENURLAUTH completed
yuuji@0 668
yuuji@0 669
yuuji@0 670
yuuji@0 671
yuuji@0 672
yuuji@0 673
yuuji@0 674 Crispin Standards Track [Page 12]
yuuji@0 675
yuuji@0 676 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 677
yuuji@0 678
yuuji@0 679 BASE.7.4.URLFETCH. URLFETCH Response
yuuji@0 680
yuuji@0 681 Contents: One or more URL/nstring pairs
yuuji@0 682
yuuji@0 683 The URLFETCH response returns the message text data associated with
yuuji@0 684 one or more IMAP URLs, as described in [IMAPURL] and extended by this
yuuji@0 685 document. This response occurs as the result of a URLFETCH command.
yuuji@0 686
yuuji@0 687 The returned data string is NIL if the URL is invalid for any reason
yuuji@0 688 (including validation failure). If the URL is valid, but the IMAP
yuuji@0 689 fetch of the body part returned NIL (this should not happen), the
yuuji@0 690 returned data string should be the empty string ("") and not NIL.
yuuji@0 691
yuuji@0 692 Note: This command does not require that the URL refer to the
yuuji@0 693 selected mailbox; nor does it require that any mailbox be
yuuji@0 694 selected. It also does not in any way interfere with any selected
yuuji@0 695 mailbox.
yuuji@0 696
yuuji@0 697 Example:
yuuji@0 698
yuuji@0 699 C: a002 URLFETCH "imap://joe@example.com/INBOX/;uid=20/
yuuji@0 700 ;section=1.2;urlauth=submit+fred:internal
yuuji@0 701 :91354a473744909de610943775f92038"
yuuji@0 702 S: * URLFETCH "imap://joe@example.com/INBOX/;uid=20/;section=1.2
yuuji@0 703 ;urlauth=submit+fred:internal
yuuji@0 704 :91354a473744909de610943775f92038" {28}
yuuji@0 705 S: Si vis pacem, para bellum.
yuuji@0 706 S:
yuuji@0 707 S: a002 OK URLFETCH completed
yuuji@0 708
yuuji@0 709 9. Formal Syntax
yuuji@0 710
yuuji@0 711 The following syntax specification uses the Augmented Backus-Naur
yuuji@0 712 Form (ABNF) notation as specified in [ABNF].
yuuji@0 713
yuuji@0 714 The following modifications are made to the Formal Syntax in [IMAP]:
yuuji@0 715
yuuji@0 716 resetkey = "RESETKEY" [SP mailbox *(SP mechanism)]
yuuji@0 717
yuuji@0 718 capability =/ "URLAUTH"
yuuji@0 719
yuuji@0 720 command-auth =/ resetkey / genurlauth / urlfetch
yuuji@0 721
yuuji@0 722 resp-text-code =/ "URLMECH" SP "INTERNAL" *(SP mechanism ["=" base64])
yuuji@0 723
yuuji@0 724 genurlauth = "GENURLAUTH" 1*(SP url-rump SP mechanism)
yuuji@0 725
yuuji@0 726 genurlauth-data = "*" SP "GENURLAUTH" 1*(SP url-full)
yuuji@0 727
yuuji@0 728
yuuji@0 729
yuuji@0 730 Crispin Standards Track [Page 13]
yuuji@0 731
yuuji@0 732 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 733
yuuji@0 734
yuuji@0 735 url-full = astring
yuuji@0 736 ; contains authimapurlfull as defined below
yuuji@0 737
yuuji@0 738 url-rump = astring
yuuji@0 739 ; contains authimapurlrump as defined below
yuuji@0 740
yuuji@0 741 urlfetch = "URLFETCH" 1*(SP url-full)
yuuji@0 742
yuuji@0 743 urlfetch-data = "*" SP "URLFETCH" 1*(SP url-full SP nstring)
yuuji@0 744
yuuji@0 745 The following extensions are made to the Formal Syntax in [IMAPURL]:
yuuji@0 746
yuuji@0 747 authimapurl = "imap://" enc-user [iauth] "@" hostport "/"
yuuji@0 748 imessagepart
yuuji@0 749 ; replaces "imapurl" and "iserver" rules for
yuuji@0 750 ; URLAUTH authorized URLs
yuuji@0 751
yuuji@0 752 authimapurlfull = authimapurl iurlauth
yuuji@0 753
yuuji@0 754 authimapurlrump = authimapurl iurlauth-rump
yuuji@0 755
yuuji@0 756 enc-urlauth = 32*HEXDIG
yuuji@0 757
yuuji@0 758 enc-user = 1*achar
yuuji@0 759 ; same as "enc_user" in RFC 2192
yuuji@0 760
yuuji@0 761 iurlauth = iurlauth-rump ":" mechanism ":" enc-urlauth
yuuji@0 762
yuuji@0 763 iurlauth-rump = [expire] ";URLAUTH=" access
yuuji@0 764
yuuji@0 765 access = ("submit+" enc-user) / ("user+" enc-user) /
yuuji@0 766 "authuser" / "anonymous"
yuuji@0 767
yuuji@0 768 expire = ";EXPIRE=" date-time
yuuji@0 769 ; date-time defined in [DATETIME]
yuuji@0 770
yuuji@0 771 mechanism = "INTERNAL" / 1*(ALPHA / DIGIT / "-" / ".")
yuuji@0 772 ; case-insensitive
yuuji@0 773 ; new mechanisms MUST be registered with IANA
yuuji@0 774
yuuji@0 775
yuuji@0 776
yuuji@0 777
yuuji@0 778
yuuji@0 779
yuuji@0 780
yuuji@0 781
yuuji@0 782
yuuji@0 783
yuuji@0 784
yuuji@0 785
yuuji@0 786 Crispin Standards Track [Page 14]
yuuji@0 787
yuuji@0 788 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 789
yuuji@0 790
yuuji@0 791 10. Security Considerations
yuuji@0 792
yuuji@0 793 Security considerations are discussed throughout this memo.
yuuji@0 794
yuuji@0 795 The mailbox access key SHOULD have at least 128 bits of entropy
yuuji@0 796 (refer to [RANDOM] for more details) and MUST be unpredictable.
yuuji@0 797
yuuji@0 798 The server implementation of the INTERNAL mechanism SHOULD consider
yuuji@0 799 the possibility of needing to change the token generation algorithm,
yuuji@0 800 and SHOULD incorporate some means of identifying the token generation
yuuji@0 801 algorithm within the token.
yuuji@0 802
yuuji@0 803 The URLMECH status response code may expose sensitive data in the
yuuji@0 804 mechanism-specific data for mechanisms other than INTERNAL. A server
yuuji@0 805 implementation MUST implement a configuration that will not return a
yuuji@0 806 URLMECH status response code unless some mechanism is provided that
yuuji@0 807 protects the session from snooping, such as a TLS or SASL security
yuuji@0 808 layer that provides confidentiality protection.
yuuji@0 809
yuuji@0 810 The calculation of an authorization token with a "plausible" key if
yuuji@0 811 the mailbox can not be identified is necessary to avoid attacks in
yuuji@0 812 which the server is probed to see if a particular mailbox exists on
yuuji@0 813 the server by measuring the amount of time taken to reject a known
yuuji@0 814 bad name versus some other name.
yuuji@0 815
yuuji@0 816 To protect against a computational denial-of-service attack, a server
yuuji@0 817 MAY impose progressively longer delays on multiple URL requests that
yuuji@0 818 fail validation.
yuuji@0 819
yuuji@0 820 The decision to use the "authuser" access identifier should be made
yuuji@0 821 with caution. An "authuser" access identifier can be used by any
yuuji@0 822 authorized user of the IMAP server; therefore, use of this access
yuuji@0 823 identifier should be limited to content that may be disclosed to any
yuuji@0 824 authorized user of the IMAP server.
yuuji@0 825
yuuji@0 826 The decision to use the "anonymous" access identifier should be made
yuuji@0 827 with extreme caution. An "anonymous" access identifier can be used
yuuji@0 828 by anyone; therefore, use of this access identifier should be limited
yuuji@0 829 to content that may be disclosed to anyone. Many IMAP servers do not
yuuji@0 830 permit anonymous access; in this case, the "anonymous" access
yuuji@0 831 identifier is equivalent to "authuser", but this MUST NOT be relied
yuuji@0 832 upon.
yuuji@0 833
yuuji@0 834 Although this specification does not prohibit the theoretical
yuuji@0 835 capability to generate a URL with a server component other than the
yuuji@0 836 logged in userid and server, this capability should only be provided
yuuji@0 837
yuuji@0 838
yuuji@0 839
yuuji@0 840
yuuji@0 841
yuuji@0 842 Crispin Standards Track [Page 15]
yuuji@0 843
yuuji@0 844 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 845
yuuji@0 846
yuuji@0 847 when the logged in userid/server has been authorized as equivalent to
yuuji@0 848 the server component userid/server, or otherwise has access to that
yuuji@0 849 userid/server mailbox access key table.
yuuji@0 850
yuuji@0 851 11. IANA Considerations
yuuji@0 852
yuuji@0 853 This document constitutes registration of the URLAUTH capability in
yuuji@0 854 the imap4-capabilities registry.
yuuji@0 855
yuuji@0 856 URLAUTH authorization mechanisms are registered by publishing a
yuuji@0 857 standards track or IESG-approved experimental RFC. The registry is
yuuji@0 858 currently located at:
yuuji@0 859
yuuji@0 860 http://www.iana.org/assignments/urlauth-authorization-mechanism-registry
yuuji@0 861
yuuji@0 862 This registry is case-insensitive.
yuuji@0 863
yuuji@0 864 This document constitutes registration of the INTERNAL URLAUTH
yuuji@0 865 authorization mechanism.
yuuji@0 866
yuuji@0 867 IMAP URLAUTH Authorization Mechanism Registry
yuuji@0 868
yuuji@0 869 Mechanism Name Reference
yuuji@0 870 -------------- ---------
yuuji@0 871 INTERNAL [RFC4467]
yuuji@0 872
yuuji@0 873
yuuji@0 874
yuuji@0 875
yuuji@0 876
yuuji@0 877
yuuji@0 878
yuuji@0 879
yuuji@0 880
yuuji@0 881
yuuji@0 882
yuuji@0 883
yuuji@0 884
yuuji@0 885
yuuji@0 886
yuuji@0 887
yuuji@0 888
yuuji@0 889
yuuji@0 890
yuuji@0 891
yuuji@0 892
yuuji@0 893
yuuji@0 894
yuuji@0 895
yuuji@0 896
yuuji@0 897
yuuji@0 898 Crispin Standards Track [Page 16]
yuuji@0 899
yuuji@0 900 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 901
yuuji@0 902
yuuji@0 903 12. Normative References
yuuji@0 904
yuuji@0 905 [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
yuuji@0 906 Specifications: ABNF", RFC 4234, October 2005.
yuuji@0 907
yuuji@0 908 [BURL] Newman, C., "Message Submission BURL Extension", RFC 4468,
yuuji@0 909 May 2006.
yuuji@0 910
yuuji@0 911 [DATETIME] Klyne, G. and C. Newman, "Date and Time on the Internet:
yuuji@0 912 Timestamps", RFC 3339, July 2002.
yuuji@0 913
yuuji@0 914 [IMAP] Crispin, M., "Internet Message Access Protocol - Version
yuuji@0 915 4rev1", RFC 3501, March 2003.
yuuji@0 916
yuuji@0 917 [IMAPURL] Newman, C., "IMAP URL Scheme", RFC 2192, September 1997.
yuuji@0 918
yuuji@0 919 [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
yuuji@0 920 Requirement Levels", BCP 14, RFC 2119, March 1997.
yuuji@0 921
yuuji@0 922 13. Informative References
yuuji@0 923
yuuji@0 924 [HMAC] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
yuuji@0 925 Hashing for Message Authentication", RFC 2104, February
yuuji@0 926 1997.
yuuji@0 927
yuuji@0 928 [RANDOM] Eastlake, D., 3rd, Schiller, J., and S. Crocker,
yuuji@0 929 "Randomness Requirements for Security", BCP 106, RFC 4086,
yuuji@0 930 June 2005.
yuuji@0 931
yuuji@0 932 Author's Address
yuuji@0 933
yuuji@0 934 Mark R. Crispin
yuuji@0 935 Networks and Distributed Computing
yuuji@0 936 University of Washington
yuuji@0 937 4545 15th Avenue NE
yuuji@0 938 Seattle, WA 98105-4527
yuuji@0 939
yuuji@0 940 Phone: (206) 543-5762
yuuji@0 941 EMail: MRC@CAC.Washington.EDU
yuuji@0 942
yuuji@0 943
yuuji@0 944
yuuji@0 945
yuuji@0 946
yuuji@0 947
yuuji@0 948
yuuji@0 949
yuuji@0 950
yuuji@0 951
yuuji@0 952
yuuji@0 953
yuuji@0 954 Crispin Standards Track [Page 17]
yuuji@0 955
yuuji@0 956 RFC 4467 IMAP - URLAUTH Extension May 2006
yuuji@0 957
yuuji@0 958
yuuji@0 959 Full Copyright Statement
yuuji@0 960
yuuji@0 961 Copyright (C) The Internet Society (2006).
yuuji@0 962
yuuji@0 963 This document is subject to the rights, licenses and restrictions
yuuji@0 964 contained in BCP 78, and except as set forth therein, the authors
yuuji@0 965 retain all their rights.
yuuji@0 966
yuuji@0 967 This document and the information contained herein are provided on an
yuuji@0 968 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
yuuji@0 969 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
yuuji@0 970 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
yuuji@0 971 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
yuuji@0 972 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
yuuji@0 973 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
yuuji@0 974
yuuji@0 975 Intellectual Property
yuuji@0 976
yuuji@0 977 The IETF takes no position regarding the validity or scope of any
yuuji@0 978 Intellectual Property Rights or other rights that might be claimed to
yuuji@0 979 pertain to the implementation or use of the technology described in
yuuji@0 980 this document or the extent to which any license under such rights
yuuji@0 981 might or might not be available; nor does it represent that it has
yuuji@0 982 made any independent effort to identify any such rights. Information
yuuji@0 983 on the procedures with respect to rights in RFC documents can be
yuuji@0 984 found in BCP 78 and BCP 79.
yuuji@0 985
yuuji@0 986 Copies of IPR disclosures made to the IETF Secretariat and any
yuuji@0 987 assurances of licenses to be made available, or the result of an
yuuji@0 988 attempt made to obtain a general license or permission for the use of
yuuji@0 989 such proprietary rights by implementers or users of this
yuuji@0 990 specification can be obtained from the IETF on-line IPR repository at
yuuji@0 991 http://www.ietf.org/ipr.
yuuji@0 992
yuuji@0 993 The IETF invites any interested party to bring to its attention any
yuuji@0 994 copyrights, patents or patent applications, or other proprietary
yuuji@0 995 rights that may cover technology that may be required to implement
yuuji@0 996 this standard. Please address the information to the IETF at
yuuji@0 997 ietf-ipr@ietf.org.
yuuji@0 998
yuuji@0 999 Acknowledgement
yuuji@0 1000
yuuji@0 1001 Funding for the RFC Editor function is provided by the IETF
yuuji@0 1002 Administrative Support Activity (IASA).
yuuji@0 1003
yuuji@0 1004
yuuji@0 1005
yuuji@0 1006
yuuji@0 1007
yuuji@0 1008
yuuji@0 1009
yuuji@0 1010 Crispin Standards Track [Page 18]
yuuji@0 1011

UW-IMAP'd extensions by yuuji