7Network Working Group                                          M. Gahrns
 
8Request for Comments: 3348                                      R. Cheng
 
9Category: Informational                                        Microsoft
 
13             The Internet Message Action Protocol (IMAP4)
 
14                        Child Mailbox Extension
 
18   This memo provides information for the Internet community.  It does
 
19   not specify an Internet standard of any kind.  Distribution of this
 
24   Copyright (C) The Internet Society (2002).  All Rights Reserved.
 
28   The Internet Message Action Protocol (IMAP4) CHILDREN extension
 
29   provides a mechanism for a client to efficiently determine if a
 
30   particular mailbox has children, without issuing a LIST "" * or a
 
31   LIST "" % for each mailbox.
 
331. Conventions used in this document
 
35   In examples, "C:" and "S:" indicate lines sent by the client and
 
36   server respectively.  If such lines are wrapped without a new "C:" or
 
37   "S:" label, then the wrapping is for editorial clarity and is not
 
40   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 
41   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in this
 
42   document are to be interpreted as described in [RFC-2119].
 
46   Many IMAP4 [RFC-2060] clients present to the user a hierarchical view
 
47   of the mailboxes that a user has access to.  Rather than initially
 
48   presenting to the user the entire mailbox hierarchy, it is often
 
49   preferable to show to the user a collapsed outline list of the
 
50   mailbox hierarchy (particularly if there is a large number of
 
51   mailboxes).  The user can then expand the collapsed outline hierarchy
 
52   as needed.  It is common to include within the collapsed hierarchy a
 
58Gahrns, et al.               Informational                      [Page 1]
 
60RFC 3348             IMAP4 Child Mailbox Extension             July 2002
 
63   visual clue (such as a "+") to indicate that there are child
 
64   mailboxes under a particular mailbox.  When the visual clue is
 
65   clicked the hierarchy list is expanded to show the child mailboxes.
 
67   Several IMAP vendors implemented this proposal, and it is proposed to
 
68   document this behavior and functionality as an Informational RFC.
 
70   There is interest in addressing the general extensibility of the IMAP
 
71   LIST command through an IMAP LIST Extension draft.  Similar
 
72   functionality to the \HasChildren and \HasNoChildren flags could be
 
73   incorporated into this new LIST Extension.  It is proposed that the
 
74   more general LIST Extension draft proceed on the standards track with
 
75   this proposal being relegated to informational status only.
 
77   If the functionality of the \HasChildren and \HasNoChildren flags
 
78   were incorporated into a more general LIST extension, this would have
 
79   the advantage that a client could then have the opportunity to
 
80   request whether or not the server should return this information.
 
81   This would be an advantage over the current draft for servers where
 
82   this information is expensive to compute, since the server would only
 
83   need to compute the information when it knew that the client
 
84   requesting the information was able to consume it.
 
88   IMAP4 servers that support this extension MUST list the keyword
 
89   CHILDREN in their CAPABILITY response.
 
91   The CHILDREN extension defines two new attributes that MAY be
 
92   returned within a LIST response.
 
94   \HasChildren - The presence of this attribute indicates that the
 
95   mailbox has child mailboxes.
 
97   Servers SHOULD NOT return \HasChildren if child mailboxes exist, but
 
98   none will be displayed to the current user in a LIST response (as
 
99   should be the case where child mailboxes exist, but a client does not
 
100   have permissions to access them.)  In this case, \HasNoChildren
 
103   In many cases, however, a server may not be able to efficiently
 
104   compute whether a user has access to all child mailboxes, or multiple
 
105   users may be accessing the same account and simultaneously changing
 
106   the mailbox hierarchy.  As such a client MUST be prepared to accept
 
107   the \HasChildren attribute as a hint.  That is, a mailbox MAY be
 
108   flagged with the \HasChildren attribute, but no child mailboxes will
 
109   appear in a subsequent LIST response.
 
114Gahrns, et al.               Informational                      [Page 2]
 
116RFC 3348             IMAP4 Child Mailbox Extension             July 2002
 
122   /*** Consider a server that has the following mailbox hierarchy:
 
130   Where INBOX, ITEM_1 and ITEM_2 are top level mailboxes.  ITEM_1A is a
 
131   child mailbox of ITEM_1 and TOP_SECRET is a child mailbox of ITEM_2
 
132   that the currently logged on user does NOT have access to.
 
134   Note that in this case, the server is not able to efficiently compute
 
135   access rights to child mailboxes and responds with a \HasChildren
 
136   attribute for mailbox ITEM_2, even though ITEM_2/TOP_SECRET does not
 
137   appear in the list response.  ***/
 
140   S: * LIST (\HasNoChildren) "/" INBOX
 
141   S: * LIST (\HasChildren) "/" ITEM_1
 
142   S: * LIST (\HasNoChildren) "/" ITEM_1/ITEM_1A
 
143   S: * LIST (\HasChildren) "/" ITEM_2
 
144   S: A001 OK LIST Completed
 
146   \HasNoChildren - The presence of this attribute indicates that the
 
147   mailbox has NO child mailboxes that are accessible to the currently
 
148   authenticated user.  If a mailbox has the \Noinferiors attribute, the
 
149   \HasNoChildren attribute is redundant and SHOULD be omitted in the
 
