rfc9698.original.xml | rfc9698.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!-- draft submitted in xml v3 --> | ||||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.6 (Ruby 3.0.2 | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
) --> | -ietf-extra-jmapaccess-09" number="9698" tocInclude="true" updates="" obsoletes= | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | "" category="std" consensus="true" submissionType="IETF" sortRefs="true" xml:lan | |||
-ietf-extra-jmapaccess-08" category="std" consensus="true" submissionType="IETF" | g="en" version="3"> | |||
xml:lang="en" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.20.0 --> | ||||
<front> | <front> | |||
<title abbrev="IMAP JMAPACCESS">The JMAPACCESS Extension for IMAP</title> | <title abbrev="IMAP JMAPACCESS">The JMAPACCESS Extension for IMAP</title> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-extra-jmapaccess-08"/> | <seriesInfo name="RFC" value="9698"/> | |||
<author initials="A." surname="Gulbrandsen" fullname="Arnt Gulbrandsen"> | <author initials="A." surname="Gulbrandsen" fullname="Arnt Gulbrandsen"> | |||
<organization>ICANN</organization> | <organization>ICANN</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>6 Rond Point Schumann, Bd. 1</street> | <street>6 Rond Point Schumann, Bd. 1</street> | |||
<city>Brussels</city> | <city>Brussels</city> | |||
<code>1040</code> | <code>1040</code> | |||
<country>Belgium</country> | <country>Belgium</country> | |||
</postal> | </postal> | |||
<email>arnt@gulbrandsen.priv.no</email> | <email>arnt@gulbrandsen.priv.no</email> | |||
skipping to change at line 41 ¶ | skipping to change at line 43 ¶ | |||
<postal> | <postal> | |||
<street>Level 2, 114 William St.</street> | <street>Level 2, 114 William St.</street> | |||
<city>Melbourne VIC</city> | <city>Melbourne VIC</city> | |||
<code>3000</code> | <code>3000</code> | |||
<country>Australia</country> | <country>Australia</country> | |||
</postal> | </postal> | |||
<email>brong@fastmailteam.com</email> | <email>brong@fastmailteam.com</email> | |||
<uri>https://fastmail.com</uri> | <uri>https://fastmail.com</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2024" month="March" day="01"/> | <date year="2024" month="December"/> | |||
<area>Applications</area> | ||||
<workgroup>EXTRA</workgroup> | <area>ART</area> | |||
<workgroup>extra</workgroup> | ||||
<keyword>IMAP</keyword> | <keyword>IMAP</keyword> | |||
<keyword>JMAP</keyword> | <keyword>JMAP</keyword> | |||
<abstract> | <abstract> | |||
<?line 51?> | ||||
<t>This document defines an IMAP extension to let clients know that the | <t>This document defines an IMAP extension to let clients know that the | |||
messages in this IMAP server are also available via JMAP, and how. It is | messages in this IMAP server are also available via the JSON Meta Application Pr otocol (JMAP), and how. It is | |||
intended for clients that want to migrate gradually to JMAP or use | intended for clients that want to migrate gradually to JMAP or use | |||
JMAP extensions within an IMAP client.</t> | JMAP extensions within an IMAP client.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<?line 58?> | ||||
<section anchor="introduction"> | <section anchor="introduction"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>An IMAP server can declare that the messages in its mailstore are also | <t>An IMAP server can declare that the messages in its mailstore are also | |||
available via JMAP. For simplicity, only a complete equivalence is | available via JMAP. For simplicity, only a complete equivalence is | |||
supported (the same set of messages are available via both IMAP and | supported (the same set of messages are available via both IMAP and | |||
JMAP).</t> | JMAP).</t> | |||
<t>This document also defines a way to provide debugging information that | ||||
can be forwarded to client developers without privacy concerns, which | ||||
is used by JMAPACCESS but can also be used by others.</t> | ||||
</section> | </section> | |||
<section anchor="requirements-language"> | <section anchor="requirements-language"> | |||
<name>Requirements Language</name> | <name>Requirements Language</name> | |||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14 | <t> | |||
>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
nterpreted as | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
only when, they | be | |||
appear in all capitals, as shown here.</t> | interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | |||
<?line -18?> | target="RFC8174"/> when, and only when, they appear in all capitals, as | |||
shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section anchor="details"> | <section anchor="details"> | |||
<name>Details</name> | <name>Details</name> | |||
<t>By advertising the JMAPACCESS capability, the server asserts that if a | <t>By advertising the JMAPACCESS capability, the server asserts that if a | |||
mailbox or message has a particular object ID when accessed via either | mailbox or message has a particular object ID when accessed via either | |||
IMAP or JMAP (see <xref target="RFC3501"/>, <xref target="RFC9051"/> and <xref t arget="RFC8620"/>), then the | IMAP or JMAP (see <xref target="RFC3501"/>, <xref target="RFC9051"/>, and <xref target="RFC8620"/>), then the | |||
same mailbox or message is accessible via the other protocol, and it | same mailbox or message is accessible via the other protocol, and it | |||
has the same ID.</t> | has the same ID.</t> | |||
<t>The server <bcp14>MUST</bcp14> also advertise the OBJECTID extension, d efined by | <t>The server <bcp14>MUST</bcp14> also advertise the OBJECTID extension, d efined by | |||
<xref target="RFC8474"/>. The JMAP session resource that allows access to the sa me | <xref target="RFC8474"/>. The JMAP session resource that allows access to the sa me | |||
messages is called "the JMAP server" below.</t> | messages is called "the JMAP server" below.</t> | |||
<t>This specification does not affect message lifetime: If a client | <t>This specification does not affect message lifetime: If a client | |||
accesses a message via IMAP and half a second later via JMAP, then the | accesses a message via IMAP and half a second later via JMAP, then the | |||
message may have been deleted between the two accesses.</t> | message may have been deleted between the two accesses.</t> | |||
<t>When the server processes the client's LOGIN/AUTHENTICATE command and | <t>When the server processes the client's LOGIN/AUTHENTICATE command and | |||
enters Authenticated state, the server considers the way the client | enters Authenticated state, the server considers the way the client | |||
authenticated. If the IMAP server can infer from the client's | authenticated. If the IMAP server can infer from the client's | |||
authentication process that its credentials suffice to authenticate | authentication process that its credentials suffice to authenticate | |||
via JMAP, then the server <bcp14>MUST</bcp14> also send a JMAPACCESS response co | via JMAP, then the server <bcp14>MUST</bcp14> include a JMAPACCESS capability in | |||
de | any | |||
containing a link to the JMAP server.</t> | capability list sent after that point. This includes the capability | |||
list that some servers send immediately when authentication succeeds.</t> | ||||
<t>Servers are encouraged to report the same message flags and other data | <t>Servers are encouraged to report the same message flags and other data | |||
via both protocols, as far as possible.</t> | via both protocols, as far as possible.</t> | |||
<t>This specification does not require mailboxes to have the same name in | <t>This specification does not require mailboxes to have the same name in | |||
IMAP and JMAP, even if they share mailbox ID. However, the JMAP | IMAP and JMAP, even if they share a mailbox ID. However, the JMAP | |||
specification regulates that, in the text about the name and role | specification regulates that in the text about the name and role | |||
properties in <xref target="RFC8620"/> section 2.</t> | properties described in <xref target="RFC8620" sectionFormat="of" section="2"/>. | |||
</t> | ||||
<t>Note that all JMAP servers support internationalized email addresses | <t>Note that all JMAP servers support internationalized email addresses | |||
(see <xref target="RFC6530"/>). If this IMAP server does not, or the IMAP clien | (see <xref target="RFC6530"/>). If this IMAP server does not or if the IMAP cli | |||
t | ent | |||
does not issue ENABLE UTF8=ACCEPT (see <xref target="RFC6855"/>), then there is | does not issue ENABLE UTF8=ACCEPT (see <xref target="RFC6855"/>), then it is pos | |||
a | sible | |||
possibility that the client receives accurate address fields via JMAP | that the client will receive accurate address fields via JMAP | |||
and downgraded fields via IMAP (see (see <xref target="RFC6857"/> and <xref targ | and downgraded fields via IMAP (see <xref target="RFC6857"/> and <xref target="R | |||
et="RFC6858"/> | FC6858"/> | |||
for examples). Issuing ENABLE UTF8=ACCEPT is a simple way to sidestep | for examples). Issuing ENABLE UTF8=ACCEPT is a simple way to sidestep | |||
the issue.</t> | the issue.</t> | |||
</section> | </section> | |||
<section anchor="the-jmapaccess-response-code"> | <section anchor="the-jmapaccess-response-code"> | |||
<name>The JMAPACCESS Response Code</name> | <name>The GETJMAPACCESS Command and the JMAPACCESS Response</name> | |||
<t>The JMAPACCESS response code is followed by a single link to a JMAP | <t> | |||
session resource. The server/mailstore at that location is referenced | The GETJMAPACCESS command requests that the server respond with the | |||
as "the JMAP server" in this document.</t> | session URL for the JMAP server that provides access to the same | |||
<t>The formal syntax in <xref target="RFC9051"/> is extended thus:</t> | mail.</t> | |||
<t>resp-code-jmapaccess = "JMAPACCESS" SP quoted</t> | ||||
<t>resp-text-code =/ resp-code-jmapaccess</t> | <t> If such a JMAP server is known to this server, the server <bcp14>MUST</bcp | |||
14> | ||||
respond with an untagged JMAPACCESS response containing the JMAP | ||||
server's session resource (a URL) followed by a tagged OK response.</t> | ||||
<t> If such a JMAP server is not known, the server <bcp14>MUST</bcp14> respond | ||||
with a | ||||
tagged BAD response (and <bcp14>MUST NOT</bcp14> include JMAPACCESS in the | ||||
capability list).</t> | ||||
<t> The JMAPACCESS response is followed by a single link to a JMAP | ||||
session resource.</t> | ||||
<t>The formal syntax in <xref target="RFC9051"/> is extended as follows:</ | ||||
t> | ||||
<sourcecode type="abnf"> | ||||
command-auth =/ "GETJMAPACCESS" | ||||
mailbox-data =/ resp-jmapaccess | ||||
resp-jmapaccess = "JMAPACCESS" SP quoted | ||||
</sourcecode> | ||||
<t>The syntax in <xref target="RFC3501"/> is extended similarly (this exte nsion may be | <t>The syntax in <xref target="RFC3501"/> is extended similarly (this exte nsion may be | |||
used with IMAP4rev1 as well as IMAP4rev2).</t> | used with IMAP4rev1 as well as IMAP4rev2).</t> | |||
<t>Note that some clients parse response codes from the outside, | ||||
ie. scanning for the following ']' before they parse the contents of | ||||
the response code. Sending a URL that contains either '"' or ']' may | ||||
be risky.</t> | ||||
</section> | </section> | |||
<section anchor="Examples"> | <section anchor="Examples"> | |||
<name>Examples</name> | <name>Examples</name> | |||
<t>Lines sent by the client are preceded by C:, lines sent by the server | <t>Lines sent by the client are preceded by C: and lines sent by the serve | |||
by S:. Each example starts with the IMAP banner issued by the server | r are preceded by S:. Each example starts with the IMAP banner issued by the ser | |||
ver | ||||
on connection, and generally abbreviates the capability lists to | on connection, and generally abbreviates the capability lists to | |||
what's required by the example itself.</t> | what's required by the example itself.</t> | |||
<t>Real connections use longer capability lists, much longer AUTHENTICATE | <t>Real connections use longer capability lists, much longer AUTHENTICATE | |||
arguments and of course use TLS. These examples focus on JMAPACCESS, | arguments and of course use TLS. However, these examples focus on JMAPACCESS.</t | |||
though.</t> | > | |||
<t>Example 1. A client connects, sees that SASL OAUTH is available, and | ||||
<t>Example 1:</t> <t>A client connects, sees that SASL OAuth <xref target="RFC76 | ||||
28"/> is available, and | ||||
authenticates in that way.</t> | authenticates in that way.</t> | |||
<t>S: * OK [CAPABILITY IMAP4rev1 AUTH=OAUTHBEARER SASL-IR] example1<br/> | ||||
C: 1 AUTHENTICATE OAUTHBEARER bixhPXVzZ...QEB</t> | <sourcecode type=""> | |||
S: * OK [CAPABILITY IMAP4rev1 AUTH=OAUTHBEARER SASL-IR] example1 | ||||
C: 1 AUTHENTICATE OAUTHBEARER bixhPXVzZ...QEB | ||||
</sourcecode> | ||||
<t>The server processes the command successfully. It knows that the | <t>The server processes the command successfully. It knows that the | |||
client used Oauth, and that it and its JMAP alter ego use the same | client used OAuth, and that it and its JMAP alter ego use the same | |||
Oauth backend subsystem. Because of that it infers that the (next) | OAuth backend subsystem. Because of that it infers that the (next) | |||
access token is just as usable via JMAP as via IMAP. It issues a | access token is just as usable via JMAP as via IMAP. It includes a | |||
JMAPACCESS response code in its reply:</t> | JMAPACCESS capability in its reply (again, real capability lists are much longer | |||
<t>S: 1 OK [JMAPACCESS "https://example.com/jmap"] done</t> | ): | |||
<t>SASL OAUTH is specified by <xref target="RFC7628"/>, and the argument i | </t> | |||
n this | ||||
example is abbreviated from the more realistic length used in RFC7628.</t> | <sourcecode type=""> | |||
<t>Example 2. A client connects, sees no SASL method it recognises, and | S: 1 OK [CAPABILITY IMAP4rev1 JMAPACCESS] done | |||
C: 1b GETJMAPACCESS | ||||
S: * JMAPACCESS "https://example.com/.well-known/jmap" | ||||
S: 1b OK done | ||||
</sourcecode> | ||||
<t>SASL OAuth is specified by <xref target="RFC7628"/>, and the argument i | ||||
n this | ||||
example is abbreviated from the more realistic length used in RFC 7628.</t> | ||||
<t>Example 2:</t> <t>A client connects, sees no SASL method it recognizes, | ||||
and | ||||
issues a LOGIN command.</t> | issues a LOGIN command.</t> | |||
<t>S: * OK [CAPABILITY IMAP4rev2] example2<br/> | ||||
C: 2 LOGIN "arnt" "trondheim"</t> | <sourcecode type=""> | |||
S: * OK [CAPABILITY IMAP4rev2] example2 | ||||
C: 2 LOGIN "arnt" "trondheim" | ||||
</sourcecode> | ||||
<t>The server sees that the password is accepted, knows that it and its | <t>The server sees that the password is accepted, knows that it and its | |||
JMAP alter ego use the same password database, and issues a JMAPACCESS | JMAP alter ego use the same password database, and issues a JMAPACCESS | |||
response code:</t> | capability:</t> | |||
<t>S: * OK [JMAPACCESS "https://example.com/.s/[jmap]"] For JMAP access | ||||
S: 2 OK done</t> | <sourcecode type=""> | |||
<t>The URL uses the same quoting rules as most other IMAP strings, and | S: * OK [CAPABILITY IMAP4rev2 JMAPACCESS] done | |||
"]" is permitted in quoted strings. Permitted but in this case not | S: 2 OK done | |||
encouraged, since some clients are known to scan for the "]" before | C: 2b JMAPACCESS | |||
parsing the string inside "[]". Luckily, few URLs contain "]".</t> | S: * JMAPACCESS "https://example.com/.well-known/jmap" | |||
<t>Example 3. A client connects, sees no SASL method it recognises, and | S: 2b OK done | |||
</sourcecode> | ||||
<t>The URL uses the same quoting rules as most other IMAP strings.</t> | ||||
<t>Example 3:</t> <t>A client connects, sees no SASL method it recognizes, | ||||
and | ||||
issues a LOGIN command with a correct password.</t> | issues a LOGIN command with a correct password.</t> | |||
<t>S: * OK [CAPABILITY IMAP4rev1 IMAP4rev2] example3<br/> | ||||
C: 3 LOGIN "arnt" "trondheim"</t> | <sourcecode type=""> | |||
S: * OK [CAPABILITY IMAP4rev1 IMAP4rev2] example3 | ||||
C: 3 LOGIN "arnt" "trondheim" | ||||
</sourcecode> | ||||
<t>The server operator has decided to disable password use with JMAP, but | <t>The server operator has decided to disable password use with JMAP, but | |||
allow it for a while with IMAP to cater to older clients, so the login | allow it for a while with IMAP to cater to older clients. Therefore, the login | |||
succeeds, but there is no JMAPACCESS response code.</t> | succeeds, but there is no JMAPACCESS capability.</t> | |||
<t>S: 3 OK done</t> | ||||
<t>Example 4. A client connects, sees no SASL method it recognises, and | <sourcecode type=""> | |||
S: 3 OK done | ||||
</sourcecode> | ||||
<t>Example 4:</t> <t>A client connects, sees no SASL method it recognizes, | ||||
and | ||||
issues a LOGIN command. Its password is incorrect.</t> | issues a LOGIN command. Its password is incorrect.</t> | |||
<t>S: * OK [CAPABILITY IMAP4rev2 AUTH=GSS] example4<br/> | ||||
C: 4 LOGIN "arnt" "oslo"</t> | <sourcecode type=""> | |||
S: * OK [CAPABILITY IMAP4rev2 AUTH=GSS] example4 | ||||
C: 4 LOGIN "arnt" "oslo" | ||||
</sourcecode> | ||||
<t>The server does not enter Authenticated state, so nothing requires it | <t>The server does not enter Authenticated state, so nothing requires it | |||
to issue JMAPACCESS. It replies curtly:</t> | to mention JMAPACCESS. It replies curtly:</t> | |||
<t>S: 4 NO done</t> | ||||
</section> | <sourcecode type=""> | |||
S: 4 NO done | ||||
</sourcecode> | ||||
</section> | ||||
<section anchor="IANA"> | <section anchor="IANA"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t>The IANA is requested to add the JMAPACCESS response code to the IMAP | <t>The IANA has added the JMAPACCESS capability to the "Internet Message A | |||
Response Codes registry, with this document as reference.</t> | ccess Protocol (IMAP) Capabilities Registry" and listed this document as the ref | |||
erence.</t> | ||||
</section> | </section> | |||
<section anchor="Security"> | <section anchor="Security"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t>The JMAPACCESS response code reveals to authenticated IMAP clients that | <t>JMAPACCESS reveals to authenticated IMAP clients that | |||
they would be able to authenticate via JMAP using the same credentials, | they would be able to authenticate via JMAP using the same credentials | |||
and that the object IDs match.</t> | and that the object IDs match.</t> | |||
<t>One does not normally wish reveal anything at all about authentication. | ||||
However, in this case information is revealed to an authenticated client, | <t>One does not normally reveal anything at all about authentication. | |||
the revealed URL can usually be found via JMAP autodiscovery, and an | However, if the client is an attacker, then the attacker is known to | |||
attacker would only need to try the credentials used once anyway (a matter | have valid credentials, and <xref target="RFC8620" sectionFormat="of" section="2 | |||
of a second or two). Therefore, it is believed that this document does not | .2"/> tells the attacker | |||
how to find the revealed URL without the help of this extension. | ||||
Therefore, it is believed that this document does not | ||||
benefit an attacker noticeably, and its value for migration far outweighs | benefit an attacker noticeably, and its value for migration far outweighs | |||
its risk.</t> | its risk.</t> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references anchor="sec-normative-references"> | <references anchor="sec-normative-references"> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<reference anchor="RFC3501"> | ||||
<front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.35 | |||
<title>INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1</title> | 01.xml"/> | |||
<author fullname="M. Crispin" initials="M." surname="Crispin"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.84 | |||
<date month="March" year="2003"/> | 74.xml"/> | |||
<abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.90 | |||
<t>The Internet Message Access Protocol, Version 4rev1 (IMAP4rev1) | 51.xml"/> | |||
allows a client to access and manipulate electronic mail messages on a server. | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.21 | |||
IMAP4rev1 permits manipulation of mailboxes (remote message folders) in a way th | 19.xml"/> | |||
at is functionally equivalent to local folders. IMAP4rev1 also provides the capa | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.81 | |||
bility for an offline client to resynchronize with the server. IMAP4rev1 include | 74.xml"/> | |||
s operations for creating, deleting, and renaming mailboxes, checking for new me | ||||
ssages, permanently removing messages, setting and clearing flags, RFC 2822 and | ||||
RFC 2045 parsing, searching, and selective fetching of message attributes, texts | ||||
, and portions thereof. Messages in IMAP4rev1 are accessed by the use of numbers | ||||
. These numbers are either message sequence numbers or unique identifiers. IMAP4 | ||||
rev1 supports a single server. A mechanism for accessing configuration informati | ||||
on to support multiple IMAP4rev1 servers is discussed in RFC 2244. IMAP4rev1 doe | ||||
s not specify a means of posting mail; this function is handled by a mail transf | ||||
er protocol such as RFC 2821. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3501"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3501"/> | ||||
</reference> | ||||
<reference anchor="RFC8474"> | ||||
<front> | ||||
<title>IMAP Extension for Object Identifiers</title> | ||||
<author fullname="B. Gondwana" initials="B." role="editor" surname=" | ||||
Gondwana"/> | ||||
<date month="September" year="2018"/> | ||||
<abstract> | ||||
<t>This document updates RFC 3501 (IMAP4rev1) with persistent iden | ||||
tifiers on mailboxes and messages to allow clients to more efficiently reuse cac | ||||
hed data when resources have changed location on the server.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8474"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8474"/> | ||||
</reference> | ||||
<reference anchor="RFC9051"> | ||||
<front> | ||||
<title>Internet Message Access Protocol (IMAP) - Version 4rev2</titl | ||||
e> | ||||
<author fullname="A. Melnikov" initials="A." role="editor" surname=" | ||||
Melnikov"/> | ||||
<author fullname="B. Leiba" initials="B." role="editor" surname="Lei | ||||
ba"/> | ||||
<date month="August" year="2021"/> | ||||
<abstract> | ||||
<t>The Internet Message Access Protocol Version 4rev2 (IMAP4rev2) | ||||
allows a client to access and manipulate electronic mail messages on a server. I | ||||
MAP4rev2 permits manipulation of mailboxes (remote message folders) in a way tha | ||||
t is functionally equivalent to local folders. IMAP4rev2 also provides the capab | ||||
ility for an offline client to resynchronize with the server.</t> | ||||
<t>IMAP4rev2 includes operations for creating, deleting, and renam | ||||
ing mailboxes; checking for new messages; removing messages permanently; setting | ||||
and clearing flags; parsing per RFCs 5322, 2045, and 2231; searching; and selec | ||||
tive fetching of message attributes, texts, and portions thereof. Messages in IM | ||||
AP4rev2 are accessed by the use of numbers. These numbers are either message seq | ||||
uence numbers or unique identifiers.</t> | ||||
<t>IMAP4rev2 does not specify a means of posting mail; this functi | ||||
on is handled by a mail submission protocol such as the one specified in RFC 640 | ||||
9.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9051"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9051"/> | ||||
</reference> | ||||
<reference anchor="RFC2119"> | ||||
<front> | ||||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
le> | ||||
<author fullname="S. Bradner" initials="S." surname="Bradner"/> | ||||
<date month="March" year="1997"/> | ||||
<abstract> | ||||
<t>In many standards track documents several words are used to sig | ||||
nify the requirements in the specification. These words are often capitalized. T | ||||
his document defines these words as they should be interpreted in IETF documents | ||||
. This document specifies an Internet Best Current Practices for the Internet Co | ||||
mmunity, and requests discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC8174"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
tle> | ||||
<author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
<date month="May" year="2017"/> | ||||
<abstract> | ||||
<t>RFC 2119 specifies common key words that may be used in protoco | ||||
l specifications. This document aims to reduce the ambiguity by clarifying that | ||||
only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
</references> | </references> | |||
<references anchor="sec-informative-references"> | <references anchor="sec-informative-references"> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="RFC6530"> | ||||
<front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.65 | |||
<title>Overview and Framework for Internationalized Email</title> | 30.xml"/> | |||
<author fullname="J. Klensin" initials="J." surname="Klensin"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.68 | |||
<author fullname="Y. Ko" initials="Y." surname="Ko"/> | 55.xml"/> | |||
<date month="February" year="2012"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.68 | |||
<abstract> | 57.xml"/> | |||
<t>Full use of electronic mail throughout the world requires that | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.68 | |||
(subject to other constraints) people be able to use close variations on their o | 58.xml"/> | |||
wn names (written correctly in their own languages and scripts) as mailbox names | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.76 | |||
in email addresses. This document introduces a series of specifications that de | 28.xml"/> | |||
fine mechanisms and protocol extensions needed to fully support internationalize | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.86 | |||
d email addresses. These changes include an SMTP extension and extension of emai | 20.xml"/> | |||
l header syntax to accommodate UTF-8 data. The document set also includes discus | ||||
sion of key assumptions and issues in deploying fully internationalized email. T | ||||
his document is a replacement for RFC 4952; it reflects additional issues identi | ||||
fied since that document was published. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6530"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6530"/> | ||||
</reference> | ||||
<reference anchor="RFC6855"> | ||||
<front> | ||||
<title>IMAP Support for UTF-8</title> | ||||
<author fullname="P. Resnick" initials="P." role="editor" surname="R | ||||
esnick"/> | ||||
<author fullname="C. Newman" initials="C." role="editor" surname="Ne | ||||
wman"/> | ||||
<author fullname="S. Shen" initials="S." role="editor" surname="Shen | ||||
"/> | ||||
<date month="March" year="2013"/> | ||||
<abstract> | ||||
<t>This specification extends the Internet Message Access Protocol | ||||
(IMAP) to support UTF-8 encoded international characters in user names, mail ad | ||||
dresses, and message headers. This specification replaces RFC 5738.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6855"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6855"/> | ||||
</reference> | ||||
<reference anchor="RFC6857"> | ||||
<front> | ||||
<title>Post-Delivery Message Downgrading for Internationalized Email | ||||
Messages</title> | ||||
<author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/> | ||||
<date month="March" year="2013"/> | ||||
<abstract> | ||||
<t>The Email Address Internationalization (SMTPUTF8) extension to | ||||
SMTP allows Unicode characters encoded in UTF-8 and outside the ASCII repertoire | ||||
in mail header fields. Upgraded POP and IMAP servers support internationalized | ||||
messages. If a POP or IMAP client does not support Email Address Internationaliz | ||||
ation, a POP or IMAP server cannot deliver internationalized messages to the cli | ||||
ent and cannot remove the message. To avoid that situation, this document descri | ||||
bes a mechanism for converting internationalized messages into the traditional m | ||||
essage format. As part of the conversion process, message elements that require | ||||
internationalized treatment are recoded or removed, and receivers are able to re | ||||
cognize that they received messages containing such elements, even if they canno | ||||
t process the internationalized elements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6857"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6857"/> | ||||
</reference> | ||||
<reference anchor="RFC6858"> | ||||
<front> | ||||
<title>Simplified POP and IMAP Downgrading for Internationalized Ema | ||||
il</title> | ||||
<author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen | ||||
"/> | ||||
<date month="March" year="2013"/> | ||||
<abstract> | ||||
<t>This document specifies a method for IMAP and POP servers to se | ||||
rve internationalized messages to conventional clients. The specification is sim | ||||
ple, easy to implement, and provides only rudimentary results.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6858"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6858"/> | ||||
</reference> | ||||
<reference anchor="RFC7628"> | ||||
<front> | ||||
<title>A Set of Simple Authentication and Security Layer (SASL) Mech | ||||
anisms for OAuth</title> | ||||
<author fullname="W. Mills" initials="W." surname="Mills"/> | ||||
<author fullname="T. Showalter" initials="T." surname="Showalter"/> | ||||
<author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/ | ||||
> | ||||
<date month="August" year="2015"/> | ||||
<abstract> | ||||
<t>OAuth enables a third-party application to obtain limited acces | ||||
s to a protected resource, either on behalf of a resource owner by orchestrating | ||||
an approval interaction or by allowing the third-party application to obtain ac | ||||
cess on its own behalf.</t> | ||||
<t>This document defines how an application client uses credential | ||||
s obtained via OAuth over the Simple Authentication and Security Layer (SASL) to | ||||
access a protected resource at a resource server. Thereby, it enables schemes d | ||||
efined within the OAuth framework for non-HTTP-based application protocols.</t> | ||||
<t>Clients typically store the user's long-term credential. This d | ||||
oes, however, lead to significant security vulnerabilities, for example, when su | ||||
ch a credential leaks. A significant benefit of OAuth for usage in those clients | ||||
is that the password is replaced by a shared secret with higher entropy, i.e., | ||||
the token. Tokens typically provide limited access rights and can be managed and | ||||
revoked separately from the user's long-term password.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7628"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7628"/> | ||||
</reference> | ||||
<reference anchor="RFC8620"> | ||||
<front> | ||||
<title>The JSON Meta Application Protocol (JMAP)</title> | ||||
<author fullname="N. Jenkins" initials="N." surname="Jenkins"/> | ||||
<author fullname="C. Newman" initials="C." surname="Newman"/> | ||||
<date month="July" year="2019"/> | ||||
<abstract> | ||||
<t>This document specifies a protocol for clients to efficiently q | ||||
uery, fetch, and modify JSON-based data objects, with support for push notificat | ||||
ion of changes and fast resynchronisation and for out-of- band binary data uploa | ||||
d/download.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8620"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8620"/> | ||||
</reference> | ||||
</references> | </references> | |||
</references> | </references> | |||
</back> | ||||
<!-- ##markdown-source: | ||||
H4sIAAAAAAAAA7VZ2XYbNxJ9x1dgmAfbORS1WF7Ck42SaZseWVJEOcv4+MwB | ||||
u0Gyo2aDAdCimRz9y3zLfNncKqA3yonnYeZF6gUN1HKr6lZxb29POK+K9J8q | ||||
N4UeSm9LLbK15Svnjw4Ovjo4EonyQ+l8Klw5W2XOZabw2zWWT8bXL4WyWg3l | ||||
aL3OMyzEOyc2i6Ec/3x9NRIiNUmhVlibWjX3e5n28z390Vu19+tKrVWSaOeE | ||||
8JnPseZ6qeWbt6PL0enpeDqV449eF3SanBsrJ3gh1Gxm9e2Qb1pLRa4KnKkL | ||||
cbMZCin3wmq6eMOflX5p7FDsySDMyBZevirzmYXyDp9JaSw2mJyOzs9x47zV | ||||
Gko/lVemSOWlybB+mizLlSqKvjxJB/IQy5LMb4fyBKZyOnf0wKTY/fDg+IBv | ||||
ysJbWqDzRVau8EivVJYPpcLx3y+a4wdrm90OCoMVpc2Gcun92g3392HQohhA | ||||
sv1S1bKfWBjkFcTaqEJVgr9UztPeLdnP9K3O5VFfHh4ey5+yPM/USk79oJb7 | ||||
rc5nprSFlj9OTmvhHx8cdIQfAQdW4eNG/BkkWHw/j0d6rVaDxKx2ha/e8zsh | ||||
CmNXgMetJv9cvTx9/OTgMF4+P352HC+/OniCpyIr5jvLnz55fFBdPn/ypLl8 | ||||
1lw+/8unz54eVZfPnx5hM7G3tyfVjNRLvBDXy8xJwLVcaTg71fOs0E6qImBN | ||||
11j0RubayyTPsM7Jm8JspF8qjz9arABntcB3GRbShvyx0/ZWW7hdS5U7I9Ut | ||||
7KJmuZa3mWKE9nFQKpdmM5ATLzMHC+C8VKcM/eosPgZu9yTEKltY5bXE37RU | ||||
eb6lh7QXECFLp8WbjtxObjJIVNQahU0HwQyrLE1zLcQXcgK3m7RMKJKFGBUd | ||||
DYBHWCbJSZNKZ9nWOYOU5HTnDSkbFRb3FR7IlxDTZStKG4BjX5oCKigAD480 | ||||
9NK/ldmtynWRaDKIK9drYz0s8pAOdYgFSOWlmTcC8Hmdo2bGL4MGsC9b5NFg | ||||
19XsktrfsC9bcm3NbZZqvJiVi0VWLGQNSgIBlBdkjZkmD22UJV/hs2BVfIXg | ||||
M2ttg9lN6SXFuEq2UBAa2cL15WaZJUsBUeCtVM627dw3wxe0PwuHQ6ol0Aeb | ||||
DshTV2Qhq1cMjTMkwBJGIOW0vNFbuTE2dbL39t30utcP/+X5BV9fjX94N7ka | ||||
v6Dr6evR2Vl9IeKK6euLd2cvmqvmy9OLt2/H5y/Cx3gqO49E7+3ol15Ac+/i | ||||
8npycT4669XR0NicAMSKEdDt2mryrHIi1S6x2Qw3+Obk9PLf/0L2+uOPvyFq | ||||
jw4Pv7q7izfPD58d42az1EU4jeETbmGirVDrtVaWdkFswJTrzMOWWOukQ5wV | ||||
EnbUsOOX78kyH4by61myPjz+Nj4ghTsPK5t1HrLN7j+593Ew4icefeKY2pqd | ||||
5zuW7so7+qVzX9m99fDr73LAW+4dPv/uW0HgeaE9hakQJwi6FLHtM0cg990S | ||||
DLupWZZzgHLYxUyGgmerhJTNpRIU9DPzkXJPDEe5VBROa4WtkxIpQ5rZrzrx | ||||
cvKC/SRD8YenKVB1RsAWk5i/OHc9dFrD3bFY3N31ww3VCLienM73lM3v7h6x | ||||
gAVnYU4On5AICAyHZlV+IJ04pCjevUlMHtCUeUHi15lm8mIQIisagCEScnk0 | ||||
nubFFydvxqfX0LDOu/2YWih6RZD3mKA7qNkO9mROJa12qMdJTK2ArdlUAlOw | ||||
VMK0ioyDg/Ice/d8sxkJ2ENo4fMq17m1TrJ55GeIQnxbGBwxn5NDKvPk2Vz7 | ||||
jDjGZE6ZmFOZiG4iX1YLyXJVUoWbc1rtdEJUKUdJsq2yVvuk+naF9LpUtxoC | ||||
aiomOUf+TPuNDiul35gKG5Tofoo7VKaHo6JA9DAI+QAJ8OLV5Hx/9O769fj8 | ||||
GjzuekylZEUSUurXlGYc2AwJ5MkSOBXc1+sOsKGDQ9a3YXMuBfUhzCLrjwdk | ||||
JHq5Wx9RJnA1t2bVEbD9NTkhqhFDCLGUWJ3Se6BKunIOb3GKbB8q7tv1PiDB | ||||
J6FyO4iBqzX00szwBFRE6BcU7AouL24qbLXgA7NP+SLUVNRgABPe4xJnNRXi | ||||
JjYqz85ztXAhF3NEpcorURfhKr5CCp4rSiJybUIsfganNlS6KqQ1hwODqBaC | ||||
uDFML2pYBjOhDBeUoKgkIO+rZhMKafnabLDC9mv9RVcCq8HSYfjgpn6oYzgV | ||||
0Q3mSFWdbvlsOtMacCgouqaMEAhRK0NRiPCuR1D33PgmztumJ+cz0wmVsWBB | ||||
wL9/h/GZfyPjpJYDQDQJkugxcuBABlTuEM/KkH1KhjVmI6prK6OzK7Ucn49O | ||||
zsby3fXL598Qfi6vW3mYqHcn1dqQVEVwJBeKhhhGLmR1okHkOZWVTFmjBnKe | ||||
6RwcpUK1IBumqM1EaYn6Nq8ndT3oCPOsXQeI69/dCSLM+qMiFulgkAm0Iqx/ | ||||
Qi+SPFBQXbE+Cn7n9VqQ/GwQplo7jelVFVCnFFBi520n3OiQuaFUHvgbHVgs | ||||
cl1HXlR9twaE8hD8t99i1D6YNzcRodjeaiQcosmpQEjdrwS75CtWMiazuXRb | ||||
pIOPNVRjccVyrmDMapelQ7dEau2RSq3OXX4je43mPTm9lL+VQHYal1Og8Dfy | ||||
m335qQ1iUe3KEKp9RwZ4CazeguI9ZF2adozqyUwL5sdEtRkqx1bfHlKC2WhE | ||||
l3L1w6NHndhzZqXr7gpMBU7reM81eRzBTuDoiwy+cdSYE6rmMaCCi+nJgw8P | ||||
IM/ccIeEpBN25XAw1NPhIDNneHVOGsgpNA1J+d3VWRAvpmoX2ZF80HtAEUxH | ||||
QG0B9mwzd7NliI4j5OUfX1SXd0KccVPjKAxn7VrGaX1NkZkGXJ4O+wTJncUB | ||||
QgJ30+FAjlWyrEKLaicxQDZ5nVJmMAvk5MBJdzaBr6BPEXJgYFkLjdXcuoa5 | ||||
ThZTrW7xTkjliGkasYFJHriqGNTbVwKhhup8DltcacC6OYrbKwRMseAC3d23 | ||||
L1cllIpv2+xBKLsoQ2/FJW1OIxFyJe12fTblAHX18RTlSQnfFq1U0BfU+i2W | ||||
ECr6RB4O5KjyQZQRQiCnRSYwHU3P5AUJwumpambZXh0CEkcMPBAgBEyH8kt5 | ||||
8Xf5/hSnn0zOJte/tEKBNvyGtz0Zj67GV3zO3uTqQyX/4dcz+604HcrDjhVk | ||||
+5tZ9nF5+fOPv/9jMBj8MD7pEOIdVhaZlys5yuclfMyTDZqWuGZcEg3BwXtB | ||||
2gVcRE4UmbgL6UzlxCz1wrAHajLMnwF4yY3mA2duiwS+GsgTnShaaeb1fkzN | ||||
muPlwwJ55JGoKfaN5oT6a+k8JY3SdUYW9KiqRXFMA5hT9fvz5B8mImBM+XbI | ||||
PjpkH7U+6FXzsugIGpftU4LsfUDGLlBeupCIBCXgn9MlDbaoOQqWo6lLAG6V | ||||
+EUdIa4VZ2mT2laUrCyiBhGRJTLXxQImZadgi3hCC8NHf47hwgQErzSQT86j | ||||
6m8WBfojFzBcGS0Q9gopnwHwUY3TowqnR3GDHg1Teyh7Fu3HUmerXgeXTWSR | ||||
pms0rjQXqTrBNezQb4OyAZ34C9A1+xDHnSmnY9dY6daaTHcAMWyp+TkMDNz+ | ||||
e8LBBwDhZdUSx6o5Jf2xSQAIqUs1o6zCj2WkQkz1xJaUnYDdlQGsAzUP5NBb | ||||
vI9u6X3okVHAXFeZ98HzoZRX6wbysn5J06mKViRQn/ijaLqEPpEctC+d8koV | ||||
hyzNE1QqoHXxpLNDyRRULasxRDgX51Ddlb33H3oDeVYmN1m+7cu53pDOrqqR | ||||
tEkLoo//9xANpY4GlNZS11xh4LO59z6IH1cgfvzfgZgaCgX+xyOVFPEfh41p | ||||
FjJUDUcCKYsZuh+4SfAYgbQkayuaOea6IUo8suSWHRcmT3U9bIa1QluYmwX6 | ||||
Ks7kOnW8acP8C/OnzDfY5XED08o3x/+H9IF07DrRDfwFP30us4TS+Go6rb1z | ||||
XHnneMc7xuWm65i6d+LxwqenCzAjViw5FAN1cTRegr1Dw9XYj4sK1QrqHdEq | ||||
+apoHMvzi2jEL+RkdD5C4xHmFOEHN3A+enoXZOMFWSBK1MwwVNBy7c72uqUq | ||||
DgH4d7NOf0MbLVAZLKIusr3OJLfVgDARnWqITgTrnozVm7vPtExwi6YpyM70 | ||||
I223rSFfC6bYG1PmNEKSHAw7XzXlu2wyC+XH1rylL2rWwVS/mlPSbxk+Ifp2 | ||||
UejG2fxTFrHWTeaWUVqAcxucHFv6MB7oDn0Goh44dLJn+5cFdhztGP1W7Ngg | ||||
qN+PHURcSNmfMmrpwi9B/KtEWaQt7lJ6g3SRGJy+DdVKFUJ5T8TJRhPyDL3Q | ||||
4WQ4PHC51lyKOQH9fkHqUsv8UJGJPNH71hCQ8vrGPGKKbDmx95l+OZpKZhC6 | ||||
NnbnJ7doX/Q1hZ5zJZa1gHieJRoO3vZrWnir8pL72PhbGP9STHPm0m90tlg6 | ||||
weQLLVL8lYtYovgPXRbIcvUeAAA= | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 34 change blocks. | ||||
404 lines changed or deleted | 199 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |