draft-ietf-extra-imap-fetch-preview-01.txt | draft-ietf-extra-imap-fetch-preview-02.txt | |||
---|---|---|---|---|
EXTRA M. Slusarz | EXTRA M. Slusarz | |||
Internet-Draft Open-Xchange Inc. | Internet-Draft Open-Xchange Inc. | |||
Intended status: Standards Track January 22, 2019 | Intended status: Standards Track February 13, 2019 | |||
Expires: July 26, 2019 | Expires: August 17, 2019 | |||
IMAP4 Extension: Message Preview Generation | IMAP4 Extension: Message Preview Generation | |||
draft-ietf-extra-imap-fetch-preview-01 | draft-ietf-extra-imap-fetch-preview-02 | |||
Abstract | Abstract | |||
This document specifies an IMAP protocol extension which allows a | This document specifies an IMAP protocol extension which allows a | |||
client to request that a server provide an abbreviated representation | client to request that a server provide an abbreviated representation | |||
of a message that can be used by a client to provide a useful | of a message that can be used by a client to provide a useful | |||
contextual preview of the message contents. | contextual preview of the message contents. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
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 July 26, 2019. | This Internet-Draft will expire on August 17, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
skipping to change at page 2, line 17 ¶ | skipping to change at page 2, line 17 ¶ | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Conventions Used In This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used In This Document . . . . . . . . . . . . . . 3 | |||
3. FETCH Data Item . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. FETCH Data Item . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Command . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Command . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Response . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Response . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. PREVIEW Algorithms . . . . . . . . . . . . . . . . . . . . . 5 | 4. PREVIEW Algorithms . . . . . . . . . . . . . . . . . . . . . 5 | |||
4.1. FUZZY . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1. FUZZY . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
5. PREVIEW Priority Modifiers . . . . . . . . . . . . . . . . . 6 | 5. PREVIEW Priority Modifiers . . . . . . . . . . . . . . . . . 6 | |||
5.1. LAZY . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 5.1. LAZY . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 9 | 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 12 | 11.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
Appendix A. Change History (To be removed by RFC Editor before | Appendix A. Change History (To be removed by RFC Editor before | |||
publication) . . . . . . . . . . . . . . . . . . . . 12 | publication) . . . . . . . . . . . . . . . . . . . . 11 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 13 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
Many modern mail clients display small extracts of the body text as | Many modern mail clients display small extracts of the body text as | |||
an aid to allow a user to quickly decide whether they are interested | an aid to allow a user to quickly decide whether they are interested | |||
in viewing the full message contents. Mail clients implementing the | in viewing the full message contents. Mail clients implementing the | |||
Internet Message Access Protocol [RFC3501] would benefit from a | Internet Message Access Protocol [RFC3501] would benefit from a | |||
standardized, consistent way to generate these brief previews of | standardized, consistent way to generate these brief previews of | |||
messages. | messages. | |||
skipping to change at page 7, line 11 ¶ | skipping to change at page 7, line 11 ¶ | |||
PREVIEW extension. | PREVIEW extension. | |||
6. Examples | 6. Examples | |||
Example 1: Requesting FETCH without explicit algorithm selection. | Example 1: Requesting FETCH without explicit algorithm selection. | |||
C: A1 CAPABILITY | C: A1 CAPABILITY | |||
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY | S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY | |||
S: A1 OK Capability command completed. | S: A1 OK Capability command completed. | |||
[...a mailbox is SELECTed...] | [...a mailbox is SELECTed...] | |||
C: A2 FETCH 1 (RFC822.SIZE PREVIEW) | C: A2 FETCH 1 (RFC822.SIZE PREVIEW) | |||
S: * 1 FETCH (RFC822.SIZE 20000 PREVIEW (FUZZY {58} | S: * 1 FETCH (RFC822.SIZE 5647 PREVIEW (FUZZY {200} | |||
S: This is the first line of text from the first text part. | S: Lorem ipsum dolor sit amet, consectetur adipiscing elit. | |||
S: Curabitur aliquam turpis et ante dictum, et pulvinar dui congue. | ||||
S: Maecenas hendrerit, lorem non imperdiet pellentesque, nulla | ||||
S: ligula nullam | ||||
S: )) | S: )) | |||
S: A2 OK FETCH complete. | S: A2 OK FETCH complete. | |||
Example 2: Requesting FETCH with explicit algorithm selection. | Example 2: Requesting FETCH with explicit algorithm selection. | |||
C: B1 CAPABILITY | C: B1 FETCH 1 (RFC822.SIZE PREVIEW (FUZZY)) | |||
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY | S: * 1 FETCH (RFC822.SIZE 91377 PREVIEW (FUZZY {53} | |||
S: B1 OK Capability command completed. | S: Preview text generated from message body text data. | |||
[...a mailbox is SELECTed...] | ||||
C: B2 FETCH 1 (RFC822.SIZE PREVIEW (FUZZY)) | ||||
S: * 1 FETCH (RFC822.SIZE 20000 PREVIEW (FUZZY {58} | ||||
S: This is the first line of text from the first text part. | ||||
S: )) | S: )) | |||
S: B2 OK FETCH complete. | S: B1 OK FETCH complete. | |||
Example 3: Requesting FETCH with invalid explicit algorithm | Example 3: Requesting FETCH with invalid explicit algorithm | |||
selection. | selection. | |||
C: C1 CAPABILITY | C: C1 CAPABILITY | |||
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY | S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY | |||
S: C1 OK Capability command completed. | S: C1 OK Capability command completed. | |||
[...a mailbox is SELECTed...] | [...a mailbox is SELECTed...] | |||
C: C2 FETCH 1 (RFC822.SIZE PREVIEW (UNKNOWN-PREVIEW-ALGO)) | C: C2 FETCH 1 (RFC822.SIZE PREVIEW (UNKNOWN-PREVIEW-ALGO)) | |||
S: C2 BAD FETCH contains invalid preview algorithm name. | S: C2 BAD FETCH contains invalid preview algorithm name. | |||
Example 4: Use explicit algorithm priority selection, with LAZY | Example 4: Use explicit algorithm priority selection, with LAZY | |||
modifier, to obtain previews during initial mailbox listing if | modifier, to obtain previews during initial mailbox listing if | |||
readily available; otherwise, load previews in background. | readily available; otherwise, load previews in background. | |||
C: D1 CAPABILITY | C: D1 FETCH 1:3 (ENVELOPE PREVIEW (LAZY=FUZZY)) | |||
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY | ||||
S: D1 OK Capability command completed. | ||||
[...a mailbox is SELECTed...] | ||||
C: D2 FETCH 1:3 (ENVELOPE PREVIEW (LAZY=FUZZY)) | ||||
S: * 1 FETCH (ENVELOPE ("Wed, 25 Oct 2017 15:03:11 +0000" [...]) | S: * 1 FETCH (ENVELOPE ("Wed, 25 Oct 2017 15:03:11 +0000" [...]) | |||
PREVIEW (FUZZY {58} | PREVIEW (FUZZY "Preview text for message 1.")) | |||
S: This is the first line of text from the first text part. | ||||
S: )) | ||||
S: * 2 FETCH (PREVIEW (FUZZY "") ENVELOPE | S: * 2 FETCH (PREVIEW (FUZZY "") ENVELOPE | |||
("Thu, 26 Oct 2017 12:17:23 +0000" [...])) | ("Thu, 26 Oct 2017 12:17:23 +0000" [...])) | |||
S: * 3 FETCH (ENVELOPE ("Fri, 27 Oct 2017 22:19:21 +0000" [...]) | S: * 3 FETCH (ENVELOPE ("Fri, 27 Oct 2017 22:19:21 +0000" [...]) | |||
PREVIEW (FUZZY NIL)) | PREVIEW (FUZZY NIL)) | |||
S: D2 OK FETCH completed. | S: D1 OK FETCH completed. | |||
[...Client knows that message 2 has a preview that is empty; | [...Client knows that message 2 has a preview that is empty; | |||
therefore, client only needs to request message 3 preview again | therefore, client only needs to request message 3 preview again | |||
(e.g. in background)...] | (e.g. in background)...] | |||
C: D3 FETCH 3 (PREVIEW (FUZZY)) | C: D2 FETCH 3 (PREVIEW (FUZZY)) | |||
S: * 3 FETCH (PREVIEW (FUZZY {27} | S: * 3 FETCH (PREVIEW (FUZZY {30} | |||
S: First sentence of mail 3. | S: Message data from message 3. | |||
S: )) | S: )) | |||
S: D3 OK Fetch completed. | S: D2 OK Fetch completed. | |||
Example 5: Retrieve preview information for search results within a | Example 5: Retrieve preview information for search results within a | |||
single mailbox. Use SEARCHRES [RFC5182] extension to save a round- | single mailbox. Use SEARCHRES [RFC5182] extension to save a round- | |||
trip. | trip. | |||
C: E1 CAPABILITY | C: E1 CAPABILITY | |||
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY SEARCHRES | S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY SEARCHRES | |||
S: E1 OK Capability command completed. | S: E1 OK Capability command completed. | |||
[...a mailbox is SELECTed...] | [...a mailbox is SELECTed...] | |||
C: E2 SEARCH RETURN (SAVE) FROM "FOO" | C: E2 SEARCH RETURN (SAVE) FROM "FOO" | |||
C: E3 FETCH $ (UID PREVIEW (LAZY=FUZZY)) | C: E3 FETCH $ (UID PREVIEW (LAZY=FUZZY)) | |||
S: E2 OK SEARCH completed. | S: E2 OK SEARCH completed. | |||
S: * 5 FETCH (UID 13 PREVIEW (FUZZY {10} | S: * 5 FETCH (UID 13 PREVIEW (FUZZY "Preview!")) | |||
S: Preview! | ||||
S: )) | ||||
S: * 9 FETCH (UID 23 PREVIEW (FUZZY NIL)) | S: * 9 FETCH (UID 23 PREVIEW (FUZZY NIL)) | |||
S: E3 OK FETCH completed. | S: E3 OK FETCH completed. | |||
[...Retrieve message 9 preview in background...] | [...Retrieve message 9 preview in background...] | |||
C: E4 UID FETCH 23 (PREVIEW (FUZZY)) | C: E4 UID FETCH 23 (PREVIEW (FUZZY)) | |||
S: * 9 FETCH (PREVIEW (FUZZY {18} | S: * 9 FETCH (PREVIEW (FUZZY "Another preview!")) | |||
S: Another preview! | ||||
S: )) | ||||
S: E4 OK FETCH completed. | S: E4 OK FETCH completed. | |||
7. Formal Syntax | 7. Formal Syntax | |||
The following syntax specification uses the augmented Backus-Naur | The following syntax specification uses the augmented Backus-Naur | |||
Form (BNF) as described in ABNF [RFC5234]. It includes definitions | Form (BNF) as described in ABNF [RFC5234]. It includes definitions | |||
from IMAP [RFC3501]. | from IMAP [RFC3501]. | |||
capability =/ "PREVIEW=FUZZY" | capability =/ "PREVIEW=" (preview-alg / preview-mod-ext) | |||
fetch-att =/ "PREVIEW" [SP "(" preview-alg-fetch *(SP | fetch-att =/ "PREVIEW" [SP "(" preview-alg-fetch *(SP | |||
preview-alg-fetch) ")"] | preview-alg-fetch) ")"] | |||
msg-att-dynamic =/ "PREVIEW" SP "(" preview-alg SP nstring ")" | msg-att-dynamic =/ "PREVIEW" SP "(" preview-alg SP nstring ")" | |||
preview-alg = "FUZZY" / preview-alg-ext | preview-alg = "FUZZY" / preview-alg-ext | |||
preview-alg-ext = preview-atom ; New algorithm names MUST | preview-alg-ext = preview-atom ; New algorithm names SHOULD be | |||
; registered with IANA and MUST | ||||
; conform with the | ; conform with the | |||
; recommendations described in | ; recommendations described in | |||
; RFC 6648, Section 3 | ; RFC 6648, Section 3 | |||
preview-alg-fetch = preview-alg / preview-mod "=" preview-alg | preview-alg-fetch = preview-alg / preview-mod "=" preview-alg | |||
preview-atom = 1*<any ATOM-CHAR except "="> | preview-atom = 1*<any ATOM-CHAR except "="> | |||
preview-mod = "LAZY" / preview-mod-ext | preview-mod = "LAZY" / preview-mod-ext | |||
preview-mod-ext = preview-atom ; New priority modifier names | preview-mod-ext = preview-atom ; New priority modifier names | |||
; MUST conform with the | ; SHOULD be registered with IANA | |||
; and MUST conform with the | ||||
; recommendations described in | ; recommendations described in | |||
; RFC 6648, Section 3 | ; RFC 6648, Section 3 | |||
8. Acknowledgements | 8. Acknowledgements | |||
The author would like to thank the following people for their | The author would like to thank the following people for their | |||
comments and contributions to this document: Stephan Bosch, Bron | comments and contributions to this document: Stephan Bosch, Bron | |||
Gondwana, Teemu Huovila, Steffen Lehmann, Alexey Melnikov, Chris | Gondwana, Teemu Huovila, Steffen Lehmann, Alexey Melnikov, Chris | |||
Newman, Jeff Sipek, Timo Sirainen, Steffen Templin, and Aki Tuomi. | Newman, Jeff Sipek, Timo Sirainen, Steffen Templin, and Aki Tuomi. | |||
skipping to change at page 13, line 29 ¶ | skipping to change at page 12, line 29 ¶ | |||
6648 | 6648 | |||
o Added DoS attack info to security considerations | o Added DoS attack info to security considerations | |||
o Distinguish between NIL response and zero-length string | o Distinguish between NIL response and zero-length string | |||
o Don't use deprecated "X-" convention in example | o Don't use deprecated "X-" convention in example | |||
o Spelling and nits | o Spelling and nits | |||
Changes from draft-ietf-extra-imap-fetch-preview-01: | ||||
o Fix capability ABNF | ||||
o Removed CAPABILITY string for examples where it did not add | ||||
valuable context | ||||
o Altered preview data in examples to cover a variety of potential | ||||
server return scenarios | ||||
o Added "SHOULD be registered" language to algorithm names and | ||||
priority modifiers | ||||
Author's Address | Author's Address | |||
Michael M. Slusarz | Michael M. Slusarz | |||
Open-Xchange Inc. | Open-Xchange Inc. | |||
530 Lytton Avenue | 530 Lytton Avenue | |||
Palo Alto, California 94301 | Palo Alto, California 94301 | |||
US | US | |||
Email: michael.slusarz@open-xchange.com | Email: michael.slusarz@open-xchange.com | |||
End of changes. 19 change blocks. | ||||
45 lines changed or deleted | 49 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/ |