152   In some instances a server that supports the CHILDREN extension MAY
 
153   NOT be able to determine whether a mailbox has children.  For example
 
154   it may have difficulty determining whether there are child mailboxes
 
155   when LISTing mailboxes while operating in a particular namespace.
 
157   In these cases, a server MAY exclude both the \HasChildren and
 
158   \HasNoChildren attributes in the LIST response.  As such, a client
 
159   can not make any assumptions about whether a mailbox has children
 
160   based upon the absence of a single attribute.
 
162   It is an error for the server to return both a \HasChildren and a
 
163   \HasNoChildren attribute in a LIST response.
 
170Gahrns, et al.               Informational                      [Page 3]
 
172RFC 3348             IMAP4 Child Mailbox Extension             July 2002
 
175   It is an error for the server to return both a \HasChildren and a
 
176   \NoInferiors attribute in a LIST response.
 
178   Note: the \HasNoChildren attribute should not be confused with the
 
179   IMAP4 [RFC-2060] defined attribute \Noinferiors which indicates that
 
180   no child mailboxes exist now and none can be created in the future.
 
182   The \HasChildren and \HasNoChildren attributes might not be returned
 
183   in response to a LSUB response.  Many servers maintain a simple
 
184   mailbox subscription list that is not updated when the underlying
 
185   mailbox structure is changed.  A client MUST NOT assume that
 
186   hierarchy information will be maintained in the subscription list.
 
188   RLIST is a command defined in [RFC-2193] that includes in a LIST
 
189   response mailboxes that are accessible only via referral.  That is, a
 
190   client must explicitly issue an RLIST command to see a list of these
 
191   mailboxes.  Thus in the case where a mailbox has child mailboxes that
 
192   are available only via referral, the mailboxes would appear as
 
193   \HasNoChildren in response to the LIST command, and \HasChildren in
 
194   response to the RLIST command.
 
198   The following syntax specification uses the augmented Backus-Naur
 
199   Form (BNF) as described in [ABNF].
 
201   Two new mailbox attributes are defined as flag_extensions to the
 
202   IMAP4 mailbox_list response:
 
204   HasChildren = "\HasChildren"
 
206   HasNoChildren = "\HasNoChildren"
 
2086. Security Considerations
 
210   This extension provides a client a more efficient means of
 
211   determining whether a particular mailbox has children.  If a mailbox
 
212   has children, but the currently authenticated user does not have
 
213   access to any of them, the server SHOULD respond with a
 
214   \HasNoChildren attribute.  In many cases, however, a server may not
 
215   be able to efficiently compute whether a user has access to all child
 
216   mailboxes.  If such a server responds with a \HasChildren attribute,
 
217   when in fact the currently authenticated user does not have access to
 
218   any child mailboxes, potentially more information is conveyed about
 
219   the mailbox than intended.  A server designed with such levels of
 
220   security in mind SHOULD NOT attach the \HasChildren attribute to a
 
221   mailbox unless the server is certain that the user has access to at
 
222   least one of the child mailboxes.
 
226Gahrns, et al.               Informational                      [Page 4]
 
228RFC 3348             IMAP4 Child Mailbox Extension             July 2002
 
233   [RFC-2060] Crispin, M., "Internet Message Access Protocol - Version
 
234              4rev1", RFC 2060, December 1996.
 
236   [RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate
 
237              Requirement Levels", BCP 14, RFC 2119, March 1997.
 
239   [RFC-2234] Crocker, D. and P. Overell, Editors, "Augmented BNF for
 
240              Syntax Specifications: ABNF", RFC 2234, November 1997.
 
242   [RFC-2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193, September
 
247   The authors would like to thank the participants of several IMC Mail
 
248   Connect events for their input when this idea was originally
 
249   presented and refined.
 
257   Phone: (425) 936-9833
 
258   EMail: mikega@microsoft.com
 
264   Phone: (425) 703-4913
 
265   EMail: raych@microsoft.com
 
282Gahrns, et al.               Informational                      [Page 5]
 
284RFC 3348             IMAP4 Child Mailbox Extension             July 2002
 
28710. Full Copyright Statement
 
289   Copyright (C) The Internet Society (2002).  All Rights Reserved.
 
291   This document and translations of it may be copied and furnished to
 
292   others, and derivative works that comment on or otherwise explain it
 
293   or assist in its implementation may be prepared, copied, published
 
294   and distributed, in whole or in part, without restriction of any
 
295   kind, provided that the above copyright notice and this paragraph are
 
296   included on all such copies and derivative works.  However, this
 
297   document itself may not be modified in any way, such as by removing
 
298   the copyright notice or references to the Internet Society or other
 
299   Internet organizations, except as needed for the purpose of
 
300   developing Internet standards in which case the procedures for
 
301   copyrights defined in the Internet Standards process must be
 
302   followed, or as required to translate it into languages other than
 
305   The limited permissions granted above are perpetual and will not be
 
306   revoked by the Internet Society or its successors or assigns.
 
308   This document and the information contained herein is provided on an
 
309   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
 
310   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
 
311   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
 
312   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
 
313   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 
317   Funding for the RFC Editor function is currently provided by the
 
338Gahrns, et al.               Informational                      [Page 6]