| < draft-ietf-imapext-annotate-05.txt | draft-ietf-imapext-annotate-06.txt > | |||
|---|---|---|---|---|
| IMAP Extensions Working Group R. Gellens | IMAP Extensions Working Group R. Gellens | |||
| Internet Draft: IMAP ANNOTATE Extension C. Daboo | Internet Draft: IMAP ANNOTATE Extension C. Daboo | |||
| Document: draft-ietf-imapext-annotate-05.txt November 2002 | Document: draft-ietf-imapext-annotate-06.txt March 2003 | |||
| IMAP ANNOTATE Extension | IMAP ANNOTATE Extension | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| skipping to change at page 1, line 31 ¶ | skipping to change at page 1, line 31 ¶ | |||
| reference material or to cite them other than as "work in progress." | reference material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet- Draft Shadow Directories can be accessed at | The list of Internet- Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society 2002. All Rights Reserved. | Copyright (C) The Internet Society 2003. All Rights Reserved. | |||
| Table of Contents | Table of Contents | |||
| 1 Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1 Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 3 Conventions Used in This Document . . . . . . . . . . . . . . 2 | 3 Conventions Used in This Document . . . . . . . . . . . . . . 2 | |||
| 4 Open Issues: . . . . . . . . . . . . . . . . . . . . . . . . 3 | 4 Open Issues . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 5 Change History . . . . . . . . . . . . . . . . . . . . . . . 3 | 5 Change History . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 6 Introduction and Overview . . . . . . . . . . . . . . . . . 4 | 6 Introduction and Overview . . . . . . . . . . . . . . . . . 4 | |||
| 7 Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 7 Data Model . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 7.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 5 | 7.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 7.2 Namespace of Entries and Attributes . . . . . . . . . . . 5 | 7.2 Namespace of Entries and Attributes . . . . . . . . . . . 6 | |||
| 7.2.1 Entry Names . . . . . . . . . . . . . . . . . . . . 6 | 7.2.1 Entry Names . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7.2.2 Attribute Names . . . . . . . . . . . . . . . . . . . 8 | 7.2.2 Attribute Names . . . . . . . . . . . . . . . . . . . 8 | |||
| 8 Private versus Shared and Access Control . . . . . . . . . . 9 | 8 Private versus Shared and Access Control . . . . . . . . . . 9 | |||
| 9 IMAP Protocol Changes . . . . . . . . . . . . . . . . . . . . 10 | 9 IMAP Protocol Changes . . . . . . . . . . . . . . . . . . . . 10 | |||
| 9.1 Optional parameters with the SELECT/EXAMINE commands . . 10 | 9.1 Optional parameters with the SELECT/EXAMINE commands . . 10 | |||
| 9.2 ANNOTATION Message Data Item in FETCH Command . . . . . . 10 | 9.2 ANNOTATION Message Data Item in FETCH Command . . . . . . 11 | |||
| 9.3 ANNOTATION Message Data Item in FETCH Response . . . . . 12 | 9.3 ANNOTATION Message Data Item in FETCH Response . . . . . 12 | |||
| 9.4 ANNOTATION Message Data Item in STORE . . . . . . . . . . 13 | 9.4 ANNOTATION Message Data Item in STORE . . . . . . . . . . 13 | |||
| 9.5 ANNOTATION interaction with COPY . . . . . . . . . . . . 14 | 9.5 ANNOTATION interaction with COPY . . . . . . . . . . . . 15 | |||
| 9.6 ANNOTATION Message Data Item in APPEND . . . . . . . . . 15 | 9.6 ANNOTATION Message Data Item in APPEND . . . . . . . . . 15 | |||
| 9.7 ANNOTATION Criterion in SEARCH . . . . . . . . . . . . . 15 | 9.7 ANNOTATION Criterion in SEARCH . . . . . . . . . . . . . 15 | |||
| 9.8 ANNOTATION Key in SORT . . . . . . . . . . . . . . . . . 16 | 9.8 ANNOTATION Key in SORT . . . . . . . . . . . . . . . . . 16 | |||
| 10 Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . 16 | 10 Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 11 IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 11 IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 11.1 Entry and Attribute Registration Template . . . . . . . 18 | 11.1 Entry and Attribute Registration Template . . . . . . . 18 | |||
| 12 Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 12 Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
| 13 References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 13 Normative References . . . . . . . . . . . . . . . . . . . . 19 | |||
| 14 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 | 14 Informative References . . . . . . . . . . . . . . . . . . . 19 | |||
| 15 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 19 | 15 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 16 Full Copyright Statement . . . . . . . . . . . . . . . . . . 19 | 16 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 17 Full Copyright Statement . . . . . . . . . . . . . . . . . . 20 | ||||
| 1 Abstract | 1 Abstract | |||
| The ANNOTATE extension to the Internet Message Access Protocol | The ANNOTATE extension to the Internet Message Access Protocol | |||
| [IMAP4] permits clients and servers to maintain "metadata" for | [IMAP4] permits clients and servers to maintain "metadata" for | |||
| messages stored in an IMAP4 mailbox. | messages stored in an IMAP4 mailbox. | |||
| 2 Discussion | 2 Discussion | |||
| Public comments can be sent to the IETF IMAP Extensions mailing | Public comments can be sent to the IETF IMAP Extensions mailing | |||
| skipping to change at page 3, line 11 ¶ | skipping to change at page 3, line 11 ¶ | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [KEYWORDS]. | document are to be interpreted as described in RFC 2119 [KEYWORDS]. | |||
| Formal syntax is defined using ABNF [ABNF] as modified by [IMAP4]. | Formal syntax is defined using ABNF [ABNF] as modified by [IMAP4]. | |||
| In examples, "C:" and "S:" indicate lines sent by the client and | In examples, "C:" and "S:" indicate lines sent by the client and | |||
| server respectively. Line breaks not preceded by a "C:" or "S:" are | server respectively. Line breaks not preceded by a "C:" or "S:" are | |||
| for editorial clarity only. | for editorial clarity only. | |||
| 4 Open Issues: | 4 Open Issues | |||
| *How to deal with flag vs keyword namespace issues. Should standard | 1. Use of utf8 for entry/attributes and values? | |||
| IMAP flags go under /message/flags and keywords under | ||||
| /message/keywords, or should they all go under /message/flags and | ||||
| follow the exact naming scheme in IMAP (i.e. with '\' prefix in | ||||
| front of standard flags, and '$' for appropriate keywords)? | ||||
| 5 Change History | 5 Change History | |||
| Changes from -03 to -04: | Changes from -05 to -06: | |||
| 1. Split references into Normative and Informative. | ||||
| 2. Reworked flags to allow IMAP4 flag prefix to appear in annotation name. | ||||
| 3. Removed smtp-envelope annotation - a future extension can add this. | ||||
| 4. Changed subject to altsubject. | ||||
| 5. Added $MDNSent flag and reference to document. | ||||
| 6. Cleaned up formal syntax to use IMAP string type for entry | ||||
| and attributes, with requirements on how the string is formatted. | ||||
| 7. Use of ACAP vendor subtree registry for vendor tokens. | ||||
| 8. Fixed STORE syntax. | ||||
| Changes from -04 to -05: | ||||
| 1. Fixed examples to match formal syntax for FETCH responses where | 1. Fixed examples to match formal syntax for FETCH responses where | |||
| parenthesis do not appear around entry-att items. | parenthesis do not appear around entry-att items. | |||
| Changes from -03 to -04: | Changes from -03 to -04: | |||
| 1. Fixed attrib/attrib-match grammar to use "." instead of "/". | 1. Fixed attrib/attrib-match grammar to use "." instead of "/". | |||
| 2. Add text for server to reject unknown <part-specifier>. | 2. Add text for server to reject unknown <part-specifier>. | |||
| 3. Do not allow empty part-specifier. | 3. Do not allow empty part-specifier. | |||
| 4. Store NIL to value to delete. | 4. Store NIL to value to delete. | |||
| 5. Comment on COPY interaction with ANNOTATE. | 5. Comment on COPY interaction with ANNOTATE. | |||
| 6. Added comment that IMAP flags are mapped one-to-one with their | 6. Added comment that IMAP flags are mapped one-to-one with their | |||
| skipping to change at page 3, line 52 ¶ | skipping to change at page 4, line 7 ¶ | |||
| on read-only/read-write mailboxes and storing private or | on read-only/read-write mailboxes and storing private or | |||
| shared annotations. | shared annotations. | |||
| 5. Removed STORE to default .priv or .shared. | 5. Removed STORE to default .priv or .shared. | |||
| 6. Added section on optional select parameters. | 6. Added section on optional select parameters. | |||
| Changes from -01 to -02: | Changes from -01 to -02: | |||
| 1. Now require .priv or .shared on store operations. | 1. Now require .priv or .shared on store operations. | |||
| Changes from -00 to -01: | Changes from -00 to -01: | |||
| 1. MODTIME moved to its own draft, which this draft now | 1. MODTIME moved to its own draft, which this draft now | |||
| depends on. Thus, Conditional Annotation STORE and | depends on. Thus, Conditional Annotation STORE and | |||
| related items deleted from this draft. | related items deleted from this draft. | |||
| 2. Private versus Shared Annotations: both are possible | 2. Private versus Shared Annotations: both are possible | |||
| (separately addressable using ".priv" and ".shared" | (separately addressable using ".priv" and ".shared" | |||
| suffixes). There is a per-mailbox setting for the | suffixes). There is a per-mailbox setting for the | |||
| default. It is an open issue how this is viewed or | default. It is an open issue how this is viewed or | |||
| changed by the client. | changed by the client. | |||
| 3. In ACLs, the "w" right is needed to updated shared state; | 3. In ACLs, the "w" right is needed to updated shared state; | |||
| the "s" right is needed to update private state. | the "s" right is needed to update private state. | |||
| 4. Various clarifications and text modifications. | 4. Various clarifications and text modifications. | |||
| 5. Added 'forwarded' flag for message parts. | 5. Added 'forwarded' flag for message parts. | |||
| Changes from pre-imapext to -00: | Changes from pre-imapext to -00: | |||
| 1. Clarified text describing attributions, entries, and | 1. Clarified text describing attributions, entries, and | |||
| attributes. | attributes. | |||
| 2. Changed 'modifiedsince' to 'modtime'; referenced ACAP spec. | 2. Changed 'modifiedsince' to 'modtime'; referenced ACAP spec. | |||
| 3. Deleted 'queued' flag. | 3. Deleted 'queued' flag. | |||
| 4. Expanded and explained smtp-envelope entry. | 4. Expanded and explained smtp-envelope entry. | |||
| 5. Restricted including ANNOTATION data in unsolicited responses | 5. Restricted including ANNOTATION data in unsolicited responses | |||
| until the client uses it first. (Open issue as to if needed). | until the client uses it first. (Open issue as to if needed). | |||
| 6. Examples now only use valid entries and attributes. | 6. Examples now only use valid entries and attributes. | |||
| 7. Updated Security Considerations. | 7. Updated Security Considerations. | |||
| 8. Content-Type now defaults to text/plain. | 8. Content-Type now defaults to text/plain. | |||
| 9. Open Issue: Shared vs. private annotations. | 9. Open Issue: Shared vs. private annotations. | |||
| 10. Open issue: Annotation Modtime untagged response or VALIDTIME | 10. Open issue: Annotation Modtime untagged response or VALIDTIME | |||
| FETCH data. | FETCH data. | |||
| 11. Open issue: Conditional annotation STORE. | 11. Open issue: Conditional annotation STORE. | |||
| 12. ANNOTATION criterion available if both "ANNOTATE" and "SORT" | 12. ANNOTATION criterion available if both "ANNOTATE" and "SORT" | |||
| in CAPABILITY command response. | in CAPABILITY command response. | |||
| 13. Prohibition on annotations in lieu of base spec functionality. | 13. Prohibition on annotations in lieu of base spec functionality. | |||
| skipping to change at page 6, line 47 ¶ | skipping to change at page 6, line 51 ¶ | |||
| /message/comment | /message/comment | |||
| Defines a comment or note associated with an entire message. | Defines a comment or note associated with an entire message. | |||
| /message/flags | /message/flags | |||
| Defines the top-level of entries for flags associated with an | Defines the top-level of entries for flags associated with an | |||
| entire message. The "value" attribute of each of the entries | entire message. The "value" attribute of each of the entries | |||
| described below must be either "1", "0" or NIL. "1" corresponds | described below must be either "1", "0" or NIL. "1" corresponds | |||
| to the flag being set. | to the flag being set. | |||
| /message/flags/answered | Standard [IMAP4] flags always have a '\' prefix character. | |||
| /message/flags/flagged | Other standard flags have a '$' prefix. The annotation names | |||
| /message/flags/deleted | used for all flags uses the complete name for that flag, | |||
| /message/flags/seen | including the prefix character. | |||
| /message/flags/draft | ||||
| /message/flags/recent | ||||
| These attributes represent the standard IMAP flags as returned | ||||
| by the FLAGS fetch item. Changes to these annotations are | ||||
| reflected in the standard IMAP flags. The recent attribute is | ||||
| read only, clients MUST NOT attempt to change it. | ||||
| /message/flags/redirected | The set of standard IMAP flags annotations are: | |||
| /message/flags/forwarded | ||||
| The 'redirected' flag indicates that a message has been handed | /message/flags/\answered | |||
| /message/flags/\flagged | ||||
| /message/flags/\deleted | ||||
| /message/flags/\seen | ||||
| /message/flags/\draft | ||||
| /message/flags/\recent | ||||
| Changes to these annotations are reflected in the standard IMAP | ||||
| flags. The \recent attribute is read only, clients MUST NOT | ||||
| attempt to change it. | ||||
| Note that entry names are sent as [IMAP4] string elements which | ||||
| requires that '\' characters be escaped in the string. | ||||
| Additional standard flags are: | ||||
| /message/flags/$mdnsent | ||||
| /message/flags/$redirected | ||||
| /message/flags/$forwarded | ||||
| The '$mdnsent' flag is used to indicate message disposition | ||||
| notification processing state [MDNSENT]. | ||||
| The '$redirected' flag indicates that a message has been handed | ||||
| off to someone else, by resending the message with minimal | off to someone else, by resending the message with minimal | |||
| alterations, and in such a way that a reply by the new recipient | alterations, and in such a way that a reply by the new recipient | |||
| is addressed to the original author, not the user who performed | is addressed to the original author, not the user who performed | |||
| the redirection. The 'forwarded' flag indicates the message was | the redirection. | |||
| resent to another user, embedded within or attached to a new | ||||
| message. | ||||
| /message/smtp-envelope | The '$forwarded' flag indicates the message was resent to | |||
| Defines the top-level of entries which together describe the | another user, embedded within or attached to a new message. | |||
| SMTP envelope used in delivery of the message. There are no | ||||
| attributes at this level. The client SHOULD NOT modify the | ||||
| /message/smtp-envelope entry or any sub-entries or any of their | ||||
| attributes, except in messages which have the DRAFT flag set. | ||||
| /message/smtp-envelope/from | ||||
| /message/smtp-envelope/to | ||||
| /message/smtp-envelope/orcpt | ||||
| /message/smtp-envelope/envid | ||||
| /message/smtp-envelope/notify | ||||
| /message/smtp-envelope/ret | ||||
| Contains the properties of the SMTP envelope: 'from' is the | ||||
| return-path of the message; 'to' is the recipient of the | ||||
| message. 'notify', 'orcpt', 'ret' and 'envid' contain the | ||||
| notification options, original recipient, envelope ID and return | ||||
| options as specified in [SMTP-DSN]. | ||||
| /message/subject | /message/altsubject | |||
| Contains text supplied by the message recipient, to be used by | Contains text supplied by the message recipient, to be used by | |||
| the client instead of the original message Subject. | the client instead of the original message Subject. | |||
| /message/vendor/<vendor-token> | /message/vendor/<vendor-token> | |||
| Defines the top-level of entries associated with an entire | Defines the top-level of entries associated with an entire | |||
| message as created by a particular product of some vendor. | message as created by a particular product of some vendor. | |||
| These sub-entries can be used by vendors to provide | These sub-entries can be used by vendors to provide | |||
| client-specific attributes. The vendor-token MUST be registered | client-specific attributes. The vendor-token MUST be registered | |||
| with IANA. | with IANA, using the [ACAP] vendor subtree registry. | |||
| /body/<part-specifier> | /body/<part-specifier> | |||
| Defines the top-level of entries associated with a specific body | Defines the top-level of entries associated with a specific body | |||
| part of a message. This entry itself does not contain any | part of a message. This entry itself does not contain any | |||
| attributes. The part-specifier uses the same part specifier | attributes. The part-specifier uses the same part specifier | |||
| syntax as the BODY message data item in the FETCH command | syntax as the BODY message data item in the FETCH command | |||
| [IMAP4]. The server MUST return a BAD response if the client | [IMAP4]. The server MUST return a BAD response if the client | |||
| uses an incorrect part specifier (either incorrect syntax or a | uses an incorrect part specifier (either incorrect syntax or a | |||
| specifier referring to a non-existent part). The server MUST | specifier referring to a non-existent part). The server MUST | |||
| return a BAD response if the client uses an empty part specifier | return a BAD response if the client uses an empty part specifier | |||
| (which is used in [IMAP4] to represent the entire message). | (which is used in [IMAP4] to represent the entire message). | |||
| /body/<part-specifier>/comment | /body/<part-specifier>/comment | |||
| Defines a comment or note associated with a specific body part | Defines a comment or note associated with a specific body part | |||
| of a message. | of a message. | |||
| skipping to change at page 9, line 9 ¶ | skipping to change at page 9, line 14 ¶ | |||
| content-type | content-type | |||
| A MIME [MIME] content type and subtype that describes the nature | A MIME [MIME] content type and subtype that describes the nature | |||
| of the content of the "value" attribute. If not present, a | of the content of the "value" attribute. If not present, a | |||
| value of "text/plain; charset=utf8" is assumed. | value of "text/plain; charset=utf8" is assumed. | |||
| vendor.<vendor-token> | vendor.<vendor-token> | |||
| Defines an attribute associated with a particular product of | Defines an attribute associated with a particular product of | |||
| some vendor. This attribute can be used by vendors to provide | some vendor. This attribute can be used by vendors to provide | |||
| client specific attributes. The vendor-token MUST be registered | client specific attributes. The vendor-token MUST be registered | |||
| with IANA. | with IANA, using the [ACAP] vendor subtree registry. | |||
| 8 Private versus Shared and Access Control | 8 Private versus Shared and Access Control | |||
| Some IMAP mailboxes are private, accessible only to the owning user. | Some IMAP mailboxes are private, accessible only to the owning user. | |||
| Other mailboxes are not, either because the owner has set an ACL | Other mailboxes are not, either because the owner has set an ACL | |||
| [ACL-EXT] which permits access by other users, or because it is a | [ACL-EXT] which permits access by other users, or because it is a | |||
| shared mailbox. | shared mailbox. | |||
| This raises the issue of shared versus private annotations. | This raises the issue of shared versus private annotations. | |||
| skipping to change at page 11, line 31 ¶ | skipping to change at page 11, line 38 ¶ | |||
| for the "/message/comment" entry is requested by the client | for the "/message/comment" entry is requested by the client | |||
| and returned by the server. Since neither ".shared" nor | and returned by the server. Since neither ".shared" nor | |||
| ".priv" was specified, both are returned. | ".priv" was specified, both are returned. | |||
| "*" and "%" wildcard characters can be used in either specifier to | "*" and "%" wildcard characters can be used in either specifier to | |||
| match one or more characters at that position, with the exception | match one or more characters at that position, with the exception | |||
| that "%" does not match the hierarchy delimiter for the specifier it | that "%" does not match the hierarchy delimiter for the specifier it | |||
| appears in (that is, "/" for an entry specifier or "." for an | appears in (that is, "/" for an entry specifier or "." for an | |||
| attribute specifier). Thus an entry specifier of "/message/%" | attribute specifier). Thus an entry specifier of "/message/%" | |||
| matches entries such as "/message/comment" and "/message/subject", | matches entries such as "/message/comment" and "/message/subject", | |||
| but not "/message/flags/redirected". | but not "/message/flags/$redirected". | |||
| Examples: | Examples: | |||
| C: a FETCH 1 (ANNOTATION ("/message/*" ("value.priv" | C: a FETCH 1 (ANNOTATION ("/message/*" ("value.priv" | |||
| "size.priv"))) | "size.priv"))) | |||
| S: * 1 FETCH (ANNOTATION | S: * 1 FETCH (ANNOTATION | |||
| ("/message/comment" ("value.priv" "My comment" | ("/message/comment" ("value.priv" "My comment" | |||
| "size.priv" "10") | "size.priv" "10") | |||
| "/message/subject" ("value.priv" "Rhinoceroses!" | "/message/subject" ("value.priv" "Rhinoceroses!" | |||
| "size.priv" "13") | "size.priv" "13") | |||
| "/message/vendor/foobar/label.priv" | "/message/vendor/foobar/label.priv" | |||
| skipping to change at page 16, line 48 ¶ | skipping to change at page 17, line 4 ¶ | |||
| Non-terminals referenced but not defined below are as defined by | Non-terminals referenced but not defined below are as defined by | |||
| [IMAP4]. | [IMAP4]. | |||
| Except as noted otherwise, all alphabetic characters are case- | Except as noted otherwise, all alphabetic characters are case- | |||
| insensitive. The use of upper or lower case characters to define | insensitive. The use of upper or lower case characters to define | |||
| token strings is for editorial clarity only. Implementations MUST | token strings is for editorial clarity only. Implementations MUST | |||
| accept these strings in a case-insensitive fashion. | accept these strings in a case-insensitive fashion. | |||
| append = "APPEND" SP mailbox [SP flag-list] [SP date-time] | append = "APPEND" SP mailbox [SP flag-list] [SP date-time] | |||
| [SP "ANNOTATION" SP att-annotate] | [SP "ANNOTATION" SP att-annotate] | |||
| SP literal | SP literal | |||
| ; modifies original IMAP4 APPEND command | ; modifies original IMAP4 APPEND command | |||
| att-annotate = "(" entry-att *(SP entry-att) ")" | att-annotate = "ANNOTATION" SP "(" entry-att *(SP entry-att) ")" | |||
| fetch-att =/ fetch-annotate | fetch-att =/ fetch-annotate | |||
| ; modifies original IMAP4 fetch-att | ; modifies original IMAP4 fetch-att | |||
| fetch-annotate = "ANNOTATION" SP "(" entries SP attribs ")" | fetch-annotate = "ANNOTATION" SP "(" entries SP attribs ")" | |||
| fetch-ann-resp = "ANNOTATION" SP "(" entry-att *(SP entry-att) ")" | fetch-ann-resp = "ANNOTATION" SP "(" entry-att *(SP entry-att) ")" | |||
| store-att-flags =/ att-annotate | store-att-flags =/ att-annotate | |||
| ; modifies original IMAP4 STORE command | ; modifies original IMAP4 STORE command | |||
| search-key =/ search-annotate | search-key =/ search-annotate | |||
| skipping to change at page 17, line 32 ¶ | skipping to change at page 17, line 39 ¶ | |||
| sort-annotate = "ANNOTATION" SP entry SP attrib | sort-annotate = "ANNOTATION" SP entry SP attrib | |||
| entries = entry-match / | entries = entry-match / | |||
| "(" entry-match *(SP entry-match) ")" | "(" entry-match *(SP entry-match) ")" | |||
| attribs = attrib-match / | attribs = attrib-match / | |||
| "(" attrib-match *(SP attrib-match) ")" | "(" attrib-match *(SP attrib-match) ")" | |||
| entry-att = entry SP "(" att-value *(SP att-value) ")" | entry-att = entry SP "(" att-value *(SP att-value) ")" | |||
| att-value = attrib SP value | att-value = attrib SP value | |||
| utf8-char = %x01-FF | entry = string | |||
| ; any character, excluding NUL | ; slash-separated path to entry | |||
| atom-slash = any utf8-char except "/" | ; MUST NOT contain "*" or "%" | |||
| atom-dot = any utf8-char except "." | entry-match = string | |||
| ; slash-separated path to entry | ||||
| entry = DQUOTE 1*atom-slash *("/" 1*atom-slash) DQUOTE | ; MAY contain "*" or "%" for use as wildcards | |||
| entry-match = DQUOTE 1*entry-match-atom | ||||
| *("/" 1*entry-match-atom) DQUOTE | ||||
| entry-match-atom = 1*(list-wildcards / atom-slash) | ||||
| *(list-wildcards / atom-slash) | ||||
| attrib = DQUOTE 1*atom-dot *("." 1*atom-dot) DQUOTE | attrib = string | |||
| attrib-match = DQUOTE 1*attrib-match-atom | ; dot-separated attribute name | |||
| *("." 1*attrib-match-atom) DQUOTE | ; MUST NOT contain "*" or "%" | |||
| attrib-match-atom = 1*(list-wildcards / atom-dot) | attrib-match = string | |||
| *(list-wildcards / atom-dot) | ; dot-separated attribute name | |||
| ; MAY contain "*" or "%" for use as wildcards | ||||
| value = nstring | value = nstring | |||
| select =/ *(SP "(" select-param *(SP select-param) ")" | select =/ *(SP "(" select-param *(SP select-param) ")" | |||
| ; modifies the original IMAP4 select command to | ; modifies the original IMAP4 select command to | |||
| ; accept optional parameters | ; accept optional parameters | |||
| examine =/ *(SP "(" select-param *(SP select-param) ")" | examine =/ *(SP "(" select-param *(SP select-param) ")" | |||
| ; modifies the original IMAP4 examine command to | ; modifies the original IMAP4 examine command to | |||
| ; accept optional parameters | ; accept optional parameters | |||
| skipping to change at page 18, line 30 ¶ | skipping to change at page 18, line 33 ¶ | |||
| vendor namespace. Vendor names MUST be registered. | vendor namespace. Vendor names MUST be registered. | |||
| 11.1 Entry and Attribute Registration Template | 11.1 Entry and Attribute Registration Template | |||
| To: iana@iana.org | To: iana@iana.org | |||
| Subject: IMAP Annotate Registration | Subject: IMAP Annotate Registration | |||
| Please register the following IMAP Annotate item: | Please register the following IMAP Annotate item: | |||
| [] Entry [] Attribute | [] Entry [] Attribute | |||
| [] Vendor [] Open: RFC _______ | ||||
| Name: ______________________________ | Name: ______________________________ | |||
| Description: _______________________ | Description: _______________________ | |||
| ____________________________________ | ____________________________________ | |||
| ____________________________________ | ____________________________________ | |||
| Contact person: ____________________ | Contact person: ____________________ | |||
| email: ____________________ | email: ____________________ | |||
| 12 Security Considerations | 12 Security Considerations | |||
| The ANNOTATE extension does not raise any security considerations | ||||
| that are not present in the base [IMAP4] protocol, and these issues | ||||
| are discussed in [IMAP4]. | ||||
| Care must be taken to ensure that annotations whose values are | Care must be taken to ensure that annotations whose values are | |||
| intended to remain private are not stored in mailboxes which are | intended to remain private are not stored in mailboxes which are | |||
| accessible to other users. This includes mailboxes owned by the | accessible to other users. This includes mailboxes owned by the | |||
| user by whose ACLs permit access by others as well as any shared | user by whose ACLs permit access by others as well as any shared | |||
| mailboxes. | mailboxes. | |||
| 13 References | 13 Normative References | |||
| [ABNF] Crocker, Overell, "Augmented BNF for Syntax Specifications: | [ABNF] Crocker, Overell, "Augmented BNF for Syntax Specifications: | |||
| ABNF", RFC 2234, Internet Mail Consortium, Demon Internet Ltd, | ABNF", RFC 2234, Internet Mail Consortium, Demon Internet Ltd, | |||
| November 1997. | November 1997. | |||
| [ACAP] Newman, Myers, "ACAP -- Application Configuration Access | [ACAP] Newman, Myers, "ACAP -- Application Configuration Access | |||
| Protocol", RFC 2244, Innosoft, Netscape, November 1997. | Protocol", RFC 2244, Innosoft, Netscape, November 1997. | |||
| [ACL-EXT] Myers, "IMAP4 ACL extension", RFC 2086, Carnegie Mellon, | ||||
| January 1997. | ||||
| [IMAP4] Crispin, "Internet Message Access Protocol - Version 4rev1", | [IMAP4] Crispin, "Internet Message Access Protocol - Version 4rev1", | |||
| RFC 2060, University of Washington, December 1996. | RFC 2060, University of Washington, December 1996. | |||
| [KEYWORDS] Bradner, "Key words for use in RFCs to Indicate | [KEYWORDS] Bradner, "Key words for use in RFCs to Indicate | |||
| Requirement Levels", RFC 2119, Harvard University, March 1997. | Requirement Levels", RFC 2119, Harvard University, March 1997. | |||
| [MDNSENT] Melnikov, "MDN profile for IMAP", work in progress. | ||||
| <http://www.ietf.org/internet-drafts/draft-melnikov-imap-mdn-05.txt>. | ||||
| [SMTP-DSN] Moore, "SMTP Service Extension for Delivery Status | [SMTP-DSN] Moore, "SMTP Service Extension for Delivery Status | |||
| Notifications", RFC 1891, University of Tennessee, January 1996. | Notifications", RFC 1891, University of Tennessee, January 1996. | |||
| [SORT-EXT] Crispin, "Internet Message Access Protocol -- SORT | [SORT-EXT] Crispin, "Internet Message Access Protocol -- SORT | |||
| Extension", work in progress. | Extension", work in progress. | |||
| <http://www.ietf.org/internet-drafts/draft-ietf-imapext-sort-10.txt> | <http://www.ietf.org/internet-drafts/draft-ietf-imapext-sort-10.txt> | |||
| 14 Acknowledgments | 14 Informative References | |||
| [ACL-EXT] Myers, "IMAP4 ACL extension", RFC 2086, Carnegie Mellon, | ||||
| January 1997. | ||||
| 15 Acknowledgments | ||||
| Many thanks to Chris Newman for his detailed comments on the first | Many thanks to Chris Newman for his detailed comments on the first | |||
| draft of this document, and to the participants at the ACAP working | draft of this document, and to the participants at the ACAP working | |||
| dinner in Pittsburgh. | dinner in Pittsburgh. | |||
| 15 Authors' Addresses | 16 Authors' Addresses | |||
| Randall Gellens | Randall Gellens | |||
| QUALCOMM Incorporated | QUALCOMM Incorporated | |||
| 5775 Morehouse Dr. | 5775 Morehouse Dr. | |||
| San Diego, CA 92121-2779 | San Diego, CA 92121-2779 | |||
| U.S.A. | U.S.A. | |||
| Email: randy@qualcomm.com | Email: randy@qualcomm.com | |||
| Cyrus Daboo | Cyrus Daboo | |||
| Cyrusoft International, Inc. | Cyrusoft International, Inc. | |||
| Suite 780, 5001 Baum Blvd. | Suite 780, 5001 Baum Blvd. | |||
| Pittsburgh, PA 15213 | Pittsburgh, PA 15213 | |||
| U.S.A. | U.S.A. | |||
| Email: daboo@cyrusoft.com | Email: daboo@cyrusoft.com | |||
| 16 Full Copyright Statement | 17 Full Copyright Statement | |||
| Copyright (C) The Internet Society 2002. All Rights Reserved. | ||||
| Copyright (C) The Internet Society 2003. All Rights Reserved. | ||||
| This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
| others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
| or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
| and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
| kind, provided that the above copyright notice and this paragraph | kind, provided that the above copyright notice and this paragraph | |||
| are included on all such copies and derivative works. However, this | are included on all such copies and derivative works. However, this | |||
| document itself may not be modified in any way, such as by removing | document itself may not be modified in any way, such as by removing | |||
| the copyright notice or references to the Internet Society or other | the copyright notice or references to the Internet Society or other | |||
| Internet organizations, except as needed for the purpose of | Internet organizations, except as needed for the purpose of | |||
| End of changes. 35 change blocks. | ||||
| 84 lines changed or deleted | 100 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||