< draft-ietf-extra-imap-fetch-preview-05.txt   draft-ietf-extra-imap-fetch-preview-06.txt >
EXTRA M. Slusarz EXTRA M. Slusarz
Internet-Draft Open-Xchange Inc. Internet-Draft Open-Xchange Inc.
Intended status: Standards Track April 28, 2019 Intended status: Standards Track July 1, 2019
Expires: October 30, 2019 Expires: January 2, 2020
IMAP4 Extension: Message Preview Generation IMAP4 Extension: Message Preview Generation
draft-ietf-extra-imap-fetch-preview-05 draft-ietf-extra-imap-fetch-preview-06
Abstract Abstract
This document specifies an Internet Message Access Protocol (IMAP) This document specifies an Internet Message Access Protocol (IMAP)
protocol extension allowing a client to request a server-generated protocol extension allowing a client to request a server-generated
abbreviated representation of message data useful as a contextual abbreviated representation of message data useful as a contextual
preview of the entire message. preview of the entire message.
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 October 30, 2019. This Internet-Draft will expire on January 2, 2020.
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 . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 8 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 9
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
9. Security Considerations . . . . . . . . . . . . . . . . . . . 9 9. Security Considerations . . . . . . . . . . . . . . . . . . . 10
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10
10.1. Normative References . . . . . . . . . . . . . . . . . . 10 10.1. Normative References . . . . . . . . . . . . . . . . . . 10
10.2. Informative References . . . . . . . . . . . . . . . . . 11 10.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) . . . . . . . . . . . . . . . . . . . . 11 publication) . . . . . . . . . . . . . . . . . . . . 12
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 13 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 14
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 13 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 14
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 4, line 29 skipping to change at page 4, line 29
algorithms, the server MUST return a tagged BAD response to the FETCH algorithms, the server MUST return a tagged BAD response to the FETCH
command. command.
The order of the algorithms in the parenthesized list (from left to The order of the algorithms in the parenthesized list (from left to
right) defines the client's priority decision. Duplicate algorithms right) defines the client's priority decision. Duplicate algorithms
in the list SHOULD be ignored. For purposes of duplicate detection, in the list SHOULD be ignored. For purposes of duplicate detection,
priority modifiers (Section 5) should be ignored. A server MUST priority modifiers (Section 5) should be ignored. A server MUST
honor a client's algorithm priority decision. honor a client's algorithm priority decision.
A server should return preview data for the first algorithm that A server should return preview data for the first algorithm that
returns non-empty preview text. Non-empty preview text is defined as returns non-empty preview text. Empty preview text is defined as
either the NIL response or an empty string. If no algorithm produces either the NIL response or an empty (zero length) string. If no
non-empty preview text, the server should respond with the preview algorithm produces non-empty preview text, the server should respond
data generated by the final algorithm in the list. with the preview data generated by the final algorithm in the list.
3.2. Response 3.2. Response
The algorithm used by the server to generate the preview is returned The algorithm used by the server to generate the preview is returned
preceding the preview string. preceding the preview string.
The server returns a variable-length string that is the generated The server returns a variable-length string that is the generated
preview for that message. preview for that message.
Example: Retrieving preview information in a SELECTed mailbox Example: Retrieving preview information in a SELECTed mailbox
skipping to change at page 5, line 7 skipping to change at page 5, line 7
S: A1 OK FETCH complete. S: A1 OK FETCH complete.
A server SHOULD strive to generate the same string for a given A server SHOULD strive to generate the same string for a given
message for each request. However, since previews are understood to message for each request. However, since previews are understood to
be a representation of the message data and not a canonical view of be a representation of the message data and not a canonical view of
its contents, a client MUST NOT assume that a message preview is its contents, a client MUST NOT assume that a message preview is
immutable for a given message. This relaxed requirement permits a immutable for a given message. This relaxed requirement permits a
server to offer previews as an option without requiring potentially server to offer previews as an option without requiring potentially
burdensome storage and/or processing requirements to guarantee burdensome storage and/or processing requirements to guarantee
immutability for a use case that does not require this strictness. immutability for a use case that does not require this strictness.
For example, the underlying IMAP server may change for an account due
to a software upgrade; account state information may be retained in
the migration, but the new server may support a different PREVIEW
generation algorithm. Thus, message state may remain the same but
the FETCH PREVIEW response may change, if that data was not part of
the data migration.
If the preview is not available, the server MUST return NIL as the It is possible that preview text is not available now, but might be
PREVIEW response. A NIL response indicates to the client that available later -- perhaps the server's preview-generating resources
preview information MAY become available in a future PREVIEW FETCH are overloaded, there is a server-imposed timeout during preview
request. generation, or there is some transient issue with fetching the
message body. In such cases, the server will return NIL as the
Examples why a preview may not be available include: the preview preview response, and the client can try to retrieve the preview
generation process is not available due to transient server resource later.
limitations, the message body text is unavailable, or a server-
imposed timeout was reached during generation.
A NIL response is semantically different than returning a zero-length On the other hand, it is possible that the server has determined that
string, which indicates that no meaningful preview text can be no meaningful preview text can be generated for a particular message,
generated for the message. and that decision won't change later. Examples of this involve
encrypted messages, content types the server does not support
previews of, and other situations where the server is not able to
extract information for a preview. In such cases, the server will
return a zero-length string. Clients should not send another FETCH
for a preview for such messages.
4. PREVIEW Algorithms 4. PREVIEW Algorithms
4.1. FUZZY 4.1. FUZZY
The FUZZY algorithm directs the server to use any internal algorithm The FUZZY algorithm directs the server to use any internal algorithm
it desires, subject to the below limitations, to generate a textual it desires, subject to the below limitations, to generate a textual
preview for a message. preview for a message.
The FUZZY algorithm MUST be implemented by any server that supports The FUZZY algorithm MUST be implemented by any server that supports
the PREVIEW extension. the PREVIEW extension.
The preview text MUST be treated as text/plain [RFC2046] MIME data by The preview text MUST be treated as text/plain [RFC2046] media type
the client. data by the client.
The generated string MUST NOT be content transfer encoded and MUST be The generated string MUST NOT be content transfer encoded and MUST be
encoded in UTF-8 [RFC3629]. The server SHOULD remove any formatting encoded in UTF-8 [RFC3629]. The server SHOULD remove any formatting
markup and do what other processing might be useful in rendering the markup and do what other processing might be useful in rendering the
preview as plain text. preview as plain text.
For purposes of this section, a "preview character" is defined as a For purposes of this section, a "preview character" is defined as a
single UCS character encoded in UTF-8. Note: a single preview single UCS character encoded in UTF-8. Note: a single preview
character may compromise multiple octets, so any buffers implemented character may compromise multiple octets, so any buffers implemented
to conform to the string limitations identified in this document to conform to the string limitations identified in this document
skipping to change at page 9, line 34 skipping to change at page 10, line 13
preview-mod = "LAZY" preview-mod = "LAZY"
8. IANA Considerations 8. IANA Considerations
IMAP4 [RFC3501] capabilities are registered by publishing a standards IMAP4 [RFC3501] capabilities are registered by publishing a standards
track or IESG-approved experimental RFC. The registry is currently track or IESG-approved experimental RFC. The registry is currently
located at: located at:
http://www.iana.org/assignments/imap-capabilities http://www.iana.org/assignments/imap-capabilities
This document requests that IANA adds the "PREVIEW=FUZZY" capability This document requests that IANA adds the "PREVIEW=" capability to
to the IMAP4 [RFC3501] capabilities registry. the IMAP4 [RFC3501] capabilities registry.
This document requests that IANA create a new "IMAP FETCH PREVIEW This document requests that IANA create a new "IMAP FETCH PREVIEW
Algorithms" registry, which registers preview algorithms by IETF Algorithms" registry, which registers preview algorithms by IETF
Review [RFC8126]. An assignment consists of the algorithm name (as Review [RFC8126]. An assignment consists of the algorithm name (as
defined by the preview-alg-ext ABNF entry) and the document that defined by the preview-alg-ext ABNF entry) and the document that
defines the algorithm. This document constitutes registration of the defines the algorithm. This document constitutes registration of the
FUZZY algorithm in that registry. FUZZY algorithm in that registry.
9. Security Considerations 9. Security Considerations
skipping to change at page 13, line 35 skipping to change at page 14, line 12
o Clarify how to handle preview data return when using an explicit o Clarify how to handle preview data return when using an explicit
algorithm list algorithm list
o Various editorial fixes o Various editorial fixes
Changes from draft-ietf-extra-imap-fetch-preview-04: Changes from draft-ietf-extra-imap-fetch-preview-04:
o Make clear that preview caching is tied to retention period of the o Make clear that preview caching is tied to retention period of the
source message source message
Changes from draft-ietf-extra-imap-fetch-preview-05:
o Clarify "zero-length string" preview data vs. NIL preview data
o MIME data -> media type
o Capability registration should not include the algorithm name
o Give example of how PREVIEW data might change over time
Acknowledgments Acknowledgments
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, Barry Leiba, Alexey
Newman, Jeff Sipek, Timo Sirainen, Steffen Templin, and Aki Tuomi. Melnikov, Chris Newman, Jeff Sipek, Timo Sirainen, Steffen Templin,
and Aki Tuomi.
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. 13 change blocks. 
32 lines changed or deleted 52 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/