draft-ietf-extra-imap-fetch-preview-06.txt   draft-ietf-extra-imap-fetch-preview-07.txt 
EXTRA M. Slusarz EXTRA M. Slusarz
Internet-Draft Open-Xchange Inc. Internet-Draft Open-Xchange Inc.
Intended status: Standards Track July 1, 2019 Intended status: Standards Track December 10, 2019
Expires: January 2, 2020 Expires: June 12, 2020
IMAP4 Extension: Message Preview Generation IMAP4 Extension: Message Preview Generation
draft-ietf-extra-imap-fetch-preview-06 draft-ietf-extra-imap-fetch-preview-07
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 January 2, 2020. This Internet-Draft will expire on June 12, 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 13 skipping to change at page 2, line 13
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
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. Description . . . . . . . . . . . . . . . . . . . . . . . 5
5. PREVIEW Priority Modifiers . . . . . . . . . . . . . . . . . 6 4.2. text/imap-fetch-preview . . . . . . . . . . . . . . . . . 6
5.1. LAZY . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5. PREVIEW Priority Modifiers . . . . . . . . . . . . . . . . . 7
5.1. LAZY . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 9 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 9
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
9. Security Considerations . . . . . . . . . . . . . . . . . . . 10 9. Security Considerations . . . . . . . . . . . . . . . . . . . 10
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
10.1. Normative References . . . . . . . . . . . . . . . . . . 10 10.1. Normative References . . . . . . . . . . . . . . . . . . 11
10.2. Informative References . . . . . . . . . . . . . . . . . 11 10.2. Informative References . . . . . . . . . . . . . . . . . 12
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) . . . . . . . . . . . . . . . . . . . . 12
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 14 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 15
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 14 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15
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 3, line 25 skipping to change at page 3, line 25
sufficient data from a previous partial FETCH to display an adequate sufficient data from a previous partial FETCH to display an adequate
representation of the preview. representation of the preview.
Finally, server generation allows caching in a centralized location. Finally, server generation allows caching in a centralized location.
Using server-generated previews allows global generation once per Using server-generated previews allows global generation once per
message, and then cached for the retention period of the source message, and then cached for the retention period of the source
message. Retrieval of message data may be expensive within a server, message. Retrieval of message data may be expensive within a server,
for example, so a server can be configured to reduce its storage for example, so a server can be configured to reduce its storage
retrieval load by pre-generating preview data. retrieval load by pre-generating preview data.
A server indicates support for this extension by listing one or more A server indicates support for this extension via the "PREVIEW"
capability names consisting of "PREVIEW=" followed by a supported capability name.
preview algorithm name. This format provides for future upwards-
compatible extensions and/or the ability to use locally-defined
preview algorithms.
2. Conventions Used In This Document 2. Conventions Used In This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
"User" is used to refer to a human user, whereas "client" refers to "User" is used to refer to a human user, whereas "client" refers to
skipping to change at page 4, line 12 skipping to change at page 4, line 12
implementations must pay attention to the numbered rules at the implementations must pay attention to the numbered rules at the
beginning of [RFC3501] Section 9. beginning of [RFC3501] Section 9.
3. FETCH Data Item 3. FETCH Data Item
3.1. Command 3.1. Command
To retrieve a preview for a message, the "PREVIEW" FETCH attribute is To retrieve a preview for a message, the "PREVIEW" FETCH attribute is
used when issuing a FETCH command. used when issuing a FETCH command.
If no algorithm list is provided, the server decides which of its If no algorithm list is provided, the server MUST return data using
built-in algorithms to use to generate the preview text. the text/imap-fetch-preview algorithm.
The client may explicitly indicate which algorithm(s) should be used The client may explicitly indicate which algorithm(s) should be used
to generate the preview list via a parenthesized list of algorithm to generate the preview list via a parenthesized list of algorithm
names output after the PREVIEW attribute. Unsupported algorithms in names output after the PREVIEW attribute. Unsupported algorithms in
the list MUST be ignored. If the list contains no supported the list MUST be ignored. If the list contains no supported
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
skipping to change at page 4, line 45 skipping to change at page 4, line 45
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
C: A1 FETCH 1 (PREVIEW) C: A1 FETCH 1 (PREVIEW)
S: * 1 FETCH (PREVIEW (FUZZY "Preview text!")) S: * 1 FETCH (PREVIEW (text/imap-fetch-preview "Preview text!"))
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.
skipping to change at page 5, line 33 skipping to change at page 5, line 33
no meaningful preview text can be generated for a particular message, no meaningful preview text can be generated for a particular message,
and that decision won't change later. Examples of this involve and that decision won't change later. Examples of this involve
encrypted messages, content types the server does not support encrypted messages, content types the server does not support
previews of, and other situations where the server is not able to previews of, and other situations where the server is not able to
extract information for a preview. In such cases, the server will extract information for a preview. In such cases, the server will
return a zero-length string. Clients should not send another FETCH return a zero-length string. Clients should not send another FETCH
for a preview for such messages. for a preview for such messages.
4. PREVIEW Algorithms 4. PREVIEW Algorithms
4.1. FUZZY 4.1. Description
The FUZZY algorithm directs the server to use any internal algorithm Algorithms MUST be named in media type [RFC6838] format.
it desires, subject to the below limitations, to generate a textual
preview for a message.
The FUZZY algorithm MUST be implemented by any server that supports This document defines an extension specific algorithm, text/imap-
the PREVIEW extension. fetch-preview, that outlines precise semantics regarding the
generated preview data. Future documents may define additional
PREVIEW specific algorithms.
The preview text MUST be treated as text/plain [RFC2046] media type In the absence of a PREVIEW specific algorithm definition, preview
data by the client. generation semantics are server-dependent. If a server supports an
algorithm it MUST return preview data in the media type format
requested by the client. A client MUST NOT assume that a server
supports a preview algorithm not specifically defined in this
document.
4.2. text/imap-fetch-preview
The text/imap-fetch-preview algorithm directs the server to use any
internal algorithm it desires, subject to the below limitations, to
generate a textual preview for a message.
The text/imap-fetch-preview algorithm MUST be implemented by any
server that supports the PREVIEW extension.
The generated preview text MUST be treated as text/plain [RFC2046]
media type 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
should be sized to prevent possible overflow errors. should be sized to prevent possible overflow errors.
The server SHOULD limit the length of the preview text to 200 preview The server SHOULD limit the length of the preview text to 200 preview
characters. This length should provide sufficient data to generally characters. This length should provide sufficient data to generally
support both various languages (and their different average word support both various languages (and their different average word
lengths) and different client display size requirements. lengths) and diverse client display size requirements.
The server MUST NOT output preview text longer than 256 preview The server MUST NOT output preview text longer than 256 preview
characters. characters.
If the FUZZY algorithm generates a preview that is not based on the If the FUZZY algorithm generates a preview that is not based on the
body content of the message and the LANGUAGE [RFC5255] extension is body content of the message and the LANGUAGE [RFC5255] extension is
supported by the server, the preview text SHOULD be generated supported by the server, the preview text SHOULD be generated
according to the language rules that apply to human-readable text. according to the language rules that apply to human-readable text.
For example, a message that consists of a single image MIME part has For example, a message that consists of a single image MIME part has
no human-readable text from which to generate preview information. no human-readable text from which to generate preview information.
skipping to change at page 6, line 38 skipping to change at page 7, line 13
the server). the server).
5. PREVIEW Priority Modifiers 5. PREVIEW Priority Modifiers
5.1. LAZY 5.1. LAZY
The LAZY modifier directs the server to return the preview The LAZY modifier directs the server to return the preview
representation only if that data can be returned without undue delay representation only if that data can be returned without undue delay
to the client. to the client.
The LAZY modifier alters preview generation semantics of the specific
algorithm it is applied to. If no algorithm is provided as an
argument, the LAZY modifier applies to the text/imap-fetch-preview
algorithm.
This modifier allows a client to inform the server that preview data This modifier allows a client to inform the server that preview data
is nice-to-have, but the server SHOULD NOT block the return of other is nice-to-have, but the server SHOULD NOT block the return of other
FETCH information at the expense of generating the preview data. FETCH information at the expense of generating the preview data.
For example, a client displaying the initial mailbox listing to a For example, a client displaying the initial mailbox listing to a
user may want to display preview information associated with messages user may want to display preview information associated with messages
in that listing. However, this information is secondary to providing in that listing. However, this information is secondary to providing
the mailbox listing, with message details, and the client is willing the mailbox listing, with message details, and the client is willing
to load any unavailable previews in the background and display them to load any unavailable previews in the background and display them
as they are provided by the server. In this case, the client would as they are provided by the server. In this case, the client would
skipping to change at page 7, line 21 skipping to change at page 8, line 4
LAZY PREVIEW FETCH commands in a selected mailbox as the server is LAZY PREVIEW FETCH commands in a selected mailbox as the server is
under no requirement to return preview information for this command, under no requirement to return preview information for this command,
which could lead to an unnecessary waste of system and network which could lead to an unnecessary waste of system and network
resources. See Example 4 in the Examples section for how this can be resources. See Example 4 in the Examples section for how this can be
implemented. implemented.
The LAZY modifier MUST be implemented by any server that supports the The LAZY modifier MUST be implemented by any server that supports the
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
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 5647 PREVIEW (FUZZY {200} S: * 1 FETCH (RFC822.SIZE 5647 PREVIEW
(text/imap-fetch-preview {200}
S: Lorem ipsum dolor sit amet, consectetur adipiscing elit. S: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
S: Curabitur aliquam turpis et ante dictum, et pulvinar dui congue. S: Curabitur aliquam turpis et ante dictum, et pulvinar dui congue.
S: Maecenas hendrerit, lorem non imperdiet pellentesque, nulla S: Maecenas hendrerit, lorem non imperdiet pellentesque, nulla
S: ligula nullam 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 FETCH 1 (RFC822.SIZE PREVIEW (FUZZY)) C: B1 FETCH 1 (RFC822.SIZE PREVIEW (text/imap-fetch-preview))
S: * 1 FETCH (RFC822.SIZE 91377 PREVIEW (FUZZY {53} S: * 1 FETCH (RFC822.SIZE 91377 PREVIEW
(text/imap-fetch-preview {53}
S: Preview text generated from message body text data. S: Preview text generated from message body text data.
S: )) S: ))
S: B1 OK FETCH complete. S: B1 OK FETCH complete.
Example 3: Requesting FETCH with invalid explicit algorithm Example 3: Requesting FETCH with unknown explicit algorithm
selection. selection.
C: C1 CAPABILITY C: C1 CAPABILITY
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY S: * CAPABILITY IMAP4rev1 PREVIEW
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 (example/unknown))
S: C2 BAD FETCH contains invalid preview algorithm name. S: C2 BAD FETCH contains unknown 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 FETCH 1:3 (ENVELOPE PREVIEW (LAZY=FUZZY)) C: D1 FETCH 1:3 (ENVELOPE PREVIEW (LAZY))
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 "Preview text for message 1.")) PREVIEW (text/imap-fetch-preview "Preview text for message 1."))
S: * 2 FETCH (PREVIEW (FUZZY "") ENVELOPE S: * 2 FETCH (PREVIEW (text/imap-fetch-preview "") 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 (text/imap-fetch-preview NIL))
S: D1 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: D2 FETCH 3 (PREVIEW (FUZZY)) C: D2 FETCH 3 (PREVIEW (text/imap-fetch-preview))
S: * 3 FETCH (PREVIEW (FUZZY {30} S: * 3 FETCH (PREVIEW (text/imap-fetch-preview {30}
S: Message data from message 3. S: Message data from message 3.
S: )) S: ))
S: D2 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 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=text/imap-fetch-preview))
S: E2 OK SEARCH completed. S: E2 OK SEARCH completed.
S: * 5 FETCH (UID 13 PREVIEW (FUZZY "Preview!")) S: * 5 FETCH (UID 13 PREVIEW (text/imap-fetch-preview "Preview!"))
S: * 9 FETCH (UID 23 PREVIEW (FUZZY NIL)) S: * 9 FETCH (UID 23 PREVIEW (text/imap-fetch-preview 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 (text/imap-fetch-preview))
S: * 9 FETCH (UID 23 PREVIEW (FUZZY "Another preview!")) S: * 9 FETCH (UID 23 PREVIEW (text/imap-fetch-preview
"Another preview!"))
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=" preview-alg capability =/ "PREVIEW"
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 = "text/imap-fetch-preview" / preview-alg-ext
preview-alg-ext = preview-atom ; New algorithm names SHOULD be preview-alg-ext = preview-atom ; New algorithm names SHOULD be
; registered with IANA and MUST ; registered with IANA and MUST
; conform with the ; conform with the media type
; recommendations described in ; format described in [RFC6838]
; [RFC6648], 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 = "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=" capability to This document requests that IANA adds the "PREVIEW" capability to the
the IMAP4 [RFC3501] capabilities registry. 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. text/imap-fetch-preview algorithm in that registry.
9. Security Considerations 9. Security Considerations
Implementation of this extension might enable denial-of-service Implementation of this extension might enable denial-of-service
attacks against server resources, due to excessive memory or CPU attacks against server resources, due to excessive memory or CPU
usage during preview generation or increased storage usage if preview usage during preview generation or increased storage usage if preview
results are stored on the server after generation. Servers MAY limit results are stored on the server after generation. Servers MAY limit
the resources that preview generation uses. In order to mitigate the resources that preview generation uses. In order to mitigate
such attacks, servers SHOULD log the client authentication identity such attacks, servers SHOULD log the client authentication identity
on FETCH PREVIEW operations in order to facilitate tracking of on FETCH PREVIEW operations in order to facilitate tracking of
skipping to change at page 11, line 23 skipping to change at page 11, line 43
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, Specifications: ABNF", STD 68, RFC 5234,
DOI 10.17487/RFC5234, January 2008, DOI 10.17487/RFC5234, January 2008,
<https://www.rfc-editor.org/info/rfc5234>. <https://www.rfc-editor.org/info/rfc5234>.
[RFC5255] Newman, C., Gulbrandsen, A., and A. Melnikov, "Internet [RFC5255] Newman, C., Gulbrandsen, A., and A. Melnikov, "Internet
Message Access Protocol Internationalization", RFC 5255, Message Access Protocol Internationalization", RFC 5255,
DOI 10.17487/RFC5255, June 2008, DOI 10.17487/RFC5255, June 2008,
<https://www.rfc-editor.org/info/rfc5255>. <https://www.rfc-editor.org/info/rfc5255>.
[RFC6648] Saint-Andre, P., Crocker, D., and M. Nottingham, [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
"Deprecating the "X-" Prefix and Similar Constructs in Specifications and Registration Procedures", BCP 13,
Application Protocols", BCP 178, RFC 6648, RFC 6838, DOI 10.17487/RFC6838, January 2013,
DOI 10.17487/RFC6648, June 2012, <https://www.rfc-editor.org/info/rfc6838>.
<https://www.rfc-editor.org/info/rfc6648>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26, Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017, RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>. <https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
skipping to change at page 14, line 22 skipping to change at page 14, line 41
Changes from draft-ietf-extra-imap-fetch-preview-05: Changes from draft-ietf-extra-imap-fetch-preview-05:
o Clarify "zero-length string" preview data vs. NIL preview data o Clarify "zero-length string" preview data vs. NIL preview data
o MIME data -> media type o MIME data -> media type
o Capability registration should not include the algorithm name o Capability registration should not include the algorithm name
o Give example of how PREVIEW data might change over time o Give example of how PREVIEW data might change over time
Changes from draft-ietf-extra-imap-fetch-preview-06:
o Change algorithm names to media types
o FUZZY algorithm changed to text/imap-fetch-preview
o Remove server broadcast of PREVIEW algorithm extensions from
capability
o Default, fallback algorithm in absence of client selection now
MUST be text/imap-fetch-preview
o LAZY modifier should work on default algorithm if no specific
algorithm is provided as an argument
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, Barry Leiba, Alexey Gondwana, Teemu Huovila, Neil Jenkins, Steffen Lehmann, Barry Leiba,
Melnikov, Chris Newman, Jeff Sipek, Timo Sirainen, Steffen Templin, Alexey Melnikov, Chris Newman, Pete Resnick, Jeff Sipek, Timo
and Aki Tuomi. 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. 39 change blocks. 
67 lines changed or deleted 101 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/