rfc7162v2.txt | rfc7162_space.txt | |||
---|---|---|---|---|
skipping to change at page 3, line 7 | skipping to change at page 3, line 7 | |||
3.1.9. Interaction with IMAP SORT and THREAD Extensions . . 21 | 3.1.9. Interaction with IMAP SORT and THREAD Extensions . . 21 | |||
3.1.10. Interaction with IMAP ESORT and ESEARCH Extensions . 22 | 3.1.10. Interaction with IMAP ESORT and ESEARCH Extensions . 22 | |||
3.1.11. Additional Quality-of-Implementation Issues . . . . . 22 | 3.1.11. Additional Quality-of-Implementation Issues . . . . . 22 | |||
3.1.12. CONDSTORE Server Implementation Considerations . . . 23 | 3.1.12. CONDSTORE Server Implementation Considerations . . . 23 | |||
3.2. QRESYNC Extension . . . . . . . . . . . . . . . . . . . . 24 | 3.2. QRESYNC Extension . . . . . . . . . . . . . . . . . . . . 24 | |||
3.2.1. Impact on CONDSTORE-only Clients . . . . . . . . . . 24 | 3.2.1. Impact on CONDSTORE-only Clients . . . . . . . . . . 24 | |||
3.2.2. Advertising Support for QRESYNC . . . . . . . . . . . 25 | 3.2.2. Advertising Support for QRESYNC . . . . . . . . . . . 25 | |||
3.2.3. Use of ENABLE . . . . . . . . . . . . . . . . . . . . 25 | 3.2.3. Use of ENABLE . . . . . . . . . . . . . . . . . . . . 25 | |||
3.2.4. Additional Requirements on QRESYNC Servers . . . . . 26 | 3.2.4. Additional Requirements on QRESYNC Servers . . . . . 26 | |||
3.2.5. QRESYNC Parameter to SELECT/EXAMINE . . . . . . . . . 26 | 3.2.5. QRESYNC Parameter to SELECT/EXAMINE . . . . . . . . . 26 | |||
3.2.6. VANISHED UID FETCH Modifier . . . . . . . . . . . . . 30 | 3.2.6. VANISHED UID FETCH Modifier . . . . . . . . . . . . . 31 | |||
3.2.7. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 32 | 3.2.7. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 32 | |||
3.2.8. CLOSE Command . . . . . . . . . . . . . . . . . . . . 33 | 3.2.8. CLOSE Command . . . . . . . . . . . . . . . . . . . . 33 | |||
3.2.9. UID EXPUNGE Command . . . . . . . . . . . . . . . . . 33 | 3.2.9. UID EXPUNGE Command . . . . . . . . . . . . . . . . . 34 | |||
3.2.10. VANISHED Response . . . . . . . . . . . . . . . . . . 35 | 3.2.10. VANISHED Response . . . . . . . . . . . . . . . . . . 35 | |||
3.2.11. CLOSED Response Code . . . . . . . . . . . . . . . . 38 | 3.2.11. CLOSED Response Code . . . . . . . . . . . . . . . . 38 | |||
4. Long Command Lines (Update to RFC 2683) . . . . . . . . . . . 38 | 4. Long Command Lines (Update to RFC 2683) . . . . . . . . . . . 39 | |||
5. QRESYNC Server Implementation Considerations . . . . . . . . 39 | 5. QRESYNC Server Implementation Considerations . . . . . . . . 39 | |||
5.1. Server Implementations That Don't Store Extra State . . . 39 | 5.1. Server Implementations That Don't Store Extra State . . . 39 | |||
5.2. Server Implementations Storing Minimal State . . . . . . 39 | 5.2. Server Implementations Storing Minimal State . . . . . . 40 | |||
5.3. Additional State Required on the Server . . . . . . . . . 40 | 5.3. Additional State Required on the Server . . . . . . . . . 40 | |||
6. Updated Synchronization Sequence . . . . . . . . . . . . . . 41 | 6. Updated Synchronization Sequence . . . . . . . . . . . . . . 41 | |||
7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 44 | 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 48 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 48 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 49 | 10.2. Informative References . . . . . . . . . . . . . . . . . 49 | |||
Appendix A. Changes since RFC 4551 . . . . . . . . . . . . . . . 50 | Appendix A. Changes since RFC 4551 . . . . . . . . . . . . . . . 50 | |||
Appendix B. Changes since RFC 5162 . . . . . . . . . . . . . . . 50 | Appendix B. Changes since RFC 5162 . . . . . . . . . . . . . . . 50 | |||
skipping to change at page 15, line 9 | skipping to change at page 15, line 9 | |||
S: * 101 FETCH (MODSEQ (303181230852)) | S: * 101 FETCH (MODSEQ (303181230852)) | |||
S: b108 OK Conditional Store completed | S: b108 OK Conditional Store completed | |||
Or, the flag hasn't changed, but another has (nice server behavior. | Or, the flag hasn't changed, but another has (nice server behavior. | |||
Server implementers should also see Section 3.1.12)... | Server implementers should also see Section 3.1.12)... | |||
C: a106 STORE 100:150 (UNCHANGEDSINCE 212030000000) | C: a106 STORE 100:150 (UNCHANGEDSINCE 212030000000) | |||
+FLAGS.SILENT ($Processed) | +FLAGS.SILENT ($Processed) | |||
S: * 100 FETCH (MODSEQ (303181230852)) | S: * 100 FETCH (MODSEQ (303181230852)) | |||
S: * 101 FETCH (MODSEQ (303011130956) FLAGS ($Processed \Deleted | S: * 101 FETCH (MODSEQ (303011130956) FLAGS ($Processed \Deleted | |||
\Answered)) | \Answered)) | |||
S: * 102 FETCH (MODSEQ (303181230852)) | S: * 102 FETCH (MODSEQ (303181230852)) | |||
... | ... | |||
S: * 150 FETCH (MODSEQ (303181230852)) | S: * 150 FETCH (MODSEQ (303181230852)) | |||
S: a106 OK Conditional STORE completed | S: a106 OK Conditional STORE completed | |||
The following example is based on the example from Section 4.2.3 of | The following example is based on the example from Section 4.2.3 of | |||
[RFC2180] and demonstrates that the MODIFIED response code MAY also | [RFC2180] and demonstrates that the MODIFIED response code MAY also | |||
be returned in the tagged NO response. | be returned in the tagged NO response. | |||
The client tries to conditionally STORE flags on a mixture of | The client tries to conditionally STORE flags on a mixture of | |||
skipping to change at page 16, line 49 | skipping to change at page 16, line 49 | |||
only returned for messages that have a mod-sequence bigger than | only returned for messages that have a mod-sequence bigger than | |||
<mod-sequence>. | <mod-sequence>. | |||
When the CHANGEDSINCE FETCH modifier is specified, it implicitly | When the CHANGEDSINCE FETCH modifier is specified, it implicitly | |||
adds the MODSEQ FETCH message data item (Section 3.1.4.2). | adds the MODSEQ FETCH message data item (Section 3.1.4.2). | |||
C: s100 UID FETCH 1:* (FLAGS) (CHANGEDSINCE 12345) | C: s100 UID FETCH 1:* (FLAGS) (CHANGEDSINCE 12345) | |||
S: * 1 FETCH (UID 4 MODSEQ (65402) FLAGS (\Seen)) | S: * 1 FETCH (UID 4 MODSEQ (65402) FLAGS (\Seen)) | |||
S: * 2 FETCH (UID 6 MODSEQ (75403) FLAGS (\Deleted)) | S: * 2 FETCH (UID 6 MODSEQ (75403) FLAGS (\Deleted)) | |||
S: * 4 FETCH (UID 8 MODSEQ (29738) FLAGS ($NoJunk $AutoJunk | S: * 4 FETCH (UID 8 MODSEQ (29738) FLAGS ($NoJunk $AutoJunk | |||
$MDNSent)) | $MDNSent)) | |||
S: s100 OK FETCH completed | S: s100 OK FETCH completed | |||
Example 12 | Example 12 | |||
3.1.4.2. MODSEQ Message Data Item in FETCH Command | 3.1.4.2. MODSEQ Message Data Item in FETCH Command | |||
CONDSTORE adds a MODSEQ message data item to the FETCH command. The | CONDSTORE adds a MODSEQ message data item to the FETCH command. The | |||
MODSEQ message data item allows clients to retrieve mod-sequence | MODSEQ message data item allows clients to retrieve mod-sequence | |||
values for a range of messages in the currently selected mailbox. | values for a range of messages in the currently selected mailbox. | |||
skipping to change at page 27, line 13 | skipping to change at page 27, line 13 | |||
changed. The client can discover this situation by comparing the | changed. The client can discover this situation by comparing the | |||
UIDVALIDITY value returned by the server. This behavior allows the | UIDVALIDITY value returned by the server. This behavior allows the | |||
client not to synchronize the mailbox or decide on the best | client not to synchronize the mailbox or decide on the best | |||
synchronization strategy. | synchronization strategy. | |||
Example: Attempting to resynchronize INBOX, but the provided | Example: Attempting to resynchronize INBOX, but the provided | |||
UIDVALIDITY parameter doesn't match the current UIDVALIDITY | UIDVALIDITY parameter doesn't match the current UIDVALIDITY | |||
value. | value. | |||
C: A02 SELECT INBOX (QRESYNC (67890007 20050715194045000 | C: A02 SELECT INBOX (QRESYNC (67890007 20050715194045000 | |||
41,43:211,214:541)) | 41,43:211,214:541)) | |||
S: * 464 EXISTS | S: * 464 EXISTS | |||
S: * 3 RECENT | S: * 3 RECENT | |||
S: * OK [UIDVALIDITY 3857529045] UIDVALIDITY | S: * OK [UIDVALIDITY 3857529045] UIDVALIDITY | |||
S: * OK [UIDNEXT 550] Predicted next UID | S: * OK [UIDNEXT 550] Predicted next UID | |||
S: * OK [HIGHESTMODSEQ 90060128194045007] Highest mailbox | S: * OK [HIGHESTMODSEQ 90060128194045007] Highest mailbox | |||
mod-sequence | mod-sequence | |||
S: * OK [UNSEEN 12] Message 12 is first unseen | S: * OK [UNSEEN 12] Message 12 is first unseen | |||
S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) | S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) | |||
S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft | S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft | |||
\Deleted \Seen \*)] Permanent flags | \Deleted \Seen \*)] Permanent flags | |||
skipping to change at page 28, line 18 | skipping to change at page 28, line 18 | |||
equivalent to the client issuing: | equivalent to the client issuing: | |||
tag1 UID FETCH "known-uids" (FLAGS) (CHANGEDSINCE "mod-sequence- | tag1 UID FETCH "known-uids" (FLAGS) (CHANGEDSINCE "mod-sequence- | |||
value" VANISHED) | value" VANISHED) | |||
In particular, this means that all requirements specified in | In particular, this means that all requirements specified in | |||
Section 3.2.6 apply. | Section 3.2.6 apply. | |||
Example: | Example: | |||
C: A03 SELECT INBOX (QRESYNC (67890007 | C: A03 SELECT INBOX (QRESYNC (67890007 | |||
90060115194045000 41:211,214:541)) | 90060115194045000 41:211,214:541)) | |||
S: * OK [CLOSED] | S: * OK [CLOSED] | |||
S: * 100 EXISTS | S: * 100 EXISTS | |||
S: * 11 RECENT | S: * 11 RECENT | |||
S: * OK [UIDVALIDITY 67890007] UIDVALIDITY | S: * OK [UIDVALIDITY 67890007] UIDVALIDITY | |||
S: * OK [UIDNEXT 600] Predicted next UID | S: * OK [UIDNEXT 600] Predicted next UID | |||
S: * OK [HIGHESTMODSEQ 90060115205545359] Highest | S: * OK [HIGHESTMODSEQ 90060115205545359] Highest | |||
mailbox mod-sequence | mailbox mod-sequence | |||
S: * OK [UNSEEN 7] There are some unseen | S: * OK [UNSEEN 7] There are some unseen | |||
messages in the mailbox | messages in the mailbox | |||
S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) | S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) | |||
S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft | S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft | |||
\Deleted \Seen \*)] Permanent flags | \Deleted \Seen \*)] Permanent flags | |||
S: * VANISHED (EARLIER) 41,43:116,118,120:211,214:540 | S: * VANISHED (EARLIER) 41,43:116,118,120:211,214:540 | |||
S: * 49 FETCH (UID 117 FLAGS (\Seen \Answered) MODSEQ | S: * 49 FETCH (UID 117 FLAGS (\Seen \Answered) MODSEQ | |||
(90060115194045001)) | (90060115194045001)) | |||
S: * 50 FETCH (UID 119 FLAGS (\Draft $MDNSent) MODSEQ | S: * 50 FETCH (UID 119 FLAGS (\Draft $MDNSent) MODSEQ | |||
(90060115194045308)) | (90060115194045308)) | |||
S: * 51 FETCH (UID 541 FLAGS (\Seen $Forwarded) MODSEQ | S: * 51 FETCH (UID 541 FLAGS (\Seen $Forwarded) MODSEQ | |||
(90060115194045001)) | (90060115194045001)) | |||
S: A03 OK [READ-WRITE] mailbox selected | S: A03 OK [READ-WRITE] mailbox selected | |||
In the above example, flag information for UID 42 is not returned, | In the above example, flag information for UID 42 is not returned, | |||
presumably because its flags haven't changed since the MODSEQ | presumably because its flags haven't changed since the MODSEQ | |||
90060115194045000. | 90060115194045000. | |||
3.2.5.2. Message Sequence Match Data | 3.2.5.2. Message Sequence Match Data | |||
A client MAY provide a parenthesized list of a message sequence set | A client MAY provide a parenthesized list of a message sequence set | |||
and the corresponding UID sets. Both MUST be provided in ascending | and the corresponding UID sets. Both MUST be provided in ascending | |||
skipping to change at page 29, line 29 | skipping to change at page 30, line 6 | |||
In the following two examples, the server is unable to remember | In the following two examples, the server is unable to remember | |||
expunges at all, and only UIDs with messages divisible by three are | expunges at all, and only UIDs with messages divisible by three are | |||
present in the mailbox. In the first example, the client does not | present in the mailbox. In the first example, the client does not | |||
use the fourth parameter; in the second, it provides it. This | use the fourth parameter; in the second, it provides it. This | |||
example is somewhat extreme, but it shows that judicious usage of the | example is somewhat extreme, but it shows that judicious usage of the | |||
sequence match data can save a substantial amount of bandwidth. | sequence match data can save a substantial amount of bandwidth. | |||
Example: | Example: | |||
C: A04 SELECT INBOX (QRESYNC (67890007 | C: A04 SELECT INBOX (QRESYNC (67890007 | |||
90060115194045000 1:29997)) | 90060115194045000 1:29997)) | |||
S: * 10003 EXISTS | S: * 10003 EXISTS | |||
S: * 4 RECENT | S: * 4 RECENT | |||
S: * OK [UIDVALIDITY 67890007] UIDVALIDITY | S: * OK [UIDVALIDITY 67890007] UIDVALIDITY | |||
S: * OK [UIDNEXT 30013] Predicted next UID | S: * OK [UIDNEXT 30013] Predicted next UID | |||
S: * OK [HIGHESTMODSEQ 90060115205545359] Highest mailbox mod- | S: * OK [HIGHESTMODSEQ 90060115205545359] Highest mailbox | |||
sequence | mod-sequence | |||
S: * OK [UNSEEN 7] There are some unseen messages in the mailbox | S: * OK [UNSEEN 7] There are some unseen messages in the mailbox | |||
S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) | S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) | |||
S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft | S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft | |||
\Deleted \Seen \*)] Permanent flags | \Deleted \Seen \*)] Permanent flags | |||
S: * VANISHED (EARLIER) 1:2,4:5,7:8,10:11,13:14,[...], | S: * VANISHED (EARLIER) 1:2,4:5,7:8,10:11,13:14,[...], | |||
29668:29669,29671:29996 | 29668:29669,29671:29996 | |||
S: * 1 FETCH (UID 3 FLAGS (\Seen \Answered $Important) MODSEQ | S: * 1 FETCH (UID 3 FLAGS (\Seen \Answered $Important) MODSEQ | |||
(90060115194045001)) | (90060115194045001)) | |||
S: ... | S: ... | |||
S: * 9889 FETCH (UID 29667 FLAGS (\Seen \Answered) MODSEQ | S: * 9889 FETCH (UID 29667 FLAGS (\Seen \Answered) MODSEQ | |||
(90060115194045027)) | (90060115194045027)) | |||
S: * 9890 FETCH (UID 29670 FLAGS (\Draft $MDNSent) MODSEQ | S: * 9890 FETCH (UID 29670 FLAGS (\Draft $MDNSent) MODSEQ | |||
(90060115194045028)) | (90060115194045028)) | |||
S: ... | S: ... | |||
S: * 9999 FETCH (UID 29997 FLAGS (\Seen $Forwarded) MODSEQ | S: * 9999 FETCH (UID 29997 FLAGS (\Seen $Forwarded) MODSEQ | |||
(90060115194045031)) | (90060115194045031)) | |||
S: A04 OK [READ-WRITE] mailbox selected | S: A04 OK [READ-WRITE] mailbox selected | |||
Example: | Example: | |||
C: B04 SELECT INBOX (QRESYNC (67890007 | C: B04 SELECT INBOX (QRESYNC (67890007 | |||
90060115194045000 1:29997 (5000,7500,9000,9990:9999 15000, | 90060115194045000 1:29997 (5000,7500,9000,9990:9999 15000, | |||
22500,27000,29970,29973,29976,29979,29982,29985,29988,29991, | 22500,27000,29970,29973,29976,29979,29982,29985,29988,29991, | |||
29994,29997))) | 29994,29997))) | |||
S: * 10003 EXISTS | S: * 10003 EXISTS | |||
S: * 4 RECENT | S: * 4 RECENT | |||
skipping to change at page 38, line 37 | skipping to change at page 38, line 46 | |||
The CLOSED response code has no parameters. A server implementing | The CLOSED response code has no parameters. A server implementing | |||
the extension defined in this document MUST return the CLOSED | the extension defined in this document MUST return the CLOSED | |||
response code when the currently selected mailbox is closed | response code when the currently selected mailbox is closed | |||
implicitly using the SELECT/EXAMINE command on another mailbox. The | implicitly using the SELECT/EXAMINE command on another mailbox. The | |||
CLOSED response code serves as a boundary between responses for the | CLOSED response code serves as a boundary between responses for the | |||
previously opened mailbox (which was closed) and the newly selected | previously opened mailbox (which was closed) and the newly selected | |||
mailbox; all responses before the CLOSED response code relate to the | mailbox; all responses before the CLOSED response code relate to the | |||
mailbox that was closed, and all subsequent responses relate to the | mailbox that was closed, and all subsequent responses relate to the | |||
newly opened mailbox. | newly opened mailbox. | |||
Note that the CLOSED response code must be returned whether or not a | ||||
"CONDSTORE enabling command" was issued. | ||||
There is no need to return the CLOSED response code on completion of | There is no need to return the CLOSED response code on completion of | |||
the CLOSE or the UNSELECT [UNSELECT] command (or similar), whose | the CLOSE or the UNSELECT [UNSELECT] command (or similar), whose | |||
purpose is to close the currently selected mailbox without opening a | purpose is to close the currently selected mailbox without opening a | |||
new one. | new one. | |||
4. Long Command Lines (Update to RFC 2683) | 4. Long Command Lines (Update to RFC 2683) | |||
While [RFC3501] doesn't specify a specific line-length limit, several | While [RFC3501] doesn't specify a specific line-length limit, several | |||
server implementations chose to implement the recommended line-length | server implementations chose to implement the recommended line-length | |||
limit suggested in Section 3.2.1.5 of [RFC2683] in order to protect | limit suggested in Section 3.2.1.5 of [RFC2683] in order to protect | |||
End of changes. 23 change blocks. | ||||
24 lines changed or deleted | 26 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |