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/