draft-ietf-extra-imap-fetch-preview-00.txt   draft-ietf-extra-imap-fetch-preview-01.txt 
EXTRA M. Slusarz EXTRA M. Slusarz
Internet-Draft Open-Xchange Inc. Internet-Draft Open-Xchange Inc.
Intended status: Standards Track November 5, 2018 Intended status: Standards Track January 22, 2019
Expires: May 9, 2019 Expires: July 26, 2019
IMAP4 Extension: Message Preview Generation IMAP4 Extension: Message Preview Generation
draft-ietf-extra-imap-fetch-preview-00 draft-ietf-extra-imap-fetch-preview-01
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 May 9, 2019. This Internet-Draft will expire on July 26, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 14 skipping to change at page 2, line 14
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. FUZZY . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. PREVIEW Priority Modifiers . . . . . . . . . . . . . . . . . 5 5. PREVIEW Priority Modifiers . . . . . . . . . . . . . . . . . 6
5.1. LAZY . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.1. LAZY . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 6
7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 8 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 9
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
10. Security Considerations . . . . . . . . . . . . . . . . . . . 9 10. Security Considerations . . . . . . . . . . . . . . . . . . . 11
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
11.1. Normative References . . . . . . . . . . . . . . . . . . 10 11.1. Normative References . . . . . . . . . . . . . . . . . . 11
11.2. Informative References . . . . . . . . . . . . . . . . . 10 11.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) . . . . . . . . . . . . . . . . . . . . 11 publication) . . . . . . . . . . . . . . . . . . . . 12
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 13
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.
Generation of a preview on the server has several benefits. First, Generation of a preview on the server has several benefits. First,
it allows consistent representation of previews across all clients. it allows consistent representation of previews across all clients.
This standardized display can reduce user confusion when using This standardized display can reduce user confusion when using
multiple clients, as abbreviated message representations in clients multiple clients, as abbreviated message representations in clients
will show identical message details. will show identical message contents.
Second, server-side preview generation is more efficient. A client- Second, server-side preview generation is more efficient. A client-
based algorithm needs to issue, at a minimum, a FETCH BODYSTRUCTURE based algorithm needs to issue, at a minimum, a FETCH BODYSTRUCTURE
command in order to determine which MIME [RFC2045] body part(s) command in order to determine which MIME [RFC2045] body part(s)
should be represented in the preview. Subsequently, at least one should be represented in the preview. Subsequently, at least one
FETCH BODY command may be needed to retrieve body data used in FETCH BODY command may be needed to retrieve body data used in
preview generation. These FETCH commands cannot be pipelined since preview generation. These FETCH commands cannot be pipelined since
the BODYSTRUCTURE query must be parsed on the client before the list the BODYSTRUCTURE query must be parsed on the client before the list
of parts to be retrieved via the BODY command(s) can be determined. of parts to be retrieved via the BODY command(s) can be determined.
skipping to change at page 3, line 19 skipping to change at page 3, line 19
algorithm to display data contained in a text/html [RFC2854] part algorithm to display data contained in a text/html [RFC2854] part
will likely strip the markup tags to obtain textual content. will likely strip the markup tags to obtain textual content.
However, without fetching the entire content of the part, there is no However, without fetching the entire content of the part, there is no
way to guarantee that sufficient non-tag content will exist unless way to guarantee that sufficient non-tag content will exist unless
either 1) the entire part is retrieved or 2) an additional partial either 1) the entire part is retrieved or 2) an additional partial
FETCH is executed when the client determines that it does not possess FETCH is executed when the client determines that it does not possess
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 them to be generated globally Using server generated previews allows global generation once per
once per message, and then cached indefinitely. Retrieval of message message, and then cached indefinitely. Retrieval of message data may
data may be expensive within a server, for example, so a server can be expensive within a server, for example, so a server can be
be configured to reduce its storage retrieval load by pre-generating configured to reduce its storage retrieval load by pre-generating
preview data. preview data.
A server that supports the PREVIEW extension indicates this with one A server that supports the PREVIEW extension indicates this with one
or more capability names consisting of "PREVIEW=" followed by a or more capability names consisting of "PREVIEW=" followed by a
supported preview algorithm name. This format provides for future supported preview algorithm name. This format provides for future
upwards-compatible extensions and/or the ability to use locally- upwards-compatible extensions and/or the ability to use locally-
defined preview algorithms. defined preview algorithms.
2. Conventions Used In This Document 2. Conventions Used In This Document
skipping to change at page 4, line 36 skipping to change at page 4, line 36
honor a client's algorithm priority decision. honor a client's algorithm priority decision.
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
C: A1 FETCH 1 (PREVIEW)
S: * 1 FETCH (PREVIEW (FUZZY "Preview text!"))
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.
If the preview is not available, the server MUST return NIL as the If the preview is not available, the server MUST return NIL as the
PREVIEW response. A NIL response indicates to the client that PREVIEW response. A NIL response indicates to the client that
preview information MAY become available in a future PREVIEW FETCH preview information MAY become available in a future PREVIEW FETCH
request. request. Note that this is semantically different than returning a
zero-length string, which indicates an empty preview.
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
skipping to change at page 5, line 38 skipping to change at page 5, line 41
The server MUST NOT output preview text longer than 256 preview The server MUST NOT output preview text longer than 256 preview
characters. characters.
The server SHOULD remove any formatting markup that exists in the The server SHOULD remove any formatting markup that exists in the
original text. original text.
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 the language rules that apply to human-readable according to the the language rules that apply to human-readable
text. text. For example, a message that consists of a single image MIME
part has no human-readable text to generate preview information from.
Instead, the server may wish to output a description that the message
contains an image and describe some attributes of the image, such as
image format, size, and filename. This descriptive text is not a
product of the message body itself but is rather auto-generated data
by the server, and should thus use the rules defined for human-
generated text described in the LANGUAGE extension (if supported on
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.
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 previwes 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
use the LAZY modifier to the desired algorithm(s) to direct the apply the LAZY modifier to the desired algorithm(s) to direct the
server to only return pre-generated preview data so that retrieval of server to only return pre-generated preview data so that retrieval of
the other FETCH information is not blocked by possibly expensive the other FETCH information is not blocked by possibly expensive
preview generation. preview generation.
Generally, the LAZY modifier will only be used once per mailbox load
during the initial listing. If preview information is not available
during this initial FETCH, the expectation is that a second non-LAZY
FETCH will take place after mailbox listing activities are complete.
Thus, a maximum of 2 PREVIEW FETCH queries should occur for any
message in a selected mailbox. A client SHOULD NOT continually issue
LAZY PREVIEW FETCH commands in a selected mailbox as the server is
under no requirement to return preview information for this command,
which could lead to an unnecessary waste of system and network
resources. See Example 4 in the Examples section for how this can be
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=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 20000 PREVIEW (FUZZY {58}
S: This is the first line of text from the first text part. S: This is the first line of text from the first text part.
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 CAPABILITY
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY
S: B1 OK Capability command completed. S: B1 OK Capability command completed.
[...a mailbox is SELECTed...] [...a mailbox is SELECTed...]
C: B2 FETCH 1 (RFC822.SIZE PREVIEW (FUZZY)) C: B2 FETCH 1 (RFC822.SIZE PREVIEW (FUZZY))
S: * 1 FETCH (RFC822.SIZE 20000 PREVIEW (FUZZY {58} S: * 1 FETCH (RFC822.SIZE 20000 PREVIEW (FUZZY {58}
S: This is the first line of text from the first text part. S: This is the first line of text from the first text part.
S: )) S: ))
S: B2 OK FETCH complete. S: B2 OK FETCH complete.
Example 3: Requesting FETCH with invalid explicit algorithm selection Example 3: Requesting FETCH with invalid explicit algorithm
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 (X-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 CAPABILITY
S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY S: * CAPABILITY IMAP4rev1 PREVIEW=FUZZY
S: D1 OK Capability command completed. S: D1 OK Capability command completed.
[...a mailbox is SELECTed...] [...a mailbox is SELECTed...]
C: D2 FETCH 1:3 (ENVELOPE PREVIEW (LAZY=FUZZY)) 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 {58}
S: This is the first line of text from the first text part. S: This is the first line of text from the first text part.
S: )) S: ))
skipping to change at page 9, line 14 skipping to change at page 10, line 14
capability =/ "PREVIEW=FUZZY" capability =/ "PREVIEW=FUZZY"
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 algorithms MUST be preview-alg-ext = preview-atom ; New algorithm names MUST
; registered with IANA ; conform with the
; recommendations described in
; 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 modifiers MUST be preview-mod-ext = preview-atom ; New priority modifier names
; registered with IANA ; MUST conform with the
; recommendations described in
; 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, Chris Newman, Jeff Sipek, Gondwana, Teemu Huovila, Steffen Lehmann, Alexey Melnikov, Chris
Timo Sirainen, Steffen Templin, and Aki Tuomi. Newman, Jeff Sipek, Timo Sirainen, Steffen Templin, and Aki Tuomi.
9. IANA Considerations 9. 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=FUZZY" capability
to the IMAP4 [RFC3501] capabilities registry. to the IMAP4 [RFC3501] capabilities registry.
This document requests that IANA create a new PREVIEW algorithms
registry, which registers preview algorithms by publishing a
standards track or IESG-approved experimental RFC. This document
constitutes registration of the FUZZY algorithm in that registry.
This document requests that IANA create a new PREVIEW modifiers
registry, which registers preview modifiers by publishing a standards
track or IESG-approved experimental RFC. This document constitutes
registration of the LAZY modifier in that registry.
10. Security Considerations 10. Security Considerations
There are no known additional security issues with this extension Implementation of this extension might enable denial-of-service
beyond those described in the base protocol described in IMAP4 attacks against server resources, due to excessive memory or CPU
[RFC3501]. usage during preview generation or increased storage usage if preview
results are stored on the server after generation. Servers MAY limit
the resources that preview generation uses.
11. References 11. References
11.1. Normative References 11.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 10, line 32 skipping to change at page 11, line 45
[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,
"Deprecating the "X-" Prefix and Similar Constructs in
Application Protocols", BCP 178, RFC 6648,
DOI 10.17487/RFC6648, June 2012,
<https://www.rfc-editor.org/info/rfc6648>.
[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>.
11.2. Informative References 11.2. Informative References
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996,
<https://www.rfc-editor.org/info/rfc2045>. <https://www.rfc-editor.org/info/rfc2045>.
skipping to change at page 11, line 33 skipping to change at page 13, line 4
o Updated length requirements for PREVIEW=FUZZY o Updated length requirements for PREVIEW=FUZZY
o Added preview-atom ABNF to limit use of "=" character o Added preview-atom ABNF to limit use of "=" character
o UTF-8 is a normative reference o UTF-8 is a normative reference
o Clarify that characters for purpose of length limitations are o Clarify that characters for purpose of length limitations are
defined as UCS characters as encoded by UTF-8 defined as UCS characters as encoded by UTF-8
o Fix some incorrect literal lengths in examples o Fix some incorrect literal lengths in examples
Changes from draft-ietf-extra-imap-fetch-preview-00:
o Updated postal address
o Added example to FETCH response section
o Added example on how LANGUAGE extension may influence preview
generation
o Added recommendation that only one LAZY FETCH be executed for a
message per mailbox
o Added request to create algorithm and modifier registries
o Added requirement that algorithm and modifier names conform to RFC
6648
o Added DoS attack info to security considerations
o Distinguish between NIL response and zero-length string
o Don't use deprecated "X-" convention in example
o Spelling and nits
Author's Address Author's Address
Michael Slusarz Michael M. Slusarz
Open-Xchange Inc. Open-Xchange Inc.
Denver, Colorado 530 Lytton Avenue
Palo Alto, California 94301
US US
Email: michael.slusarz@open-xchange.com Email: michael.slusarz@open-xchange.com
 End of changes. 29 change blocks. 
42 lines changed or deleted 116 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/