| rfc9394v4.txt | rfc9394.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) A. Melnikov | Internet Engineering Task Force (IETF) A. Melnikov | |||
| Request for Comments: 9394 Isode | Request for Comments: 9394 Isode | |||
| Updates: 4731, 5267 A. P. Achuthan | Updates: 4731, 5267 A. P. Achuthan | |||
| Category: Standards Track V. Nagulakonda | Category: Standards Track V. Nagulakonda | |||
| ISSN: 2070-1721 Yahoo! | ISSN: 2070-1721 Yahoo! | |||
| L. Alves | L. Alves | |||
| May 2023 | June 2023 | |||
| IMAP PARTIAL Extension for Paged SEARCH and FETCH | IMAP PARTIAL Extension for Paged SEARCH and FETCH | |||
| Abstract | Abstract | |||
| The PARTIAL extension of the Internet Message Access Protocol (see | The PARTIAL extension of the Internet Message Access Protocol (see | |||
| RFCs 3501 and 9051) allows clients to limit the number of SEARCH | RFCs 3501 and 9051) allows clients to limit the number of SEARCH | |||
| results returned, as well as to perform incremental (paged) searches. | results returned, as well as to perform incremental (paged) searches. | |||
| This also helps servers to optimize resource usage when performing | This also helps servers to optimize resource usage when performing | |||
| searches. | searches. | |||
| skipping to change at line 171 ¶ | skipping to change at line 171 ¶ | |||
| Clients need not request PARTIAL results in any particular order. | Clients need not request PARTIAL results in any particular order. | |||
| Because mailboxes may change, clients might wish to use PARTIAL in | Because mailboxes may change, clients might wish to use PARTIAL in | |||
| combination with UPDATE (see [RFC5267]) if the server also advertises | combination with UPDATE (see [RFC5267]) if the server also advertises | |||
| the "CONTEXT=SEARCH" capability, especially if the intent is to walk | the "CONTEXT=SEARCH" capability, especially if the intent is to walk | |||
| a large set of results; however, these return options do not interact | a large set of results; however, these return options do not interact | |||
| -- the UPDATE will provide notifications for all matching results. | -- the UPDATE will provide notifications for all matching results. | |||
| // Let's assume that the A01 SEARCH without PARTIAL would return | // Let's assume that the A01 SEARCH without PARTIAL would return | |||
| // 23764 results. | // 23764 results. | |||
| C: A01 UID SEARCH RETURN (PARTIAL -1:-100) UNDELETED | C: A01 UID SEARCH RETURN (PARTIAL -1:-100) UNDELETED | |||
| UNKEYWORD $Junk | UNKEYWORD $Junk | |||
| S: * ESEARCH (TAG "A01") UID PARTIAL (-1:-100 ...) | S: * ESEARCH (TAG "A01") UID PARTIAL (-1:-100 ...) | |||
| // 100 most recent results in set syntax elided. | // 100 most recent results in set syntax elided. | |||
| S: A01 OK Completed. | S: A01 OK Completed. | |||
| // Let's assume that the A02 SEARCH without PARTIAL would return | // Let's assume that the A02 SEARCH without PARTIAL would return | |||
| // 23764 results. | // 23764 results. | |||
| C: A02 UID SEARCH RETURN (PARTIAL 23500:24000) UNDELETED | C: A02 UID SEARCH RETURN (PARTIAL 23500:24000) UNDELETED | |||
| UNKEYWORD $Junk | UNKEYWORD $Junk | |||
| C: A03 UID SEARCH RETURN (PARTIAL 1:500) UNDELETED | C: A03 UID SEARCH RETURN (PARTIAL 1:500) UNDELETED | |||
| UNKEYWORD $Junk | UNKEYWORD $Junk | |||
| C: A04 UID SEARCH RETURN (PARTIAL 24000:24500) UNDELETED | C: A04 UID SEARCH RETURN (PARTIAL 24000:24500) UNDELETED | |||
| UNKEYWORD $Junk | UNKEYWORD $Junk | |||
| S: * ESEARCH (TAG "A02") UID PARTIAL (23500:24000 ...) | S: * ESEARCH (TAG "A02") UID PARTIAL (23500:24000 ...) | |||
| // 264 results in set syntax elided; | // 264 results in set syntax elided; | |||
| // this spans the end of the results. | // this spans the end of the results. | |||
| S: A02 OK Completed. | S: A02 OK Completed. | |||
| S: * ESEARCH (TAG "A03") UID PARTIAL (1:500 ...) | S: * ESEARCH (TAG "A03") UID PARTIAL (1:500 ...) | |||
| // 500 results in set syntax elided. | // 500 results in set syntax elided. | |||
| S: A03 OK Completed. | S: A03 OK Completed. | |||
| S: * ESEARCH (TAG "A04") UID PARTIAL (24000:24500 NIL) | S: * ESEARCH (TAG "A04") UID PARTIAL (24000:24500 NIL) | |||
| // No results are present; this is beyond the end of the results. | // No results are present; this is beyond the end of the results. | |||
| S: A04 OK Completed. | S: A04 OK Completed. | |||
| skipping to change at line 289 ¶ | skipping to change at line 289 ¶ | |||
| 3.4. Use of "PARTIAL" and "CONDSTORE" IMAP Extensions Together | 3.4. Use of "PARTIAL" and "CONDSTORE" IMAP Extensions Together | |||
| This section is informative. | This section is informative. | |||
| The PARTIAL FETCH modifier can be combined with the CHANGEDSINCE | The PARTIAL FETCH modifier can be combined with the CHANGEDSINCE | |||
| FETCH modifier [RFC7162]. | FETCH modifier [RFC7162]. | |||
| // Returning information for the last 30 messages in the UID range | // Returning information for the last 30 messages in the UID range | |||
| // that have any flags/keywords modified since MODSEQ 98305 | // that have any flags/keywords modified since MODSEQ 98305 | |||
| C: 101 UID FETCH 25900:26600 (UID FLAGS | C: 101 UID FETCH 25900:26600 (UID FLAGS | |||
| ) (PARTIAL -1:-30 CHANGEDSINCE 98305) | ) (PARTIAL -1:-30 CHANGEDSINCE 98305) | |||
| S: * 12888 FETCH (FLAGS (\Flagged \Answered | S: * 12888 FETCH (FLAGS (\Flagged \Answered | |||
| ) MODSEQ (98306) UID 25997) | ) MODSEQ (98306) UID 25997) | |||
| S: * 12890 FETCH (FLAGS () MODSEQ (98312) UID 26600) | S: * 12890 FETCH (FLAGS () MODSEQ (98312) UID 26600) | |||
| S: 101 OK FETCH completed | S: 101 OK FETCH completed | |||
| The above example causes the server to first select the last 30 | The above example causes the server to first select the last 30 | |||
| messages and then only return flag changes for a subset of those | messages and then only return flag changes for a subset of those | |||
| messages that have MODSEQ higher than 98305. | messages that have MODSEQ higher than 98305. | |||
| Note that the order of PARTIAL and CHANGEDSINCE FETCH modifiers in | Note that the order of PARTIAL and CHANGEDSINCE FETCH modifiers in | |||
| End of changes. 6 change blocks. | ||||
| 6 lines changed or deleted | 6 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||