rfc4314.IMAP4_ACL_extension.txt 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515
  1. Network Working Group A. Melnikov
  2. Request for Comments: 4314 Isode Ltd.
  3. Obsoletes: 2086 December 2005
  4. Category: Standards Track
  5. IMAP4 Access Control List (ACL) Extension
  6. Status of this Memo
  7. This document specifies an Internet standards track protocol for the
  8. Internet community, and requests discussion and suggestions for
  9. improvements. Please refer to the current edition of the "Internet
  10. Official Protocol Standards" (STD 1) for the standardization state
  11. and status of this protocol. Distribution of this memo is unlimited.
  12. Copyright Notice
  13. Copyright (C) The Internet Society (2005).
  14. Abstract
  15. The Access Control List (ACL) extension (RFC 2086) of the Internet
  16. Message Access Protocol (IMAP) permits mailbox access control lists
  17. to be retrieved and manipulated through the IMAP protocol.
  18. This document is a revision of RFC 2086. It defines several new
  19. access control rights and clarifies which rights are required for
  20. different IMAP commands.
  21. Melnikov Standards Track [Page 1]
  22. RFC 4314 IMAP ACL December 2005
  23. Table of Contents
  24. 1. Introduction and Overview .......................................3
  25. 1.1. Conventions Used in This Document ..........................3
  26. 2. Access Control ..................................................3
  27. 2.1. Standard Rights ............................................5
  28. 2.1.1. Obsolete Rights .....................................5
  29. 2.2. Rights Defined in RFC 2086 .................................8
  30. 3. Access control management commands and responses ................8
  31. 3.1. SETACL Command .............................................8
  32. 3.2. DELETEACL Command ..........................................9
  33. 3.3. GETACL Command ............................................10
  34. 3.4. LISTRIGHTS Command ........................................10
  35. 3.5. MYRIGHTS Command ..........................................11
  36. 3.6. ACL Response ..............................................11
  37. 3.7. LISTRIGHTS Response .......................................12
  38. 3.8. MYRIGHTS Response .........................................12
  39. 4. Rights Required to Perform Different IMAP4rev1 Commands ........12
  40. 5. Other Considerations ...........................................17
  41. 5.1. Additional Requirements and Implementation Notes ..........17
  42. 5.1.1. Servers ............................................17
  43. 5.1.2. Clients ............................................18
  44. 5.2. Mapping of ACL Rights to READ-WRITE and READ-ONLY
  45. Response Codes ............................................19
  46. 6. Security Considerations ........................................20
  47. 7. Formal Syntax ..................................................21
  48. 8. IANA Considerations ............................................22
  49. 9. Internationalization Considerations ............................22
  50. Appendix A. Changes since RFC 2086 ................................23
  51. Appendix B. Compatibility with RFC 2086 ...........................24
  52. Appendix C. Known Deficiencies ....................................24
  53. Appendix D. Acknowledgements ......................................25
  54. Normative References ..............................................25
  55. Informative References ............................................25
  56. Melnikov Standards Track [Page 2]
  57. RFC 4314 IMAP ACL December 2005
  58. 1. Introduction and Overview
  59. The ACL (Access Control List) extension of the Internet Message
  60. Access Protocol [IMAP4] permits mailbox access control lists to be
  61. retrieved and manipulated through the IMAP protocol.
  62. This document is a revision of RFC 2086 [RFC2086]. It tries to
  63. clarify different ambiguities in RFC 2086, in particular, the use of
  64. UTF-8 [UTF-8] in access identifiers, which rights are required for
  65. different IMAP4 commands, and how READ-WRITE/READ-ONLY response codes
  66. are related to ACL.
  67. 1.1. Conventions Used in This Document
  68. In examples, "C:" and "S:" indicate lines sent by the client and
  69. server respectively.
  70. In all examples "/" character is used as hierarchy separator.
  71. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  72. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
  73. document are to be interpreted as described in RFC 2119 [KEYWORDS].
  74. The phrase "ACL server" is just a shortcut for saying "IMAP server
  75. that supports ACL extension as defined in this document".
  76. 2. Access Control
  77. The ACL extension is present in any IMAP4 implementation that returns
  78. "ACL" as one of the supported capabilities to the CAPABILITY command.
  79. A server implementation conformant to this document MUST also return
  80. rights (see below) not defined in Section 2.2 in the "RIGHTS="
  81. capability.
  82. An access control list is a set of <access identifier,rights> pairs.
  83. An ACL applies to a mailbox name.
  84. Access identifier (or just "identifier") is a UTF-8 [UTF-8] string.
  85. The identifier "anyone" is reserved to refer to the universal
  86. identity (all authentications, including anonymous). All user name
  87. strings accepted by the LOGIN or AUTHENTICATE commands to
  88. authenticate to the IMAP server are reserved as identifiers for the
  89. corresponding users. Identifiers starting with a dash ("-") are
  90. reserved for "negative rights", described below. All other
  91. identifier strings are interpreted in an implementation-defined
  92. manner.
  93. Melnikov Standards Track [Page 3]
  94. RFC 4314 IMAP ACL December 2005
  95. Rights is a string listing a (possibly empty) set of alphanumeric
  96. characters, each character listing a set of operations that is being
  97. controlled. Lowercase letters are reserved for "standard" rights,
  98. listed in Section 2.1. (Note that for compatibility with deployed
  99. clients and servers uppercase rights are not allowed.) The set of
  100. standard rights can only be extended by a standards-track document.
  101. Digits are reserved for implementation- or site-defined rights.
  102. An implementation MAY tie rights together or MAY force rights to
  103. always or never be granted to particular identifiers. For example,
  104. in an implementation that uses UNIX mode bits, the rights "swite" are
  105. tied, the "a" right is always granted to the owner of a mailbox and
  106. is never granted to another user. If rights are tied in an
  107. implementation, the implementation must be conservative in granting
  108. rights in response to SETACL commands--unless all rights in a tied
  109. set are specified, none of that set should be included in the ACL
  110. entry for that identifier. A client can discover the set of rights
  111. that may be granted to a given identifier in the ACL for a given
  112. mailbox name by using the LISTRIGHTS command.
  113. It is possible for multiple identifiers in an access control list to
  114. apply to a given user. For example, an ACL may include rights to be
  115. granted to the identifier matching the user, one or more
  116. implementation-defined identifiers matching groups that include the
  117. user, and/or the identifier "anyone". How these rights are combined
  118. to determine the user's access is implementation defined. An
  119. implementation may choose, for example, to use the union of the
  120. rights granted to the applicable identifiers. An implementation may
  121. instead choose, for example, to use only those rights granted to the
  122. most specific identifier present in the ACL. A client can determine
  123. the set of rights granted to the logged-in user for a given mailbox
  124. name by using the MYRIGHTS command.
  125. When an identifier in an ACL starts with a dash ("-"), that indicates
  126. that associated rights are to be removed from the identifier prefixed
  127. by the dash. This is referred to as a "negative right". This
  128. differs from DELETEACL in that a negative right is added to the ACL
  129. and is a part of the calculation of the rights.
  130. Let's assume that an identifier "fred" refers to a user with login
  131. "fred". If the identifier "-fred" is granted the "w" right, that
  132. indicates that the "w" right is to be removed from users matching the
  133. identifier "fred", even though the user "fred" might have the "w"
  134. right as a consequence of some other identifier in the ACL. A
  135. DELETEACL of "fred" simply deletes the identifier "fred" from the
  136. ACL; it does not affect any rights that the user "fred" may get from
  137. another entry in the ACL, in particular it doesn't affect rights
  138. granted to the identifier "-fred".
  139. Melnikov Standards Track [Page 4]
  140. RFC 4314 IMAP ACL December 2005
  141. Server implementations are not required to support "negative right"
  142. identifiers.
  143. 2.1. Standard Rights
  144. The currently defined standard rights are (note that the list below
  145. doesn't list all commands that use a particular right):
  146. l - lookup (mailbox is visible to LIST/LSUB commands, SUBSCRIBE
  147. mailbox)
  148. r - read (SELECT the mailbox, perform STATUS)
  149. s - keep seen/unseen information across sessions (set or clear
  150. \SEEN flag via STORE, also set \SEEN during APPEND/COPY/
  151. FETCH BODY[...])
  152. w - write (set or clear flags other than \SEEN and \DELETED via
  153. STORE, also set them during APPEND/COPY)
  154. i - insert (perform APPEND, COPY into mailbox)
  155. p - post (send mail to submission address for mailbox,
  156. not enforced by IMAP4 itself)
  157. k - create mailboxes (CREATE new sub-mailboxes in any
  158. implementation-defined hierarchy, parent mailbox for the new
  159. mailbox name in RENAME)
  160. x - delete mailbox (DELETE mailbox, old mailbox name in RENAME)
  161. t - delete messages (set or clear \DELETED flag via STORE, set
  162. \DELETED flag during APPEND/COPY)
  163. e - perform EXPUNGE and expunge as a part of CLOSE
  164. a - administer (perform SETACL/DELETEACL/GETACL/LISTRIGHTS)
  165. 2.1.1. Obsolete Rights
  166. Due to ambiguity in RFC 2086, some existing RFC 2086 server
  167. implementations use the "c" right to control the DELETE command.
  168. Others chose to use the "d" right to control the DELETE command. For
  169. the former group, let's define the "create" right as union of the "k"
  170. and "x" rights, and the "delete" right as union of the "e" and "t"
  171. rights. For the latter group, let's define the "create" rights as a
  172. synonym to the "k" right, and the "delete" right as union of the "e",
  173. "t", and "x" rights.
  174. For compatibility with RFC 2086, this section defines two virtual
  175. rights "d" and "c".
  176. If a client includes the "d" right in a rights list, then it MUST be
  177. treated as if the client had included every member of the "delete"
  178. right. (It is not an error for a client to specify both the "d"
  179. right and one or more members of the "delete" right, but the effect
  180. is no different than if just the "d" right or all members of the
  181. "delete" right had been specified.)
  182. Melnikov Standards Track [Page 5]
  183. RFC 4314 IMAP ACL December 2005
  184. When any of the "delete" member rights is set in a list of rights,
  185. the server MUST also include the "d" right when returning the list in
  186. a MYRIGHTS or ACL response. This is to enable older clients
  187. conforming to RFC 2086 to work with newer servers. (*)
  188. Example: C: A001 SeTacl INBOX/Drafts David lrswida
  189. S: A001 OK Setacl complete
  190. The client has specified the "d" right in the SETACL command above
  191. and it expands to "et" on the server:
  192. C: A002 getacl INBOX/Drafts
  193. S: * ACL INBOX Fred rwipslxcetda David lrswideta
  194. S: A002 OK Getacl complete
  195. If the identifier specified in the LISTRIGHTS command can be granted
  196. any of the "delete" member rights on a mailbox, then the server MUST
  197. include the "d" right in the corresponding LISTRIGHTS response. (*)
  198. If the member rights aren't tied to non-member rights, then the "d"
  199. right is returned by itself in the LISTRIGHTS response. If any of
  200. the member rights needs to be tied to one (or more) non-member right,
  201. then the "d" right and all of the member rights need to be tied to
  202. the same non-member right(s) (**).
  203. If a client includes the "c" right in a rights list, then it MUST be
  204. treated as if the client had included every member of the "create"
  205. right. (It is not an error for a client to specify both the "c"
  206. right and one or more members of the "create" right, but the effect
  207. is no different than if just the "c" right or all members of the
  208. "create" right had been specified.)
  209. When any of the "create" member rights is set in a list of rights,
  210. the server MUST also include the "c" right when returning the list in
  211. a MYRIGHTS or ACL response. This is to enable older clients
  212. conforming to RFC 2086 to work with newer servers. (*)
  213. Example: C: A003 Setacl INBOX/Drafts Byron lrswikda
  214. S: A001 OK Setacl complete
  215. C: A002 getAcl INBOX/Drafts
  216. S: * ACL INBOX Fred rwipslxcetda Byron lrswikcdeta
  217. S: A002 OK Getacl complete
  218. The client has specified the "d" right in the SETACL command above
  219. and it expands to "et" on the server: As the client has specified the
  220. "k" right (which is a member of the "c" right), the server also
  221. returns the "c" right.
  222. Melnikov Standards Track [Page 6]
  223. RFC 4314 IMAP ACL December 2005
  224. If the identifier specified in the LISTRIGHTS command can be granted
  225. any of the "create" member rights on a mailbox, then the server MUST
  226. include the "c" right in the corresponding LISTRIGHTS response. (*)
  227. If the member rights aren't tied to non-member rights, then the "c"
  228. right is returned by itself in the LISTRIGHTS response. If any of
  229. the member rights needs to be tied to one (or more) non-member right,
  230. then the "c" right and all of the member rights need to be tied to
  231. the same non-member right(s) (**).
  232. Example: The server that ties the rights as follows:
  233. lr s w i p k x t
  234. and c=k
  235. will return:
  236. S: * LISTRIGHTS archive/imap anyone ""
  237. lr s w i p k x t c d
  238. Example: The server that ties the rights as follows:
  239. lr s w i p k xte
  240. and c=k
  241. will return:
  242. S: * LISTRIGHTS archive/imap anyone ""
  243. lr s w i p k xte c d
  244. Example: The server that ties the rights as follows:
  245. lr s w i p k x te
  246. and c=k
  247. will return:
  248. S: * LISTRIGHTS archive/imap anyone ""
  249. lr s w i p k c x te d
  250. Example: The server that ties the rights as follows:
  251. lr swte i p k x
  252. and c=kx
  253. Melnikov Standards Track [Page 7]
  254. RFC 4314 IMAP ACL December 2005
  255. will return:
  256. S: * LISTRIGHTS archive/imap anyone ""
  257. lr swted i p k x c
  258. (*) Clients conforming to this document MUST ignore the virtual "d"
  259. and "c" rights in MYRIGHTS, ACL, and LISTRIGHTS responses.
  260. (**) The IMAPEXT Working Group has debated this issue in great length
  261. and after reviewing existing ACL implementations concluded that
  262. this is a reasonable restriction.
  263. 2.2. Rights Defined in RFC 2086
  264. The "RIGHTS=" capability MUST NOT include any of the rights defined
  265. in RFC 2086: "l", "r", "s", "w", "i", "p", "a", "c", "d", and the
  266. digits ("0" .. "9").
  267. 3. Access control management commands and responses
  268. Servers, when processing a command that has an identifier as a
  269. parameter (i.e., any of SETACL, DELETEACL, and LISTRIGHTS commands),
  270. SHOULD first prepare the received identifier using "SASLprep" profile
  271. [SASLprep] of the "stringprep" algorithm [Stringprep]. If the
  272. preparation of the identifier fails or results in an empty string,
  273. the server MUST refuse to perform the command with a BAD response.
  274. Note that Section 6 recommends additional identifier's verification
  275. steps.
  276. 3.1. SETACL Command
  277. Arguments: mailbox name
  278. identifier
  279. access right modification
  280. Data: no specific data for this command
  281. Result: OK - setacl completed
  282. NO - setacl failure: can't set acl
  283. BAD - arguments invalid
  284. The SETACL command changes the access control list on the specified
  285. mailbox so that the specified identifier is granted permissions as
  286. specified in the third argument.
  287. The third argument is a string containing an optional plus ("+") or
  288. minus ("-") prefix, followed by zero or more rights characters. If
  289. the string starts with a plus, the following rights are added to any
  290. Melnikov Standards Track [Page 8]
  291. RFC 4314 IMAP ACL December 2005
  292. existing rights for the identifier. If the string starts with a
  293. minus, the following rights are removed from any existing rights for
  294. the identifier. If the string does not start with a plus or minus,
  295. the rights replace any existing rights for the identifier.
  296. Note that an unrecognized right MUST cause the command to return the
  297. BAD response. In particular, the server MUST NOT silently ignore
  298. unrecognized rights.
  299. Example: C: A001 GETACL INBOX/Drafts
  300. S: * ACL INBOX/Drafts Fred rwipslxetad Chris lrswi
  301. S: A001 OK Getacl complete
  302. C: A002 SETACL INBOX/Drafts Chris +cda
  303. S: A002 OK Setacl complete
  304. C: A003 GETACL INBOX/Drafts
  305. S: * ACL INBOX/Drafts Fred rwipslxetad Chris lrswicdakxet
  306. S: A003 OK Getacl complete
  307. C: A035 SETACL INBOX/Drafts John lrQswicda
  308. S: A035 BAD Uppercase rights are not allowed
  309. C: A036 SETACL INBOX/Drafts John lrqswicda
  310. S: A036 BAD The q right is not supported
  311. 3.2. DELETEACL Command
  312. Arguments: mailbox name
  313. identifier
  314. Data: no specific data for this command
  315. Result: OK - deleteacl completed
  316. NO - deleteacl failure: can't delete acl
  317. BAD - arguments invalid
  318. The DELETEACL command removes any <identifier,rights> pair for the
  319. specified identifier from the access control list for the specified
  320. mailbox.
  321. Example: C: B001 getacl INBOX
  322. S: * ACL INBOX Fred rwipslxetad -Fred wetd $team w
  323. S: B001 OK Getacl complete
  324. C: B002 DeleteAcl INBOX Fred
  325. S: B002 OK Deleteacl complete
  326. Melnikov Standards Track [Page 9]
  327. RFC 4314 IMAP ACL December 2005
  328. C: B003 GETACL INBOX
  329. S: * ACL INBOX -Fred wetd $team w
  330. S: B003 OK Getacl complete
  331. 3.3. GETACL Command
  332. Arguments: mailbox name
  333. Data: untagged responses: ACL
  334. Result: OK - getacl completed
  335. NO - getacl failure: can't get acl
  336. BAD - arguments invalid
  337. The GETACL command returns the access control list for mailbox in an
  338. untagged ACL response.
  339. Some implementations MAY permit multiple forms of an identifier to
  340. reference the same IMAP account. Usually, such implementations will
  341. have a canonical form that is stored internally. An ACL response
  342. caused by a GETACL command MAY include a canonicalized form of the
  343. identifier that might be different from the one used in the
  344. corresponding SETACL command.
  345. Example: C: A002 GETACL INBOX
  346. S: * ACL INBOX Fred rwipsldexta
  347. S: A002 OK Getacl complete
  348. 3.4. LISTRIGHTS Command
  349. Arguments: mailbox name
  350. identifier
  351. Data: untagged responses: LISTRIGHTS
  352. Result: OK - listrights completed
  353. NO - listrights failure: can't get rights list
  354. BAD - arguments invalid
  355. The LISTRIGHTS command takes a mailbox name and an identifier and
  356. returns information about what rights can be granted to the
  357. identifier in the ACL for the mailbox.
  358. Some implementations MAY permit multiple forms of an identifier to
  359. reference the same IMAP account. Usually, such implementations will
  360. have a canonical form that is stored internally. A LISTRIGHTS
  361. Melnikov Standards Track [Page 10]
  362. RFC 4314 IMAP ACL December 2005
  363. response caused by a LISTRIGHTS command MUST always return the same
  364. form of an identifier as specified by the client. This is to allow
  365. the client to correlate the response with the command.
  366. Example: C: a001 LISTRIGHTS ~/Mail/saved smith
  367. S: * LISTRIGHTS ~/Mail/saved smith la r swicdkxte
  368. S: a001 OK Listrights completed
  369. Example: C: a005 listrights archive/imap anyone
  370. S: * LISTRIGHTS archive.imap anyone ""
  371. l r s w i p k x t e c d a 0 1 2 3 4 5 6 7 8 9
  372. S: a005 Listrights successful
  373. 3.5. MYRIGHTS Command
  374. Arguments: mailbox name
  375. Data: untagged responses: MYRIGHTS
  376. Result: OK - myrights completed
  377. NO - myrights failure: can't get rights
  378. BAD - arguments invalid
  379. The MYRIGHTS command returns the set of rights that the user has to
  380. mailbox in an untagged MYRIGHTS reply.
  381. Example: C: A003 MYRIGHTS INBOX
  382. S: * MYRIGHTS INBOX rwiptsldaex
  383. S: A003 OK Myrights complete
  384. 3.6. ACL Response
  385. Data: mailbox name
  386. zero or more identifier rights pairs
  387. The ACL response occurs as a result of a GETACL command. The first
  388. string is the mailbox name for which this ACL applies. This is
  389. followed by zero or more pairs of strings; each pair contains the
  390. identifier for which the entry applies followed by the set of rights
  391. that the identifier has.
  392. Section 2.1.1 details additional server requirements related to
  393. handling of the virtual "d" and "c" rights.
  394. Melnikov Standards Track [Page 11]
  395. RFC 4314 IMAP ACL December 2005
  396. 3.7. LISTRIGHTS Response
  397. Data: mailbox name
  398. identifier
  399. required rights
  400. list of optional rights
  401. The LISTRIGHTS response occurs as a result of a LISTRIGHTS command.
  402. The first two strings are the mailbox name and identifier for which
  403. this rights list applies. Following the identifier is a string
  404. containing the (possibly empty) set of rights the identifier will
  405. always be granted in the mailbox.
  406. Following this are zero or more strings each containing a set of
  407. rights the identifier can be granted in the mailbox. Rights
  408. mentioned in the same string are tied together. The server MUST
  409. either grant all tied rights to the identifier in the mailbox or
  410. grant none. Section 2.1.1 details additional server requirements
  411. related to handling of the virtual "d" and "c" rights.
  412. The same right MUST NOT be listed more than once in the LISTRIGHTS
  413. command.
  414. 3.8. MYRIGHTS Response
  415. Data: mailbox name
  416. rights
  417. The MYRIGHTS response occurs as a result of a MYRIGHTS command. The
  418. first string is the mailbox name for which these rights apply. The
  419. second string is the set of rights that the client has.
  420. Section 2.1.1 details additional server requirements related to
  421. handling of the virtual "d" and "c" rights.
  422. 4. Rights Required to Perform Different IMAP4rev1 Commands
  423. Before executing a command, an ACL-compliant server MUST check which
  424. rights are required to perform it. This section groups command by
  425. functions they perform and list the rights required. It also gives
  426. the detailed description of any special processing required.
  427. For the purpose of this section the UID counterpart of a command is
  428. considered to be the same command, e.g., both UID COPY and COPY
  429. commands require the same set of rights.
  430. Melnikov Standards Track [Page 12]
  431. RFC 4314 IMAP ACL December 2005
  432. The table below summarizes different rights or their combinations
  433. that are required in order to perform different IMAP operations. As
  434. it is not always possible to express complex right checking and
  435. interactions, the description after the table should be used as the
  436. primary reference.
  437. +-------------------+---+---+---+---+---+---+---+---+---+---+---+---+
  438. |Operations\Rights | l | r | s | w | i | k | x | t | e | a |Any|Non|
  439. +-------------------+---+---+---+---+---+---+---+---+---+---+---+---+
  440. | commands in authenticated state |
  441. +-------------------------------------------------------------------+
  442. | LIST | + | | | | | | | | | | | |
  443. | SUBSCRIBE | * | | | | | | | | | | | * |
  444. | UNSUBSCRIBE | | | | | | | | | | | | + |
  445. | LSUB | * | | | | | | | | | | | * |
  446. |CREATE (for parent)| | | | | | + | | | | | | |
  447. | DELETE | | ? | | | | | + | ? | ? | | | |
  448. | RENAME | | | | | | + | + | | | | | |
  449. | SELECT/EXAMINE | | + | | | | | | | | | | |
  450. | STATUS | | + | | | | | | | | | | |
  451. | SETACL/DELETEACL | | | | | | | | | | + | | |
  452. | GETACL/LISTRIGHTS | | | | | | | | | | + | | |
  453. | MYRIGHTS | | | | | | | | | | | + | |
  454. | APPEND | | | ? | ? | + | | | ? | | | | |
  455. +-------------------------------------------------------------------+
  456. | commands in selected state |
  457. +-------------------------------------------------------------------+
  458. | COPY | | | ? | ? | + | | | ? | | | | |
  459. | EXPUNGE | | | | | | | | | + | | | |
  460. | CLOSE | | | | | | | | | ? | | | |
  461. | FETCH | | | ? | | | | | | | | | |
  462. | STORE flags | | | ? | ? | | | | ? | | | | |
  463. +-------------------+---+---+---+---+---+---+---+---+---+---+---+---+
  464. Note: for all commands in the selected state, the "r" is implied,
  465. because it is required to SELECT/EXAMINE a mailbox. Servers are not
  466. required to check presence of the "r" right once a mailbox is
  467. successfully selected.
  468. Legend:
  469. + - The right is required
  470. * - Only one of the rights marked with * is required
  471. (see description below)
  472. ? - The right is OPTIONAL (see description below)
  473. "Any" - at least one of the "l", "r", "i", "k", "x", "a" rights is
  474. required
  475. "Non" - No rights required to perform the command
  476. Melnikov Standards Track [Page 13]
  477. RFC 4314 IMAP ACL December 2005
  478. Listing and subscribing/unsubscribing mailboxes:
  479. LIST - "l" right is required. However, unlike other commands
  480. (e.g., SELECT) the server MUST NOT return a NO response if it
  481. can't list a mailbox.
  482. Note that if the user has "l" right to a mailbox "A/B", but not to
  483. its parent mailbox "A", the LIST command should behave as if the
  484. mailbox "A" doesn't exist, for example:
  485. C: A777 LIST "" *
  486. S: * LIST (\NoInferiors) "/" "A/B"
  487. S: * LIST () "/" "C"
  488. S: * LIST (\NoInferiors) "/" "C/D"
  489. S: A777 OK LIST completed
  490. SUBSCRIBE - "l" right is required only if the server checks for
  491. mailbox existence when performing SUBSCRIBE.
  492. UNSUBSCRIBE - no rights required to perform this operation.
  493. LSUB - "l" right is required only if the server checks for mailbox
  494. existence when performing SUBSCRIBE. However, unlike other
  495. commands (e.g., SELECT) the server MUST NOT return a NO response
  496. if it can't list a subscribed mailbox.
  497. Mailbox management:
  498. CREATE - "k" right on a nearest existing parent mailbox. When a
  499. new mailbox is created, it SHOULD inherit the ACL from the parent
  500. mailbox (if one exists) in the defined hierarchy.
  501. DELETE - "x" right on the mailbox. Note that some servers don't
  502. allow to delete a non-empty mailbox. If this is the case, the
  503. user would also need "r", "e", and "t" rights, in order to open
  504. the mailbox and empty it.
  505. The DELETE command MUST delete the ACL associated with the deleted
  506. mailbox.
  507. RENAME - Moving a mailbox from one parent to another requires the
  508. "x" right on the mailbox itself and the "k" right for the new
  509. parent. For example, if the user wants to rename the mailbox
  510. named "A/B/C" to "D/E", the user must have the "x" right for the
  511. mailbox "A/B/C" and the "k" right for the mailbox "D".
  512. The RENAME command SHOULD NOT change the ACLs on the renamed
  513. mailbox and submailboxes.
  514. Melnikov Standards Track [Page 14]
  515. RFC 4314 IMAP ACL December 2005
  516. Copying or appending messages:
  517. Before performing a COPY/APPEND command, the server MUST check if
  518. the user has "i" right for the target mailbox. If the user
  519. doesn't have "i" right, the operation fails. Otherwise for each
  520. copied/appended message the server MUST check if the user has
  521. "t" right - when the message has \Deleted flag set
  522. "s" right - when the message has \Seen flag set
  523. "w" right - for all other message flags.
  524. Only when the user has a particular right are the corresponding
  525. flags stored for the newly created message. The server MUST NOT
  526. fail a COPY/APPEND if the user has no rights to set a particular
  527. flag.
  528. Example: C: A003 MYRIGHTS TargetMailbox
  529. S: * MYRIGHTS TargetMailbox rwis
  530. S: A003 OK Myrights complete
  531. C: A004 FETCH 1:3 (FLAGS)
  532. S: * 1 FETCH (FLAGS (\Draft \Deleted)
  533. S: * 2 FETCH (FLAGS (\Answered)
  534. S: * 3 FETCH (FLAGS ($Forwarded \Seen)
  535. S: A004 OK Fetch Completed
  536. C: A005 COPY 1:3 TargetMailbox
  537. S: A005 OK Copy completed
  538. C: A006 SELECT TargetMailbox
  539. ...
  540. S: A006 Select Completed
  541. Let's assume that the copied messages received message numbers
  542. 77:79.
  543. C: A007 FETCH 77:79 (FLAGS)
  544. S: * 77 FETCH (FLAGS (\Draft))
  545. S: * 78 FETCH (FLAGS (\Answered))
  546. S: * 79 FETCH (FLAGS ($Forwarded \Seen))
  547. S: A007 OK Fetch Completed
  548. \Deleted flag was lost on COPY, as the user has no "t" right in
  549. the target mailbox.
  550. If the MYRIGHTS command with the tag A003 would have returned:
  551. S: * MYRIGHTS TargetMailbox rsti
  552. the response from the FETCH with the tag A007 would have been:
  553. C: A007 FETCH 77:79 (FLAGS)
  554. Melnikov Standards Track [Page 15]
  555. RFC 4314 IMAP ACL December 2005
  556. S: * 77 FETCH (FLAGS (\Deleted))
  557. S: * 78 FETCH (FLAGS ())
  558. S: * 79 FETCH (FLAGS (\Seen))
  559. S: A007 OK Fetch Completed
  560. In the latter case, \Answered, $Forwarded, and \Draft flags were
  561. lost on COPY, as the user has no "w" right in the target mailbox.
  562. Expunging the selected mailbox:
  563. EXPUNGE - "e" right on the selected mailbox.
  564. CLOSE - "e" right on the selected mailbox. If the server is
  565. unable to expunge the mailbox because the user doesn't have the
  566. "e" right, the server MUST ignore the expunge request, close the
  567. mailbox, and return the tagged OK response.
  568. Fetch information about a mailbox and its messages:
  569. SELECT/EXAMINE/STATUS - "r" right on the mailbox.
  570. FETCH - A FETCH request that implies setting \Seen flag MUST NOT
  571. set it, if the current user doesn't have "s" right.
  572. Changing flags:
  573. STORE - the server MUST check if the user has
  574. "t" right - when the user modifies \Deleted flag
  575. "s" right - when the user modifies \Seen flag
  576. "w" right - for all other message flags.
  577. STORE operation SHOULD NOT fail if the user has rights to modify
  578. at least one flag specified in the STORE, as the tagged NO
  579. response to a STORE command is not handled very well by deployed
  580. clients.
  581. Changing ACLs:
  582. SETACL/DELETEACL - "a" right on the mailbox.
  583. Reading ACLs:
  584. GETACL - "a" right on the mailbox.
  585. MYRIGHTS - any of the following rights is required to perform the
  586. operation: "l", "r", "i", "k", "x", "a".
  587. LISTRIGHTS - "a" right on the mailbox.
  588. Melnikov Standards Track [Page 16]
  589. RFC 4314 IMAP ACL December 2005
  590. 5. Other Considerations
  591. 5.1. Additional Requirements and Implementation Notes
  592. 5.1.1. Servers
  593. This document defines an additional capability that is used to
  594. announce the list of extra rights (excluding the ones defined in RFC
  595. 2086) supported by the server. The set of rights MUST include "t",
  596. "e", "x", and "k". Note that the extra rights can appear in any
  597. order.
  598. Example: C: 1 capability
  599. S: * CAPABILITY IMAP4REV1 STARTTLS LITERAL+
  600. ACL RIGHTS=texk
  601. S: 1 OK completed
  602. Any server implementing an ACL extension MUST accurately reflect the
  603. current user's rights in FLAGS and PERMANENTFLAGS responses.
  604. Example: C: A142 SELECT INBOX
  605. S: * 172 EXISTS
  606. S: * 1 RECENT
  607. S: * OK [UNSEEN 12] Message 12 is first unseen
  608. S: * OK [UIDVALIDITY 3857529045] UIDs valid
  609. S: * OK [UIDNEXT 4392] Predicted next UID
  610. S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  611. S: * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \*)] L
  612. S: A142 OK [READ-WRITE] SELECT completed
  613. C: A143 MYRIGHTS INBOX
  614. S: * MYRIGHTS INBOX lrwis
  615. S: A143 OK completed
  616. Note that in order to get better performance the client MAY pipeline
  617. SELECT and MYRIGHTS commands:
  618. C: A142 SELECT INBOX
  619. C: A143 MYRIGHTS INBOX
  620. S: * 172 EXISTS
  621. S: * 1 RECENT
  622. S: * OK [UNSEEN 12] Message 12 is first unseen
  623. S: * OK [UIDVALIDITY 3857529045] UIDs valid
  624. S: * OK [UIDNEXT 4392] Predicted next UID
  625. S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  626. S: * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \*)] L
  627. S: A142 OK [READ-WRITE] SELECT completed
  628. S: * MYRIGHTS INBOX lrwis
  629. S: A143 OK completed
  630. Melnikov Standards Track [Page 17]
  631. RFC 4314 IMAP ACL December 2005
  632. Servers MAY cache the rights a user has on a mailbox when the mailbox
  633. is selected, so that if a client's rights on a mailbox are changed
  634. with SETACL or DELETEACL, commands specific to the selected state
  635. (e.g., STORE, EXPUNGE) might not reflect the changed rights until the
  636. mailbox is re-selected. If the server checks the rights on each
  637. command, then it SHOULD send FLAGS and PERMANENTFLAGS responses if
  638. they have changed. If such server detects that the user no longer
  639. has read access to the mailbox, it MAY send an untagged BYE response
  640. and close connection. It MAY also refuse to execute all commands
  641. specific to the selected state until the mailbox is closed; however,
  642. server implementors should note that most clients don't handle NO
  643. responses very well.
  644. An ACL server MAY modify one or more ACLs for one or more identifiers
  645. as a side effect of modifying the ACL specified in a
  646. SETACL/DELETEACL. If the server does that, it MUST send untagged ACL
  647. response(s) to notify the client about the changes made.
  648. An ACL server implementation MUST treat received ACL modification
  649. commands as a possible ambiguity with respect to subsequent commands
  650. affected by the ACL, as described in Section 5.5 of [IMAP4]. Hence a
  651. pipeline SETACL + MYRIGHTS is an ambiguity with respect to the
  652. server, meaning that the server must execute the SETACL command to
  653. completion before the MYRIGHTS. However, clients are permitted to
  654. send such a pipeline.
  655. 5.1.2. Clients
  656. The following requirement is put on clients in order to allow for
  657. future extensibility. A client implementation that allows a user to
  658. read and update ACLs MUST preserve unrecognized rights that it
  659. doesn't allow the user to change. That is, if the client
  660. 1) can read ACLs
  661. and
  662. 2) can update ACLs
  663. but
  664. 3) doesn't allow the user to change the rights the client doesn't
  665. recognize, then it MUST preserve unrecognized rights.
  666. Otherwise the client could risk unintentionally removing permissions
  667. it doesn't understand.
  668. Melnikov Standards Track [Page 18]
  669. RFC 4314 IMAP ACL December 2005
  670. 5.2. Mapping of ACL Rights to READ-WRITE and READ-ONLY Response Codes
  671. A particular ACL server implementation MAY allow "shared multiuser
  672. access" to some mailboxes. "Shared multiuser access" to a mailbox
  673. means that multiple different users are able to access the same
  674. mailbox, if they have proper access rights. "Shared multiuser
  675. access" to the mailbox doesn't mean that the ACL for the mailbox is
  676. currently set to allow access by multiple users. Let's denote a
  677. "shared multiuser write access" as a "shared multiuser access" when a
  678. user can be granted flag modification rights (any of "w", "s", or
  679. "t").
  680. Section 4 describes which rights are required for modifying different
  681. flags.
  682. If the ACL server implements some flags as shared for a mailbox
  683. (i.e., the ACL for the mailbox MAY be set up so that changes to those
  684. flags are visible to another user), let's call the set of rights
  685. associated with these flags (as described in Section 4) for that
  686. mailbox collectively as "shared flag rights". Note that the "shared
  687. flag rights" set MAY be different for different mailboxes.
  688. If the server doesn't support "shared multiuser write access" to a
  689. mailbox or doesn't implement shared flags on the mailbox, "shared
  690. flag rights" for the mailbox is defined to be the empty set.
  691. Example 1: Mailbox "banan" allows "shared multiuser write access" and
  692. implements flags \Deleted, \Answered, and $MDNSent as
  693. shared flags. "Shared flag rights" for the mailbox "banan"
  694. is a set containing flags "t" (because system flag
  695. \Deleted requires "t" right) and "w" (because both
  696. \Answered and $MDNSent require "w" right).
  697. Example 2: Mailbox "apple" allows "shared multiuser write access" and
  698. implements \Seen system flag as shared flag. "Shared flag
  699. rights" for the mailbox "apple" contains "s" right
  700. because system flag \Seen requires "s" right.
  701. Example 3: Mailbox "pear" allows "shared multiuser write access" and
  702. implements flags \Seen, \Draft as shared flags. "Shared
  703. flag rights" for the mailbox "apple" is a set containing
  704. flags "s" (because system flag \Seen requires "s" right)
  705. and "w" (because system flag \Draft requires "w" right).
  706. The server MUST include a READ-ONLY response code in the tagged OK
  707. response to a SELECT command if none of the following rights is
  708. granted to the current user:
  709. Melnikov Standards Track [Page 19]
  710. RFC 4314 IMAP ACL December 2005
  711. "i", "e", and "shared flag rights"(***).
  712. The server SHOULD include a READ-WRITE response code in the tagged OK
  713. response if at least one of the "i", "e", or "shared flag
  714. rights"(***) is granted to the current user.
  715. (***) Note that a future extension to this document can extend the
  716. list of rights that causes the server to return the READ-WRITE
  717. response code.
  718. Example 1 (continued): The user that has "lrs" rights for the mailbox
  719. "banan". The server returns READ-ONLY
  720. response code on SELECT, as none of "iewt"
  721. rights is granted to the user.
  722. Example 2 (continued): The user that has "rit" rights for the mailbox
  723. "apple". The server returns READ-WRITE
  724. response code on SELECT, as the user has "i"
  725. right.
  726. Example 3 (continued): The user that has "rset" rights for the
  727. mailbox "pear". The server returns READ-WRITE
  728. response code on SELECT, as the user has "e"
  729. and "s" rights.
  730. 6. Security Considerations
  731. An implementation MUST make sure the ACL commands themselves do not
  732. give information about mailboxes with appropriately restricted ACLs.
  733. For example, when a user agent executes a GETACL command on a mailbox
  734. that the user has no permission to LIST, the server would respond to
  735. that request with the same error that would be used if the mailbox
  736. did not exist, thus revealing no existence information, much less the
  737. mailbox's ACL.
  738. IMAP clients implementing ACL that are able to modify ACLs SHOULD
  739. warn a user that wants to give full access (or even just the "a"
  740. right) to the special identifier "anyone".
  741. This document relies on [SASLprep] to describe steps required to
  742. perform identifier canonicalization (preparation). The preparation
  743. algorithm in SASLprep was specifically designed such that its output
  744. is canonical, and it is well-formed. However, due to an anomaly
  745. [PR29] in the specification of Unicode normalization, canonical
  746. equivalence is not guaranteed for a select few character sequences.
  747. Identifiers prepared with SASLprep can be stored and returned by an
  748. ACL server. The anomaly affects ACL manipulation and evaluation of
  749. identifiers containing the selected character sequences. These
  750. Melnikov Standards Track [Page 20]
  751. RFC 4314 IMAP ACL December 2005
  752. sequences, however, do not appear in well-formed text. In order to
  753. address this problem, an ACL server MAY reject identifiers containing
  754. sequences described in [PR29] by sending the tagged BAD response.
  755. This is in addition to the requirement to reject identifiers that
  756. fail SASLprep preparation as described in Section 3.
  757. Other security considerations described in [IMAP4] are relevant to
  758. this document. In particular, ACL information is sent in the clear
  759. over the network unless confidentiality protection is negotiated.
  760. This can be accomplished either by the use of STARTTLS, negotiated
  761. privacy protection in the AUTHENTICATE command, or some other
  762. protection mechanism.
  763. 7. Formal Syntax
  764. Formal syntax is defined using ABNF [ABNF], extending the ABNF rules
  765. in Section 9 of [IMAP4]. Elements not defined here can be found in
  766. [ABNF] and [IMAP4].
  767. Except as noted otherwise, all alphabetic characters are case
  768. insensitive. The use of uppercase or lowercase characters to define
  769. token strings is for editorial clarity only. Implementations MUST
  770. accept these strings in a case-insensitive fashion.
  771. LOWER-ALPHA = %x61-7A ;; a-z
  772. acl-data = "ACL" SP mailbox *(SP identifier SP
  773. rights)
  774. capability =/ rights-capa
  775. ;;capability is defined in [IMAP4]
  776. command-auth =/ setacl / deleteacl / getacl /
  777. listrights / myrights
  778. ;;command-auth is defined in [IMAP4]
  779. deleteacl = "DELETEACL" SP mailbox SP identifier
  780. getacl = "GETACL" SP mailbox
  781. identifier = astring
  782. listrights = "LISTRIGHTS" SP mailbox SP identifier
  783. listrights-data = "LISTRIGHTS" SP mailbox SP identifier
  784. SP rights *(SP rights)
  785. Melnikov Standards Track [Page 21]
  786. RFC 4314 IMAP ACL December 2005
  787. mailbox-data =/ acl-data / listrights-data / myrights-data
  788. ;;mailbox-data is defined in [IMAP4]
  789. mod-rights = astring
  790. ;; +rights to add, -rights to remove
  791. ;; rights to replace
  792. myrights = "MYRIGHTS" SP mailbox
  793. myrights-data = "MYRIGHTS" SP mailbox SP rights
  794. new-rights = 1*LOWER-ALPHA
  795. ;; MUST include "t", "e", "x", and "k".
  796. ;; MUST NOT include standard rights listed
  797. ;; in section 2.2
  798. rights = astring
  799. ;; only lowercase ASCII letters and digits
  800. ;; are allowed.
  801. rights-capa = "RIGHTS=" new-rights
  802. ;; RIGHTS=... capability
  803. setacl = "SETACL" SP mailbox SP identifier
  804. SP mod-rights
  805. 8. IANA Considerations
  806. IMAP4 capabilities are registered by publishing a standards-track or
  807. IESG-approved experimental RFC. The registry is currently located
  808. at:
  809. http://www.iana.org/assignments/imap4-capabilities
  810. This document defines the RIGHTS= IMAP capability. IANA has added
  811. this capability to the registry.
  812. 9. Internationalization Considerations
  813. Section 3 states requirements on servers regarding
  814. internationalization of identifiers.
  815. Melnikov Standards Track [Page 22]
  816. RFC 4314 IMAP ACL December 2005
  817. Appendix A. Changes since RFC 2086
  818. 1. Changed the charset of "identifier" from US-ASCII to UTF-8.
  819. 2. Specified that mailbox deletion is controlled by the "x" right
  820. and EXPUNGE is controlled by the "e" right.
  821. 3. Added the "t" right that controls STORE \Deleted. Redefined the
  822. "d" right to be a macro for "e", "t", and possibly "x".
  823. 4. Added the "k" right that controls CREATE. Redefined the "c"
  824. right to be a macro for "k" and possibly "x".
  825. 5. Specified that the "a" right also controls DELETEACL.
  826. 6. Specified that the "r" right also controls STATUS.
  827. 7. Removed the requirement to check the "r" right for CHECK, SEARCH
  828. and FETCH, as this is required for SELECT/EXAMINE to be
  829. successful.
  830. 8. LISTRIGHTS requires the "a" right on the mailbox (same as
  831. SETACL).
  832. 9. Deleted "PARTIAL", this is a deprecated feature of RFC 1730.
  833. 10. Specified that the "w" right controls setting flags other than
  834. \Seen and \Deleted on APPEND. Also specified that the "s" right
  835. controls the \Seen flag and that the "t" right controls the
  836. \Deleted flag.
  837. 11. Specified that SUBSCRIBE is NOT allowed with the "r" right.
  838. 12. Specified that the "l" right controls SUBSCRIBE.
  839. 13. GETACL is NOT allowed with the "r" right, even though there are
  840. several implementations that allows that. If a user only has
  841. "r" right, GETACL can disclose information about identifiers
  842. existing on the mail system.
  843. 14. Clarified that RENAME requires the "k" right for the new parent
  844. and the "x" right for the old name.
  845. 15. Added new section that describes which rights are required
  846. and/or checked when performing various IMAP commands.
  847. 16. Added mail client security considerations when dealing with
  848. special identifier "anyone".
  849. 17. Clarified that negative rights are not the same as DELETEACL.
  850. 18. Added "Compatibility with RFC 2086" section.
  851. 19. Added section about mapping of ACL rights to READ-WRITE and
  852. READ-ONLY response codes.
  853. 20. Changed BNF to ABNF.
  854. 21. Added "Implementation Notes" section.
  855. 22. Updated "References" section.
  856. 23. Added more examples.
  857. 24. Clarified when the virtual "c" and "d" rights are returned in
  858. ACL, MYRIGHTS, and LISTRIGHTS responses.
  859. Melnikov Standards Track [Page 23]
  860. RFC 4314 IMAP ACL December 2005
  861. Appendix B. Compatibility with RFC 2086
  862. This non-normative section gives guidelines as to how an existing RFC
  863. 2086 server implementation may be updated to comply with this
  864. document.
  865. This document splits the "d" right into several new different rights:
  866. "t", "e", and possibly "x" (see Section 2.1.1 for more details). The
  867. "d" right remains for backward-compatibility, but it is a virtual
  868. right. There are two approaches for RFC 2086 server implementors to
  869. handle the "d" right and the new rights that have replaced it:
  870. a. Tie "t", "e" (and possibly "x) together - almost no changes.
  871. b. Implement separate "x", "t" and "e". Return the "d" right in a
  872. MYRIGHTS response or an ACL response containing ACL information
  873. when any of the "t", "e" (and "x") is granted.
  874. In a similar manner this document splits the "c" right into several
  875. new different rights: "k" and possibly "x" (see Section 2.1.1 for
  876. more details). The "c" right remains for backwards-compatibility but
  877. it is a virtual right. Again, RFC 2086 server implementors can
  878. choose to tie rights or to implement separate rights, as described
  879. above.
  880. Also check Sections 5.1.1 and 5.1.2, as well as Appendix A, to see
  881. other changes required. Server implementors should check which
  882. rights are required to invoke different IMAP4 commands as described
  883. in Section 4.
  884. Appendix C. Known Deficiencies
  885. This specification has some known deficiencies including:
  886. 1. This is inadequate to provide complete read-write access to
  887. mailboxes protected by Unix-style rights bits because there is no
  888. equivalent to "chown" and "chgrp" commands nor is there a good
  889. way to discover such limitations are present.
  890. 2. Because this extension leaves the specific semantics of how
  891. rights are combined by the server as implementation defined, the
  892. ability to build a user-friendly interface is limited.
  893. 3. Users, groups, and special identifiers (e.g., anyone) exist in
  894. the same namespace.
  895. The work-in-progress "ACL2" extension is intended to redesign this
  896. extension to address these deficiencies without the constraint of
  897. backward-compatibility and may eventually supercede this facility.
  898. Melnikov Standards Track [Page 24]
  899. RFC 4314 IMAP ACL December 2005
  900. However, RFC 2086 is deployed in multiple implementations so this
  901. intermediate step, which fixes the straightforward deficiencies in a
  902. backward-compatible fashion, is considered worthwhile.
  903. Appendix D. Acknowledgements
  904. This document is a revision of RFC 2086 written by John G. Myers.
  905. Editor appreciates comments received from Mark Crispin, Chris Newman,
  906. Cyrus Daboo, John G. Myers, Dave Cridland, Ken Murchison, Steve Hole,
  907. Vladimir Butenko, Larry Greenfield, Robert Siemborski, Harrie
  908. Hazewinkel, Philip Guenther, Brian Candler, Curtis King, Lyndon
  909. Nerenberg, Lisa Dusseault, Arnt Gulbrandsen, and other participants
  910. of the IMAPEXT working group.
  911. Normative References
  912. [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
  913. Requirement Levels", BCP 14, RFC 2119, March 1997.
  914. [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
  915. Specifications: ABNF", RFC 4234, October 2005.
  916. [IMAP4] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
  917. 4rev1", RFC 3501, March 2003.
  918. [UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO
  919. 10646", STD 63, RFC 3629, November 2003.
  920. [Stringprep] Hoffman, P. and M. Blanchet, "Preparation of
  921. Internationalized Strings ("stringprep")", RFC 3454,
  922. December 2002.
  923. [SASLprep] Zeilenga, K., "SASLprep: Stringprep Profile for User
  924. Names and Passwords", RFC 4013, February 2005.
  925. Informative References
  926. [RFC2086] Myers, J., "IMAP4 ACL extension", RFC 2086,
  927. January 1997.
  928. [PR29] "Public Review Issue #29: Normalization Issue",
  929. February 2004,
  930. <http://www.unicode.org/review/pr-29.html>.
  931. Melnikov Standards Track [Page 25]
  932. RFC 4314 IMAP ACL December 2005
  933. Author's Address
  934. Alexey Melnikov
  935. Isode Ltd.
  936. 5 Castle Business Village
  937. 36 Station Road
  938. Hampton, Middlesex TW12 2BX
  939. GB
  940. EMail: alexey.melnikov@isode.com
  941. Melnikov Standards Track [Page 26]
  942. RFC 4314 IMAP ACL December 2005
  943. Full Copyright Statement
  944. Copyright (C) The Internet Society (2005).
  945. This document is subject to the rights, licenses and restrictions
  946. contained in BCP 78, and except as set forth therein, the authors
  947. retain all their rights.
  948. This document and the information contained herein are provided on an
  949. "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
  950. OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
  951. ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
  952. INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
  953. INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
  954. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  955. Intellectual Property
  956. The IETF takes no position regarding the validity or scope of any
  957. Intellectual Property Rights or other rights that might be claimed to
  958. pertain to the implementation or use of the technology described in
  959. this document or the extent to which any license under such rights
  960. might or might not be available; nor does it represent that it has
  961. made any independent effort to identify any such rights. Information
  962. on the procedures with respect to rights in RFC documents can be
  963. found in BCP 78 and BCP 79.
  964. Copies of IPR disclosures made to the IETF Secretariat and any
  965. assurances of licenses to be made available, or the result of an
  966. attempt made to obtain a general license or permission for the use of
  967. such proprietary rights by implementers or users of this
  968. specification can be obtained from the IETF on-line IPR repository at
  969. http://www.ietf.org/ipr.
  970. The IETF invites any interested party to bring to its attention any
  971. copyrights, patents or patent applications, or other proprietary
  972. rights that may cover technology that may be required to implement
  973. this standard. Please address the information to the IETF at ietf-
  974. ipr@ietf.org.
  975. Acknowledgement
  976. Funding for the RFC Editor function is currently provided by the
  977. Internet Society.
  978. Melnikov Standards Track [Page 27]