draft-ietf-extra-quota-00.txt | draft-ietf-extra-quota-01.txt | |||
---|---|---|---|---|
Network Working Group A. Melnikov | Network Working Group A. Melnikov | |||
Internet-Draft Isode | Internet-Draft Isode | |||
Intended status: Standards Track June 17, 2019 | Intended status: Standards Track June 15, 2020 | |||
Expires: December 19, 2019 | Expires: December 17, 2020 | |||
IMAP QUOTA Extension | IMAP QUOTA Extension | |||
draft-ietf-extra-quota-00 | draft-ietf-extra-quota-01 | |||
Abstract | Abstract | |||
The QUOTA extension of the Internet Message Access Protocol (RFC | The QUOTA extension of the Internet Message Access Protocol (RFC | |||
3501) permits administrative limits on resource usage (quotas) to be | 3501) permits administrative limits on resource usage (quotas) to be | |||
manipulated through the IMAP protocol. | manipulated through the IMAP protocol. | |||
This memo obsoletes RFC 2087, but attempts to remain backwards | This memo obsoletes RFC 2087, but attempts to remain backwards | |||
compatible whenever possible. | compatible whenever possible. | |||
skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on December 19, 2019. | This Internet-Draft will expire on December 17, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 30 ¶ | skipping to change at page 2, line 30 ¶ | |||
1. Document Conventions . . . . . . . . . . . . . . . . . . . . 3 | 1. Document Conventions . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Introduction and Overview . . . . . . . . . . . . . . . . . . 3 | 2. Introduction and Overview . . . . . . . . . . . . . . . . . . 3 | |||
3. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Resource . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Resource . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1.1. Name . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1.1. Name . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1.2. Definition . . . . . . . . . . . . . . . . . . . . . 4 | 3.1.2. Definition . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Quota Root . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.2. Quota Root . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4.1. Commands . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1. Commands . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
4.1.1. GETQUOTA . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1.1. GETQUOTA . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1.2. GETQUOTAROOT . . . . . . . . . . . . . . . . . . . . 6 | 4.1.2. GETQUOTAROOT . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1.3. SETQUOTA . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1.3. SETQUOTA . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.1.4. New STATUS attributes . . . . . . . . . . . . . . . . 8 | 4.1.4. New STATUS attributes . . . . . . . . . . . . . . . . 8 | |||
4.2. Responses . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.2. Responses . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2.1. QUOTA . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.2.1. QUOTA . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2.2. QUOTAROOT . . . . . . . . . . . . . . . . . . . . . . 9 | 4.2.2. QUOTAROOT . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.3. Response Codes . . . . . . . . . . . . . . . . . . . . . 9 | 4.3. Response Codes . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.3.1. OVERQUOTA . . . . . . . . . . . . . . . . . . . . . . 9 | 4.3.1. OVERQUOTA . . . . . . . . . . . . . . . . . . . . . . 9 | |||
5. Resource Type Definitions . . . . . . . . . . . . . . . . . . 10 | 5. Resource Type Definitions . . . . . . . . . . . . . . . . . . 10 | |||
5.1. STORAGE . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.1. STORAGE . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.2. MESSAGE . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5.2. MESSAGE . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.3. MAILBOX . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5.3. MAILBOX . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
6. Formal syntax . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5.4. ANNOTATION-STORAGE . . . . . . . . . . . . . . . . . . . 12 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 6. Interaction with IMAP ACL extension (RFC 4314) . . . . . . . 12 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 7. Formal syntax . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 14 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
11. Changes since RFC 2087 . . . . . . . . . . . . . . . . . . . 14 | 9.1. Registrations of IMAP Quota Resource Types . . . . . . . 14 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 15 | 12. Changes since RFC 2087 . . . . . . . . . . . . . . . . . . . 16 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 16 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 17 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 | ||||
1. Document Conventions | 1. 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 | |||
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. | |||
Again, for examples, the hierarchy separator on the server is | Again, for examples, the hierarchy separator on the server is | |||
presumed to be "/" throughout. None of these assumptions is required | presumed to be "/" throughout. None of these assumptions is required | |||
nor recommended by this document. | nor recommended by this document. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
document are to be interpreted as described in RFC2119 [RFC2119]. | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 RFC2119 [RFC2119] 8174 [RFC8174] when, and only when, they appear | ||||
in all capitals, as shown here. | ||||
Other capitalised words are IMAP4 [RFC3501] keywords or keywords from | Other capitalised words are IMAP4 [RFC3501] keywords or keywords from | |||
this document. | this document. | |||
2. Introduction and Overview | 2. Introduction and Overview | |||
The capability "QUOTA", denotes a RFC2087 [RFC2087] compliant server. | The capability "QUOTA", denotes a RFC2087 [RFC2087] compliant server. | |||
Some commands and responses defined in this document are not present | Some commands and responses defined in this document are not present | |||
in such servers, and clients MUST NOT rely on their presence in the | in such servers, and clients MUST NOT rely on their presence in the | |||
absence of any capability beginning with "QUOTA=". | absence of any capability beginning with "QUOTA=". | |||
skipping to change at page 4, line 15 ¶ | skipping to change at page 4, line 21 ¶ | |||
the implementation. | the implementation. | |||
3. Terms | 3. Terms | |||
3.1. Resource | 3.1. Resource | |||
A resource has a name, a formal definition. | A resource has a name, a formal definition. | |||
3.1.1. Name | 3.1.1. Name | |||
[[CREF1: Fix IANA considerations section.]] | The resource name is an atom, as defined in IMAP4rev1 [RFC3501]. | |||
These MUST be registered with IANA. Implementation specific | ||||
The resource name is an atom, as defined in IMAP4 [RFC3501]. These | resources begin with "V-" . | |||
MUST be registered with IANA. Implementation specific resources | ||||
begin with "V-" . | ||||
Supported resource names MUST be advertised as a capability, by | Supported resource names MUST be advertised as a capability, by | |||
prepending the resource name with "QUOTA=RES-". A server compliant | prepending the resource name with "QUOTA=RES-". A server compliant | |||
with this specification is not required to support all reported | with this specification is not required to support all reported | |||
resource types on all quota roots. | resource types on all quota roots. | |||
3.1.2. Definition | 3.1.2. Definition | |||
The resource definition or document containing it, while not visible | The resource definition or document containing it, while not visible | |||
through the protocol, SHOULD be registered with IANA. | through the protocol, SHOULD be registered with IANA. | |||
skipping to change at page 6, line 33 ¶ | skipping to change at page 6, line 40 ¶ | |||
4.1.2. GETQUOTAROOT | 4.1.2. GETQUOTAROOT | |||
Arguments: mailbox name | Arguments: mailbox name | |||
Responses: REQUIRED untagged responses: QUOTAROOT, QUOTA | Responses: REQUIRED untagged responses: QUOTAROOT, QUOTA | |||
Result: OK - getquotaroot completed | Result: OK - getquotaroot completed | |||
NO - getquotaroot error: no such mailbox, permission denied | NO - getquotaroot error: no such mailbox, permission denied | |||
BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
The GETQUOTAROOT command takes the name of a mailbox and returns the | The GETQUOTAROOT command takes a mailbox name and returns the list of | |||
list of quota roots for the mailbox in an untagged QUOTAROOT | quota roots for the mailbox in an untagged QUOTAROOT response. For | |||
response. For each listed quota root, it also returns the quota | each listed quota root, it also returns the quota root's resource | |||
root's resource usage and limits in an untagged QUOTA response. | usage and limits in an untagged QUOTA response. | |||
[[CREF2: Need to clarify that the mailbox name doesn't have to | Note that the mailbox name parameter doesn't have to reference an | |||
reference an existing mailbox. This can be handy in order to | existing mailbox. This can be handy in order to determine which | |||
determine which quotaroot would apply to a mailbox when it gets | quotaroot would apply to a mailbox when it gets created. | |||
created.]] | ||||
Example: | Example: | |||
S: * CAPABILITY [...] QUOTA QUOTA=RES-STORAGE QUOTA=RES-MESSAGE | S: * CAPABILITY [...] QUOTA QUOTA=RES-STORAGE QUOTA=RES-MESSAGE | |||
[...] | [...] | |||
[...] | [...] | |||
C: G0002 GETQUOTAROOT INBOX | C: G0002 GETQUOTAROOT INBOX | |||
S: * QUOTAROOT INBOX "#user/alice" "!partition/sda4" | S: * QUOTAROOT INBOX "#user/alice" "!partition/sda4" | |||
S: * QUOTA "#user/alice" (MESSAGE 42 1000) | S: * QUOTA "#user/alice" (MESSAGE 42 1000) | |||
S: * QUOTA "!partition/sda4" (STORAGE 104 10923847) | S: * QUOTA "!partition/sda4" (STORAGE 104 10923847) | |||
S: G0002 OK Getquotaroot complete | S: G0002 OK Getquotaroot complete | |||
4.1.3. SETQUOTA | 4.1.3. SETQUOTA | |||
Arguments: quota root | Arguments: quota root | |||
skipping to change at page 7, line 27 ¶ | skipping to change at page 7, line 33 ¶ | |||
The SETQUOTA command takes the name of a mailbox quota root and a | The SETQUOTA command takes the name of a mailbox quota root and a | |||
list of resource limits. The resource limits for the named quota | list of resource limits. The resource limits for the named quota | |||
root are changed to be the specified limits. Any previous resource | root are changed to be the specified limits. Any previous resource | |||
limits for the named quota root are discarded. | limits for the named quota root are discarded. | |||
If the named quota root did not previously exist, an implementation | If the named quota root did not previously exist, an implementation | |||
may optionally create it and change the quota roots for any number of | may optionally create it and change the quota roots for any number of | |||
existing mailboxes in an implementation-defined manner. | existing mailboxes in an implementation-defined manner. | |||
[[CREF3: Should the server be sending untagged QUOTA responses for | If the implementation chooses to change the quota roots for some | |||
all side effect changes?]] | existing mailboxes such changes SHOULD be announced with untagged | |||
QUOTA responses. | ||||
Example: | Example: | |||
S: * CAPABILITY [...] QUOTA QUOTA=RES-STORAGE QUOTA=RES-MESSAGE | S: * CAPABILITY [...] QUOTA QUOTA=RES-STORAGE QUOTA=RES-MESSAGE | |||
[...] | [...] | |||
[...] | [...] | |||
C: S0000 GETQUOTA "#user/alice" | C: S0000 GETQUOTA "#user/alice" | |||
S: * QUOTA "#user/alice" (STORAGE 54 111 MESSAGE 42 1000) | S: * QUOTA "#user/alice" (STORAGE 54 111 MESSAGE 42 1000) | |||
S: S0000 OK Getquota completed | S: S0000 OK Getquota completed | |||
C: S0001 SETQUOTA "#user/alice" (STORAGE 510) | C: S0001 SETQUOTA "#user/alice" (STORAGE 510) | |||
skipping to change at page 9, line 33 ¶ | skipping to change at page 9, line 40 ¶ | |||
S: * QUOTAROOT INBOX "" | S: * QUOTAROOT INBOX "" | |||
S: * QUOTAROOT comp.mail.mime | S: * QUOTAROOT comp.mail.mime | |||
4.3. Response Codes | 4.3. Response Codes | |||
4.3.1. OVERQUOTA | 4.3.1. OVERQUOTA | |||
OVERQUOTA response code SHOULD be returned in the tagged NO response | OVERQUOTA response code SHOULD be returned in the tagged NO response | |||
to an APPEND/COPY when the addition of the message(s) puts mailbox | to an APPEND/COPY/MOVE when the addition of the message(s) puts the | |||
over any one of its quota limits. | target mailbox over any one of its quota limits. | |||
Example: | Example: | |||
S: C: A003 APPEND Drafts (\Seen $MDNSent) {310} | S: C: A003 APPEND Drafts (\Seen $MDNSent) {310} | |||
S: + Ready for literal data | S: + Ready for literal data | |||
C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) | C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) | |||
C: From: Fred Foobar <foobar@Blurdybloop.COM> | C: From: Fred Foobar <foobar@Blurdybloop.COM> | |||
C: Subject: afternoon meeting | C: Subject: afternoon meeting | |||
C: To: mooch@owatagu.siam.edu | C: To: mooch@owatagu.siam.edu | |||
C: Message-Id: <B27397-0100000@Blurdybloop.COM> | C: Message-Id: <B27397-0100000@Blurdybloop.COM> | |||
C: MIME-Version: 1.0 | C: MIME-Version: 1.0 | |||
C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII | C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII | |||
C: | C: | |||
C: Hello Joe, do you think we can meet at 3:30 tomorrow? | C: Hello Joe, do you think we can meet at 3:30 tomorrow? | |||
C: | C: | |||
S: A003 NO [OVERQUOTA] APPEND Failed | S: A003 NO [OVERQUOTA] APPEND Failed | |||
The OVERQUOTA response code MAY also be returned in an untagged NO | The OVERQUOTA response code MAY also be returned in an untagged NO | |||
response when the currently selected mailbox exceeds soft quota. | response when a mailbox exceeds soft quota. Such responses have 2 | |||
[[CREF4: What about per-user quotas when no mailbox is selected or | forms. If it is followed by a tag, the tag refers to the command | |||
when the destination mailbox (different from the currently selected | that caused this (such as APPEND or COPY) and the OVERQUOTA response | |||
one) is affected?]] The response code MUST be followed by the tag of | code applies to the target mailbox specified by such command. If the | |||
the command that caused this (such as APPEND or COPY). The tag MUST | OVERQUOTA response code is not followed by the tag, this means that | |||
be omitted if an external event (e.g. LMTP delivery or APPEND/COPY | an external event (e.g. LMTP delivery or APPEND/COPY in another IMAP | |||
in another IMAP connection) caused this event. | connection) caused this event and the event applies to the currently | |||
selected mailbox. In particular, this means that such OVERQUOTA | ||||
response codes MUST NOT be returned if there is no mailbox selected | ||||
or if a mailbox other than the currently selected one exceeds soft | ||||
quota. | ||||
Example: | Example: | |||
S: C: A003 APPEND Drafts (\Seen $MDNSent) {310} | S: C: A003 APPEND Drafts (\Seen $MDNSent) {310} | |||
S: + Ready for literal data | S: + Ready for literal data | |||
C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) | C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) | |||
C: From: Fred Foobar <foobar@Blurdybloop.COM> | C: From: Fred Foobar <foobar@Blurdybloop.COM> | |||
C: Subject: afternoon meeting | C: Subject: afternoon meeting | |||
C: To: mooch@owatagu.siam.edu | C: To: mooch@owatagu.siam.edu | |||
C: Message-Id: <B27397-0100000@Blurdybloop.COM> | C: Message-Id: <B27397-0100000@Blurdybloop.COM> | |||
skipping to change at page 11, line 14 ¶ | skipping to change at page 11, line 28 ¶ | |||
The usage figure may change as a result of performing actions not | The usage figure may change as a result of performing actions not | |||
associated with adding new messages to the mailbox, such as SEARCH, | associated with adding new messages to the mailbox, such as SEARCH, | |||
since this may increase the amount of metadata included in the | since this may increase the amount of metadata included in the | |||
calculations. | calculations. | |||
Support for this resource MUST be indicated by the server by | Support for this resource MUST be indicated by the server by | |||
advertising the CAPABILITY "QUOTA=RES-STORAGE". | advertising the CAPABILITY "QUOTA=RES-STORAGE". | |||
A resource named the same was also given as an example in RFC2087 | A resource named the same was also given as an example in RFC2087 | |||
[RFC2087], clients conformant to this specification connecting to | [RFC2087]. In absence of information to the contrary, clients | |||
servers which do not advertise "QUOTA=RES-STORAGE", yet allow a | conformant to this specification connecting to servers which do not | |||
resource named STORAGE, MUST NOT assume that it is the same resource. | advertise "QUOTA=RES-STORAGE", yet allow a resource named STORAGE, | |||
[[CREF5: ?]] | MUST NOT assume that it is the same resource. [[CREF1: Is the above | |||
restriction useful and will it be obeyed? If the answer is "no", | ||||
delete it.]] | ||||
5.2. MESSAGE | 5.2. MESSAGE | |||
The number of messages stored within the mailboxes governed by the | The number of messages stored within the mailboxes governed by the | |||
quota root. This MUST be an exact number, however, clients MUST NOT | quota root. This MUST be an exact number, however, clients MUST NOT | |||
assume that a change in the usage indicates a change in the number of | assume that a change in the usage indicates a change in the number of | |||
messages available, since the quota root may include mailboxes the | messages available, since the quota root may include mailboxes the | |||
client has no access to. | client has no access to. | |||
Support for this resource MUST be indicated by the server by | Support for this resource MUST be indicated by the server by | |||
advertising the CAPABILITY "QUOTA=RES-MESSAGE". | advertising the CAPABILITY "QUOTA=RES-MESSAGE". | |||
A resource named the same was also given as an example in RFC2087 | A resource named the same was also given as an example in RFC2087 | |||
[RFC2087], clients conformant to this specification connecting to | [RFC2087], clients conformant to this specification connecting to | |||
servers which do not advertise "QUOTA=RES-MESSAGE", yet allow a | servers which do not advertise "QUOTA=RES-MESSAGE", yet allow a | |||
resource named MESSAGE, MUST NOT assume that it is the same resource. | resource named MESSAGE, MUST NOT assume that it is the same resource. | |||
[[CREF2: As above.]] | ||||
5.3. MAILBOX | 5.3. MAILBOX | |||
The number of mailboxes governed by the quota root. This MUST be an | The number of mailboxes governed by the quota root. This MUST be an | |||
exact number, however, clients MUST NOT assume that a change in the | exact number, however, clients MUST NOT assume that a change in the | |||
usage indicates a change in the number of mailboxes, since the quota | usage indicates a change in the number of mailboxes, since the quota | |||
root may include mailboxes the client has no access to. | root may include mailboxes the client has no access to. | |||
Support for this resource MUST be indicated by the server by | Support for this resource MUST be indicated by the server by | |||
advertising the CAPABILITY "QUOTA=RES-MAILBOX". | advertising the CAPABILITY "QUOTA=RES-MAILBOX". | |||
6. Formal syntax | 5.4. ANNOTATION-STORAGE | |||
[[CREF3: Bron to check whether this is a sensible description and | ||||
whether it is needed at all:]] The maximum size of all annotations | ||||
[RFC5257], in units of 1024 octets, associated with all messages in | ||||
the mailboxes governed by the quota root. | ||||
Support for this resource MUST be indicated by the server by | ||||
advertising the CAPABILITY "QUOTA=RES-ANNOTATION-STORAGE". | ||||
6. Interaction with IMAP ACL extension (RFC 4314) | ||||
[[CREF4: TBD]] | ||||
7. 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 by | |||
IMAP4 [RFC3501]. | IMAP4 [RFC3501]. | |||
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 upper or lower case characters to define | |||
token strings is for editorial clarity only. Implementations MUST | token strings is for editorial clarity only. Implementations MUST | |||
skipping to change at page 13, line 11 ¶ | skipping to change at page 13, line 42 ¶ | |||
resource-usage = number | resource-usage = number | |||
;; must be less than corresponding resource-limit | ;; must be less than corresponding resource-limit | |||
capability-quota = capa-quota-res | capability-quota = capa-quota-res | |||
capa-quota-res = "QUOTA=RES-" resource-name | capa-quota-res = "QUOTA=RES-" resource-name | |||
status-att =/ "DELETED-MESSAGES" / "DELETED-STORAGE" | status-att =/ "DELETED-MESSAGES" / "DELETED-STORAGE" | |||
[[CREF6: Should this be optional unless the | [[CREF5: Should the above be optional unless the | |||
server implements MESSAGE/STORAGE?]] | server implements MESSAGE/STORAGE? Also sync | |||
this with IMAP4rev2.]] | ||||
resp-text-code =/ "OVERQUOTA" [SP tag] | resp-text-code =/ "OVERQUOTA" [SP tag] | |||
7. Security Considerations | 8. Security Considerations | |||
Implementors should be careful to make sure the implementation of | Implementors should be careful to make sure the implementation of | |||
these commands does not violate the site's security policy. The | these commands does not violate the site's security policy. The | |||
resource usage of other users is likely to be considered confidential | resource usage of other users is likely to be considered confidential | |||
information and should not be divulged to unauthorized persons. | information and should not be divulged to unauthorized persons. | |||
8. IANA Considerations | 9. IANA Considerations | |||
IMAP4 capabilities are registered by publishing a standards track or | IMAP4 capabilities are registered by publishing a standards track or | |||
IESG approved experimental RFC. The registry is currently located | IESG approved experimental RFC. The registry is currently located | |||
at: | at: | |||
http://www.iana.org/assignments/imap4-capabilities | http://www.iana.org/assignments/imap4-capabilities | |||
IANA is requested to update definition of the QUOTA extension to | IANA is requested to update definition of the QUOTA extension to | |||
point to this document. | point to this document. | |||
IANA is also requested to create a new registry for IMAP quota | IANA is also requested to create a new registry for IMAP quota | |||
resource types. Registration policy for this registry is | resource types. Registration policy for this registry is | |||
"Specification Required". When registering a new quota resource | "Specification Required". When registering a new quota resource | |||
type, the registrant need to provide the following: Name of the quota | type, the registrant need to provide the following: Name of the quota | |||
resource type, Author/Change Controller name and email address, short | resource type, Author/Change Controller name and email address, short | |||
description and a reference to the specification. | description and a reference to a specification that describes the | |||
quota resource type in more details. | ||||
This document includes initial registrations for the following IMAP | This document includes initial registrations for the following IMAP | |||
quota resource type: STORAGE (Section 5.1), MESSAGE (Section 5.2) and | quota resource type: STORAGE (Section 5.1), MESSAGE (Section 5.2), | |||
MAILBOX (Section 5.3). | MAILBOX (Section 5.3) and "ANNOTATION-STORAGE" (Section 5.4). See | |||
details below. | ||||
IANA is requested to reserve the prefix "QUOTA=RES-" in the IMAP4 | IANA is requested to reserve the prefix "QUOTA=RES-" in the IMAP4 | |||
capabilities registry and add a pointer to this document and to the | capabilities registry and add a pointer to this document and to the | |||
IMAP quote resource type registry established above. | IMAP quote resource type registry established above. | |||
IANA is requested to reserve all other capabilities starting with | IANA is requested to reserve all other capabilities starting with | |||
"QUOTA=" prefix to future standard track or experimental extensions | "QUOTA=" prefix for future standard track or experimental extensions | |||
to this document. | to this document. | |||
9. Contributors | 9.1. Registrations of IMAP Quota Resource Types | |||
Name of the quota resource type: STORAGE | ||||
Author: Alexey Melnikov <alexey.melnikov@isode.com> | ||||
Change Controller: IESG <iesg@ietf.org> | ||||
Description: The physical space estimate, in units of 1024 octets, | ||||
of the mailboxes governed by the quota root. | ||||
Reference: Section 5.1 of RFCXXXX | ||||
Name of the quota resource type: MESSAGE | ||||
Author: Alexey Melnikov <alexey.melnikov@isode.com> | ||||
Change Controller: IESG <iesg@ietf.org> | ||||
Description: The number of messages stored within the mailboxes | ||||
governed by the quota root. | ||||
Reference: Section 5.2 of RFCXXXX | ||||
Name of the quota resource type: MAILBOX | ||||
Author: Alexey Melnikov <alexey.melnikov@isode.com> | ||||
Change Controller: IESG <iesg@ietf.org> | ||||
Description: The number of mailboxes governed by the quota root. | ||||
Reference: Section 5.3 of RFCXXXX | ||||
Name of the quota resource type: | ||||
Author: Alexey Melnikov <alexey.melnikov@isode.com> | ||||
Change Controller: IESG <iesg@ietf.org> | ||||
Description: The maximum size of all annotations [RFC5257], in units | ||||
of 1024 octets, associated with all messages in the mailboxes | ||||
governed by the quota root. [[CREF6: Recheck against the final | ||||
description of "ANNOTATION-STORAGE".]] | ||||
Reference: Section 5.4 of RFCXXXX | ||||
10. Contributors | ||||
Dave Cridland wrote lots of text in an earlier draft that became the | Dave Cridland wrote lots of text in an earlier draft that became the | |||
base for this document. | basis for this document. | |||
10. Acknowledgments | 11. Acknowledgments | |||
Editors of this document would like to thank the following people who | Editors of this document would like to thank the following people who | |||
provided useful comments or participated in discussions that lead to | provided useful comments or participated in discussions that lead to | |||
this update to RFC 2087: | this update to RFC 2087: | |||
John Myers, | John Myers, | |||
Cyrus Daboo, | Cyrus Daboo, | |||
Lyndon Nerenberg | Lyndon Nerenberg | |||
This document is a revision of RFC 2087. It borrows a lot of text | This document is a revision of RFC 2087. It borrows a lot of text | |||
from RFC 2087. Thus work of the RFC 2087 author John Myers is | from RFC 2087. Thus work of the RFC 2087 author John Myers is | |||
appreciated. | appreciated. | |||
11. Changes since RFC 2087 | 12. Changes since RFC 2087 | |||
This document is a revision of RFC 2087. It tries to clarify meaning | This document is a revision of RFC 2087. It tries to clarify meaning | |||
of different terms used by RFC 2087. It also provides more examples, | of different terms used by RFC 2087. It also provides more examples, | |||
gives guidance on allowed server behaviour, defines IANA registry for | gives guidance on allowed server behaviour, defines IANA registry for | |||
quota resource types and provides initial registrations for 3 of | quota resource types and provides initial registrations for 3 of | |||
them. | them. | |||
When compared with RFC 2087, this document defines one more commonly | When compared with RFC 2087, this document defines one more commonly | |||
used resource type, adds optional OVERQUOTA response code and defines | used resource type, adds optional OVERQUOTA response code and defines | |||
two extra STATUS data items ("DELETED-MESSAGES" and "DELETED- | two extra STATUS data items ("DELETED-MESSAGES" and "DELETED- | |||
STORAGE") | STORAGE") | |||
12. References | 13. References | |||
12.1. Normative References | 13.1. Normative References | |||
[ABNF] Crocker, D., Ed. and P. Overell, Ed., "Augmented BNF for | [ABNF] Crocker, D., Ed. and P. Overell, Ed., "Augmented BNF for | |||
Syntax Specifications: ABNF", RFC 4234, October 2005. | Syntax Specifications: ABNF", RFC 5234, January 2008. | |||
[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>. | |||
12.2. Informative References | [RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension", | |||
RFC 4314, DOI 10.17487/RFC4314, December 2005, | ||||
<https://www.rfc-editor.org/info/rfc4314>. | ||||
[RFC5257] Daboo, C. and R. Gellens, "Internet Message Access | ||||
Protocol - ANNOTATE Extension", RFC 5257, | ||||
DOI 10.17487/RFC5257, June 2008, | ||||
<https://www.rfc-editor.org/info/rfc5257>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
13.2. Informative References | ||||
[RFC2087] Myers, J., "IMAP4 QUOTA extension", RFC 2087, | [RFC2087] Myers, J., "IMAP4 QUOTA extension", RFC 2087, | |||
DOI 10.17487/RFC2087, January 1997, | DOI 10.17487/RFC2087, January 1997, | |||
<https://www.rfc-editor.org/info/rfc2087>. | <https://www.rfc-editor.org/info/rfc2087>. | |||
Author's Address | Author's Address | |||
Alexey Melnikov | Alexey Melnikov | |||
Isode Limited | Isode Limited | |||
End of changes. 32 change blocks. | ||||
66 lines changed or deleted | 152 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |