rfc5257.IMAP_ANNOTATE_extension.txt 57 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739
  1. Network Working Group C. Daboo
  2. Request for Comments: 5257 Apple Inc.
  3. Category: Experimental R. Gellens
  4. QUALCOMM Incorporated
  5. June 2008
  6. Internet Message Access Protocol - ANNOTATE Extension
  7. Status of This Memo
  8. This memo defines an Experimental Protocol for the Internet
  9. community. It does not specify an Internet standard of any kind.
  10. Discussion and suggestions for improvement are requested.
  11. Distribution of this memo is unlimited.
  12. Abstract
  13. The ANNOTATE extension to the Internet Message Access Protocol
  14. permits clients and servers to maintain "meta data" for messages, or
  15. individual message parts, stored in a mailbox on the server. For
  16. example, this can be used to attach comments and other useful
  17. information to a message. It is also possible to attach annotations
  18. to specific parts of a message, so that, for example, they could be
  19. marked as seen, or important, or a comment added.
  20. Note that this document was the product of a WG that had good
  21. consensus on how to approach the problem. Nevertheless, the WG felt
  22. it did not have enough information on implementation and deployment
  23. hurdles to meet all of the requirements of a Proposed Standard. The
  24. IETF solicits implementations and implementation reports in order to
  25. make further progress.
  26. Implementers should be aware that this specification may change in an
  27. incompatible manner when going to Proposed Standard status. However,
  28. any incompatible changes will result in a new capability name being
  29. used to prevent problems with any deployments of the experimental
  30. extension.
  31. Daboo & Gellens Experimental [Page 1]
  32. RFC 5257 IMAP ANNOTATE Extension June 2008
  33. Table of Contents
  34. 1. Introduction and Overview .......................................3
  35. 2. Conventions Used in This Document ...............................4
  36. 3. Data Model ......................................................4
  37. 3.1. Overview ...................................................4
  38. 3.2. Namespace of Entries and Attributes ........................4
  39. 3.2.1. Entry Names .........................................5
  40. 3.2.2. Attribute Names .....................................7
  41. 3.3. Private Versus Shared ......................................7
  42. 3.4. Access Control .............................................8
  43. 3.5. Access to Standard IMAP Flags and Keywords ................11
  44. 4. IMAP Protocol Changes ..........................................11
  45. 4.1. General Considerations ....................................11
  46. 4.2. ANNOTATE Parameter with the SELECT/EXAMINE Commands .......12
  47. 4.3. ANNOTATION Message Data Item in FETCH Command .............12
  48. 4.4. ANNOTATION Message Data Item in FETCH Response ............14
  49. 4.5. ANNOTATION Message Data Item in STORE .....................16
  50. 4.6. ANNOTATION Interaction with COPY ..........................18
  51. 4.7. ANNOTATION Message Data Item in APPEND ....................18
  52. 4.8. ANNOTATION Criterion in SEARCH ............................19
  53. 4.9. ANNOTATION Key in SORT ....................................20
  54. 4.10. New ACL Rights ...........................................21
  55. 5. Formal Syntax ..................................................21
  56. 6. IANA Considerations ............................................23
  57. 6.1. Entry and Attribute Registration Template .................23
  58. 6.2. Entry Registrations .......................................24
  59. 6.2.1. /comment ...........................................24
  60. 6.2.2. /flags .............................................24
  61. 6.2.3. /altsubject ........................................25
  62. 6.2.4. /<section-part>/comment ............................25
  63. 6.2.5. /<section-part>/flags/seen .........................26
  64. 6.2.6. /<section-part>/flags/answered .....................26
  65. 6.2.7. /<section-part>/flags/flagged ......................27
  66. 6.2.8. /<section-part>/flags/forwarded ....................27
  67. 6.3. Attribute Registrations ...................................28
  68. 6.3.1. value ..............................................28
  69. 6.3.2. size ...............................................28
  70. 6.4. Capability Registration ...................................28
  71. 7. Internationalization Considerations ............................29
  72. 8. Security Considerations ........................................29
  73. 9. References .....................................................29
  74. 9.1. Normative References ......................................29
  75. 9.2. Informative References ....................................30
  76. 10. Acknowledgments ...............................................30
  77. Daboo & Gellens Experimental [Page 2]
  78. RFC 5257 IMAP ANNOTATE Extension June 2008
  79. 1. Introduction and Overview
  80. The ANNOTATE extension is present in any IMAP [RFC3501]
  81. implementation that returns "ANNOTATE-EXPERIMENT-1" as one of the
  82. supported capabilities in the CAPABILITY response.
  83. This extension makes the following changes to the IMAP protocol:
  84. a. adds a new ANNOTATION message data item for use in FETCH.
  85. b. adds a new ANNOTATION message data item for use in STORE.
  86. c. adds a new ANNOTATION search criterion for use in SEARCH.
  87. d. adds a new ANNOTATION sort key for use in the SORT extension.
  88. e. adds a new ANNOTATION data item for use in APPEND.
  89. f. adds a new requirement on the COPY command.
  90. g. adds a new ANNOTATE parameter for use with the SELECT/EXAMINE
  91. commands.
  92. h. adds two new response codes to indicate store failures of
  93. annotations.
  94. i. adds a new untagged response code for the SELECT or EXAMINE
  95. commands to indicate the maximum sized annotation that can be
  96. stored.
  97. j. adds a new Access Control List (ACL) "bit" for use with the ACL
  98. extensions [RFC2086] and [RFC4314].
  99. The data model used for the storage of annotations is based on the
  100. Application Configuration Access Protocol [RFC2244]. Note that there
  101. is no inheritance in annotations.
  102. If a server supports annotations, then it MUST store all annotation
  103. data permanently, i.e., there is no concept of "session only"
  104. annotations that would correspond to the behavior of "session" flags
  105. as defined in the IMAP base specification.
  106. In order to provide optimum support for a disconnected client (one
  107. that needs to synchronize annotations for use when offline), servers
  108. SHOULD also support the Conditional STORE [RFC4551] extension.
  109. The rest of this document describes the data model and protocol
  110. changes more rigorously.
  111. Daboo & Gellens Experimental [Page 3]
  112. RFC 5257 IMAP ANNOTATE Extension June 2008
  113. 2. Conventions Used in This Document
  114. The examples in this document use "C:" and "S:" to indicate lines
  115. sent by the client and server, respectively.
  116. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  117. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
  118. document are to be interpreted as described in [RFC2119].
  119. 3. Data Model
  120. 3.1. Overview
  121. The data model for annotations in ANNOTATE uses a uniquely named
  122. entry that contains a set of standard attributes. Thus, a single
  123. coherent unit of "meta data" for a message is stored as a single
  124. entry, made up of several attributes.
  125. For example, a comment annotation added to a message has an entry
  126. name of "/comment". This entry is composed of several attributes
  127. such as "value", "size", etc., that contain the properties and data
  128. of the entry.
  129. The protocol changes to IMAP, described below, allow a client to
  130. access or change the values of any attribute in any entry in a
  131. message annotation, assuming it has sufficient access rights to do so
  132. (see Section 3.4 for specifics).
  133. 3.2. Namespace of Entries and Attributes
  134. A message may contain zero or more annotations, each of which is a
  135. single uniquely named entry. Each entry has a hierarchical name,
  136. with each component of the name separated by a slash ("/"). An entry
  137. name MUST NOT contain two consecutive "/" characters and MUST NOT end
  138. with a "/" character.
  139. Each entry is made up of a set of attributes. Each attribute has a
  140. hierarchical name, with each component of the name separated by a
  141. period ("."). An attribute name MUST NOT contain two consecutive "."
  142. characters and MUST NOT end with a "." character.
  143. The value of an attribute is "NIL" (has no value), or is a string of
  144. zero or more octets.
  145. Entry and attribute names MUST NOT contain asterisk ("*") or percent
  146. ("%") characters, and MUST NOT contain non-ASCII characters or the
  147. NULL octet. Invalid entry or attribute names result in a BAD
  148. response in any IMAP commands where they are used.
  149. Daboo & Gellens Experimental [Page 4]
  150. RFC 5257 IMAP ANNOTATE Extension June 2008
  151. Attribute names MUST NOT contain any hierarchical components with the
  152. names "priv" or "shared", as those have special meaning (see Section
  153. 3.3).
  154. Entry and attribute names are case-sensitive.
  155. Use of control or punctuation characters in entry and attribute names
  156. is strongly discouraged.
  157. This specification defines an initial set of entry and attribute
  158. names available for use in message annotations. In addition, an
  159. extension mechanism is described to allow additional names to be
  160. added as needed.
  161. 3.2.1. Entry Names
  162. Entry names MUST be specified in a standards track or IESG approved
  163. experimental RFC, or fall under the vendor namespace. See Section
  164. 6.1 for the registration template.
  165. /
  166. Defines the top-level of entries associated with an entire
  167. message. This entry itself does not contain any attributes. All
  168. entries that start with a numeric character ("0" - "9") refer to
  169. an annotation on a specific body part. All other entries are for
  170. annotations on the entire message.
  171. /comment
  172. Defines a comment or note associated with an entire message.
  173. /flags
  174. This entry hierarchy is reserved for future use.
  175. /altsubject
  176. Contains text supplied by the message recipient to be used by the
  177. client, instead of the original message Subject.
  178. /vendor/<vendor-token>
  179. Defines the top-level of entries associated with an entire message
  180. as created by a particular product of some vendor. These sub-
  181. entries can be used by vendors to provide client-specific
  182. annotations. The vendor-token MUST be registered with IANA, using
  183. the [RFC2244] vendor subtree registry.
  184. /<section-part>
  185. Defines the top-level of entries associated with a specific body
  186. part of a message. This entry itself does not contain any
  187. attributes. The section-part is a numeric part specifier. Its
  188. Daboo & Gellens Experimental [Page 5]
  189. RFC 5257 IMAP ANNOTATE Extension June 2008
  190. syntax is the same as the section-part ABNF element defined in
  191. [RFC3501]. The server MUST return a BAD response if the client
  192. uses an incorrect part specifier (either incorrect syntax or a
  193. specifier referring to a non-existent part). The server MUST
  194. return a BAD response if the client uses an empty part specifier
  195. (which is used in IMAP to represent the entire message).
  196. /<section-part>/comment
  197. Defines a comment or note associated with a specific body part of
  198. a message.
  199. /<section-part>/flags
  200. Defines the top-level of entries associated with the flag state
  201. for a specific body part of a message. All sub-entries are
  202. maintained entirely by the client. There is no implicit change to
  203. any flag by the server.
  204. /<section-part>/flags/seen
  205. This is similar to the IMAP \Seen flag, except it applies
  206. to only the body part referenced by the entry.
  207. /<section-part>/flags/answered
  208. This is similar to the IMAP \Answered flag, except it
  209. applies to only the body part referenced by the entry.
  210. /<section-part>/flags/flagged
  211. This is similar to the IMAP \Flagged flag, except it
  212. applies to only the body part referenced by the entry.
  213. /<section-part>/flags/forwarded
  214. This is similar to the IMAP $Forwarded keyword, except it
  215. applies to only the body part referenced by the entry.
  216. Defines flags for a specific body part of a message. The "value"
  217. attribute of each of the entries described above must be either
  218. "1", "0", or "NIL". "1" corresponds to the flag being set.
  219. /<section-part>/vendor/<vendor-token>
  220. Defines the top-level of entries associated with a specific body
  221. part of a message as created by a particular product of some
  222. vendor. This entry can be used by vendors to provide client
  223. specific annotations. The vendor-token MUST be registered with
  224. IANA.
  225. Daboo & Gellens Experimental [Page 6]
  226. RFC 5257 IMAP ANNOTATE Extension June 2008
  227. 3.2.2. Attribute Names
  228. Attribute names MUST be specified in a standards track or IESG
  229. approved experimental RFC. See Section 6.1 for the registration
  230. template.
  231. All attribute names implicitly have a ".priv" and a ".shared" suffix
  232. that maps to private and shared versions of the entry. Searching or
  233. fetching without using either suffix will include both. The client
  234. MUST specify either a ".priv" or ".shared" suffix when storing an
  235. annotation or sorting on annotations.
  236. value
  237. A string or binary data representing the value of the annotation.
  238. To delete an annotation, the client can store "NIL" into the
  239. value. If the client requests the value attribute for a non-
  240. existent entry, then the server MUST return "NIL" for the value.
  241. The content represented by the string is determined by the
  242. content-type used to register the entry (see Section 6.1 for entry
  243. registration templates). Where applicable, the registered
  244. content-type MUST include a charset parameter. Text values SHOULD
  245. use the utf-8 [RFC3629] character set. Note that binary data
  246. (data which may contain the NULL octet) is allowed (e.g., for
  247. storing images), and this extension uses the "literal8" syntax
  248. element [RFC4466] to allow such data to be written to or read from
  249. the server.
  250. size
  251. The size of the value, in octets. Set automatically by the
  252. server, read-only to clients. If the client requests the size
  253. attribute for a non-existent entry, then the server MUST return
  254. "0" (zero) for the size.
  255. 3.3. Private Versus Shared
  256. Some IMAP mailboxes are private, accessible only to the owning user.
  257. Other mailboxes are not, either because the owner has set an ACL
  258. [RFC4314] that permits access by other users, or because it is a
  259. shared mailbox.
  260. This raises the issue of shared versus private annotations.
  261. If all annotations are private, it is then impossible to have
  262. annotations in a shared or otherwise non-private mailbox be visible
  263. to other users. This eliminates what could be a useful aspect of
  264. annotations in a shared environment. An example of such use is a
  265. shared IMAP folder containing bug reports. Engineers may want to use
  266. Daboo & Gellens Experimental [Page 7]
  267. RFC 5257 IMAP ANNOTATE Extension June 2008
  268. annotations to add information to existing messages, indicate
  269. assignments, status, etc. This use requires shared annotations.
  270. If all annotations are shared, it is impossible to use annotations
  271. for private notes on messages in shared mailboxes. Also, modifying
  272. an ACL to permit access to a mailbox by other users may
  273. unintentionally expose private information.
  274. There are also situations in which both shared and private
  275. annotations are useful. For example, an administrator may want to
  276. set shared annotations on messages in a shared folder, which
  277. individual users may wish to supplement with additional notes.
  278. If shared and private annotations are to coexist, we need a clear way
  279. to differentiate them. Also, it should be as easy as possible for a
  280. client to access both and not overlook either. There is also a
  281. danger in allowing a client to store an annotation without knowing if
  282. it is shared or private.
  283. This document proposes two standard suffixes for all attributes:
  284. ".shared" and ".priv". A SEARCH or FETCH command that specifies
  285. neither, uses both. STORE, APPEND, and SORT commands MUST explicitly
  286. use ".priv" or ".shared" suffixes.
  287. If the ANNOTATE extension is present, support for shared annotations
  288. in servers is REQUIRED, while support for private annotations in
  289. servers is OPTIONAL. This recognizes the fact that support for
  290. private annotations may introduce a significant increase in
  291. complexity to a server in terms of tracking ownership of the
  292. annotations, how quota is determined for users based on their own
  293. annotations, etc. Clients that support the ANNOTATE extension MUST
  294. handle both shared and private annotations.
  295. 3.4. Access Control
  296. A user needs to have appropriate rights in order to read or write
  297. ".priv" or ".shared" annotation values. How those rights are
  298. calculated depends on whether or not the ACL [RFC2086] extension or
  299. its update [RFC4314] is present. If a client attempts to store or
  300. fetch an annotation to which they do not have the appropriate rights,
  301. the server MUST respond with a NO response.
  302. When the ACL extension is not present, access to annotation values is
  303. governed by the nature of the selected state, in particular whether
  304. the mailbox was SELECTED or EXAMINED in READ-ONLY or READ-WRITE mode.
  305. Daboo & Gellens Experimental [Page 8]
  306. RFC 5257 IMAP ANNOTATE Extension June 2008
  307. When the ACL extension is present, the server MUST recognize the new
  308. ACL "n" right, in addition to the ones defined by the ACL extension
  309. itself.
  310. For ".priv" annotation values, the "r" right controls both read and
  311. write access. When it is on, access to ".priv" annotations is
  312. allowed; when it is off, access to ".priv" annotations is disallowed.
  313. For ".shared" annotation values, the "r" right controls read access.
  314. When it is on, ".shared" annotations can be read; when it is off,
  315. ".shared" annotations cannot be read.
  316. For ".shared" annotation values, the "n" right controls write access.
  317. When it is on, ".shared" annotations can be changed or created
  318. through either a STORE or APPEND command; when it is off, ".shared"
  319. annotations cannot be changed or created. The "n" right constitutes
  320. a "shared flag right" as defined in Section 6.2 of [RFC4314].
  321. Daboo & Gellens Experimental [Page 9]
  322. RFC 5257 IMAP ANNOTATE Extension June 2008
  323. A summary of all the access control restrictions is tabulated below
  324. +---------------+---------------+-----------------------------------+
  325. | Server Type | Action on | Type of mailbox |
  326. | | annotation | |
  327. +===============+===============+===================================+
  328. | | | |
  329. | | read .priv | Any mailbox that can be SELECTED |
  330. | | values | or EXAMINED. |
  331. | | | |
  332. | +---------------+-----------------------------------+
  333. | | | |
  334. | | write .priv | Any SELECTED [READ-WRITE] mailbox.|
  335. | | values | SELECTED [READ-ONLY] mailboxes MAY|
  336. | Server | | also permit writes. |
  337. | without | | |
  338. | ACL Extension +---------------+-----------------------------------+
  339. | | | |
  340. | | read .shared | Any mailbox that can be SELECTED |
  341. | | values | or EXAMINED. |
  342. | | | |
  343. | +---------------+-----------------------------------+
  344. | | | |
  345. | | write .shared | Any mailbox that can be SELECTED |
  346. | | values | or EXAMINED and is [READ-WRITE]. |
  347. | | | |
  348. +---------------+---------------+-----------------------------------+
  349. | | | |
  350. | | read .priv | Any mailbox with the "r" |
  351. | | values | ACL right. |
  352. | | | |
  353. | +---------------+-----------------------------------+
  354. | | | |
  355. | | write .priv | Any mailbox with the "r" |
  356. | Server | values | ACL right. |
  357. | with | | |
  358. | ACL Extension +---------------+-----------------------------------+
  359. | | | |
  360. | | read .shared | Any mailbox with the "r" |
  361. | | values | ACL right. |
  362. | | | |
  363. | +---------------+-----------------------------------+
  364. | | | |
  365. | | write .shared | Any mailbox with the "n" |
  366. | | values | ACL right. |
  367. | | | |
  368. +---------------+---------------+-----------------------------------+
  369. Daboo & Gellens Experimental [Page 10]
  370. RFC 5257 IMAP ANNOTATE Extension June 2008
  371. 3.5. Access to Standard IMAP Flags and Keywords
  372. Due to the ambiguity of how private and shared values would map to
  373. the base IMAP flag and keyword values, the ANNOTATE extension does
  374. not expose IMAP flags or keywords as entries. However, the /flags
  375. annotation entry is reserved for future use and MUST NOT be used by
  376. clients or servers supporting this extension.
  377. Clients that need to implement shared and private "flags" can create
  378. their own annotation entries for those, completely bypassing the base
  379. IMAP flag/keyword behavior.
  380. 4. IMAP Protocol Changes
  381. 4.1. General Considerations
  382. Servers may be able to offer only a limited level of support for
  383. annotations in mailboxes, and it is useful for clients to be able to
  384. know what level of support is available. Servers MUST return an
  385. ANNOTATIONS response code during the SELECT or EXAMINE command for a
  386. mailbox to indicate the level of support. Possible data items used
  387. with the ANNOTATIONS response code are:
  388. "NONE" - this indicates that the mailbox being selected does not
  389. support annotations at all. Clients MUST NOT attempt to use
  390. annotation extensions in commands for this mailbox.
  391. "READ-ONLY" - this indicates that the annotations supported by the
  392. mailbox cannot be changed by the client. Clients MUST NOT attempt
  393. to store annotations on any messages in a mailbox with this
  394. response code.
  395. "NOPRIVATE" - this indicates that the server does not support
  396. private annotations on the mailbox. Only shared annotations are
  397. supported. Clients SHOULD only attempt to read or store
  398. annotations attributes with the ".shared" suffix. If a client
  399. uses an attribute with the ".priv" suffix in a FETCH command, then
  400. servers should return the attribute value in the FETCH response as
  401. "NIL". If a client uses an attribute with the ".priv" suffix in a
  402. STORE command (or an APPEND command targeted at the mailbox), then
  403. the server MUST return a NO response.
  404. numeric values - if servers support writable annotations, then the
  405. server MUST indicate the maximum size in octets for an annotation
  406. value by providing the maximum size value in the response code.
  407. Clients MUST NOT store annotation values of a size greater than
  408. the amount indicated by the server. Servers MUST accept a minimum
  409. Daboo & Gellens Experimental [Page 11]
  410. RFC 5257 IMAP ANNOTATE Extension June 2008
  411. annotation data size of at least 1024 octets if annotations can be
  412. written.
  413. In addition, the server MAY limit the total number of annotations for
  414. a single message. However, the server MUST provide a minimum
  415. annotation count per message of at least 10.
  416. 4.2. ANNOTATE Parameter with the SELECT/EXAMINE Commands
  417. The ANNOTATE extension defines a single optional SELECT parameter
  418. [RFC4466] "ANNOTATE", which is used to turn on unsolicited responses
  419. for annotations as described in Section 4.4. This optional parameter
  420. results in a per-mailbox state change, i.e., it must be used in each
  421. SELECT/EXAMINE command in order to be effective, irrespective of
  422. whether it was used in a previous SELECT/EXAMINE during the same
  423. session.
  424. Example:
  425. C: a SELECT INBOX (ANNOTATE)
  426. S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
  427. S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft
  428. \Deleted \Seen \*)]
  429. S: * 10268 EXISTS
  430. S: * 1 RECENT
  431. S: * OK [UNSEEN 10268]
  432. S: * OK [UIDVALIDITY 890061587]
  433. S: * OK [UIDNEXT 34643]
  434. S: * OK [ANNOTATIONS 20480 NOPRIVATE]
  435. S: a OK [READ-WRITE] Completed
  436. In the above example, a SELECT command with the ANNOTATE parameter
  437. is issued. The response from the server includes the required
  438. ANNOTATIONS response that indicates that the server supports
  439. annotations up to a maximum size of 20480 octets, and does not
  440. support private annotations (only shared).
  441. 4.3. ANNOTATION Message Data Item in FETCH Command
  442. This extension adds an ANNOTATION message data item to the FETCH
  443. command. This allows clients to retrieve annotations for a range of
  444. messages in the currently selected mailbox.
  445. ANNOTATION <entry-specifier> <attribute-specifier>
  446. The ANNOTATION message data item, when used by the client in the
  447. FETCH command, takes an entry specifier and an attribute
  448. specifier.
  449. Daboo & Gellens Experimental [Page 12]
  450. RFC 5257 IMAP ANNOTATE Extension June 2008
  451. Example:
  452. C: a FETCH 1 (ANNOTATION (/comment value))
  453. S: * 1 FETCH (ANNOTATION (/comment
  454. (value.priv "My comment"
  455. value.shared "Group note")))
  456. S: a OK Fetch complete
  457. In the above example, the content of the "value" attribute for the
  458. "/comment" entry is requested by the client and returned by the
  459. server. Since neither ".shared" nor ".priv" was specified, both
  460. are returned.
  461. "*" and "%" wild card characters can be used in entry specifiers to
  462. match one or more characters at that position, with the exception
  463. that "%" does not match the "/" hierarchy delimiter. Thus, an entry
  464. specifier of "/%" matches entries such as "/comment" and
  465. "/altsubject", but not "/1/comment".
  466. Example:
  467. C: a UID FETCH 1123 (UID ANNOTATION
  468. (/* (value.priv size.priv)))
  469. S: * 12 FETCH (UID 1123 ANNOTATION
  470. (/comment (value.priv "My comment"
  471. size.priv "10")
  472. /altsubject (value.priv "Rhinoceroses!"
  473. size.priv "13")
  474. /vendor/foobar/label.priv
  475. (value.priv "label43"
  476. size.priv "7")
  477. /vendor/foobar/personality
  478. (value.priv "Tallulah Bankhead"
  479. size.priv "17")))
  480. S: a OK Fetch complete
  481. In the above example, the contents of the private "value" and
  482. "size" attributes for any entries in the "/" hierarchy are
  483. requested by the client and returned by the server.
  484. Daboo & Gellens Experimental [Page 13]
  485. RFC 5257 IMAP ANNOTATE Extension June 2008
  486. Example:
  487. C: a FETCH 1 (ANNOTATION (/% value.shared))
  488. S: * 1 FETCH (ANNOTATION
  489. (/comment (value.shared "Patch Mangler")
  490. /altsubject (value.shared "Patches? We don't
  491. need no steenkin patches!")))
  492. S: a OK Fetch complete
  493. In the above example, the contents of the shared "value"
  494. attributes for entries at the top level only of the "/" hierarchy
  495. are requested by the client and returned by the server.
  496. Entry and attribute specifiers can be lists of atomic specifiers, so
  497. that multiple items of each type may be returned in a single FETCH
  498. command.
  499. Example:
  500. C: a FETCH 1 (ANNOTATION
  501. ((/comment /altsubject) value.priv))
  502. S: * 1 FETCH (ANNOTATION
  503. (/comment (value.priv "What a chowder-head")
  504. /altsubject (value.priv "How to crush beer cans")))
  505. S: a OK Fetch complete
  506. In the above example, the contents of the private "value"
  507. attributes for the two entries "/comment" and "/altsubject" are
  508. requested by the client and returned by the server.
  509. 4.4. ANNOTATION Message Data Item in FETCH Response
  510. The ANNOTATION message data item in the FETCH response displays
  511. information about annotations in a message.
  512. ANNOTATION parenthesized list
  513. The response consists of a list of entries, each of which have a
  514. list of attribute-value pairs.
  515. Daboo & Gellens Experimental [Page 14]
  516. RFC 5257 IMAP ANNOTATE Extension June 2008
  517. Example:
  518. C: a FETCH 1 (ANNOTATION (/comment value))
  519. S: * 1 FETCH (ANNOTATION (/comment
  520. (value.priv "My comment"
  521. value.shared NIL)))
  522. S: a OK Fetch complete
  523. In the above example, a single entry with a single attribute-value
  524. pair is returned by the server. Since the client did not specify
  525. a ".shared" or ".priv" suffix, both are returned. Only the
  526. private attribute has a value (the shared value is "NIL").
  527. Example:
  528. C: a FETCH 1 (ANNOTATION
  529. ((/comment /altsubject) value))
  530. S: * 1 FETCH (ANNOTATION
  531. (/comment (value.priv "My comment"
  532. value.shared NIL)
  533. /altsubject (value.priv "My subject"
  534. value.shared NIL)))
  535. S: a OK Fetch complete
  536. In the above example, two entries, each with a single attribute-
  537. value pair, are returned by the server. Since the client did not
  538. specify a ".shared" or ".priv" suffix, both are returned. Only
  539. the private attributes have values; the shared attributes are
  540. "NIL".
  541. Example:
  542. C: a FETCH 1 (ANNOTATION
  543. (/comment (value size)))
  544. S: * 1 FETCH (ANNOTATION
  545. (/comment
  546. (value.priv "My comment"
  547. value.shared NIL
  548. size.priv "10"
  549. size.shared "0")))
  550. S: a OK Fetch complete
  551. In the above example, a single entry with two attribute-value
  552. pairs is returned by the server. Since the client did not specify
  553. a ".shared" or ".priv" suffix, both are returned. Only the
  554. private attributes have values; the shared attributes are "NIL".
  555. Daboo & Gellens Experimental [Page 15]
  556. RFC 5257 IMAP ANNOTATE Extension June 2008
  557. Servers SHOULD send ANNOTATION message data items in unsolicited
  558. FETCH responses if an annotation entry is changed by a third-party,
  559. and the ANNOTATE select parameter was used. This allows servers to
  560. keep clients updated with changes to annotations by other clients.
  561. Unsolicited ANNOTATION responses MUST NOT include ANNOTATION data
  562. values -- only the entry name of the ANNOTATION that has changed.
  563. This restriction avoids sending ANNOTATION data values (which may be
  564. large) to a client unless the client explicitly asks for the value.
  565. Example:
  566. C: a STORE 1 +FLAGS (\Seen)
  567. S: * 1 FETCH (FLAGS (\Seen))
  568. ANNOTATION (/comment))
  569. S: a OK STORE complete
  570. In the above example, an unsolicited ANNOTATION response is
  571. returned during a STORE command. The unsolicited response
  572. contains only the entry name of the annotation that changed, and
  573. not its value.
  574. 4.5. ANNOTATION Message Data Item in STORE
  575. ANNOTATION <parenthesized entry-attribute-value list>
  576. Sets the specified list of entries by adding or replacing the
  577. specified attributes with the values provided. Clients can use
  578. "NIL" for values of attributes it wants to remove from entries.
  579. The ANNOTATION message data item used with the STORE command has an
  580. implicit ".SILENT" behavior. This means the server does not generate
  581. an untagged FETCH in response to the STORE command and assumes that
  582. the client updates its own cache if the command succeeds. Though
  583. note, that if the Conditional STORE extension [RFC4551] is present,
  584. then an untagged FETCH response with a MODSEQ data item will be
  585. returned by the server as required by [RFC4551].
  586. If the server is unable to store an annotation because the size of
  587. its value is too large, the server MUST return a tagged NO response
  588. with a "[ANNOTATE TOOBIG]" response code.
  589. If the server is unable to store a new annotation because the maximum
  590. number of allowed annotations has already been reached, the server
  591. MUST return a tagged NO response with a "[ANNOTATE TOOMANY]" response
  592. code.
  593. Daboo & Gellens Experimental [Page 16]
  594. RFC 5257 IMAP ANNOTATE Extension June 2008
  595. Example:
  596. C: a STORE 1 ANNOTATION (/comment
  597. (value.priv "My new comment"))
  598. S: a OK Store complete
  599. In the above example, the entry "/comment" is created (if not
  600. already present). Its private attribute "value" is created if not
  601. already present, or replaced if it exists. "value.priv" is set to
  602. "My new comment".
  603. Example:
  604. C: a STORE 1 ANNOTATION (/comment
  605. (value.shared NIL))
  606. S: a OK Store complete
  607. In the above example, the shared "value" attribute of the entry
  608. "/comment" is removed by storing "NIL" into the attribute.
  609. Multiple entries can be set in a single STORE command by listing
  610. entry-attribute-value pairs in the list.
  611. Example:
  612. C: a STORE 1 ANNOTATION (/comment
  613. (value.priv "Get tix Tuesday")
  614. /altsubject
  615. (value.priv "Wots On"))
  616. S: a OK Store complete
  617. In the above example, the entries "/comment" and "/altsubject" are
  618. created (if not already present) and the private attribute "value"
  619. is created or replaced for each entry.
  620. Multiple attributes can be set in a single STORE command by listing
  621. multiple attribute-value pairs in the entry list.
  622. Daboo & Gellens Experimental [Page 17]
  623. RFC 5257 IMAP ANNOTATE Extension June 2008
  624. Example:
  625. C: a STORE 1 ANNOTATION (/comment
  626. (value.priv "My new comment"
  627. value.shared "foo's bar"))
  628. S: a OK Store complete
  629. In the above example, the entry "/comment" is created (if not
  630. already present) and the private and shared "value" attributes are
  631. created if not already present, or replaced if they exist.
  632. 4.6. ANNOTATION Interaction with COPY
  633. The COPY command can be used to move messages from one mailbox to
  634. another on the same server. Servers that support the ANNOTATION
  635. extension MUST, for each message being copied, copy all ".priv"
  636. annotation data for the current user only, and all ".shared"
  637. annotation data along with the message to the new mailbox. The only
  638. exceptions to this are if the destination mailbox permissions are
  639. such that either the ".priv" or ".shared" annotations are not
  640. allowed, or if the destination mailbox is of a type that does not
  641. support annotations or does not support storing of annotations (a
  642. mailbox that returns a "NONE" or "READ-ONLY" response code in its
  643. ANNOTATIONS response), or if the destination mailbox cannot support
  644. the size of an annotation because it exceeds the ANNOTATIONS value.
  645. Servers MUST NOT copy ".priv" annotation data for users other than
  646. the current user.
  647. 4.7. ANNOTATION Message Data Item in APPEND
  648. ANNOTATION <parenthesized entry-attribute-value list>
  649. Sets the specified list of entries and attributes in the resulting
  650. message.
  651. The APPEND command can include annotations for the message being
  652. appended via the addition of a new append data item [RFC4466]. The
  653. new data item can also be used with the multi-append [RFC3502]
  654. extension that allows multiple messages to be appended via a single
  655. APPEND command.
  656. Daboo & Gellens Experimental [Page 18]
  657. RFC 5257 IMAP ANNOTATE Extension June 2008
  658. Example:
  659. C: a APPEND drafts ANNOTATION (/comment
  660. (value.priv "Don't send until I say so")) {310}
  661. S: + Ready for literal data
  662. C: MIME-Version: 1.0
  663. ...
  664. C:
  665. S: a OK APPEND completed
  666. In the above example, a comment with a private value is added to a
  667. new message appended to the mailbox. The ellipsis represents the
  668. bulk of the message.
  669. 4.8. ANNOTATION Criterion in SEARCH
  670. ANNOTATION <entry-name> <attribute-name> <value>
  671. The ANNOTATION criterion for the SEARCH command allows a client to
  672. search for a specified string in the value of an annotation entry of
  673. a message.
  674. Messages that have annotations with entries matching <entry-name>,
  675. attributes matching <attribute-name>, and the specified string
  676. <value> in their values are returned in the SEARCH results. The "*"
  677. character can be used in the entry name field to match any content in
  678. those items. The "%" character can be used in the entry name field
  679. to match a single level of hierarchy only.
  680. Only the "value", "value.priv", and "value.shared" attributes can be
  681. searched. Clients MUST NOT specify an attribute other than either
  682. "value", "value.priv", or "value.shared". Servers MUST return a BAD
  683. response if the client tries to search any other attribute.
  684. Example:
  685. C: a SEARCH ANNOTATION /comment value "IMAP4"
  686. S: * SEARCH 2 3 5 7 11 13 17 19 23
  687. S: a OK Search complete
  688. In the above example, the message numbers of any messages
  689. containing the string "IMAP4" in the shared or private "value"
  690. attribute of the "/comment" entry are returned in the search
  691. results.
  692. Daboo & Gellens Experimental [Page 19]
  693. RFC 5257 IMAP ANNOTATE Extension June 2008
  694. Example:
  695. C: a SEARCH ANNOTATION * value.priv "IMAP4"
  696. S: * SEARCH 1 2 3 5 8 13 21 34
  697. S: a OK Search complete
  698. In the above example, the message numbers of any messages
  699. containing the string "IMAP4" in the private "value" attribute of
  700. any entry are returned in the search results.
  701. 4.9. ANNOTATION Key in SORT
  702. ANNOTATION <entry-name> <attribute-name>
  703. The ANNOTATION criterion for the SORT command [RFC5256] instructs the
  704. server to return the sequence numbers or Unique Identifiers (UIDs) of
  705. messages in a mailbox, sorted using the values of the specified
  706. annotations. The ANNOTATION criterion is available if the server
  707. returns both ANNOTATE-EXPERIMENT-1 and SORT as supported capabilities
  708. in the CAPABILITY command response.
  709. Messages are sorted using the values of the <attribute-name>
  710. attributes in the <entry-name> entries.
  711. Clients MUST provide either the ".priv" or ".shared" suffix to the
  712. attribute name to ensure that the server knows which specific value
  713. to sort on.
  714. Only the "value.priv" and "value.shared" attributes can be used for
  715. sorting. Clients MUST NOT specify an attribute other than either
  716. "value.priv" or "value.shared". Servers MUST return a BAD response
  717. if the client tries to sort on any other attribute.
  718. When either "value.priv" or "value.shared" is being sorted, the
  719. server MUST use the character set value specified in the SORT command
  720. to determine the appropriate sort order.
  721. Example:
  722. C: a SORT (ANNOTATION /altsubject value.shared) UTF-8 ALL
  723. S: * SORT 2 3 4 5 1 11 10 6 7 9 8
  724. S: a OK Sort complete
  725. In the above example, the message numbers of all messages are
  726. returned, sorted according to the shared "value" attribute of the
  727. "/altsubject" entry.
  728. Daboo & Gellens Experimental [Page 20]
  729. RFC 5257 IMAP ANNOTATE Extension June 2008
  730. Note that the ANNOTATION sort key must include a fully specified
  731. entry -- wild cards are not allowed.
  732. 4.10. New ACL Rights
  733. As discussed in Section 3.4, this extension adds a new "n" right to
  734. the list of rights provided by the ACL extensions [RFC2086] and
  735. [RFC4314].
  736. 5. Formal Syntax
  737. The following syntax specification uses the Augmented Backus-Naur
  738. Form (ABNF) notation as specified in [RFC5234].
  739. Non-terminals referenced but not defined below are as defined by
  740. [RFC3501] with the new definitions in [RFC4466] superseding those in
  741. [RFC3501].
  742. Except as noted otherwise, all alphabetic characters are case-
  743. insensitive. The use of upper or lower case characters to define
  744. token strings is for editorial clarity only. Implementations MUST
  745. accept these strings in a case-insensitive fashion.
  746. ann-size = "NONE" /
  747. (("READ-ONLY" / nz-number)
  748. [SP "NOPRIVATE"])
  749. ; response codes indicating the level of
  750. ; support for annotations in a mailbox
  751. append-ext =/ att-annotate
  752. ; modifies [RFC3501] extension behaviour
  753. att-annotate = "ANNOTATION" SP
  754. "(" entry-att *(SP entry-att) ")"
  755. att-search = "value" / "value.priv" / "value.shared"
  756. ; the only attributes that can be searched
  757. att-sort = "value.priv" / "value.shared"
  758. ; the only attributes that can be sorted
  759. att-value = attrib SP value
  760. attrib = astring
  761. ; dot-separated attribute name
  762. ; MUST NOT contain "*" or "%"
  763. Daboo & Gellens Experimental [Page 21]
  764. RFC 5257 IMAP ANNOTATE Extension June 2008
  765. attribs = attrib / "(" attrib *(SP attrib) ")"
  766. ; one or more attribute specifiers
  767. capability =/ "ANNOTATE-EXPERIMENT-1"
  768. ; defines the capability for this extension
  769. entries = entry-match /
  770. "(" entry-match *(SP entry-match) ")"
  771. entry = astring
  772. ; slash-separated path to entry
  773. ; MUST NOT contain "*" or "%"
  774. entry-att = entry SP "(" att-value *(SP att-value) ")"
  775. entry-match = list-mailbox
  776. ; slash-separated path to entry
  777. ; MAY contain "*" or "%" for use as wild cards
  778. fetch-att =/ "ANNOTATION" SP "(" entries SP attribs ")"
  779. ; modifies original IMAP fetch-att
  780. msg-att-dynamic =/ "ANNOTATION" SP
  781. ( "(" entry-att *(SP entry-att) ")" /
  782. "(" entry *(SP entry) ")" )
  783. ; extends FETCH response with annotation data
  784. resp-text-code =/ "ANNOTATE" SP "TOOBIG" /
  785. "ANNOTATE" SP "TOOMANY" /
  786. "ANNOTATIONS" SP ann-size
  787. ; new response codes
  788. search-key =/ "ANNOTATION" SP entry-match SP att-search
  789. SP value
  790. ; modifies original IMAP search-key
  791. select-param =/ "ANNOTATE"
  792. ; defines the select parameter used with
  793. ; ANNOTATE extension
  794. sort-key =/ "ANNOTATION" SP entry SP att-sort
  795. ; modifies original sort-key
  796. store-att-flags =/ att-annotate
  797. ; modifies original IMAP STORE command
  798. value = nstring / literal8
  799. Daboo & Gellens Experimental [Page 22]
  800. RFC 5257 IMAP ANNOTATE Extension June 2008
  801. 6. IANA Considerations
  802. Entry names MUST be specified in a standards track or IESG approved
  803. experimental RFC, or fall under the vendor namespace. Vendor names
  804. MUST be registered.
  805. Attribute names MUST be specified in a standards track or IESG
  806. approved experimental RFC.
  807. Each entry registration MUST include a content-type that is used to
  808. indicate the nature of the annotation value. Where applicable, a
  809. charset parameter MUST be included with the content-type.
  810. 6.1. Entry and Attribute Registration Template
  811. To: iana@iana.org
  812. Subject: IMAP Annotate Registration
  813. Please register the following IMAP Annotate item:
  814. [] Entry [] Attribute
  815. Name: ______________________________
  816. Description: _______________________
  817. ____________________________________
  818. ____________________________________
  819. Content-Type:_______________________
  820. Contact person: ____________________
  821. email: ____________________
  822. Daboo & Gellens Experimental [Page 23]
  823. RFC 5257 IMAP ANNOTATE Extension June 2008
  824. 6.2. Entry Registrations
  825. The following templates specify the IANA registrations of annotation
  826. entries specified in this document.
  827. 6.2.1. /comment
  828. To: iana@iana.org
  829. Subject: IMAP Annotate Registration
  830. Please register the following IMAP Annotate item:
  831. [X] Entry [] Attribute
  832. Name: /comment
  833. Description: Defined in IMAP ANNOTATE extension document.
  834. Content-Type: text/plain; charset=utf-8
  835. Contact person: Cyrus Daboo
  836. email: cyrus@daboo.name
  837. 6.2.2. /flags
  838. To: iana@iana.org
  839. Subject: IMAP Annotate Registration
  840. Please register the following IMAP Annotate item:
  841. [X] Entry [] Attribute
  842. Name: /flags
  843. Description: Reserved entry hierarchy.
  844. Content-Type: -
  845. Contact person: Cyrus Daboo
  846. email: cyrus@daboo.name
  847. Daboo & Gellens Experimental [Page 24]
  848. RFC 5257 IMAP ANNOTATE Extension June 2008
  849. 6.2.3. /altsubject
  850. To: iana@iana.org
  851. Subject: IMAP Annotate Registration
  852. Please register the following IMAP Annotate item:
  853. [X] Entry [] Attribute
  854. Name: /altsubject
  855. Description: Defined in IMAP ANNOTATE extension document.
  856. Content-Type: text/plain; charset=utf-8
  857. Contact person: Cyrus Daboo
  858. email: cyrus@daboo.name
  859. 6.2.4. /<section-part>/comment
  860. To: iana@iana.org
  861. Subject: IMAP Annotate Registration
  862. Please register the following IMAP Annotate item:
  863. [X] Entry [] Attribute
  864. Name: /<section-part>/comment
  865. Description: Defined in IMAP ANNOTATE extension document.
  866. Content-Type: text/plain; charset=utf-8
  867. Contact person: Cyrus Daboo
  868. email: cyrus@daboo.name
  869. Daboo & Gellens Experimental [Page 25]
  870. RFC 5257 IMAP ANNOTATE Extension June 2008
  871. 6.2.5. /<section-part>/flags/seen
  872. To: iana@iana.org
  873. Subject: IMAP Annotate Registration
  874. Please register the following IMAP Annotate item:
  875. [X] Entry [] Attribute
  876. Name: /<section-part>/flags/seen
  877. Description: Defined in IMAP ANNOTATE extension document.
  878. Content-Type: text/plain; charset=utf-8
  879. Contact person: Cyrus Daboo
  880. email: cyrus@daboo.name
  881. 6.2.6. /<section-part>/flags/answered
  882. To: iana@iana.org
  883. Subject: IMAP Annotate Registration
  884. Please register the following IMAP Annotate item:
  885. [X] Entry [] Attribute
  886. Name: /<section-part>/flags/answered
  887. Description: Defined in IMAP ANNOTATE extension document.
  888. Content-Type: text/plain; charset=utf-8
  889. Contact person: Cyrus Daboo
  890. email: cyrus@daboo.name
  891. Daboo & Gellens Experimental [Page 26]
  892. RFC 5257 IMAP ANNOTATE Extension June 2008
  893. 6.2.7. /<section-part>/flags/flagged
  894. To: iana@iana.org
  895. Subject: IMAP Annotate Registration
  896. Please register the following IMAP Annotate item:
  897. [X] Entry [] Attribute
  898. Name: /<section-part>/flags/flagged
  899. Description: Defined in IMAP ANNOTATE extension document.
  900. Content-Type: text/plain; charset=utf-8
  901. Contact person: Cyrus Daboo
  902. email: cyrus@daboo.name
  903. 6.2.8. /<section-part>/flags/forwarded
  904. To: iana@iana.org
  905. Subject: IMAP Annotate Registration
  906. Please register the following IMAP Annotate item:
  907. [X] Entry [] Attribute
  908. Name: /<section-part>/flags/forwarded
  909. Description: Defined in IMAP ANNOTATE extension document.
  910. Content-Type: text/plain; charset=utf-8
  911. Contact person: Cyrus Daboo
  912. email: cyrus@daboo.name
  913. Daboo & Gellens Experimental [Page 27]
  914. RFC 5257 IMAP ANNOTATE Extension June 2008
  915. 6.3. Attribute Registrations
  916. The following templates specify the IANA registrations of annotation
  917. attributes specified in this document.
  918. 6.3.1. value
  919. To: iana@iana.org
  920. Subject: IMAP Annotate Registration
  921. Please register the following IMAP Annotate item:
  922. [] Entry [X] Attribute
  923. Name: value
  924. Description: Defined in IMAP ANNOTATE extension document.
  925. Contact person: Cyrus Daboo
  926. email: cyrus@daboo.name
  927. 6.3.2. size
  928. To: iana@iana.org
  929. Subject: IMAP Annotate Registration
  930. Please register the following IMAP Annotate item:
  931. [] Entry [X] Attribute
  932. Name: size
  933. Description: Defined in IMAP ANNOTATE extension document.
  934. Contact person: Cyrus Daboo
  935. email: cyrus@daboo.name
  936. 6.4. Capability Registration
  937. This document registers "ANNOTATE-EXPERIMENT-1" as an IMAPEXT
  938. capability.
  939. Daboo & Gellens Experimental [Page 28]
  940. RFC 5257 IMAP ANNOTATE Extension June 2008
  941. 7. Internationalization Considerations
  942. Annotations may contain values that include text strings, and both
  943. searching and sorting are possible with annotations. Servers MUST
  944. follow standard IMAP text normalization, character set conversion,
  945. and collation rules when such operations are carried out, as would be
  946. done for other textual fields being searched or sorted on.
  947. 8. Security Considerations
  948. Annotations whose values are intended to remain private MUST be
  949. stored in ".priv" values instead of ".shared" values, which may be
  950. accessible to other users.
  951. Excluding the above issues, the ANNOTATE extension does not raise any
  952. security considerations that are not present in the base IMAP
  953. protocol; these issues are discussed in [RFC3501].
  954. 9. References
  955. 9.1. Normative References
  956. [RFC2086] Myers, J., "IMAP4 ACL extension", RFC 2086, January 1997.
  957. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
  958. Requirement Levels", BCP 14, RFC 2119, March 1997.
  959. [RFC2244] Newman, C. and J. Myers, "ACAP -- Application
  960. Configuration Access Protocol", RFC 2244, November 1997.
  961. [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
  962. 4rev1", RFC 3501, March 2003.
  963. [RFC3502] Crispin, M., "Internet Message Access Protocol (IMAP) -
  964. MULTIAPPEND Extension", RFC 3502, March 2003.
  965. [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
  966. 10646", STD 63, RFC 3629, November 2003.
  967. [RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension",
  968. RFC 4314, December 2005.
  969. [RFC4466] Melnikov, A. and C. Daboo, "Collected Extensions to IMAP4
  970. ABNF", RFC 4466, April 2006.
  971. [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for
  972. Syntax Specifications: ABNF", STD 68, RFC 5234, January
  973. 2008.
  974. Daboo & Gellens Experimental [Page 29]
  975. RFC 5257 IMAP ANNOTATE Extension June 2008
  976. [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access
  977. Protocol - SORT and THREAD Extensions", RFC 5256, June
  978. 2008.
  979. 9.2. Informative References
  980. [RFC4551] Melnikov, A. and S. Hole, "IMAP Extension for Conditional
  981. STORE Operation or Quick Flag Changes Resynchronization",
  982. RFC 4551, June 2006.
  983. 10. Acknowledgments
  984. Many thanks to Chris Newman for his detailed comments on the first
  985. draft of this document, and to the participants at the ACAP working
  986. dinner in Pittsburgh. The participants of the IMAPext working group
  987. made significant contributions to this work.
  988. Authors' Addresses
  989. Cyrus Daboo
  990. Apple Inc.
  991. 1 Infinite Loop
  992. Cupertino, CA 95014
  993. USA
  994. EMail: cyrus@daboo.name
  995. URI: http://www.apple.com/
  996. Randall Gellens
  997. QUALCOMM Incorporated
  998. 5775 Morehouse Dr.
  999. San Diego, CA 92121-2779
  1000. USA
  1001. EMail: randy@qualcomm.com
  1002. Daboo & Gellens Experimental [Page 30]
  1003. RFC 5257 IMAP ANNOTATE Extension June 2008
  1004. Full Copyright Statement
  1005. Copyright (C) The IETF Trust (2008).
  1006. This document is subject to the rights, licenses and restrictions
  1007. contained in BCP 78, and except as set forth therein, the authors
  1008. retain all their rights.
  1009. This document and the information contained herein are provided on an
  1010. "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
  1011. OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
  1012. THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
  1013. OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
  1014. THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
  1015. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1016. Intellectual Property
  1017. The IETF takes no position regarding the validity or scope of any
  1018. Intellectual Property Rights or other rights that might be claimed to
  1019. pertain to the implementation or use of the technology described in
  1020. this document or the extent to which any license under such rights
  1021. might or might not be available; nor does it represent that it has
  1022. made any independent effort to identify any such rights. Information
  1023. on the procedures with respect to rights in RFC documents can be
  1024. found in BCP 78 and BCP 79.
  1025. Copies of IPR disclosures made to the IETF Secretariat and any
  1026. assurances of licenses to be made available, or the result of an
  1027. attempt made to obtain a general license or permission for the use of
  1028. such proprietary rights by implementers or users of this
  1029. specification can be obtained from the IETF on-line IPR repository at
  1030. http://www.ietf.org/ipr.
  1031. The IETF invites any interested party to bring to its attention any
  1032. copyrights, patents or patent applications, or other proprietary
  1033. rights that may cover technology that may be required to implement
  1034. this standard. Please address the information to the IETF at
  1035. ietf-ipr@ietf.org.
  1036. Daboo & Gellens Experimental [Page 31]