rfc9586.original | rfc9586.txt | |||
---|---|---|---|---|
Network Working Group A. Melnikov | Internet Engineering Task Force (IETF) A. Melnikov | |||
Internet-Draft Isode | Request for Comments: 9586 Isode | |||
Intended status: Experimental A. P. Achuthan | Category: Experimental A. P. Achuthan | |||
Expires: 6 October 2024 V. Nagulakonda | ISSN: 2070-1721 V. Nagulakonda | |||
A. Singh | A. Singh | |||
Yahoo! | Yahoo! | |||
L. Alves | L. Alves | |||
4 April 2024 | May 2024 | |||
IMAP Extension for only using and returning UIDs | IMAP Extension for Using and Returning Unique Identifiers (UIDs) Only | |||
draft-ietf-extra-imap-uidonly-08 | ||||
Abstract | Abstract | |||
The UIDONLY extension to the Internet Message Access Protocol (RFC | The UIDONLY extension to the Internet Message Access Protocol (RFCs | |||
3501/RFC 9051) allows clients to enable a mode in which information | 3501 and 9051) allows clients to enable a mode in which information | |||
about mailbox changes is returned using only Unique Identifiers | about mailbox changes is returned using only Unique Identifiers | |||
(UIDs). Message numbers are not returned in responses, and can't be | (UIDs). Message numbers are not returned in responses and cannot be | |||
used in requests once this extension is enabled. This helps both | used in requests once this extension is enabled. This helps both | |||
clients and servers to reduce resource usage required to maintain a | clients and servers to reduce resource usage required to maintain a | |||
map between message numbers and UIDs. | map between message numbers and UIDs. | |||
This document defines an experimental IMAP extension. | This document defines an experimental IMAP extension. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for examination, experimental implementation, and | |||
evaluation. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document defines an Experimental Protocol for the Internet | |||
and may be updated, replaced, or obsoleted by other documents at any | community. This document is a product of the Internet Engineering | |||
time. It is inappropriate to use Internet-Drafts as reference | Task Force (IETF). It represents the consensus of the IETF | |||
material or to cite them other than as "work in progress." | community. It has received public review and has been approved for | |||
publication by the Internet Engineering Steering Group (IESG). Not | ||||
all documents approved by the IESG are candidates for any level of | ||||
Internet Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 6 October 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9586. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction and Overview . . . . . . . . . . . . . . . . . . 2 | 1. Introduction and Overview | |||
2. Document Conventions . . . . . . . . . . . . . . . . . . . . 3 | 2. Document Conventions | |||
3. The UIDONLY extension . . . . . . . . . . . . . . . . . . . . 3 | 3. The UIDONLY Extension | |||
3.1. Enabling UIDONLY extension . . . . . . . . . . . . . . . 4 | 3.1. Enabling the UIDONLY Extension | |||
3.2. Changes to FETCH/STORE/SEARCH/COPY/MOVE . . . . . . . . . 4 | 3.2. Changes to FETCH/STORE/SEARCH/COPY/MOVE | |||
3.3. Changes to UID FETCH/UID STORE . . . . . . . . . . . . . 4 | 3.3. Changes to UID FETCH / UID STORE | |||
3.4. Changes to EXPUNGE/UID EXPUNGE . . . . . . . . . . . . . 5 | 3.4. Changes to EXPUNGE / UID EXPUNGE | |||
3.5. Changes to UID SEARCH . . . . . . . . . . . . . . . . . . 5 | 3.5. Changes to UID SEARCH | |||
3.6. Changes to how other mailbox changes are announced . . . 5 | 3.6. Changes to How Other Mailbox Changes Are Announced | |||
3.7. Interaction with CONDSTORE and QRESYNC extensions . . . . 6 | 3.7. Interaction with the CONDSTORE and QRESYNC Extensions | |||
3.8. Interaction with other extensions . . . . . . . . . . . . 6 | 3.8. Interaction with Other Extensions | |||
4. Formal syntax . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Formal Syntax | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 5. Security Considerations | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 6. IANA Considerations | |||
7. Alternative solutions not taken . . . . . . . . . . . . . . . 7 | 7. Alternative Solutions Not Taken | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8 | 8. Normative References | |||
9. Normative References . . . . . . . . . . . . . . . . . . . . 8 | 9. Informative References | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Acknowledgments | |||
Authors' Addresses | ||||
1. Introduction and Overview | 1. Introduction and Overview | |||
This document defines an extension to the Internet Message Access | This document defines an extension to the Internet Message Access | |||
Protocol [RFC3501] for eliminating use of message numbers. This | Protocol [RFC3501] [RFC9051] for eliminating the use of message | |||
extension is compatible with both IMAP4rev1 [RFC3501] and IMAP4rev2 | numbers. This extension is compatible with both IMAP4rev1 [RFC3501] | |||
[RFC9051]. | and IMAP4rev2 [RFC9051]. | |||
The UIDONLY extension of the Internet Message Access Protocol (RFC | The UIDONLY extension of the Internet Message Access Protocol allows | |||
3501/RFC 9051) allows clients to request that servers only use and | clients to request that servers only use and return UIDs. This helps | |||
return UIDs. This helps both clients and servers to reduce resource | both clients and servers to reduce resource usage required to | |||
usage required for maintenance of message number to UID map. | maintain a map between message numbers and UIDs. | |||
2. Document Conventions | 2. Document Conventions | |||
In protocol examples, this document uses a prefix of "C: " to denote | In protocol examples, this document uses a prefix of "C:" to denote | |||
lines sent by the client to the server, and "S: " for lines sent by | lines sent by the client to the server and "S:" for lines sent by the | |||
the server to the client. Lines prefixed with "// " are comments | server to the client. Lines prefixed with "//" are comments | |||
explaining the previous protocol line. These prefixes and comments | explaining the previous protocol line. These prefixes and comments | |||
are not part of the protocol. Lines without any of these prefixes | are not part of the protocol. Lines without any of these prefixes | |||
are continuations of the previous line, and no line break is present | are continuations of the previous line, and no line break is present | |||
in the protocol unless specifically mentioned. | in the protocol unless specifically mentioned. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
Other capitalised words are names of IMAP commands or responses | Other capitalized words are names of IMAP commands or responses | |||
[RFC3501][RFC9051] or keywords from this document. | [RFC3501] [RFC9051] or keywords from this document. | |||
3. The UIDONLY extension | 3. The UIDONLY Extension | |||
An IMAP server advertises support for the UIDONLY extension by | An IMAP server advertises support for the UIDONLY extension by | |||
including the "UIDONLY" capability in the CAPABILITY response/ | including the "UIDONLY" capability in the CAPABILITY response/ | |||
response code. | response code. | |||
Once the UIDONLY extension is enabled (see Section 3.1), the client | Once the UIDONLY extension is enabled (see Section 3.1), the client | |||
MUST NOT use message sequence numbers (including the special marker | MUST NOT use message sequence numbers (including the special marker | |||
"*") in any arguments to IMAP commands, and the server MUST return a | "*") in any arguments to IMAP commands, and the server MUST return a | |||
tagged BAD response if the client uses message sequence numbers. The | tagged BAD response if the client uses message sequence numbers. The | |||
server MUST include the UIDREQUIRED response code in such BAD | server MUST include the UIDREQUIRED response code in such BAD | |||
responses (see below). Additionally, once the UIDONLY extension is | responses (see below). Additionally, once the UIDONLY extension is | |||
enabled, the server MUST NOT return message sequence numbers in any | enabled, the server MUST NOT return message sequence numbers in any | |||
response. | response. | |||
The UIDREQUIRED response code is defined as follows: | The UIDREQUIRED response code is defined as follows: | |||
UIDREQUIRED Once UIDONLY extension is enabled the server returns the | UIDREQUIRED: Once the UIDONLY extension is enabled, the server | |||
UIDREQUIRED response code when the client issues a command that | returns the UIDREQUIRED response code when the client issues a | |||
includes message numbers instead of UIDs. | command that includes message numbers instead of UIDs. | |||
C: 07 FETCH 10000:14589 (UID FLAGS) | C: 07 FETCH 10000:14589 (UID FLAGS) | |||
S: 07 BAD [UIDREQUIRED] Message numbers are not allowed | S: 07 BAD [UIDREQUIRED] Message numbers are not allowed | |||
once UIDONLY is enabled | once UIDONLY is enabled | |||
The UIDONLY extension affects how information about new, expunged or | The UIDONLY extension affects how information about new, expunged, or | |||
changed messages is returned in unsolicited responses. In | changed messages is returned in unsolicited responses. In | |||
partucular, it affects responses to UID FETCH/UID STORE/EXPUNGE/UID | particular, it affects responses to UID FETCH/UID STORE/EXPUNGE/UID | |||
EXPUNGE, as well as how unsolicited mailbox changes are announced. | EXPUNGE, as well as how unsolicited mailbox changes are announced. | |||
The following subsections describe changes introduced by this | The following subsections describe changes introduced by this | |||
extension in more detail. | extension in more detail. | |||
3.1. Enabling UIDONLY extension | 3.1. Enabling the UIDONLY Extension | |||
As the UIDONLY extension affects how information about new, expunged | As the UIDONLY extension affects how information about new, expunged, | |||
or changed messages is returned in unsolicited responses, it has to | or changed messages is returned in unsolicited responses, it has to | |||
be enabled by the client first using the ENABLE command. | be enabled by the client first using the ENABLE command. | |||
S: * OK [CAPABILITY IMAP4rev1 ENABLE CONDSTORE QRESYNC UIDONLY | S: * OK [CAPABILITY IMAP4rev1 ENABLE CONDSTORE QRESYNC UIDONLY | |||
AUTH=SCRAM-SHA-256] | AUTH=SCRAM-SHA-256] | |||
C: 01 ENABLE UIDONLY | C: 01 ENABLE UIDONLY | |||
S: * ENABLED UIDONLY | S: * ENABLED UIDONLY | |||
S: 01 OK ENABLE completed | S: 01 OK ENABLE completed | |||
3.2. Changes to FETCH/STORE/SEARCH/COPY/MOVE | 3.2. Changes to FETCH/STORE/SEARCH/COPY/MOVE | |||
When UIDONLY is enabled, FETCH, STORE, SEARCH, COPY and MOVE commands | When UIDONLY is enabled, the FETCH, STORE, SEARCH, COPY, and MOVE | |||
are prohibited and MUST result in a tagged BAD response. Clients | commands are prohibited and MUST result in a tagged BAD response. | |||
should instead use UID FETCH, UID STORE, UID SEARCH, UID COPY or UID | Clients should instead use UID FETCH, UID STORE, UID SEARCH, UID | |||
MOVE respectively. | COPY, or UID MOVE, respectively. | |||
3.3. Changes to UID FETCH/UID STORE | 3.3. Changes to UID FETCH / UID STORE | |||
When UIDONLY is enabled, all FETCH responses that would be returned | When UIDONLY is enabled, all FETCH responses that would be returned | |||
by UID FETCH/UID STORE are replaced by UIDFETCH responses. | by UID FETCH / UID STORE are replaced by UIDFETCH responses. | |||
Note that UIDFETCH response contains the same response data items as | Note that the UIDFETCH response contains the same response data items | |||
specified for the FETCH response. The UID is always returned at the | as specified for the FETCH response. The UID is always returned at | |||
beginning of a UIDFETCH response, and it can also appear in the UID | the beginning of a UIDFETCH response, and it can also appear in the | |||
response data item, if requested by the client. While the UID | UID response data item, if requested by the client. While the UID | |||
response data item is redundant when requested, it can simplify | response data item is redundant when requested, it can simplify the | |||
updating of existing (non UIDONLY) implementations to support | updating of existing (non-UIDONLY) implementations to support | |||
UIDONLY. | UIDONLY. | |||
C: 10 UID FETCH 25900:26600 (FLAGS) | C: 10 UID FETCH 25900:26600 (FLAGS) | |||
[...] | [...] | |||
S: * 25996 UIDFETCH (FLAGS (\Seen)) | S: * 25996 UIDFETCH (FLAGS (\Seen)) | |||
S: * 25997 UIDFETCH (FLAGS (\Flagged \Answered)) | S: * 25997 UIDFETCH (FLAGS (\Flagged \Answered)) | |||
S: * 26600 UIDFETCH (FLAGS ()) | S: * 26600 UIDFETCH (FLAGS ()) | |||
S: 10 OK FETCH completed | S: 10 OK FETCH completed | |||
C: 11 UID FETCH 25900:26600 (UID FLAGS) | C: 11 UID FETCH 25900:26600 (UID FLAGS) | |||
S: * 25900 UIDFETCH (FLAGS (\Seen) UID 25900) | S: * 25900 UIDFETCH (FLAGS (\Seen) UID 25900) | |||
S: * 25902 UIDFETCH (FLAGS (\Flagged) UID 25902) | S: * 25902 UIDFETCH (FLAGS (\Flagged) UID 25902) | |||
S: * 26310 UIDFETCH (FLAGS (\Answered) UID 26310) | S: * 26310 UIDFETCH (FLAGS (\Answered) UID 26310) | |||
S: * 26311 UIDFETCH (FLAGS () UID 26311) | S: * 26311 UIDFETCH (FLAGS () UID 26311) | |||
S: * 26498 UIDFETCH (FLAGS (\Answered) UID 26498) | S: * 26498 UIDFETCH (FLAGS (\Answered) UID 26498) | |||
[...] | [...] | |||
S: 11 OK FETCH completed | S: 11 OK FETCH completed | |||
3.4. Changes to EXPUNGE/UID EXPUNGE | 3.4. Changes to EXPUNGE / UID EXPUNGE | |||
When UIDONLY is enabled, all EXPUNGED responses that would be | When UIDONLY is enabled, all EXPUNGED responses that would be | |||
returned by EXPUNGE/UID EXPUNGE are replaced by VANISHED responses, | returned by EXPUNGE / UID EXPUNGE are replaced by VANISHED responses, | |||
as defined in [RFC7162]. Note that a server that implements UIDONLY | as defined in [RFC7162]. Note that a server that implements the | |||
extension is not required (but allowed) to also implement CONDSTORE | UIDONLY extension is not required (but allowed) to also implement the | |||
and/or QRESYNC extensions. | CONDSTORE and/or QRESYNC extensions. | |||
C: 12 EXPUNGE | C: 12 EXPUNGE | |||
S: * VANISHED 405,407,410,425 | S: * VANISHED 405,407,410,425 | |||
S: 12 OK expunged | S: 12 OK expunged | |||
3.5. Changes to UID SEARCH | 3.5. Changes to UID SEARCH | |||
The "<sequence set>" UID SEARCH criterion is prohibited (and results | The "<sequence set>" UID SEARCH criterion is prohibited (and results | |||
in a tagged BAD response) once UIDONLY is enabled. Clients should | in a tagged BAD response) once UIDONLY is enabled. Clients should | |||
use ALL or "UID <sequence set>" UID SEARCH criterion instead. | use ALL or "UID <sequence set>" UID SEARCH criterion instead. | |||
3.6. Changes to how other mailbox changes are announced | 3.6. Changes to How Other Mailbox Changes Are Announced | |||
When UIDONLY is enabled, all changes to flags (and other dynamic | When UIDONLY is enabled, all changes to flags (and other dynamic | |||
message attributes) are returned using UIDFETCH responses, instead of | message attributes) are returned using UIDFETCH responses instead of | |||
FETCH responses. | FETCH responses. | |||
Similarly, all expunged messages are announced using VANISHED | Similarly, all expunged messages are announced using VANISHED | |||
responses instead of EXPUNGE responses. | responses instead of EXPUNGE responses. | |||
This extension doesn't affect EXISTS or RECENT responses. | This extension doesn't affect EXISTS or RECENT responses. | |||
UID MOVE/UID COPY commands SHOULD return the COPYUID response code, | The UID MOVE / UID COPY commands SHOULD return the COPYUID response | |||
as specified in [RFC4315]. | code, as specified in [RFC4315]. | |||
Use of the UIDNOTSTICKY response code (see [RFC4315]) is not | Use of the UIDNOTSTICKY response code (see [RFC4315]) is not | |||
compatible with the UIDONLY extension, i.e. a server that advertises | compatible with the UIDONLY extension, i.e., a server that advertises | |||
the UIDONLY extension MUST NOT return UIDNOTSTICKY response code. | the UIDONLY extension MUST NOT return a UIDNOTSTICKY response code. | |||
C: 15 UID move 597 "Archives/2023/2023-05" | C: 15 UID move 597 "Archives/2023/2023-05" | |||
S: * OK [COPYUID 1685977201 597 2] UID MOVE | S: * OK [COPYUID 1685977201 597 2] UID MOVE | |||
S: * VANISHED 597 | S: * VANISHED 597 | |||
S: 15 OK UID MOVE Completed | S: 15 OK UID MOVE Completed | |||
3.7. Interaction with CONDSTORE and QRESYNC extensions | 3.7. Interaction with the CONDSTORE and QRESYNC Extensions | |||
The CONDSTORE extension is compatible with the UIDONLY extension. | The CONDSTORE extension is compatible with the UIDONLY extension. | |||
The MODSEQ message data item is returned in UIDFETCH responses | The MODSEQ message data item is returned in UIDFETCH responses | |||
instead of FETCH responses. | instead of FETCH responses. | |||
The QRESYNC extension is compatible with the UIDONLY extension, but | The QRESYNC extension is compatible with the UIDONLY extension, but | |||
once UIDONLY is enabled, the fourth SELECT QRESYNC parameter | once UIDONLY is enabled, the fourth SELECT QRESYNC parameter (see | |||
("Message Sequence Match Data", see Section 3.2.5.2 of [RFC7162]) | Section 3.2.5.2 ("Message Sequence Match Data") of [RFC7162]) MUST | |||
MUST NOT be used. The server MUST return a tagged BAD response if | NOT be used. The server MUST return a tagged BAD response if such a | |||
such a parameter is observed once UIDONLY is enabled. | parameter is observed once UIDONLY is enabled. | |||
3.8. Interaction with other extensions | 3.8. Interaction with Other Extensions | |||
IMAP extensions might define other commands that accept message | IMAP extensions might define other commands that accept message | |||
sequence numbers ("sequence-set" ABNF non terminal, see Section 9 of | sequence numbers ("sequence-set" ABNF non-terminal; see Section 9 of | |||
[RFC9051]). Once UIDONLY is enabled, the server MUST reject such | [RFC9051]). Once UIDONLY is enabled, the server MUST reject such | |||
commands with tagged BAD response. For example, SORT and THREAD | commands with a tagged BAD response. For example, the SORT and | |||
[RFC5256] commands are prohibited, similarly to the SEARCH command. | THREAD [RFC5256] commands are prohibited, similarly to the SEARCH | |||
However UID SORT and UID THREAD can be used instead. | command. However, UID SORT and UID THREAD can be used instead. | |||
4. Formal syntax | 4. Formal Syntax | |||
The following syntax specification uses the Augmented Backus-Naur | The following syntax specification uses the Augmented Backus-Naur | |||
Form (ABNF) notation as specified in [ABNF]. | Form (ABNF) notation as specified in [ABNF]. | |||
Non-terminals referenced but not defined below are as defined by | Non-terminals referenced but not defined below are as defined in | |||
Section 9 of IMAP4 [RFC9051]. | Section 9 of IMAP4 [RFC9051]. | |||
Except as noted otherwise, all alphabetic characters are case- | Except as noted otherwise, all alphabetic characters are case | |||
insensitive. The use of upper or lower case characters to define | insensitive. The use of uppercase or lowercase characters to define | |||
token strings is for editorial clarity only. Implementations MUST | token strings is for editorial clarity only. Implementations MUST | |||
accept these strings in a case-insensitive fashion. | accept these strings in a case-insensitive fashion. | |||
SP = <Defined in RFC 5234> | SP = <Defined in RFC 5234> | |||
capability =/ "UIDONLY" | capability =/ "UIDONLY" | |||
;; <capability> from [RFC9051] | ;; <capability>; see RFC 9051 | |||
message-data =/ uidfetch-resp | message-data =/ uidfetch-resp | |||
uidfetch-resp = uniqueid SP "UIDFETCH" SP msg-att | uidfetch-resp = uniqueid SP "UIDFETCH" SP msg-att | |||
;; The uniqueid is the UID of | ;; The uniqueid is the UID of | |||
;; the corresponding message | ;; the corresponding message | |||
message-data =/ expunged-resp | message-data =/ expunged-resp | |||
expunged-resp = <defines VANISHED response, see RFC 7162> | expunged-resp = <defines VANISHED response; see RFC 7162> | |||
resp-text-code =/ "UIDREQUIRED" | resp-text-code =/ "UIDREQUIRED" | |||
5. Security Considerations | 5. Security Considerations | |||
This IMAP extension is not believed to add any additional Security | This IMAP extension is not believed to add any additional Security | |||
Considerations beyond the ones that are generally applicable to | Considerations beyond the ones that are generally applicable to | |||
IMAP4rev1 [RFC3501] and IMAP4rev2 [RFC9051]. | IMAP4rev1 [RFC3501] and IMAP4rev2 [RFC9051]. | |||
6. IANA Considerations | 6. IANA Considerations | |||
IMAP4 capabilities are registered by publishing a standards track or | IMAP4 capabilities are registered by publishing a Standards Track or | |||
IESG approved Informational or Experimental RFC. The registry is | IESG-approved Informational or Experimental RFC. | |||
currently located at: | ||||
https://www.iana.org/assignments/imap4-capabilities | ||||
IANA is requested to add definition of the UIDONLY extension to this | ||||
registry with [RFCXXXX] as the reference. | ||||
IANA is also requested to add definition of the UIDREQUIRED response | IANA has added the UIDONLY extension to the "IMAP Capabilities" | |||
code to the "IMAP Response Codes" registry with [RFCXXXX] as the | registry with RFC 9586 as the reference. The registry is located at | |||
reference. The registry is currently located at: | <https://www.iana.org/assignments/imap4-capabilities/>. | |||
https://www.iana.org/assignments/imap-response-codes/imap-response-codes.xhtml | IANA has also added the UIDREQUIRED response code to the "IMAP | |||
Response Codes" registry with RFC 9586 as the reference. The | ||||
registry is located at <https://www.iana.org/assignments/imap- | ||||
response-codes/>. | ||||
7. Alternative solutions not taken | 7. Alternative Solutions Not Taken | |||
An earlier draft of this document proposed use of FETCH responses | An earlier draft version of this document proposed use of FETCH | |||
with the message number parameter always be set to 0. This was | responses with the message number parameter always set to 0. This | |||
judged to be too risky, as this could have caused unexpected side | was considered to be too risky as it could cause unexpected side | |||
effects and cache corruptions in client code that was not properly | effects and cache corruptions in client code that was not properly | |||
updated to handle lack of message numbers. | updated to handle a lack of message numbers. | |||
8. Acknowledgments | ||||
Editors of this document would like to thank the following people who | ||||
provided useful comments and/or participated in discussions that lead | ||||
to this document, in particular: Arnt Gulbrandsen, Ken Murchison, | ||||
Bron Gondwana, Barry Leiba and Elwyn Davis. | ||||
This document is similar to draft-gulbrandsen-imap-uidonly-00.txt, | ||||
but some different syntactic choices were made in the end. | ||||
9. Normative References | 8. Normative References | |||
[ABNF] Crocker, D., Ed. and P. Overell, Ed., "Augmented BNF for | [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
Syntax Specifications: ABNF", RFC 5234, January 2008, | Specifications: ABNF", STD 68, RFC 5234, | |||
DOI 10.17487/RFC5234, January 2008, | ||||
<https://www.rfc-editor.org/info/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | |||
4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | |||
<https://www.rfc-editor.org/info/rfc3501>. | <https://www.rfc-editor.org/info/rfc3501>. | |||
skipping to change at page 9, line 5 ¶ | skipping to change at line 364 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC9051] Melnikov, A., Ed. and B. Leiba, Ed., "Internet Message | [RFC9051] Melnikov, A., Ed. and B. Leiba, Ed., "Internet Message | |||
Access Protocol (IMAP) - Version 4rev2", RFC 9051, | Access Protocol (IMAP) - Version 4rev2", RFC 9051, | |||
DOI 10.17487/RFC9051, August 2021, | DOI 10.17487/RFC9051, August 2021, | |||
<https://www.rfc-editor.org/info/rfc9051>. | <https://www.rfc-editor.org/info/rfc9051>. | |||
9. Informative References | ||||
[IMAP-UIDONLY-ORIG] | ||||
Gulbrandsen, A., "The IMAP UIDONLY Extension", Work in | ||||
Progress, Internet-Draft, draft-gulbrandsen-imap-uidonly- | ||||
00, 25 April 2014, <https://datatracker.ietf.org/doc/html/ | ||||
draft-gulbrandsen-imap-uidonly-00>. | ||||
Acknowledgments | ||||
The editors of this document would like to thank the following people | ||||
who provided useful comments and/or participated in discussions that | ||||
lead to this document: Arnt Gulbrandsen, Ken Murchison, Bron | ||||
Gondwana, Barry Leiba, and Elwyn Davis. | ||||
This document is similar to [IMAP-UIDONLY-ORIG], but some different | ||||
syntactic choices were made in the end. | ||||
Authors' Addresses | Authors' Addresses | |||
Alexey Melnikov | Alexey Melnikov | |||
Isode Limited | Isode Limited | |||
Email: alexey.melnikov@isode.com | Email: alexey.melnikov@isode.com | |||
URI: https://www.isode.com | URI: https://www.isode.com | |||
Arun Prakash Achuthan | Arun Prakash Achuthan | |||
Yahoo Inc. | Yahoo Inc. | |||
Email: arunprakash@myyahoo.com | Email: arunprakash@myyahoo.com | |||
End of changes. 50 change blocks. | ||||
139 lines changed or deleted | 147 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |