rfc9738v1.txt | rfc9738.txt | |||
---|---|---|---|---|
skipping to change at line 15 ¶ | skipping to change at line 15 ¶ | |||
ISSN: 2070-1721 V. Nagulakonda | ISSN: 2070-1721 V. Nagulakonda | |||
Yahoo! | Yahoo! | |||
L. Alves | L. Alves | |||
February 2025 | February 2025 | |||
IMAP MESSAGELIMIT Extension | IMAP MESSAGELIMIT Extension | |||
Abstract | Abstract | |||
The MESSAGELIMIT extension of the Internet Message Access Protocol | The MESSAGELIMIT extension of the Internet Message Access Protocol | |||
(RFC 3501/RFC 9051) allows servers to announce a limit on the number | (RFCs 3501 and 9051) allows servers to announce a limit on the number | |||
of messages that can be processed in a single FETCH, SEARCH, STORE, | of messages that can be processed in a single FETCH, SEARCH, STORE, | |||
COPY, or MOVE command (or their UID variants), or in a single APPEND | COPY, or MOVE command (or their UID variants), or in a single APPEND | |||
or UID EXPUNGE command. This helps servers to control resource usage | or UID EXPUNGE command. This helps servers to control resource usage | |||
when performing various IMAP operations. This helps clients to know | when performing various IMAP operations. This helps clients to know | |||
the message limit enforced by the corresponding IMAP server and avoid | the message limit enforced by the corresponding IMAP server and avoid | |||
issuing commands that would exceed such limit. | issuing commands that would exceed such limit. | |||
Status of This Memo | Status of This Memo | |||
This document is not an Internet Standards Track specification; it is | This document is not an Internet Standards Track specification; it is | |||
skipping to change at line 74 ¶ | skipping to change at line 74 ¶ | |||
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 | 1. Introduction and Overview | |||
2. Document Conventions | 2. Document Conventions | |||
3. The MESSAGELIMIT Extension | 3. The MESSAGELIMIT Extension | |||
3.1. Returning Limits on the Number of Messages Processed in a | 3.1. Returning Limits on the Number of Messages Processed in a | |||
Single SEARCH/FETCH/STORE/COPY/MOVE/APPEND/EXPUNGE Command | Single Command | |||
3.2. UIDAFTER and UIDBEFORE SEARCH Criteria | 3.2. UIDAFTER and UIDBEFORE SEARCH Criteria | |||
3.3. Interaction with SORT and THREAD Extensions | 3.3. Interaction with SORT and THREAD Extensions | |||
3.4. Interaction with SEARCHRES Extension and IMAP4rev2 | 3.4. Interaction with SEARCHRES Extension and IMAP4rev2 | |||
4. Interoperability Considerations | 4. Interoperability Considerations | |||
4.1. Effects of MESSAGELIMIT and SAVELIMIT Extensions on | 4.1. Effects of MESSAGELIMIT and SAVELIMIT Extensions on | |||
Noncompliant Clients | Noncompliant Clients | |||
4.2. Maintaining Compatibility | 4.2. Maintaining Compatibility | |||
5. Formal Syntax | 5. Formal Syntax | |||
6. Security Considerations | 6. Security Considerations | |||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. Additions to the IMAP Capabilities Registry | 7.1. Additions to the IMAP Capabilities Registry | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
8.2. Informative References | 8.2. Informative References | |||
Acknowledgments | Acknowledgments | |||
Authors' Addresses | 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 announcing a server limit on the number of | Protocol [RFC9051] for announcing a server limit on the number of | |||
messages that can be processed in a single FETCH, SEARCH, STORE, | messages that can be processed in a single FETCH, SEARCH, STORE, | |||
COPY, or MOVE command (or their UID variants), or a single APPEND or | COPY, or MOVE command (or their UID variants), or a single APPEND or | |||
UID EXPUNGE command. This extension is compatible with both | UID EXPUNGE command. This extension is compatible with both | |||
IMAP4rev1 [RFC3501] and IMAP4rev2 [RFC9051]. | IMAP4rev1 [RFC3501] and IMAP4rev2 [RFC9051]. | |||
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 server to the client. Lines prefixed with "// " are comments | the server to the client. Lines prefixed with "// " are comments | |||
skipping to change at line 138 ¶ | skipping to change at line 138 ¶ | |||
An IMAP server that only enforces the message limit on COPY and | An IMAP server that only enforces the message limit on COPY and | |||
APPEND commands (and their UID variants) would include the | APPEND commands (and their UID variants) would include the | |||
"SAVELIMIT=<limit>" capability (instead of the | "SAVELIMIT=<limit>" capability (instead of the | |||
"MESSAGELIMIT=<limit>") in the CAPABILITY response or response code. | "MESSAGELIMIT=<limit>") in the CAPABILITY response or response code. | |||
The limit advertised in the MESSAGELIMIT or SAVELIMIT capability | The limit advertised in the MESSAGELIMIT or SAVELIMIT capability | |||
SHOULD NOT be lower than 1000 messages. | SHOULD NOT be lower than 1000 messages. | |||
3.1. Returning Limits on the Number of Messages Processed in a Single | 3.1. Returning Limits on the Number of Messages Processed in a Single | |||
SEARCH/FETCH/STORE/COPY/MOVE/APPEND/EXPUNGE Command | Command | |||
If a server implementation doesn't allow more than <N> messages to be | If a server implementation doesn't allow more than <N> messages to be | |||
operated on by a single COPY or UID COPY command, it MUST fail the | operated on by a single COPY or UID COPY command, it MUST fail the | |||
command by returning a tagged NO response with the MESSAGELIMIT | command by returning a tagged NO response with the MESSAGELIMIT | |||
response code defined below. No messages are copied in this case. | response code defined below. No messages are copied in this case. | |||
If a server implementation doesn't allow more than <N> messages to be | If a server implementation doesn't allow more than <N> messages to be | |||
operated on by a single SEARCH, FETCH, STORE, or MOVE command (or | operated on by a single SEARCH, FETCH, STORE, or MOVE command (or | |||
their UID variants), or an APPEND or UID EXPUNGE command, it MUST | their UID variants), or an APPEND or UID EXPUNGE command, it MUST | |||
return the MESSAGELIMIT response code defined below: | return the MESSAGELIMIT response code defined below: | |||
skipping to change at line 370 ¶ | skipping to change at line 370 ¶ | |||
partial results saved | partial results saved | |||
4. Interoperability Considerations | 4. Interoperability Considerations | |||
4.1. Effects of MESSAGELIMIT and SAVELIMIT Extensions on Noncompliant | 4.1. Effects of MESSAGELIMIT and SAVELIMIT Extensions on Noncompliant | |||
Clients | Clients | |||
A server that advertises the MESSAGELIMIT=N capability would have the | A server that advertises the MESSAGELIMIT=N capability would have the | |||
following effect on clients that don't support this capability: | following effect on clients that don't support this capability: | |||
* Operations on a mailbox that has <= N messages are not affected. | * Operations are not affected on a mailbox that has N messages or | |||
fewer. | ||||
* In a mailbox with more than N messages: | * In a mailbox with more than N messages: | |||
- An attempt to COPY or UID COPY more than N messages will always | - An attempt to COPY or UID COPY more than N messages will always | |||
fail. | fail. | |||
- EXPUNGE and CLOSE will always operate on the full mailbox, so | - EXPUNGE and CLOSE will always operate on the full mailbox, so | |||
they are not affected. | they are not affected. | |||
- Other commands like FETCH, SEARCH, and MOVE will be effectively | - Other commands like FETCH, SEARCH, and MOVE will be effectively | |||
skipping to change at line 526 ¶ | skipping to change at line 527 ¶ | |||
[RFC9394] Melnikov, A., Achuthan, A. P., Nagulakonda, V., and L. | [RFC9394] Melnikov, A., Achuthan, A. P., Nagulakonda, V., and L. | |||
Alves, "IMAP PARTIAL Extension for Paged SEARCH and | Alves, "IMAP PARTIAL Extension for Paged SEARCH and | |||
FETCH", RFC 9394, DOI 10.17487/RFC9394, June 2023, | FETCH", RFC 9394, DOI 10.17487/RFC9394, June 2023, | |||
<https://www.rfc-editor.org/info/rfc9394>. | <https://www.rfc-editor.org/info/rfc9394>. | |||
Acknowledgments | Acknowledgments | |||
This document was motivated by the Yahoo! team and their questions | This document was motivated by the Yahoo! team and their questions | |||
about best client practices for dealing with large mailboxes. | about best client practices for dealing with large mailboxes. | |||
The editor of this document would like to thank the following people | The authors of this document would like to thank the following people | |||
who provided useful comments, contributed text, or participated in | who provided useful comments, contributed text, or participated in | |||
discussions of this document: Timo Sirainen, Barry Leiba, Ken | discussions of this document: Timo Sirainen, Barry Leiba, Ken | |||
Murchison, and Arnt Gulbrandsen. | Murchison, and Arnt Gulbrandsen. | |||
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 | |||
End of changes. 6 change blocks. | ||||
6 lines changed or deleted | 7 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |