Network Working Group                              M. Gahrns, Microsoft
                                                    R. Cheng, Microsoft
Internet Draft
Document: draft-gahrns-imap-child-mailbox-02.txt          December 1999


                          IMAP4 Child Mailbox Extension


Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that
   other groups may also distribute working documents as Internet-
   Drafts. Internet-Drafts are draft documents valid for a maximum of
   six months and may be updated, replaced, or obsoleted by other
   documents at any time. It is inappropriate to use Internet- Drafts
   as reference material or to cite them other than as "work in
   progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.


0. Meta Information on this draft

   This information is intended to facilitate discussion.  It will be
   removed when this document leaves the Internet-Draft stage.

   This draft is now being discussed on the IMAPEXT mailing list at
   ietf-imapext@imc.org.   Subscription requests can be sent to ietf-
   imapext-request@imc.org (send an email message with the word
   "subscribe" in the body).  More information on the mailing list
   along with a WWW archive of back messages is available at
   HTTP://www.imc.org.  Earlier discussion took place on the IMAP
   Mailing List imap@u.washington.edu


   At the 45th IETF in Oslo, and 46th IETF in Washington, there was
   further discussion regarding this draft. I am making what I believe
   should be the final editorial changes to this draft.

   At several of the previous IMC interop events, several IMAP vendors
   have done implementations of this proposal. Further discussions are
   needed as to whether this draft should be submitted as a proposed
   standard or as an informational or historical RFC. Submitting as an
   information or historical RFC would serve to document the current


Gahrns and Cheng                                                     1

                    IMAP4 Child Mailbox Extension       December 1999


   implementations and elements of it could become a basis of a general
   LIST extension.

   There is some interest in starting a completely new LIST Extension
   draft that addresses general extensibility of the LIST command.
   Similar functionality to the \HasChildren and \HasNoChildren flags
   could be incorporated into this new LIST Extension, but the client
   would then have an opportunity to request whether or not the server
   should return this information.  This could be an advantage over the
   current draft for servers where this information is expensive to
   compute, since the server would only need to compute the information
   when it knew that the client requesting the information was able to
   use it.


   Changes since April 99, draft-01

   Incorporated comments from the list discussions:

   1) Explicitly note that it is an error for the server to return both
   a \HasChildren and a \NoInferiors attribute in a LIST response.

   2) Note that the \HasChildren and \HasNoChildren attribute may not
   apply to the LSUB command.

   3) Note how \HasChildren and \HasNoChildren apply in the referral
   case.

   4) Added back advertising CHILDREN in the capability response as was
   the consensus during the Washington IMAP-EXT WG.  Rational was that
   this made it easier for clients.


1. Abstract

   Many IMAP4 [RFC-2060] clients present to the user a hierarchical
   view of the mailboxes that a user has access to.  Rather than
   initially presenting to the user the entire mailbox hierarchy, it is
   often preferable to show to the user a collapsed outline list of the
   mailbox hierarchy (particularly if there is a large number of
   mailboxes).  The user can then expand the collapsed outline
   hierarchy as needed.  It is common to include within the collapsed
   hierarchy a visual clue (such as a "+") to indicate that there are
   child mailboxes under a particular mailbox.   When the visual clue
   is clicked the hierarchy list is expanded to show the child
   mailboxes.

   The CHILDREN extension provides a mechanism for a client to
   efficiently determine if a particular mailbox has children, without
   issuing a LIST "" * or a LIST "" % for each mailbox name.




Gahrns and Cheng          Expires June 2000                         2

                    IMAP4 Child Mailbox Extension       December 1999


2. Conventions used in this document

   In examples, "C:" and "S:" indicate lines sent by the client and
   server respectively.   If such lines are wrapped without a new "C:"
   or "S:" label, then the wrapping is for editorial clarity and is not
   part of the command.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in
   this document are to be interpreted as described in [RFC-2119].


3. Requirements

   IMAP4 servers that support this extension MUST list the keyword
   CHILDREN in their CAPABILITY response.

   The CHILDREN extension defines two new attributes that MAY be
   returned within a LIST response.

   \HasChildren - The presence of this attribute indicates that the
   mailbox has child mailboxes.

   Servers SHOULD NOT return \HasChildren if child mailboxes exist, but
   none will be displayed to the current user in a LIST response (as
   should be the case where child mailboxes exist, but a client does
   not have permissions to access them.)  In this case, \HasNoChildren
   SHOULD be used.

   In many cases, however, a server may not be able to efficiently
   compute whether a user has access to all child mailboxes, or
   multiple users may be accessing the same account and simultaneously
   changing the mailbox hierarchy.  As such a client MUST be prepared
   to accept the \HasChildren attribute as a hint. That is, a mailbox
   MAY be flagged with the \HasChildren attribute, but no child
   mailboxes will appear in a subsequent LIST response.


   Example 3.1:
   ============

   /*** Consider a server that has the following mailbox hierarchy:

   INBOX
   ITEM_1
      ITEM_1A
   ITEM_2
      TOP_SECRET

   Where INBOX, ITEM_1 and ITEM_2 are top level mailboxes.  ITEM_1A is
   a child mailbox of ITEM_1 and TOP_SECRET is a child mailbox of
   ITEM_2 that the currently logged on user does NOT have access to.


Gahrns and Cheng          Expires June 2000                         3

                    IMAP4 Child Mailbox Extension       December 1999


   Note that in this case, the server is not able to efficiently
   compute access rights to child mailboxes and responds with a
   \HasChildren attribute for mailbox ITEM_2, even though
   ITEM_2/TOP_SECRET does not appear in the list response.  ***/


   C: A001 LIST "" *
   S: * LIST (\HasNoChildren) "/" INBOX
   S: * LIST (\HasChildren) "/" ITEM_1
   S: * LIST (\HasNoChildren) "/" ITEM_1/ITEM_1A
   S: * LIST (\HasChildren) "/" ITEM_2
   S: A001 OK LIST Completed


   \HasNoChildren - The presence of this attribute indicates that the
   mailbox has NO child mailboxes that are accessible to the currently
   authenticated user.  If a mailbox has the \Noinferiors attribute,
   the \HasNoChildren attribute is redundant and SHOULD be omitted in
   the LIST response.

   In some instances a server that supports the CHILDREN extension MAY
   NOT be able to determine whether a mailbox has children.  For
   example it may have difficulty determining whether there are child
   mailboxes when LISTing mailboxes while operating in a particular
   namespace.

   In these cases, a server MAY exclude both the \HasChildren and
   \HasNoChildren attributes in the LIST response.  As such, a client
   can not make any assumptions about whether a mailbox has children
   based upon the absence of a single attribute.

   It is an error for the server to return both a \HasChildren and a
   \HasNoChildren attribute in a LIST response.

   It is an error for the server to return both a \HasChildren and a
   \NoInferiors attribute in a LIST response.

   Note: the \HasNoChildren attribute should not be confused with the
   IMAP4 [RFC-2060] defined attribute \Noinferiors which indicates that
   no child mailboxes exist now and none can be created in the future.

   The \HasChildren and \HasNoChildren attributes might not be returned
   in response to a LSUB response.  Many servers maintain a simple
   mailbox subscription list that is not updated when the underlying
   mailbox structure is changed.  A client MUST NOT assume that
   hierarchy information will be maintained in the subscription list.

   RLIST is a command defined in [RFC-2193] that includes in a LIST
   response mailboxes that are accessible only via referral.  That is,
   a client must explicitly issue an RLIST command to see a list of
   these mailboxes.  Thus in the case where a mailbox has child
   mailboxes that are available only via referral, the mailboxes would


Gahrns and Cheng          Expires June 2000                         4

                    IMAP4 Child Mailbox Extension       December 1999


   appear as \HasNoChildren in response to the LIST command, and
   \HasChildren in response to the RLIST command.


5. Formal Syntax

   The following syntax specification uses the augmented Backus-Naur
   Form (BNF) as described in [ABNF].

   Two new mailbox attributes are defined as flag_extensions to the
   IMAP4 mailbox_list response:

   HasChildren = "\HasChildren"

   HasNoChildren = "\HasNoChildren"


6. Security Considerations

   This extension provides a client a more efficient means of
   determining whether a particular mailbox has children.  If a mailbox
   has children, but the currently authenticated user does not have
   access to any of them, the server SHOULD respond with a
   \HasNoChildren attribute.  In many cases, however, a server may not
   be able to efficiently compute whether a user has access to all
   child mailboxes.  If such a server responds with a \HasChildren
   attribute, when in fact the currently authenticated user does not
   have access to any child mailboxes, potentially more information is
   conveyed about the mailbox than intended.  A server designed with
   such levels of security in mind SHOULD NOT attach the \HasChildren
   attribute to a mailbox unless the server is certain that the user
   has access to at least one of the child mailboxes.


7. References

   [RFC-2060], Crispin, M., "Internet Message Access Protocol - Version
   4rev1", RFC 2060, University of Washington, December 1996.

   [RFC-2119], Bradner, S, "Key words for use in RFCs to Indicate
   Requirement Levels", RFC 2119, Harvard University, March 1997

   [RFC-2234], D. Crocker and P. Overell, Editors, "Augmented BNF for
   Syntax Specifications: ABNF", RFC 2234, Internet Mail Consortium,
   November 1997

   [RFC-2193], Gahrns, M, "IMAP4 Mailbox Referrals", RFC 2193,
   Microsoft Corporation, September 1997


8.  Acknowledgments



Gahrns and Cheng          Expires June 2000                         5

                    IMAP4 Child Mailbox Extension       December 1999


   The authors would like to thank the participants of several IMC Mail
   Connect events for their input when this idea was originally
   presented and refined.


9. Author's Address

   Mike Gahrns
   Microsoft
   One Microsoft Way
   Redmond, WA, 98072

   Phone: (425) 936-9833
   Email: mikega@microsoft.com

   Raymond Cheng
   Microsoft
   One Microsoft Way
   Redmond, WA, 98072

   Phone: (425) 703-4913
   Email: raych@microsoft.com
































Gahrns and Cheng          Expires June 2000                         6

                    IMAP4 Child Mailbox Extension       December 1999


Full Copyright Statement


   Copyright (C) The Internet Society (1999).  All Rights Reserved.

   This document and translations of it may be copied and furnished
   to others, and derivative works that comment on or otherwise
   explain it or assist in its implementation may be prepared, copied,
   published and distributed, in whole or in part, without
   restriction of any kind, provided that the above copyright notice
   and this paragraph are included on all such copies and derivative
   works.  However, this document itself may not be modified in any
   way, such as by removing the copyright notice or references to the
   Internet Society or other Internet organizations, except as needed
   For the purpose of developing Internet standards in which case the
   procedures for copyrights defined in the Internet Standards
   process must be followed, or as required to translate it into
   languages other than English.

   The limited permissions granted above are perpetual and will not
   be revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on
   an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.




























Gahrns and Cheng          Expires June 2000                         7