| rfc9586xml2.original.xml | rfc9586.xml | |||
|---|---|---|---|---|
| <?xml version="1.0"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!ENTITY rfc2119 PUBLIC '' 'https://bib.ietf.org/public/rfc/bibxml/reference.R | <!-- pre-edited by ST 04/08/24 --> | |||
| FC.2119.xml'> | ||||
| <!ENTITY rfc3501 PUBLIC '' 'https://bib.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3501.xml'> | ||||
| <!ENTITY rfc4315 PUBLIC '' 'https://bib.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4315.xml'> | ||||
| <!ENTITY rfc5256 PUBLIC '' 'https://bib.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5256.xml'> | ||||
| <!ENTITY rfc7162 PUBLIC '' 'https://bib.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7162.xml'> | ||||
| <!ENTITY rfc8174 PUBLIC '' 'https://bib.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml'> | ||||
| <!ENTITY rfc9051 PUBLIC '' 'https://bib.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.9051.xml'> | ||||
| <!DOCTYPE rfc [ | ||||
| <!ENTITY nbsp " "> | ||||
| <!ENTITY zwsp "​"> | ||||
| <!ENTITY nbhy "‑"> | ||||
| <!ENTITY wj "⁠"> | ||||
| ]> | ]> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?> | ||||
| <rfc category="exp" ipr="pre5378Trust200902" docName="draft-ietf-extra-imap-uido | ||||
| nly-08"> | ||||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <?rfc toc="yes" ?> | ||||
| <?rfc symrefs="yes" ?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc iprnotified="no" ?> | ||||
| <?rfc strict="yes" ?> | ||||
| <?rfc comments="yes" ?> | ||||
| <?rfc inline="yes" ?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <front> | ||||
| <title abbrev="IMAP UIDONLY"> | ||||
| IMAP Extension for only using and returning UIDs | ||||
| </title> | ||||
| <author initials="A." surname="Melnikov" fullname="Alexey Melniko | ||||
| v"> | ||||
| <organization abbrev="Isode"> | ||||
| Isode Limited | ||||
| </organization> | ||||
| <address> | ||||
| <email>alexey.melnikov@isode.com</email> | ||||
| <uri>https://www.isode.com</uri> | ||||
| </address> | ||||
| </author> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="exp" ipr="pre5378Trust | ||||
| 200902" docName="draft-ietf-extra-imap-uidonly-08" number="9586" obsoletes="" up | ||||
| dates="" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" | ||||
| symRefs="true" sortRefs="true" version="3"> | ||||
| <front> | ||||
| <title abbrev="IMAP UIDONLY">IMAP Extension for Using and Returning Unique I | ||||
| dentifiers (UIDs) Only</title> | ||||
| <seriesInfo name="RFC" value="9586"/> | ||||
| <author initials="A." surname="Melnikov" fullname="Alexey Melnikov"> | ||||
| <organization abbrev="Isode">Isode Limited</organization> | ||||
| <address> | ||||
| <email>alexey.melnikov@isode.com</email> | ||||
| <uri>https://www.isode.com</uri> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="A. P." surname="Achuthan" fullname="Arun Prakash Achuthan" > | <author initials="A. P." surname="Achuthan" fullname="Arun Prakash Achuthan" > | |||
| <organization abbrev="Yahoo!"> | <organization abbrev="Yahoo!">Yahoo Inc.</organization> | |||
| Yahoo Inc. | ||||
| </organization> | ||||
| <address> | <address> | |||
| <email>arunprakash@myyahoo.com</email> | <email>arunprakash@myyahoo.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="V." surname="Nagulakonda" fullname="Vikram Nagulakonda"> | <author initials="V." surname="Nagulakonda" fullname="Vikram Nagulakonda"> | |||
| <organization abbrev="Yahoo!"> | <organization abbrev="Yahoo!">Yahoo Inc.</organization> | |||
| Yahoo Inc. | ||||
| </organization> | ||||
| <address> | <address> | |||
| <email>nvikram_imap@yahoo.com</email> | <email>nvikram_imap@yahoo.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="A." surname="Singh" fullname="Ashutosh Singh"> | <author initials="A." surname="Singh" fullname="Ashutosh Singh"> | |||
| <organization abbrev="Yahoo!"> | <organization abbrev="Yahoo!">Yahoo Inc.</organization> | |||
| Yahoo Inc. | ||||
| </organization> | ||||
| <address> | <address> | |||
| <email>ashutoshvsingh@yahoo.com</email> | <email>ashutoshvsingh@yahoo.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="L." surname="Alves" fullname="Luis Alves"> | <author initials="L." surname="Alves" fullname="Luis Alves"> | |||
| <address> | <address> | |||
| <email>luis.alves@lafaspot.com</email> | <email>luis.alves@lafaspot.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="May" year="2024"/> | ||||
| <area>ART</area> | ||||
| <workgroup>extra</workgroup> | ||||
| <date year="2024"/> | <!-- [rfced] Please insert any keywords (beyond those that appear in | |||
| <abstract> | the title) for use on https://www.rfc-editor.org/search. --> | |||
| <t>The UIDONLY extension to the Internet Message Access P | <abstract> | |||
| rotocol (RFC 3501/RFC 9051) | <t>The UIDONLY extension to the Internet Message Access Protocol (RFCs | |||
| 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 (UIDs). | about mailbox changes is returned using only Unique Identifiers (UIDs). | |||
| Message numbers are not returned in responses, | Message numbers are not returned in responses and cannot be used in | |||
| and can't be used in requests once this extension is enabled. | requests once this extension is enabled. This helps both clients and | |||
| This helps both clients and servers to reduce resource usage required to m | servers to reduce resource usage required to maintain a map between | |||
| aintain a map between message numbers and UIDs. | message numbers and UIDs. | |||
| <!--Bron's version: | ||||
| This allows both clients and servers to avoid requiring resources to maint | ||||
| ain a map between message numbers and UIDs. | ||||
| --> | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| This document defines an experimental IMAP extension. | This document defines an experimental IMAP extension. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Introduction and Overview"> | <name>Introduction and Overview</name> | |||
| <t>This document defines an extension to the Internet Message Access Proto | ||||
| col <xref target="RFC3501"/> | ||||
| for eliminating use of message numbers. | ||||
| This extension is compatible with both IMAP4rev1 <xref target="RFC3501"/> | ||||
| and IMAP4rev2 <xref target="RFC9051"/>.</t> | ||||
| <t>This document defines an extension to the Internet Message Access Proto col <xref target="RFC3501" format="default"/> <xref target="RFC9051" format="def ault"/> for eliminating the use of message numbers. This extension is compatible with both IMAP4rev1 <xref target="RFC3501" format="default"/> and IMAP4rev2 <xr ef target="RFC9051" format="default"/>.</t> | ||||
| <t> | <t> | |||
| The UIDONLY extension of the Internet Message Access Protocol (RFC 3501/RF | The UIDONLY extension of the Internet Message Access Protocol allows clien | |||
| C 9051) | ts to request that servers only use and return UIDs. This helps both clients and | |||
| allows clients to request that servers only use and return UIDs. | servers to reduce resource usage required to maintain a map between message num | |||
| This helps both clients and servers to reduce resource usage required for | bers and UIDs. | |||
| maintenance of message number to UID map. | ||||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Document Conventions</name> | ||||
| <section title="Document Conventions"> | <t>In protocol examples, this document uses a prefix of "C:" to denote lin | |||
| <t>In protocol examples, this document uses a prefix of " | es sent by the client to the server and "S:" for lines sent by the server to the | |||
| C: " to denote lines sent by the client to the server, and | client. Lines prefixed with "//" are comments explaining the previous protocol | |||
| "S: " for lines sent by the server to the client. Lines p | line. These prefixes and comments are not part of the protocol. Lines without an | |||
| refixed with "// " are comments explaining the previous protocol line. | y of these prefixes are continuations of the previous line, and no line break is | |||
| These prefixes and comments are not part of the protocol. | present in the protocol unless specifically mentioned.</t> | |||
| Lines without any of these prefixes are continuations of the previous line, | <t> | |||
| and no line break is present in the protocol unless speci | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>RE | |||
| fically mentioned.</t> | QUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", | |||
| "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED< | ||||
| <t> | /bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as descri | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | bed in BCP | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ="default"/> | |||
| when, and only when, they appear in all capitals, as shown here. | when, and only when, they appear in all capitals, as shown here. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Other capitalised words are names of IMAP commands or responses <xref targ et="RFC3501"/><xref target="RFC9051"/> | Other capitalized words are names of IMAP commands or responses <xref targ et="RFC3501" format="default"/> <xref target="RFC9051" format="default"/> | |||
| or keywords from this document. | or keywords from this document. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section anchor="imap-uidonly" numbered="true" toc="default"> | |||
| <name>The UIDONLY Extension</name> | ||||
| <section title="The UIDONLY extension" anchor="imap-uidonly"> | <t>An IMAP server advertises support for the UIDONLY extension | |||
| <t>An IMAP server advertises support for the UIDONLY extension | ||||
| by including the "UIDONLY" capability in the CAPABILITY response/respons e code.</t> | by including the "UIDONLY" capability in the CAPABILITY response/respons e code.</t> | |||
| <t> | ||||
| <t> | Once the UIDONLY extension is enabled (see <xref target="enabling" forma | |||
| Once the UIDONLY extension is enabled (see <xref target="enabling"/>), | t="default"/>), | |||
| the client MUST NOT use message sequence numbers (including the special | the client <bcp14>MUST NOT</bcp14> use message sequence numbers (includi | |||
| marker "*") | ng the special marker "*") | |||
| in any arguments to IMAP commands, and the server MUST return a tagged B | in any arguments to IMAP commands, and the server <bcp14>MUST</bcp14> re | |||
| AD response | turn a tagged BAD response | |||
| if the client uses message sequence numbers. The server MUST include the | if the client uses message sequence numbers. The server <bcp14>MUST</bcp | |||
| UIDREQUIRED response code in such BAD responses (see below). | 14> include the UIDREQUIRED response code in such BAD responses (see below). | |||
| Additionally, once the UIDONLY extension is enabled, | Additionally, once the UIDONLY extension is enabled, | |||
| the server MUST NOT return message sequence numbers in any response. | the server <bcp14>MUST NOT</bcp14> return message sequence numbers in an | |||
| </t> | y response. | |||
| </t> | ||||
| <t>The UIDREQUIRED response code is defined as follows: | <t>The UIDREQUIRED response code is defined as follows: | |||
| </t> | ||||
| <list style='hanging'> | <dl newline="false" spacing="normal"> | |||
| <t hangText='UIDREQUIRED'> | <dt>UIDREQUIRED:</dt><dd><t>Once the UIDONLY extension is enabled, the s | |||
| <!-- | erver returns the UIDREQUIRED response code when the client issues a command tha | |||
| <iref item='UIDREQUIRED (response code)'/> | t includes message numbers instead of UIDs. | |||
| --> | </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <list> | ||||
| <t> | ||||
| Once UIDONLY extension is enabled the server returns the UIDREQUIRED r | ||||
| esponse code when the client issues a command | ||||
| that includes message numbers instead of UIDs. | ||||
| </t> | ||||
| <t> | ||||
| <figure><artwork><![CDATA[ | ||||
| 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 | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </t> | </dd> | |||
| </dl> | ||||
| </list> | <t>The UIDONLY extension affects how information about new, expunged, | |||
| </t> | or changed messages is returned in unsolicited responses. | |||
| </list> | In particular, | |||
| </t> | ||||
| <t>The UIDONLY extension affects how information about new, expunged | ||||
| or changed messages is returned in unsolicited responses. In partucular, | ||||
| it affects responses to UID FETCH/UID STORE/EXPUNGE/UID EXPUNGE, | it affects responses to UID FETCH/UID STORE/EXPUNGE/UID EXPUNGE, | |||
| as well as how unsolicited mailbox changes are announced. | as well as how unsolicited mailbox changes are announced. | |||
| </t> | </t> | |||
| <t>The following subsections describe changes introduced by this extension | ||||
| <t>The following subsections describe changes introduced by this extensi | ||||
| on | ||||
| in more detail.</t> | in more detail.</t> | |||
| <section anchor="enabling" numbered="true" toc="default"> | ||||
| <section title="Enabling UIDONLY extension" anchor="enabling"> | <name>Enabling the UIDONLY Extension</name> | |||
| <t> | ||||
| <t> | 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 be | or changed messages is returned in unsolicited responses, it has to be | |||
| enabled by the client first using the ENABLE command. | enabled by the client first using the ENABLE command. | |||
| </t> | </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| 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 | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Changes to FETCH/STORE/SEARCH/COPY/MOVE</name> | ||||
| <section title="Changes to FETCH/STORE/SEARCH/COPY/MOVE"> | <t>When UIDONLY is enabled, the FETCH, STORE, SEARCH, COPY, and MOVE com | |||
| mands are prohibited | ||||
| <t>When UIDONLY is enabled, FETCH, STORE, SEARCH, COPY and MOVE comman | and <bcp14>MUST</bcp14> result in a tagged BAD response. Clients shoul | |||
| ds are prohibited | d instead use UID FETCH, | |||
| and MUST result in a tagged BAD response. Clients should instead use U | UID STORE, UID SEARCH, UID COPY, or UID MOVE, respectively.</t> | |||
| ID FETCH, | </section> | |||
| UID STORE, UID SEARCH, UID COPY or UID MOVE respectively.</t> | <section numbered="true" toc="default"> | |||
| <name>Changes to UID FETCH / UID STORE</name> | ||||
| </section> | <t>When UIDONLY is enabled, all FETCH responses that would be returned b | |||
| y UID FETCH / UID STORE | ||||
| <section title="Changes to UID FETCH/UID STORE"> | ||||
| <t>When UIDONLY is enabled, all FETCH responses that would be returned | ||||
| by UID FETCH/UID STORE | ||||
| are replaced by UIDFETCH responses.</t> | are replaced by UIDFETCH responses.</t> | |||
| <t>Note that the UIDFETCH response contains the same response data items | ||||
| <t>Note that UIDFETCH response contains the same response data items a | as specified for the FETCH response. | |||
| s specified for the FETCH response. | ||||
| The UID is always returned at the beginning of a UIDFETCH response, | The UID is always returned at the beginning of a UIDFETCH response, | |||
| and it can also appear in the UID response data item, if requested by the client. | and it can also appear in the UID response data item, if requested by the client. | |||
| While the UID response data item is redundant when requested, it can s | While the UID response data item is redundant when requested, it can s | |||
| implify updating | implify the updating | |||
| of existing (non UIDONLY) implementations to support UIDONLY.</t> | of existing (non-UIDONLY) implementations to support UIDONLY.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| 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 | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| 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 | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Changes to EXPUNGE / UID EXPUNGE</name> | ||||
| <section title="Changes to EXPUNGE/UID EXPUNGE"> | <t>When UIDONLY is enabled, all EXPUNGED responses that would be returne | |||
| d by EXPUNGE / UID EXPUNGE | ||||
| <t>When UIDONLY is enabled, all EXPUNGED responses that would be retur | are replaced by VANISHED responses, as defined in <xref target="RFC716 | |||
| ned by EXPUNGE/UID EXPUNGE | 2" format="default"/>. Note that a server that implements the UIDONLY extension | |||
| are replaced by VANISHED responses, as defined in <xref target="RFC716 | is not required (but allowed) to also implement the CONDSTORE and/or QRESYNC ext | |||
| 2"/>. Note that a server | ensions.</t> | |||
| that implements UIDONLY extension is not required (but allowed) to als | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| o implement CONDSTORE and/or QRESYNC extensions.</t> | ||||
| <figure><artwork><![CDATA[ | ||||
| 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 | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Changes to UID SEARCH</name> | ||||
| <section title="Changes to UID SEARCH"> | <t>The "<sequence set>" UID SEARCH criterion is prohibited (and re | |||
| sults in a tagged BAD response) once UIDONLY is enabled. | ||||
| <t>The "<sequence set>" UID SEARCH criterion is prohibited (and | ||||
| results in a tagged BAD response) once UIDONLY is enabled. | ||||
| Clients should use ALL or "UID <sequence set>" UID SEARCH criter ion instead.</t> | Clients should use ALL or "UID <sequence set>" UID SEARCH criter ion instead.</t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Changes to How Other Mailbox Changes Are Announced</name> | ||||
| <section title="Changes to how other mailbox changes are announced"> | <t>When UIDONLY is enabled, all changes to flags (and other dynamic mess | |||
| age attributes) | ||||
| <t>When UIDONLY is enabled, all changes to flags (and other dynamic me | are returned using UIDFETCH responses instead of FETCH responses.</t> | |||
| ssage attributes) | <t>Similarly, all expunged messages are announced using VANISHED respons | |||
| are returned using UIDFETCH responses, instead of FETCH responses.</t> | es | |||
| <t>Similarly, all expunged messages are announced using VANISHED respo | ||||
| nses | ||||
| instead of EXPUNGE responses.</t> | instead of EXPUNGE responses.</t> | |||
| <t>This extension doesn't affect EXISTS or RECENT responses.</t> | <t>This extension doesn't affect EXISTS or RECENT responses.</t> | |||
| <t>The UID MOVE / UID COPY commands <bcp14>SHOULD</bcp14> return the COP | ||||
| <t>UID MOVE/UID COPY commands SHOULD return the COPYUID response code, | YUID response code, as specified in <xref target="RFC4315" format="default"/>. | |||
| as specified in <xref target="RFC4315"/>. | </t> | |||
| </t> | <t>Use of the UIDNOTSTICKY response code (see <xref target="RFC4315" for | |||
| mat="default"/>) is not compatible with the UIDONLY extension, i.e., a server th | ||||
| <t>Use of the UIDNOTSTICKY response code (see <xref target="RFC4315"/> | at advertises the UIDONLY extension <bcp14>MUST NOT</bcp14> return a UIDNOTSTICK | |||
| ) is not compatible with the UIDONLY extension, | Y response code.</t> | |||
| i.e. a server that advertises the UIDONLY extension MUST NOT return UI | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| DNOTSTICKY response code.</t> | ||||
| <figure><artwork><![CDATA[ | ||||
| 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 | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Interaction with the CONDSTORE and QRESYNC Extensions</name> | ||||
| <section title="Interaction with CONDSTORE and QRESYNC extensions"> | <t> | |||
| <t> | ||||
| 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 instead of FETCH responses. | The MODSEQ message data item is returned in UIDFETCH responses instead of FETCH responses. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| The QRESYNC extension is compatible with the UIDONLY extension, but on ce UIDONLY is enabled, | The QRESYNC extension is compatible with the UIDONLY extension, but on ce UIDONLY is enabled, | |||
| the fourth SELECT QRESYNC parameter ("Message Sequence Match Data", se | the fourth SELECT QRESYNC parameter (see Section <xref target="RFC7162 | |||
| e Section 3.2.5.2 of <xref target="RFC7162"/>) | " section="3.2.5.2" | |||
| MUST NOT be used. The server MUST return a tagged BAD response if such | sectionFormat="bare">"Message Sequence Match Data"</xref> of <xref target="RFC71 | |||
| a parameter is observed once UIDONLY is enabled. | 62"/>) | |||
| </t> | <bcp14>MUST NOT</bcp14> be used. The server <bcp14>MUST</bcp14> return | |||
| a tagged BAD response if such a parameter is observed once UIDONLY is enabled. | ||||
| </section> | </t> | |||
| </section> | ||||
| <section title="Interaction with other extensions"> | <section numbered="true" toc="default"> | |||
| <name>Interaction with Other Extensions</name> | ||||
| <t>IMAP extensions might define other commands that accept message seq | <t>IMAP extensions might define other commands that accept message seque | |||
| uence numbers ("sequence-set" ABNF non terminal, see Section 9 of <xref target=" | nce numbers ("sequence-set" ABNF non-terminal; see <xref target="RFC9051" sectio | |||
| RFC9051"/>). | nFormat="of" section="9"/>). | |||
| Once UIDONLY is enabled, the server MUST reject such commands with tag | Once UIDONLY is enabled, the server <bcp14>MUST</bcp14> reject such co | |||
| ged BAD response. | mmands with a tagged BAD response. For example, the SORT and THREAD <xref target | |||
| ="RFC5256" format="default"/> commands are prohibited, similarly to the SEARCH c | ||||
| For example, SORT and THREAD <xref target="RFC5256"/> commands are pro | ommand. However, UID SORT and UID THREAD can be used instead. | |||
| hibited, similarly to the SEARCH command. | </t> | |||
| However UID SORT and UID THREAD can be used instead. | </section> | |||
| </t> | ||||
| </section> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Formal syntax"> | <name>Formal Syntax</name> | |||
| <t>The following syntax specification uses the Augmented | <t>The following syntax specification uses the Augmented Backus-Naur Form | |||
| Backus-Naur Form (ABNF) notation as specified in <xref target="ABNF"/>.</t> | (ABNF) notation as specified in <xref target="RFC5234" format="default"/>.</t> | |||
| <t>Non-terminals referenced but not defined below are as | <t>Non-terminals referenced but not defined below are as defined in <xref | |||
| defined by Section 9 of <xref target="RFC9051">IMAP4</xref>.</t> | target="RFC9051" sectionFormat="of" section="9">IMAP4</xref>.</t> | |||
| <t>Except as noted otherwise, all alphabetic characters a | <t>Except as noted otherwise, all alphabetic characters are case insensiti | |||
| re case-insensitive. | ve. | |||
| The use of upper or lower case characters to define token strings is for e | The use of uppercase or lowercase characters to define token strings is fo | |||
| ditorial clarity only. | r editorial clarity only. | |||
| Implementations MUST accept these strings in a case-insensitive fashion.</ | Implementations <bcp14>MUST</bcp14> accept these strings in a case-insensi | |||
| t> | tive fashion.</t> | |||
| <sourcecode type="abnf"><![CDATA[ | ||||
| <figure><artwork> | ||||
| <![CDATA[ | ||||
| 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" | |||
| ]]></artwork></figure> | ]]></sourcecode> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Security Considerations</name> | ||||
| <section title="Security Considerations"> | <t> | |||
| <t> | ||||
| This IMAP extension is not believed to add any additional Security Conside rations | This IMAP extension is not believed to add any additional Security Conside rations | |||
| beyond the ones that are generally applicable to IMAP4rev1 <xref target="R | beyond the ones that are generally applicable to IMAP4rev1 <xref target="R | |||
| FC3501"/> | FC3501" format="default"/> | |||
| and IMAP4rev2 <xref target="RFC9051"/>. | and IMAP4rev2 <xref target="RFC9051" format="default"/>. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | ||||
| <section title="IANA Considerations"> | <t>IMAP4 capabilities are registered by publishing a Standards Track or IE | |||
| SG-approved Informational or Experimental RFC. | ||||
| <t> | </t> | |||
| IMAP4 capabilities are registered by publishing a | <t>IANA has added the UIDONLY extension to | |||
| standards track or | the "IMAP Capabilities" registry with RFC 9586 as the reference. The regis | |||
| IESG approved Informational or Experimental RFC. | try is located at <eref target="https://www.iana.org/assignments/imap4-capabilit | |||
| The registry is currently located at: | ies/" brackets="angle"/>. | |||
| </t> | </t> | |||
| <t>IANA has also added the UIDREQUIRED response code | ||||
| <figure><artwork><![CDATA[ | to the "IMAP Response Codes" registry with RFC 9586 as the reference. | |||
| https://www.iana.org/assignments/imap4-capabilities | The registry is located at <eref target="https://www.iana.org/assignments/ | |||
| ]]></artwork></figure> | imap-response-codes/" brackets="angle"/>. | |||
| <t>IANA is requested to add definition of the UIDONLY ext | ||||
| ension to | ||||
| this registry with [RFCXXXX] as the reference. | ||||
| </t> | </t> | |||
| <t>IANA is also requested to add definition of the UIDREQ | ||||
| UIRED response code | ||||
| to the "IMAP Response Codes" registry with [RFCXXXX] as the reference. | ||||
| The registry is currently located at: | ||||
| </t> | ||||
| <figure><artwork><![CDATA[ | ||||
| https://www.iana.org/assignments/imap-response-codes/imap-response-codes.xhtm | ||||
| l | ||||
| ]]></artwork></figure> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Alternative solutions not taken"> | <name>Alternative Solutions Not Taken</name> | |||
| <t> | <t> | |||
| An earlier draft of this document proposed use of FETCH responses with | An earlier draft version of this document proposed use of FETCH responses | |||
| the message number parameter always be set to 0. | with | |||
| This was judged to be too risky, as this could have caused unexpected | the message number parameter always set to 0. | |||
| This was considered to be too risky as it could cause unexpected | ||||
| side effects and cache corruptions in client code that was not properly up dated | side effects and cache corruptions in client code that was not properly up dated | |||
| to handle lack of message numbers. | to handle a lack of message numbers. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </middle> | ||||
| <back> | ||||
| <displayreference target="RFC5234" to="ABNF"/> | ||||
| <displayreference target="I-D.gulbrandsen-imap-uidonly" to="IMAP-UIDONLY-ORI | ||||
| G"/> | ||||
| <references> | ||||
| <name>Normative References</name> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.211 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.817 | ||||
| 4.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.350 | ||||
| 1.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.523 | ||||
| 4.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.431 | ||||
| 5.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.525 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.716 | ||||
| 2.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.905 | ||||
| 1.xml"/> | ||||
| </references> | ||||
| <section title="Acknowledgments"> | <references> | |||
| <name>Informative References</name> | ||||
| <!--draft-gulbrandsen-imap-uidonly; IESG State: Expired--> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.dra | ||||
| ft-gulbrandsen-imap-uidonly.xml"/> | ||||
| </references> | ||||
| <section numbered="false"> | ||||
| <name>Acknowledgments</name> | ||||
| <t> | <t> | |||
| Editors of this document would like to thank the following people | The editors of this document would like to thank the following people | |||
| who provided useful comments and/or participated in discussions that | who provided useful comments and/or participated in discussions that | |||
| lead to this document, in particular: Arnt Gulbrandsen, Ken Murchison, | lead to this document: <contact fullname="Arnt Gulbrandsen"/>, <contact fu | |||
| Bron Gondwana, Barry Leiba and Elwyn Davis. | llname="Ken Murchison"/>, <contact fullname="Bron Gondwana"/>, <contact fullname | |||
| ="Barry Leiba"/>, and <contact fullname="Elwyn Davis"/>. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| This document is similar to draft-gulbrandsen-imap-uidonly-00.txt, | ||||
| but some different syntactic choices were made in the end. | ||||
| </t> | ||||
| </section> | <!--[rfced] FYI: "draft-gulbrandsen-imap-uidonly-00" did not have a | |||
| reference entry, so we created one under "Informative References" | ||||
| as shown below. | ||||
| </middle> | Original: | |||
| <back> | This document is similar to draft-gulbrandsen-imap-uidonly-00.txt, | |||
| <references title="Normative References"> | but some different syntactic choices were made in the end. | |||
| &rfc2119; | ||||
| &rfc8174; | ||||
| &rfc3501; | ||||
| <reference anchor="ABNF"> | ||||
| <front> | ||||
| <title>Augmented BNF for Syntax Specifica | ||||
| tions: ABNF</title> | ||||
| <author initials="D" surname="Crocker" fu | ||||
| llname="Dave Crocker" role="editor"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials="P" surname="Overell" fu | ||||
| llname="Paul Overell" role="editor"> | ||||
| <organization /> | ||||
| </author> | ||||
| <date year="2008" month="January"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5234" /> | ||||
| <format type="TXT" target="https://www.rfc-editor | ||||
| .org/info/rfc5234" /> | ||||
| </reference> | ||||
| &rfc4315; | Current: | |||
| &rfc5256; | This document is similar to [IMAP-UIDONLY], but some | |||
| &rfc7162; | different syntactic choices were made in the end. | |||
| &rfc9051; | ||||
| </references> | Informative Reference Entry: | |||
| [IMAP-UIDONLY] | ||||
| 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>. | ||||
| --> | ||||
| This document is similar to <xref target="I-D.gulbrandsen-imap-uidonly"/>, | ||||
| but some different syntactic choices were made in the end. | ||||
| </t> | ||||
| </section> | ||||
| <!-- | </back> | |||
| <references title="Informative References"> | ||||
| </references> | <!-- [rfced] Please review the "Inclusive Language" portion of the online | |||
| --> | Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | |||
| and let us know if any changes are needed. | ||||
| Note that our script did not flag any words in particular, but this should | ||||
| still be reviewed as a best practice. | ||||
| --> | ||||
| -> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 65 change blocks. | ||||
| 379 lines changed or deleted | 295 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||