1740 lines
64 KiB
Plaintext
1740 lines
64 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Network Working Group B. Leiba
|
|||
|
Request for Comments: 5258 IBM T.J. Watson Research Center
|
|||
|
Obsoletes: 3348 A. Melnikov
|
|||
|
Updates: 2193 Isode Limited
|
|||
|
Category: Standards Track June 2008
|
|||
|
|
|||
|
|
|||
|
Internet Message Access Protocol version 4 - LIST Command Extensions
|
|||
|
|
|||
|
Status of This Memo
|
|||
|
|
|||
|
This document specifies an Internet standards track protocol for the
|
|||
|
Internet community, and requests discussion and suggestions for
|
|||
|
improvements. Please refer to the current edition of the "Internet
|
|||
|
Official Protocol Standards" (STD 1) for the standardization state
|
|||
|
and status of this protocol. Distribution of this memo is unlimited.
|
|||
|
|
|||
|
Abstract
|
|||
|
|
|||
|
IMAP4 has two commands for listing mailboxes: LIST and LSUB. As we
|
|||
|
have added extensions, such as Mailbox Referrals, that have required
|
|||
|
specialized lists we have had to expand the number of list commands,
|
|||
|
since each extension must add its function to both LIST and LSUB, and
|
|||
|
these commands are not, as they are defined, extensible. If we've
|
|||
|
needed the extensions to work together, we've had to add a set of
|
|||
|
commands to mix the different options, the set increasing in size
|
|||
|
with each new extension. This document describes an extension to the
|
|||
|
base LIST command that will allow these additions to be done with
|
|||
|
mutually compatible options to the LIST command, avoiding the
|
|||
|
exponential increase in specialized list commands.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 1]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
Table of Contents
|
|||
|
|
|||
|
1. Introduction and Overview . . . . . . . . . . . . . . . . . . 3
|
|||
|
2. Conventions Used in This Document . . . . . . . . . . . . . . 4
|
|||
|
3. Extended LIST Command . . . . . . . . . . . . . . . . . . . . 4
|
|||
|
3.1. Initial List of Selection Options . . . . . . . . . . . . 7
|
|||
|
3.2. Initial List of Return Options . . . . . . . . . . . . . . 8
|
|||
|
3.3. General Principles for Returning LIST Responses . . . . . 9
|
|||
|
3.4. Additional Requirements on LIST-EXTENDED Clients . . . . . 9
|
|||
|
3.5. CHILDINFO Extended Data Item . . . . . . . . . . . . . . . 10
|
|||
|
4. The CHILDREN Return Option . . . . . . . . . . . . . . . . . . 11
|
|||
|
5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
|
|||
|
6. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 19
|
|||
|
7. Internationalization Considerations . . . . . . . . . . . . . 22
|
|||
|
8. Security Considerations . . . . . . . . . . . . . . . . . . . 23
|
|||
|
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23
|
|||
|
9.1. Guidelines for IANA . . . . . . . . . . . . . . . . . . . 23
|
|||
|
9.2. Registration Procedure and Change Control . . . . . . . . 23
|
|||
|
9.3. Registration Template for LIST-EXTENDED Options . . . . . 25
|
|||
|
9.4. Initial LIST-EXTENDED Option Registrations . . . . . . . . 25
|
|||
|
9.5. Registration Template for LIST-EXTENDED Extended Data
|
|||
|
Item . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
|
|||
|
9.6. Initial LIST-EXTENDED Extended Data Item Registrations . . 28
|
|||
|
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 29
|
|||
|
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29
|
|||
|
11.1. Normative References . . . . . . . . . . . . . . . . . . . 29
|
|||
|
11.2. Informative References . . . . . . . . . . . . . . . . . . 30
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 2]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
1. Introduction and Overview
|
|||
|
|
|||
|
The LIST command is extended by amending the syntax to allow options
|
|||
|
and multiple patterns to be specified. The list of options replaces
|
|||
|
the several commands that are currently used to mix and match the
|
|||
|
information requested. The new syntax is backward compatible, with
|
|||
|
no ambiguity: the new syntax is being used if one of the following
|
|||
|
conditions is true:
|
|||
|
|
|||
|
1. if the first word after the command name begins with a
|
|||
|
parenthesis ("LIST selection options")
|
|||
|
|
|||
|
2. if the second word after the command name begins with a
|
|||
|
parenthesis ("multiple mailbox patterns")
|
|||
|
|
|||
|
3. if the LIST command has more than 2 parameters ("LIST return
|
|||
|
options")
|
|||
|
|
|||
|
Otherwise the original syntax is used.
|
|||
|
|
|||
|
By adding options to the LIST command, we are announcing the intent
|
|||
|
to phase out and eventually to deprecate the RLIST and RLSUB commands
|
|||
|
described in [MBRef]. We are also defining the mechanism to request
|
|||
|
extended mailbox information, such as is described in the Child
|
|||
|
Mailbox Extension [CMbox]. The base LSUB command is not deprecated
|
|||
|
by this extension; rather, this extension adds a way to obtain
|
|||
|
subscription information with more options, with those server
|
|||
|
implementations that support it. Clients that simply need a list of
|
|||
|
subscribed mailboxes, as provided by the LSUB command, SHOULD
|
|||
|
continue to use that command.
|
|||
|
|
|||
|
This document defines an IMAP4 extension that is identified by the
|
|||
|
capability string "LIST-EXTENDED". The LIST-EXTENDED extension makes
|
|||
|
the following changes to the IMAP4 protocol, which are described in
|
|||
|
more detail in Section 3 and Section 4:
|
|||
|
|
|||
|
a. defines new syntax for LIST command options.
|
|||
|
|
|||
|
b. extends LIST to allow for multiple mailbox patterns.
|
|||
|
|
|||
|
c. adds LIST command selection options: SUBSCRIBED, REMOTE, and
|
|||
|
RECURSIVEMATCH.
|
|||
|
|
|||
|
d. adds LIST command return options: SUBSCRIBED and CHILDREN.
|
|||
|
|
|||
|
e. adds new mailbox attributes: "\NonExistent", "\Subscribed",
|
|||
|
"\Remote", "\HasChildren", and "\HasNoChildren".
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 3]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
f. adds CHILDINFO extended data item.
|
|||
|
|
|||
|
2. Conventions Used in This Document
|
|||
|
|
|||
|
In examples, "C:" indicates lines sent by a client that is connected
|
|||
|
to a server. "S:" indicates lines sent by the server to the client.
|
|||
|
|
|||
|
The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
|
|||
|
are used in this document as specified in RFC 2119 [Kwds].
|
|||
|
|
|||
|
The term "canonical LIST pattern" refers to the canonical pattern
|
|||
|
constructed internally by the server from the reference and mailbox
|
|||
|
name arguments (Section 6.3.8 of [IMAP4]). The [IMAP4] LIST command
|
|||
|
returns only mailboxes that match the canonical LIST pattern.
|
|||
|
|
|||
|
Other terms are introduced where they are referenced for the first
|
|||
|
time.
|
|||
|
|
|||
|
3. Extended LIST Command
|
|||
|
|
|||
|
This extension updates the syntax of the LIST command to allow for
|
|||
|
multiple mailbox patterns to be specified, if they are enclosed in
|
|||
|
parentheses. A mailbox name matches a list of mailbox patterns if it
|
|||
|
matches at least one mailbox pattern. If a mailbox name matches
|
|||
|
multiple mailbox patterns from the list, the server SHOULD return
|
|||
|
only a single LIST response.
|
|||
|
|
|||
|
Note that the non-extended LIST command is required to treat an empty
|
|||
|
("" string) mailbox name argument as a special request to return the
|
|||
|
hierarchy delimiter and the root name of the name given in the
|
|||
|
reference parameter (as per [IMAP4]). However, ANY extended LIST
|
|||
|
command (extended in any of 3 ways specified in Section 1, or any
|
|||
|
combination thereof) MUST NOT treat the empty mailbox name as such a
|
|||
|
special request, and any regular processing described in this
|
|||
|
document applies. In particular, if an extended LIST command has
|
|||
|
multiple mailbox names and one (or more) of them is the empty string,
|
|||
|
the empty string MUST be ignored for the purpose of matching.
|
|||
|
|
|||
|
Some servers might restrict which patterns are allowed in a LIST
|
|||
|
command. If a server doesn't accept a particular pattern, it MUST
|
|||
|
silently ignore it.
|
|||
|
|
|||
|
The LIST command syntax is also extended in two additional ways: by
|
|||
|
adding a parenthesized list of command options between the command
|
|||
|
name and the reference name (LIST selection options) and an optional
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 4]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
list of options at the end that control what kind of information
|
|||
|
should be returned (LIST return options). See the formal syntax in
|
|||
|
Section 6 for specific details.
|
|||
|
|
|||
|
A LIST selection option tells the server which mailbox names should
|
|||
|
be selected by the LIST operation. The server should return
|
|||
|
information about all mailbox names that match any of the "canonical
|
|||
|
LIST pattern" (as described above) and satisfy additional selection
|
|||
|
criteria (if any) specified by the LIST selection options. Let's
|
|||
|
call any such mailbox name a "matched mailbox name". When multiple
|
|||
|
selection options are specified, the server MUST return information
|
|||
|
about mailbox names that satisfy every selection option, unless a
|
|||
|
description of a particular specified option prescribes special
|
|||
|
rules. An example of an option prescribing special rules is the
|
|||
|
RECURSIVEMATCH selection option described later in this section. We
|
|||
|
will use the term "selection criteria" when referring collectively to
|
|||
|
all selection options specified in a LIST command.
|
|||
|
|
|||
|
A LIST return option controls which information is returned for each
|
|||
|
matched mailbox name. Note that return options MUST NOT cause the
|
|||
|
server to report information about additional mailbox names. If the
|
|||
|
client has not specified any return option, only information about
|
|||
|
attributes should be returned by the server. (Of course, the server
|
|||
|
is allowed to include any other information at will.)
|
|||
|
|
|||
|
Both selection and return command options will be defined in this
|
|||
|
document and in approved extension documents; each option will be
|
|||
|
enabled by a capability string (one capability may enable multiple
|
|||
|
options), and a client MUST NOT send an option for which the server
|
|||
|
has not advertised support. A server MUST respond to options it does
|
|||
|
not recognize with a BAD response. The client SHOULD NOT specify any
|
|||
|
option more than once; however, if the client does this, the server
|
|||
|
MUST act as if it received the option only once. The order in which
|
|||
|
options are specified by the client is not significant.
|
|||
|
|
|||
|
In general, each selection option except RECURSIVEMATCH will have a
|
|||
|
corresponding return option. The REMOTE selection option is an
|
|||
|
anomaly in this regard, and does not have a corresponding return
|
|||
|
option. That is because it expands, rather than restricts, the set
|
|||
|
of mailboxes that are returned. Future extensions to this
|
|||
|
specification should keep parallelism in mind and define a pair of
|
|||
|
corresponding options.
|
|||
|
|
|||
|
This extension is identified by the capability string
|
|||
|
"LIST-EXTENDED", and support for it is a prerequisite for any future
|
|||
|
extensions that require specialized forms of the LIST command. Such
|
|||
|
extensions MUST refer to this document and MUST add their function
|
|||
|
through command options as described herein. Note that extensions
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 5]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
that don't require support for an extended LIST command, but use
|
|||
|
extended LIST responses (see below), don't need to advertise the
|
|||
|
"LIST-EXTENDED" capability string.
|
|||
|
|
|||
|
This extension also defines extensions to the LIST response, allowing
|
|||
|
a series of extended fields at the end, a parenthesized list of
|
|||
|
tagged data (also referred to as "extended data item"). The first
|
|||
|
element of an extended field is a tag, which identifies the type of
|
|||
|
data. Tags MUST be registered with IANA, as described in Section 9.5
|
|||
|
of this document. An example of such an extended set might be
|
|||
|
|
|||
|
tablecloth (("edge" "lacy") ("color" "red"))) (X-Sample "text"))
|
|||
|
|
|||
|
or
|
|||
|
|
|||
|
tablecloth ("edge" "lacy")) (X-Sample "text" "more text"))
|
|||
|
|
|||
|
See the formal syntax, in Section 6, for the full syntactic details.
|
|||
|
The server MUST NOT return any extended data item unless the client
|
|||
|
has expressed its ability to support extended LIST responses, for
|
|||
|
example, by using an extended LIST command. The server MAY return
|
|||
|
data in the extended fields that was not directly solicited by the
|
|||
|
client in the corresponding LIST command. For example, the client
|
|||
|
can enable extra extended fields by using another IMAP extension that
|
|||
|
make use of the extended LIST responses. The client MUST ignore all
|
|||
|
extended fields it doesn't recognize.
|
|||
|
|
|||
|
The LIST-EXTENDED capability also defines several new mailbox
|
|||
|
attributes.
|
|||
|
|
|||
|
The "\NonExistent" attribute indicates that a mailbox name does not
|
|||
|
refer to an existing mailbox. Note that this attribute is not
|
|||
|
meaningful by itself, as mailbox names that match the canonical LIST
|
|||
|
pattern but don't exist must not be returned unless one of the two
|
|||
|
conditions listed below is also satisfied:
|
|||
|
|
|||
|
a. The mailbox name also satisfies the selection criteria (for
|
|||
|
example, it is subscribed and the "SUBSCRIBED" selection option
|
|||
|
has been specified).
|
|||
|
|
|||
|
b. "RECURSIVEMATCH" has been specified, and the mailbox name has at
|
|||
|
least one descendant mailbox name that does not match the LIST
|
|||
|
pattern and does match the selection criteria.
|
|||
|
|
|||
|
In practice, this means that the "\NonExistent" attribute is usually
|
|||
|
returned with one or more of "\Subscribed", "\Remote",
|
|||
|
"\HasChildren", or the CHILDINFO extended data item (see their
|
|||
|
description below).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 6]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
The "\NonExistent" attribute implies "\NoSelect". The "\NonExistent"
|
|||
|
attribute MUST be supported and MUST be accurately computed.
|
|||
|
|
|||
|
3.1. Initial List of Selection Options
|
|||
|
|
|||
|
The selection options defined in this specification are as follows:
|
|||
|
|
|||
|
SUBSCRIBED - causes the LIST command to list subscribed names,
|
|||
|
rather than the existing mailboxes. This will often be a subset
|
|||
|
of the actual mailboxes. It's also possible for this list to
|
|||
|
contain the names of mailboxes that don't exist. In any case, the
|
|||
|
list MUST include exactly those mailbox names that match the
|
|||
|
canonical list pattern and are subscribed to. This option is
|
|||
|
intended to supplement the LSUB command. Of particular note are
|
|||
|
the mailbox attributes as returned by this option, compared with
|
|||
|
what is returned by LSUB. With the latter, the attributes
|
|||
|
returned may not reflect the actual attribute status on the
|
|||
|
mailbox name, and the \NoSelect attribute has a second special
|
|||
|
meaning (it indicates that this mailbox is not, itself,
|
|||
|
subscribed, but that it has descendant mailboxes that are). With
|
|||
|
the SUBSCRIBED selection option described here, the attributes are
|
|||
|
accurate and complete, and have no special meanings. "LSUB" and
|
|||
|
"LIST (SUBSCRIBED)" are, thus, not the same thing, and some
|
|||
|
servers must do significant extra work to respond to "LIST
|
|||
|
(SUBSCRIBED)". Because of this, clients SHOULD continue to use
|
|||
|
"LSUB" unless they specifically want the additional information
|
|||
|
offered by "LIST (SUBSCRIBED)".
|
|||
|
|
|||
|
This option defines a new mailbox attribute, "\Subscribed", that
|
|||
|
indicates that a mailbox name is subscribed to. The "\Subscribed"
|
|||
|
attribute MUST be supported and MUST be accurately computed when
|
|||
|
the SUBSCRIBED selection option is specified.
|
|||
|
|
|||
|
Note that the SUBSCRIBED selection option implies the SUBSCRIBED
|
|||
|
return option (see below).
|
|||
|
|
|||
|
REMOTE - causes the LIST command to show remote mailboxes as well as
|
|||
|
local ones, as described in [MBRef]. This option is intended to
|
|||
|
replace the RLIST command and, in conjunction with the SUBSCRIBED
|
|||
|
selection option, the RLSUB command.
|
|||
|
|
|||
|
This option defines a new mailbox attribute, "\Remote", that
|
|||
|
indicates that a mailbox is a remote mailbox. The "\Remote"
|
|||
|
attribute MUST be accurately computed when the REMOTE option is
|
|||
|
specified.
|
|||
|
|
|||
|
The REMOTE selection option has no interaction with other options.
|
|||
|
Its effect is to tell the server to apply the other options, if
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 7]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
any, to remote mailboxes, in addition to local ones. In
|
|||
|
particular, it has no interaction with RECURSIVEMATCH (see below).
|
|||
|
A request for (REMOTE RECURSIVEMATCH) is invalid, because a
|
|||
|
request for (RECURSIVEMATCH) is. A request for (REMOTE
|
|||
|
RECURSIVEMATCH SUBSCRIBED) is asking for all subscribed mailboxes,
|
|||
|
both local and remote.
|
|||
|
|
|||
|
RECURSIVEMATCH - this option forces the server to return information
|
|||
|
about parent mailboxes that don't match other selection options,
|
|||
|
but have some submailboxes that do. Information about children is
|
|||
|
returned in the CHILDINFO extended data item, as described in
|
|||
|
Section 3.5.
|
|||
|
|
|||
|
Note 1: In order for a parent mailbox to be returned, it still has
|
|||
|
to match the canonical LIST pattern.
|
|||
|
|
|||
|
Note 2: When returning the CHILDINFO extended data item, it
|
|||
|
doesn't matter whether or not the submailbox matches the canonical
|
|||
|
LIST pattern. See also example 9 in Section 5.
|
|||
|
|
|||
|
The RECURSIVEMATCH option MUST NOT occur as the only selection
|
|||
|
option (or only with REMOTE), as it only makes sense when other
|
|||
|
selection options are also used. The server MUST return BAD
|
|||
|
tagged response in such case.
|
|||
|
|
|||
|
Note that even if the RECURSIVEMATCH option is specified, the
|
|||
|
client MUST still be able to handle a case when a CHILDINFO
|
|||
|
extended data item is returned and there are no submailboxes that
|
|||
|
meet the selection criteria of the subsequent LIST command, as
|
|||
|
they can be deleted/renamed after the LIST response was sent, but
|
|||
|
before the client had a chance to access them.
|
|||
|
|
|||
|
3.2. Initial List of Return Options
|
|||
|
|
|||
|
The return options defined in this specification are as follows:
|
|||
|
|
|||
|
SUBSCRIBED - causes the LIST command to return subscription state
|
|||
|
for all matching mailbox names. The "\Subscribed" attribute MUST
|
|||
|
be supported and MUST be accurately computed when the SUBSCRIBED
|
|||
|
return option is specified. Further, all mailbox flags MUST be
|
|||
|
accurately computed (this differs from the behavior of the LSUB
|
|||
|
command).
|
|||
|
|
|||
|
CHILDREN - requests mailbox child information as originally proposed
|
|||
|
in [CMbox]. See Section 4, below, for details. This option MUST
|
|||
|
be supported by all servers.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 8]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
3.3. General Principles for Returning LIST Responses
|
|||
|
|
|||
|
This section outlines several principles that can be used by server
|
|||
|
implementations of this document to decide whether a LIST response
|
|||
|
should be returned, as well as how many responses and what kind of
|
|||
|
information they may contain.
|
|||
|
|
|||
|
1. At most one LIST response should be returned for each mailbox
|
|||
|
name that matches the canonical LIST pattern. Server
|
|||
|
implementors must not assume that clients will be able to
|
|||
|
assemble mailbox attributes and other information returned in
|
|||
|
multiple LIST responses.
|
|||
|
|
|||
|
2. There are only two reasons for including a matching mailbox name
|
|||
|
in the responses to the LIST command (note that the server is
|
|||
|
allowed to return unsolicited responses at any time, and such
|
|||
|
responses are not governed by this rule):
|
|||
|
|
|||
|
A. The mailbox name also satisfies the selection criteria.
|
|||
|
|
|||
|
B. The mailbox name doesn't satisfy the selection criteria, but
|
|||
|
it has at least one descendant mailbox name that satisfies
|
|||
|
the selection criteria and that doesn't match the canonical
|
|||
|
LIST pattern.
|
|||
|
|
|||
|
For more information on this case, see the CHILDINFO extended
|
|||
|
data item described in Section 3.5. Note that the CHILDINFO
|
|||
|
extended data item can only be returned when the
|
|||
|
RECURSIVEMATCH selection option is specified.
|
|||
|
|
|||
|
3. Attributes returned in the same LIST response must be treated
|
|||
|
additively. For example, the following response
|
|||
|
|
|||
|
S: * LIST (\Subscribed \NonExistent) "/" "Fruit/Peach"
|
|||
|
|
|||
|
means that the "Fruit/Peach" mailbox doesn't exist, but it is
|
|||
|
subscribed.
|
|||
|
|
|||
|
3.4. Additional Requirements on LIST-EXTENDED Clients
|
|||
|
|
|||
|
All clients that support this extension MUST treat an attribute with
|
|||
|
a stronger meaning as implying any attribute that can be inferred
|
|||
|
from it. For example, the client must treat the presence of the
|
|||
|
\NoInferiors attribute as if the \HasNoChildren attribute was also
|
|||
|
sent by the server.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 9]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
The following table summarizes inference rules described in
|
|||
|
Section 3.
|
|||
|
|
|||
|
+--------------------+-------------------+
|
|||
|
| returned attribute | implied attribute |
|
|||
|
+--------------------+-------------------+
|
|||
|
| \NoInferiors | \HasNoChildren |
|
|||
|
| \NonExistent | \NoSelect |
|
|||
|
+--------------------+-------------------+
|
|||
|
|
|||
|
3.5. CHILDINFO Extended Data Item
|
|||
|
|
|||
|
The CHILDINFO extended data item MUST NOT be returned unless the
|
|||
|
client has specified the RECURSIVEMATCH selection option.
|
|||
|
|
|||
|
The CHILDINFO extended data item in a LIST response describes the
|
|||
|
selection criteria that has caused it to be returned and indicates
|
|||
|
that the mailbox has at least one descendant mailbox that matches the
|
|||
|
selection criteria.
|
|||
|
|
|||
|
The LSUB command indicates this condition by using the "\NoSelect"
|
|||
|
attribute, but the LIST (SUBSCRIBED) command MUST NOT do that, since
|
|||
|
"\NoSelect" retains its original meaning here. Further, the
|
|||
|
CHILDINFO extended data item is more general, in that it can be used
|
|||
|
with any extended set of selection criteria.
|
|||
|
|
|||
|
Note: Some servers allow for mailboxes to exist without requiring
|
|||
|
their parent to exist. For example, a mailbox "Customers/ABC" can
|
|||
|
exist while the mailbox "Customers" does not. As CHILDINFO extended
|
|||
|
data item is not allowed if the RECURSIVEMATCH selection option is
|
|||
|
not specified, such servers SHOULD use the "\NonExistent
|
|||
|
\HasChildren" attribute pair to signal to the client that there is a
|
|||
|
descendant mailbox that matches the selection criteria. See example
|
|||
|
11 in Section 5.
|
|||
|
|
|||
|
The returned selection criteria allow the client to distinguish a
|
|||
|
solicited response from an unsolicited one, as well as to distinguish
|
|||
|
among solicited responses caused by multiple pipelined LIST commands
|
|||
|
that specify different criteria.
|
|||
|
|
|||
|
Servers SHOULD ONLY return a non-matching mailbox name along with
|
|||
|
CHILDINFO if at least one matching child is not also being returned.
|
|||
|
That is, servers SHOULD suppress redundant CHILDINFO responses.
|
|||
|
|
|||
|
Examples 8 and 10 in Section 5 demonstrate the difference between
|
|||
|
present CHILDINFO extended data item and the "\HasChildren"
|
|||
|
attribute.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 10]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
The following table summarizes interaction between the "\NonExistent"
|
|||
|
attribute and CHILDINFO (the first column indicates whether the
|
|||
|
parent mailbox exists):
|
|||
|
|
|||
|
+--------+--------------+--------------------+----------------------+
|
|||
|
| exists | meets the | has a child that | returned |
|
|||
|
| | selection | meets the | LIST-EXTENDED |
|
|||
|
| | criteria | selection criteria | attributes and |
|
|||
|
| | | | CHILDINFO |
|
|||
|
+--------+--------------+--------------------+----------------------+
|
|||
|
| no | no | no | no LIST response |
|
|||
|
| | | | returned |
|
|||
|
| yes | no | no | no LIST response |
|
|||
|
| | | | returned |
|
|||
|
| no | yes | no | (\NonExistent |
|
|||
|
| | | | <attr>) |
|
|||
|
| yes | yes | no | (<attr>) |
|
|||
|
| no | no | yes | (\NonExistent) + |
|
|||
|
| | | | CHILDINFO |
|
|||
|
| yes | no | yes | () + CHILDINFO |
|
|||
|
| no | yes | yes | (\NonExistent |
|
|||
|
| | | | <attr>) + CHILDINFO |
|
|||
|
| yes | yes | yes | (<attr>) + CHILDINFO |
|
|||
|
+--------+--------------+--------------------+----------------------+
|
|||
|
|
|||
|
where <attr> is one or more attributes that correspond to the
|
|||
|
selection criteria; for example, for the SUBSCRIBED option the <attr>
|
|||
|
is \Subscribed.
|
|||
|
|
|||
|
4. The CHILDREN Return Option
|
|||
|
|
|||
|
The CHILDREN return option implements the Child Mailbox Extension,
|
|||
|
originally proposed by Mike Gahrns and Raymond Cheng, of Microsoft
|
|||
|
Corporation. Most of the information in this section is taken
|
|||
|
directly from their original specification [CMbox]. The CHILDREN
|
|||
|
return option is simply an indication that the client wants this
|
|||
|
information; a server MAY provide it even if the option is not
|
|||
|
specified.
|
|||
|
|
|||
|
Many IMAP4 [IMAP4] 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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 11]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
clicked, the hierarchy list is expanded to show the child mailboxes.
|
|||
|
The CHILDREN return option provides a mechanism for a client to
|
|||
|
efficiently determine whether a particular mailbox has children,
|
|||
|
without issuing a LIST "" * or a LIST "" % for each mailbox name.
|
|||
|
The CHILDREN return option defines two new attributes that MUST be
|
|||
|
returned within a LIST response: \HasChildren and \HasNoChildren.
|
|||
|
Although these attributes MAY be returned in response to any LIST
|
|||
|
command, the CHILDREN return option is provided to indicate that the
|
|||
|
client particularly wants this information. If the CHILDREN return
|
|||
|
option is present, the server MUST return these attributes even if
|
|||
|
their computation is expensive.
|
|||
|
|
|||
|
\HasChildren
|
|||
|
|
|||
|
The presence of this attribute indicates that the mailbox has child
|
|||
|
mailboxes. A server SHOULD NOT set this attribute if there are
|
|||
|
child mailboxes and the user does not have permission to access
|
|||
|
any of 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 any child mailbox. Note
|
|||
|
that even though the \HasChildren attribute for a mailbox must
|
|||
|
be correct at the time of processing of the mailbox, a client
|
|||
|
must be prepared to deal with a situation when a mailbox is
|
|||
|
marked with the \HasChildren attribute, but no child mailbox
|
|||
|
appears in the response to the LIST command. This might happen,
|
|||
|
for example, due to children mailboxes being deleted or made
|
|||
|
inaccessible to the user (using access control) by another
|
|||
|
client before the server is able to list them.
|
|||
|
|
|||
|
\HasNoChildren
|
|||
|
|
|||
|
The presence of this attribute indicates that the mailbox has NO
|
|||
|
child mailboxes that are accessible to the currently
|
|||
|
authenticated user.
|
|||
|
|
|||
|
It is an error for the server to return both a \HasChildren and a
|
|||
|
\HasNoChildren attribute in the same LIST response.
|
|||
|
|
|||
|
Note: the \HasNoChildren attribute should not be confused with the
|
|||
|
IMAP4 [IMAP4] defined attribute \NoInferiors, which indicates that no
|
|||
|
child mailboxes exist now and none can be created in the future.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 12]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
5. Examples
|
|||
|
|
|||
|
1: The first example shows the complete local hierarchy that will
|
|||
|
be used for the other examples.
|
|||
|
|
|||
|
C: A01 LIST "" "*"
|
|||
|
S: * LIST (\Marked \NoInferiors) "/" "inbox"
|
|||
|
S: * LIST () "/" "Fruit"
|
|||
|
S: * LIST () "/" "Fruit/Apple"
|
|||
|
S: * LIST () "/" "Fruit/Banana"
|
|||
|
S: * LIST () "/" "Tofu"
|
|||
|
S: * LIST () "/" "Vegetable"
|
|||
|
S: * LIST () "/" "Vegetable/Broccoli"
|
|||
|
S: * LIST () "/" "Vegetable/Corn"
|
|||
|
S: A01 OK done
|
|||
|
|
|||
|
2: In the next example, we will see the subscribed mailboxes. This
|
|||
|
is similar to, but not equivalent with, <LSUB "" "*">. Note
|
|||
|
that the mailbox called "Fruit/Peach" is subscribed to, but does
|
|||
|
not actually exist (perhaps it was deleted while still
|
|||
|
subscribed). The "Fruit" mailbox is not subscribed to, but it
|
|||
|
has two subscribed children. The "Vegetable" mailbox is
|
|||
|
subscribed and has two children; one of them is subscribed as
|
|||
|
well.
|
|||
|
|
|||
|
C: A02 LIST (SUBSCRIBED) "" "*"
|
|||
|
S: * LIST (\Marked \NoInferiors \Subscribed) "/" "inbox"
|
|||
|
S: * LIST (\Subscribed) "/" "Fruit/Banana"
|
|||
|
S: * LIST (\Subscribed \NonExistent) "/" "Fruit/Peach"
|
|||
|
S: * LIST (\Subscribed) "/" "Vegetable"
|
|||
|
S: * LIST (\Subscribed) "/" "Vegetable/Broccoli"
|
|||
|
S: A02 OK done
|
|||
|
|
|||
|
3: The next example shows the use of the CHILDREN option. The
|
|||
|
client, without having to list the second level of hierarchy,
|
|||
|
now knows which of the top-level mailboxes have submailboxes
|
|||
|
(children) and which do not. Note that it's not necessary for
|
|||
|
the server to return the \HasNoChildren attribute for the inbox,
|
|||
|
because the \NoInferiors attribute already implies that, and has
|
|||
|
a stronger meaning.
|
|||
|
|
|||
|
C: A03 LIST () "" "%" RETURN (CHILDREN)
|
|||
|
S: * LIST (\Marked \NoInferiors) "/" "inbox"
|
|||
|
S: * LIST (\HasChildren) "/" "Fruit"
|
|||
|
S: * LIST (\HasNoChildren) "/" "Tofu"
|
|||
|
S: * LIST (\HasChildren) "/" "Vegetable"
|
|||
|
S: A03 OK done
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 13]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
4: In this example, we see more mailboxes that reside on another
|
|||
|
server. This is similar to the command <RLIST "" "%">.
|
|||
|
|
|||
|
C: A04 LIST (REMOTE) "" "%" RETURN (CHILDREN)
|
|||
|
S: * LIST (\Marked \NoInferiors) "/" "inbox"
|
|||
|
S: * LIST (\HasChildren) "/" "Fruit"
|
|||
|
S: * LIST (\HasNoChildren) "/" "Tofu"
|
|||
|
S: * LIST (\HasChildren) "/" "Vegetable"
|
|||
|
S: * LIST (\Remote) "/" "Bread"
|
|||
|
S: * LIST (\HasChildren \Remote) "/" "Meat"
|
|||
|
S: A04 OK done
|
|||
|
|
|||
|
5: The following example also requests the server to include
|
|||
|
mailboxes that reside on another server. The server returns
|
|||
|
information about all mailboxes that are subscribed. This is
|
|||
|
similar to the command <RLSUB "" "*">. We also see the use of
|
|||
|
two selection options.
|
|||
|
|
|||
|
C: A05 LIST (REMOTE SUBSCRIBED) "" "*"
|
|||
|
S: * LIST (\Marked \NoInferiors \Subscribed) "/" "inbox"
|
|||
|
S: * LIST (\Subscribed) "/" "Fruit/Banana"
|
|||
|
S: * LIST (\Subscribed \NonExistent) "/" "Fruit/Peach"
|
|||
|
S: * LIST (\Subscribed) "/" "Vegetable"
|
|||
|
S: * LIST (\Subscribed) "/" "Vegetable/Broccoli"
|
|||
|
S: * LIST (\Remote \Subscribed) "/" "Bread"
|
|||
|
S: A05 OK done
|
|||
|
|
|||
|
6: The following example requests the server to include mailboxes
|
|||
|
that reside on another server. The server is asked to return
|
|||
|
subscription information for all returned mailboxes. This is
|
|||
|
different from the example above.
|
|||
|
|
|||
|
Note that the output of this command is not a superset of the
|
|||
|
output in the previous example, as it doesn't include LIST
|
|||
|
response for the non-existent "Fruit/Peach".
|
|||
|
|
|||
|
C: A06 LIST (REMOTE) "" "*" RETURN (SUBSCRIBED)
|
|||
|
S: * LIST (\Marked \NoInferiors \Subscribed) "/" "inbox"
|
|||
|
S: * LIST () "/" "Fruit"
|
|||
|
S: * LIST () "/" "Fruit/Apple"
|
|||
|
S: * LIST (\Subscribed) "/" "Fruit/Banana"
|
|||
|
S: * LIST () "/" "Tofu"
|
|||
|
S: * LIST (\Subscribed) "/" "Vegetable"
|
|||
|
S: * LIST (\Subscribed) "/" "Vegetable/Broccoli"
|
|||
|
S: * LIST () "/" "Vegetable/Corn"
|
|||
|
S: * LIST (\Remote \Subscribed) "/" "Bread"
|
|||
|
S: * LIST (\Remote) "/" "Meat"
|
|||
|
S: A06 OK done
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 14]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
7: In the following example, the client has specified multiple
|
|||
|
mailbox patterns. Note that this example does not use the
|
|||
|
mailbox hierarchy used in the previous examples.
|
|||
|
|
|||
|
C: BBB LIST "" ("INBOX" "Drafts" "Sent/%")
|
|||
|
S: * LIST () "/" "INBOX"
|
|||
|
S: * LIST (\NoInferiors) "/" "Drafts"
|
|||
|
S: * LIST () "/" "Sent/March2004"
|
|||
|
S: * LIST (\Marked) "/" "Sent/December2003"
|
|||
|
S: * LIST () "/" "Sent/August2004"
|
|||
|
S: BBB OK done
|
|||
|
|
|||
|
8: The following example demonstrates the difference between the
|
|||
|
\HasChildren attribute and the CHILDINFO extended data item.
|
|||
|
|
|||
|
Let's assume there is the following hierarchy:
|
|||
|
|
|||
|
C: C01 LIST "" "*"
|
|||
|
S: * LIST (\Marked \NoInferiors) "/" "inbox"
|
|||
|
S: * LIST () "/" "Foo"
|
|||
|
S: * LIST () "/" "Foo/Bar"
|
|||
|
S: * LIST () "/" "Foo/Baz"
|
|||
|
S: * LIST () "/" "Moo"
|
|||
|
S: C01 OK done
|
|||
|
|
|||
|
If the client asks RETURN (CHILDREN), it will get this:
|
|||
|
|
|||
|
C: CA3 LIST "" "%" RETURN (CHILDREN)
|
|||
|
S: * LIST (\Marked \NoInferiors) "/" "inbox"
|
|||
|
S: * LIST (\HasChildren) "/" "Foo"
|
|||
|
S: * LIST (\HasNoChildren) "/" "Moo"
|
|||
|
S: CA3 OK done
|
|||
|
|
|||
|
A) Let's also assume that the mailbox "Foo/Baz" is the only
|
|||
|
subscribed mailbox. Then we get this result:
|
|||
|
|
|||
|
C: C02 LIST (SUBSCRIBED) "" "*"
|
|||
|
S: * LIST (\Subscribed) "/" "Foo/Baz"
|
|||
|
S: C02 OK done
|
|||
|
|
|||
|
Now, if the client issues <LIST (SUBSCRIBED) "" "%">, the server will
|
|||
|
return no mailboxes (as the mailboxes "Moo", "Foo", and "Inbox" are
|
|||
|
NOT subscribed). However, if the client issues this:
|
|||
|
|
|||
|
C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%"
|
|||
|
S: * LIST () "/" "Foo" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: C04 OK done
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 15]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
(i.e., the mailbox "Foo" is not subscribed, but it has a child that
|
|||
|
is.)
|
|||
|
|
|||
|
A1) If the mailbox "Foo" had also been subscribed, the last command
|
|||
|
would return this:
|
|||
|
|
|||
|
C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%"
|
|||
|
S: * LIST (\Subscribed) "/" "Foo" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: C04 OK done
|
|||
|
|
|||
|
or even this:
|
|||
|
|
|||
|
C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%"
|
|||
|
S: * LIST (\Subscribed \HasChildren) "/" "Foo" ("CHILDINFO"
|
|||
|
("SUBSCRIBED"))
|
|||
|
S: C04 OK done
|
|||
|
|
|||
|
A2) If we assume instead that the mailbox "Foo" is not part of the
|
|||
|
original hierarchy and is not subscribed, the last command will give
|
|||
|
this result:
|
|||
|
|
|||
|
C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%"
|
|||
|
S: * LIST (\NonExistent) "/" "Foo" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: C04 OK done
|
|||
|
|
|||
|
B) Now, let's assume that no mailbox is subscribed. In this case,
|
|||
|
the command <LIST (SUBSCRIBED RECURSIVEMATCH) "" "%"> will return no
|
|||
|
responses, as there are no subscribed children (even though "Foo" has
|
|||
|
children).
|
|||
|
|
|||
|
C) And finally, suppose that only the mailboxes "Foo" and "Moo" are
|
|||
|
subscribed. In that case, we see this result:
|
|||
|
|
|||
|
C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%" RETURN (CHILDREN)
|
|||
|
S: * LIST (\HasChildren \Subscribed) "/" "Foo"
|
|||
|
S: * LIST (\HasNoChildren \Subscribed) "/" "Moo"
|
|||
|
S: C04 OK done
|
|||
|
|
|||
|
(which means that the mailbox "Foo" has children, but none of them is
|
|||
|
subscribed).
|
|||
|
|
|||
|
9: The following example demonstrates that the CHILDINFO extended
|
|||
|
data item is returned whether or not children mailboxes match
|
|||
|
the canonical LIST pattern.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 16]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
Let's assume there is the following hierarchy:
|
|||
|
|
|||
|
C: D01 LIST "" "*"
|
|||
|
S: * LIST (\Marked \NoInferiors) "/" "inbox"
|
|||
|
S: * LIST () "/" "foo2"
|
|||
|
S: * LIST () "/" "foo2/bar1"
|
|||
|
S: * LIST () "/" "foo2/bar2"
|
|||
|
S: * LIST () "/" "baz2"
|
|||
|
S: * LIST () "/" "baz2/bar2"
|
|||
|
S: * LIST () "/" "baz2/bar22"
|
|||
|
S: * LIST () "/" "baz2/bar222"
|
|||
|
S: * LIST () "/" "eps2"
|
|||
|
S: * LIST () "/" "eps2/mamba"
|
|||
|
S: * LIST () "/" "qux2/bar2"
|
|||
|
S: D01 OK done
|
|||
|
|
|||
|
And that the following mailboxes are subscribed:
|
|||
|
|
|||
|
C: D02 LIST (SUBSCRIBED) "" "*"
|
|||
|
S: * LIST (\Subscribed) "/" "foo2/bar1"
|
|||
|
S: * LIST (\Subscribed) "/" "foo2/bar2"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar2"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar22"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar222"
|
|||
|
S: * LIST (\Subscribed) "/" "eps2"
|
|||
|
S: * LIST (\Subscribed) "/" "eps2/mamba"
|
|||
|
S: * LIST (\Subscribed) "/" "qux2/bar2"
|
|||
|
S: D02 OK done
|
|||
|
|
|||
|
The client issues the following command first:
|
|||
|
|
|||
|
C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*2"
|
|||
|
S: * LIST () "/" "foo2" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: * LIST (\Subscribed) "/" "foo2/bar2"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar2"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar22"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar222"
|
|||
|
S: * LIST (\Subscribed) "/" "eps2" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: * LIST (\Subscribed) "/" "qux2/bar2"
|
|||
|
S: D03 OK done
|
|||
|
|
|||
|
and the server may also include (but this would violate a SHOULD NOT
|
|||
|
in Section 3.5, because CHILDINFO is redundant)
|
|||
|
|
|||
|
S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: * LIST (\NonExistent) "/" "qux2" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 17]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
The CHILDINFO extended data item is returned for mailboxes "foo2",
|
|||
|
"baz2", and "eps2", because all of them have subscribed children,
|
|||
|
even though for the mailbox "foo2" only one of the two subscribed
|
|||
|
children matches the pattern, for the mailbox "baz2" all the
|
|||
|
subscribed children match the pattern, and for the mailbox "eps2"
|
|||
|
none of the subscribed children matches the pattern.
|
|||
|
|
|||
|
Note that if the client issues
|
|||
|
|
|||
|
C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*"
|
|||
|
S: * LIST () "/" "foo2" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: * LIST (\Subscribed) "/" "foo2/bar1"
|
|||
|
S: * LIST (\Subscribed) "/" "foo2/bar2"
|
|||
|
S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar2"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar22"
|
|||
|
S: * LIST (\Subscribed) "/" "baz2/bar222"
|
|||
|
S: * LIST (\Subscribed) "/" "eps2" ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: * LIST (\Subscribed) "/" "eps2/mamba"
|
|||
|
S: * LIST (\Subscribed) "/" "qux2/bar2"
|
|||
|
S: D03 OK done
|
|||
|
|
|||
|
The LIST responses for mailboxes "foo2", "baz2", and "eps2" still
|
|||
|
have the CHILDINFO extended data item, even though this information
|
|||
|
is redundant and the client can determine it by itself.
|
|||
|
|
|||
|
10: The following example shows usage of multiple mailbox patterns.
|
|||
|
It also demonstrates that the presence of the CHILDINFO extended
|
|||
|
data item doesn't necessarily imply \HasChildren.
|
|||
|
|
|||
|
C: a1 LIST "" ("foo" "foo/*")
|
|||
|
S: * LIST () "/" foo
|
|||
|
S: a1 OK done
|
|||
|
|
|||
|
C: a2 LIST (SUBSCRIBED) "" "foo/*"
|
|||
|
S: * LIST (\Subscribed \NonExistent) "/" foo/bar
|
|||
|
S: a2 OK done
|
|||
|
|
|||
|
C: a3 LIST (SUBSCRIBED RECURSIVEMATCH) "" foo RETURN (CHILDREN)
|
|||
|
S: * LIST (\HasNoChildren) "/" foo ("CHILDINFO" ("SUBSCRIBED"))
|
|||
|
S: a3 OK done
|
|||
|
|
|||
|
11: The following example shows how a server that supports missing
|
|||
|
mailbox hierarchy elements can signal to a client that didn't
|
|||
|
specify the RECURSIVEMATCH selection option that there is a
|
|||
|
child mailbox that matches the selection criteria.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 18]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
C: a1 LIST (REMOTE) "" *
|
|||
|
S: * LIST () "/" music/rock
|
|||
|
S: * LIST (\Remote) "/" also/jazz
|
|||
|
S: a1 OK done
|
|||
|
|
|||
|
C: a2 LIST () "" %
|
|||
|
S: * LIST (\NonExistent \HasChildren) "/" music
|
|||
|
S: a2 OK done
|
|||
|
|
|||
|
C: a3 LIST (REMOTE) "" %
|
|||
|
S: * LIST (\NonExistent \HasChildren) "/" music
|
|||
|
S: * LIST (\NonExistent \HasChildren) "/" also
|
|||
|
S: a3 OK done
|
|||
|
|
|||
|
C: a3.1 LIST "" (% music/rock)
|
|||
|
S: * LIST () "/" music/rock
|
|||
|
S: a3.1 OK done
|
|||
|
|
|||
|
Because "music/rock" is the only mailbox under "music", there's no
|
|||
|
need for the server to also return "music". However clients must
|
|||
|
handle both cases.
|
|||
|
|
|||
|
6. Formal Syntax
|
|||
|
|
|||
|
The following syntax specification uses the Augmented Backus-Naur
|
|||
|
Form (ABNF) as described in [ABNF]. Terms not defined here are taken
|
|||
|
from [IMAP4]. In particular, note that the version of "mailbox-list"
|
|||
|
below, which defines the payload of the LIST response, updates the
|
|||
|
version defined in the IMAP specification. It is pointed to by
|
|||
|
"mailbox-data", which is defined in [IMAP4].
|
|||
|
|
|||
|
"vendor-token" is defined in [ACAP]. Note that this normative
|
|||
|
reference to ACAP will be an issue in moving this spec forward, since
|
|||
|
it introduces a dependency on ACAP. The definitions of
|
|||
|
"vendor-token" and of the IANA registry must eventually go somewhere
|
|||
|
else, in a document that can be moved forward on the standards track
|
|||
|
independently of ACAP.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 19]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
childinfo-extended-item = "CHILDINFO" SP "("
|
|||
|
list-select-base-opt-quoted
|
|||
|
*(SP list-select-base-opt-quoted) ")"
|
|||
|
; Extended data item (mbox-list-extended-item)
|
|||
|
; returned when the RECURSIVEMATCH
|
|||
|
; selection option is specified.
|
|||
|
; Note 1: the CHILDINFO tag can be returned
|
|||
|
; with and without surrounding quotes, as per
|
|||
|
; mbox-list-extended-item-tag production.
|
|||
|
; Note 2: The selection options are always returned
|
|||
|
; quoted, unlike their specification in
|
|||
|
; the extended LIST command.
|
|||
|
|
|||
|
child-mbox-flag = "\HasChildren" / "\HasNoChildren"
|
|||
|
; attributes for CHILDREN return option, at most one
|
|||
|
; possible per LIST response
|
|||
|
|
|||
|
eitem-standard-tag = atom
|
|||
|
; a tag for extended list data defined in a Standard
|
|||
|
; Track or Experimental RFC.
|
|||
|
|
|||
|
eitem-vendor-tag = vendor-token "-" atom
|
|||
|
; a vendor-specific tag for extended list data
|
|||
|
|
|||
|
list = "LIST" [SP list-select-opts] SP mailbox SP mbox-or-pat
|
|||
|
[SP list-return-opts]
|
|||
|
|
|||
|
list-return-opts = "RETURN" SP
|
|||
|
"(" [return-option *(SP return-option)] ")"
|
|||
|
; list return options, e.g., CHILDREN
|
|||
|
|
|||
|
list-select-base-opt = "SUBSCRIBED" / option-extension
|
|||
|
; options that can be used by themselves
|
|||
|
|
|||
|
list-select-base-opt-quoted = DQUOTE list-select-base-opt DQUOTE
|
|||
|
|
|||
|
list-select-independent-opt = "REMOTE" / option-extension
|
|||
|
; options that do not syntactically interact with
|
|||
|
; other options
|
|||
|
|
|||
|
list-select-mod-opt = "RECURSIVEMATCH" / option-extension
|
|||
|
; options that require a list-select-base-opt
|
|||
|
; to also be present
|
|||
|
|
|||
|
list-select-opt = list-select-base-opt / list-select-independent-opt
|
|||
|
/ list-select-mod-opt
|
|||
|
; An option registration template is described in
|
|||
|
; Section 9.3 of this document.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 20]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
list-select-opts = "(" [
|
|||
|
(*(list-select-opt SP) list-select-base-opt
|
|||
|
*(SP list-select-opt))
|
|||
|
/ (list-select-independent-opt
|
|||
|
*(SP list-select-independent-opt))
|
|||
|
] ")"
|
|||
|
; Any number of options may be in any order.
|
|||
|
; If a list-select-mod-opt appears, then a
|
|||
|
; list-select-base-opt must also appear.
|
|||
|
; This allows these:
|
|||
|
; ()
|
|||
|
; (REMOTE)
|
|||
|
; (SUBSCRIBED)
|
|||
|
; (SUBSCRIBED REMOTE)
|
|||
|
; (SUBSCRIBED RECURSIVEMATCH)
|
|||
|
; (SUBSCRIBED REMOTE RECURSIVEMATCH)
|
|||
|
; But does NOT allow these:
|
|||
|
; (RECURSIVEMATCH)
|
|||
|
; (REMOTE RECURSIVEMATCH)
|
|||
|
|
|||
|
mailbox-list = "(" [mbx-list-flags] ")" SP
|
|||
|
(DQUOTE QUOTED-CHAR DQUOTE / nil) SP mailbox
|
|||
|
[SP mbox-list-extended]
|
|||
|
; This is the list information pointed to by the ABNF
|
|||
|
; item "mailbox-data", which is defined in [IMAP4]
|
|||
|
|
|||
|
mbox-list-extended = "(" [mbox-list-extended-item
|
|||
|
*(SP mbox-list-extended-item)] ")"
|
|||
|
|
|||
|
mbox-list-extended-item = mbox-list-extended-item-tag SP
|
|||
|
tagged-ext-val
|
|||
|
|
|||
|
mbox-list-extended-item-tag = astring
|
|||
|
; The content MUST conform to either "eitem-vendor-tag"
|
|||
|
; or "eitem-standard-tag" ABNF productions.
|
|||
|
; A tag registration template is described in this
|
|||
|
; document in Section 9.5.
|
|||
|
|
|||
|
mbx-list-oflag =/ child-mbox-flag / "\Subscribed" / "\Remote"
|
|||
|
|
|||
|
mbx-list-sflag =/ "\NonExistent"
|
|||
|
|
|||
|
mbox-or-pat = list-mailbox / patterns
|
|||
|
|
|||
|
option-extension = (option-standard-tag / option-vendor-tag)
|
|||
|
[SP option-value]
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 21]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
option-standard-tag = atom
|
|||
|
; an option defined in a Standards Track or
|
|||
|
; Experimental RFC
|
|||
|
|
|||
|
option-val-comp = astring /
|
|||
|
option-val-comp *(SP option-val-comp) /
|
|||
|
"(" option-val-comp ")"
|
|||
|
|
|||
|
option-value = "(" option-val-comp ")"
|
|||
|
|
|||
|
option-vendor-tag = vendor-token "-" atom
|
|||
|
; a vendor-specific option, non-standard
|
|||
|
|
|||
|
patterns = "(" list-mailbox *(SP list-mailbox) ")"
|
|||
|
|
|||
|
return-option = "SUBSCRIBED" / "CHILDREN" / option-extension
|
|||
|
|
|||
|
tagged-ext-comp = astring /
|
|||
|
tagged-ext-comp *(SP tagged-ext-comp) /
|
|||
|
"(" tagged-ext-comp ")"
|
|||
|
; Extensions that follow this general
|
|||
|
; syntax should use nstring instead of
|
|||
|
; astring when appropriate in the context
|
|||
|
; of the extension.
|
|||
|
; Note that a message set or a "number"
|
|||
|
; can always be represented as an "atom".
|
|||
|
; A URL should be represented as
|
|||
|
; a "quoted" string.
|
|||
|
|
|||
|
tagged-ext-simple = sequence-set / number
|
|||
|
|
|||
|
tagged-ext-val = tagged-ext-simple /
|
|||
|
"(" [tagged-ext-comp] ")"
|
|||
|
|
|||
|
7. Internationalization Considerations
|
|||
|
|
|||
|
The LIST command selection option types defined in this specification
|
|||
|
involve simple tests of mailbox properties. However, future
|
|||
|
extensions to LIST-EXTENDED may define selection options that do more
|
|||
|
sophisticated tests. In the case of a test that requires matching
|
|||
|
text, in the presence of the COMPARATOR [I18N] extension, the active
|
|||
|
comparator must be used to do comparisons. Such LIST-EXTENDED
|
|||
|
extensions MUST indicate in their specification the interaction with
|
|||
|
the COMPARATOR [I18N] extension.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 22]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
8. Security Considerations
|
|||
|
|
|||
|
This document describes syntactic changes to the specification of the
|
|||
|
IMAP4 commands LIST, LSUB, RLIST, and RLSUB, and the modified LIST
|
|||
|
command has the same security considerations as those commands. They
|
|||
|
are described in [IMAP4] and [MBRef].
|
|||
|
|
|||
|
The Child Mailbox 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 any child
|
|||
|
mailbox. 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. In most situations, this will not be a
|
|||
|
security concern, because if information regarding whether a mailbox
|
|||
|
has children is considered sensitive, a user would not be granted
|
|||
|
access to that mailbox in the first place.
|
|||
|
|
|||
|
The CHILDINFO extended data item has the same security considerations
|
|||
|
as the \HasChildren attribute described above.
|
|||
|
|
|||
|
9. IANA Considerations
|
|||
|
|
|||
|
9.1. Guidelines for IANA
|
|||
|
|
|||
|
IANA has created two new registries for LIST-EXTENDED options and
|
|||
|
LIST-EXTENDED response data. The templates and the initial
|
|||
|
registrations are detailed below.
|
|||
|
|
|||
|
9.2. Registration Procedure and Change Control
|
|||
|
|
|||
|
Registration of a LIST-EXTENDED option is done by filling in the
|
|||
|
template in Section 9.3 and sending it via electronic mail to
|
|||
|
iana@iana.org. Registration of a LIST-EXTENDED extended data item is
|
|||
|
done by filling in the template in Section 9.5 and sending it via
|
|||
|
electronic mail to iana@iana.org. IANA has the right to reject
|
|||
|
obviously bogus registrations, but will perform no review of claims
|
|||
|
made in the registration form.
|
|||
|
|
|||
|
A LIST-EXTENDED option/extended data item name that starts with "V-"
|
|||
|
is reserved for vendor-specific options/extended data items. All
|
|||
|
options, whether they are vendor specific or global, should be
|
|||
|
registered with IANA. If a LIST-EXTENDED extended data item is
|
|||
|
returned as a result of requesting a particular LIST-EXTENDED option,
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 23]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
the name of the option SHOULD be used as the name of the
|
|||
|
LIST-EXTENDED extended data item.
|
|||
|
|
|||
|
Each vendor-specific option/extended data item MUST start with its
|
|||
|
vendor-token ("vendor prefix"). The vendor-token MUST be registered
|
|||
|
with IANA, using the [ACAP] vendor subtree registry.
|
|||
|
|
|||
|
Standard LIST-EXTENDED option/extended data item names are case
|
|||
|
insensitive. If the vendor prefix is omitted from a vendor-specific
|
|||
|
LIST-EXTENDED option/extended data item name, the rest is case
|
|||
|
insensitive. The vendor prefix itself is not case sensitive, as it
|
|||
|
might contain non-ASCII characters. While the registration
|
|||
|
procedures do not require it, authors of
|
|||
|
LIST-EXTENDED options/extended data items are encouraged to seek
|
|||
|
community review and comment whenever that is feasible. Authors may
|
|||
|
seek community review by posting a specification of their proposed
|
|||
|
mechanism as an
|
|||
|
Internet-Draft. LIST-EXTENDED option/extended data items intended
|
|||
|
for widespread use should be standardized through the normal IETF
|
|||
|
process, when appropriate.
|
|||
|
|
|||
|
Comments on registered LIST-EXTENDED options/extended response data
|
|||
|
should first be sent to the "owner" of the mechanism and/or to the
|
|||
|
IMAPEXT WG mailing list. Submitters of comments may, after a
|
|||
|
reasonable attempt to contact the owner, request IANA to attach their
|
|||
|
comment to the registration itself. If IANA approves of this, the
|
|||
|
comment will be made accessible in conjunction with the registration
|
|||
|
LIST-EXTENDED options/extended response data itself.
|
|||
|
|
|||
|
Once a LIST-EXTENDED registration has been published by IANA, the
|
|||
|
author may request a change to its definition. The change request
|
|||
|
follows the same procedure as the registration request.
|
|||
|
|
|||
|
The owner of a LIST-EXTENDED registration may pass responsibility for
|
|||
|
the registered option/extended data item to another person or agency
|
|||
|
by informing IANA; this can be done without discussion or review.
|
|||
|
|
|||
|
The IESG may reassign responsibility for a LIST-EXTENDED
|
|||
|
option/extended data item. The most common case of this will be to
|
|||
|
enable changes to be made to mechanisms where the author of the
|
|||
|
registration has died, has moved out of contact, or is otherwise
|
|||
|
unable to make changes that are important to the community.
|
|||
|
|
|||
|
LIST-EXTENDED registrations may not be deleted; mechanisms that are
|
|||
|
no longer believed appropriate for use can be declared OBSOLETE by a
|
|||
|
change to their "intended use" field. Such LIST-EXTENDED
|
|||
|
options/extended data items will be clearly marked in the lists
|
|||
|
published by IANA.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 24]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
The IESG is considered to be the owner of all LIST-EXTENDED
|
|||
|
options/extended data items that are on the IETF standards track.
|
|||
|
|
|||
|
9.3. Registration Template for LIST-EXTENDED Options
|
|||
|
|
|||
|
To: iana@iana.org
|
|||
|
Subject: Registration of LIST-EXTENDED option X
|
|||
|
|
|||
|
LIST-EXTENDED option name:
|
|||
|
|
|||
|
LIST-EXTENDED option type: (One of SELECTION or RETURN)
|
|||
|
|
|||
|
Implied return options(s), if the option type is SELECTION: (zero or
|
|||
|
more)
|
|||
|
|
|||
|
LIST-EXTENDED option description:
|
|||
|
|
|||
|
Published specification (optional, recommended):
|
|||
|
|
|||
|
Security considerations:
|
|||
|
|
|||
|
Intended usage:
|
|||
|
(One of COMMON, LIMITED USE, or OBSOLETE)
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
|
|||
|
Owner/Change controller:
|
|||
|
|
|||
|
(Any other information that the author deems interesting may be added
|
|||
|
below this line.)
|
|||
|
|
|||
|
9.4. Initial LIST-EXTENDED Option Registrations
|
|||
|
|
|||
|
The LIST-EXTENDED option registry has been populated with the
|
|||
|
following entries:
|
|||
|
|
|||
|
1. To: iana@iana.org
|
|||
|
Subject: Registration of LIST-EXTENDED option SUBSCRIBED
|
|||
|
|
|||
|
LIST-EXTENDED option name: SUBSCRIBED
|
|||
|
|
|||
|
LIST-EXTENDED option type: SELECTION
|
|||
|
|
|||
|
Implied return options(s): SUBSCRIBED
|
|||
|
|
|||
|
LIST-EXTENDED option description: Causes the LIST command to list
|
|||
|
subscribed mailboxes, rather than the actual mailboxes.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 25]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
Published specification: RFC 5258, Section 3.
|
|||
|
|
|||
|
Security considerations: RFC 5258, Section 8.
|
|||
|
|
|||
|
Intended usage: COMMON
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
Alexey Melnikov <Alexey.Melnikov@isode.com>
|
|||
|
|
|||
|
Owner/Change controller: iesg@ietf.org
|
|||
|
|
|||
|
2. To: iana@iana.org
|
|||
|
Subject: Registration of LIST-EXTENDED option REMOTE
|
|||
|
|
|||
|
LIST-EXTENDED option name: REMOTE
|
|||
|
|
|||
|
LIST-EXTENDED option type: SELECTION
|
|||
|
|
|||
|
Implied return options(s): (none)
|
|||
|
|
|||
|
LIST-EXTENDED option description: Causes the LIST command to
|
|||
|
return remote mailboxes as well as local ones, as described in
|
|||
|
RFC 2193.
|
|||
|
|
|||
|
Published specification: RFC 5258, Section 3.
|
|||
|
|
|||
|
Security considerations: RFC 5258, Section 8.
|
|||
|
|
|||
|
Intended usage: COMMON
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
Alexey Melnikov <Alexey.Melnikov@isode.com>
|
|||
|
|
|||
|
Owner/Change controller: iesg@ietf.org
|
|||
|
|
|||
|
3. To: iana@iana.org
|
|||
|
Subject: Registration of LIST-EXTENDED option SUBSCRIBED
|
|||
|
|
|||
|
LIST-EXTENDED option name: SUBSCRIBED
|
|||
|
|
|||
|
LIST-EXTENDED option type: RETURN
|
|||
|
|
|||
|
LIST-EXTENDED option description: Causes the LIST command to
|
|||
|
return subscription state.
|
|||
|
|
|||
|
Published specification: RFC 5258, Section 3.
|
|||
|
|
|||
|
Security considerations: RFC 5258, Section 8.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 26]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
Intended usage: COMMON
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
Alexey Melnikov <Alexey.Melnikov@isode.com>
|
|||
|
|
|||
|
Owner/Change controller: iesg@ietf.org
|
|||
|
|
|||
|
4. To: iana@iana.org
|
|||
|
Subject: Registration of LIST-EXTENDED option RECURSIVEMATCH
|
|||
|
|
|||
|
LIST-EXTENDED option name: RECURSIVEMATCH
|
|||
|
|
|||
|
LIST-EXTENDED option type: SELECTION
|
|||
|
|
|||
|
Implied return options(s): (none)
|
|||
|
|
|||
|
LIST-EXTENDED option description: Requests that CHILDINFO
|
|||
|
extended data item (childinfo-extended-item) is to be returned.
|
|||
|
|
|||
|
Published specification: RFC 5258, Section 3.
|
|||
|
|
|||
|
Security considerations: RFC 5258, Section 8.
|
|||
|
|
|||
|
Intended usage: COMMON
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
Alexey Melnikov <Alexey.Melnikov@isode.com>
|
|||
|
|
|||
|
Owner/Change controller: iesg@ietf.org
|
|||
|
|
|||
|
5. To: iana@iana.org
|
|||
|
Subject: Registration of LIST-EXTENDED option CHILDREN
|
|||
|
|
|||
|
LIST-EXTENDED option name: CHILDREN
|
|||
|
|
|||
|
LIST-EXTENDED option type: RETURN
|
|||
|
|
|||
|
LIST-EXTENDED option description: Requests mailbox child
|
|||
|
information.
|
|||
|
|
|||
|
Published specification: RFC 5258, Section 3 and Section 4.
|
|||
|
|
|||
|
Security considerations: RFC 5258, Section 8.
|
|||
|
|
|||
|
Intended usage: COMMON
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
Alexey Melnikov <Alexey.Melnikov@isode.com>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 27]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
Owner/Change controller: iesg@ietf.org
|
|||
|
|
|||
|
9.5. Registration Template for LIST-EXTENDED Extended Data Item
|
|||
|
|
|||
|
To: iana@iana.org
|
|||
|
Subject: Registration of X LIST-EXTENDED extended data item
|
|||
|
|
|||
|
LIST-EXTENDED extended data item tag:
|
|||
|
|
|||
|
LIST-EXTENDED extended data item description:
|
|||
|
|
|||
|
Which LIST-EXTENDED option(s) (and their types) causes this extended
|
|||
|
data item to be returned (if any):
|
|||
|
|
|||
|
Published specification (optional, recommended):
|
|||
|
|
|||
|
Security considerations:
|
|||
|
|
|||
|
Intended usage:
|
|||
|
(One of COMMON, LIMITED USE, or OBSOLETE)
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
|
|||
|
Owner/Change controller:
|
|||
|
|
|||
|
(Any other information that the author deems interesting may be added
|
|||
|
below this line.)
|
|||
|
|
|||
|
9.6. Initial LIST-EXTENDED Extended Data Item Registrations
|
|||
|
|
|||
|
The LIST-EXTENDED extended data item registry has been populated with
|
|||
|
the following entries:
|
|||
|
|
|||
|
1. To: iana@iana.org
|
|||
|
Subject: Registration of CHILDINFO LIST-EXTENDED extended data
|
|||
|
item
|
|||
|
|
|||
|
LIST-EXTENDED extended data item tag: CHILDINFO
|
|||
|
|
|||
|
LIST-EXTENDED extended data item description: The CHILDINFO
|
|||
|
extended data item describes the selection criteria that has
|
|||
|
caused it to be returned and indicates that the mailbox has one
|
|||
|
or more child mailboxes that match the selection criteria.
|
|||
|
|
|||
|
Which LIST-EXTENDED option(s) (and their types) causes this
|
|||
|
extended data item to be returned (if any): RECURSIVEMATCH
|
|||
|
selection option
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 28]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
Published specification: RFC 5258, Section 3.5.
|
|||
|
|
|||
|
Security considerations: RFC 5258, Section 8.
|
|||
|
|
|||
|
Intended usage: COMMON
|
|||
|
|
|||
|
Person and email address to contact for further information:
|
|||
|
Alexey Melnikov <Alexey.Melnikov@isode.com>
|
|||
|
|
|||
|
Owner/Change controller: iesg@ietf.org
|
|||
|
|
|||
|
10. Acknowledgements
|
|||
|
|
|||
|
Mike Gahrns and Raymond Cheng of Microsoft Corporation originally
|
|||
|
devised the Child Mailbox Extension and proposed it in 1997; the
|
|||
|
idea, as well as most of the text in Section 4, is theirs.
|
|||
|
|
|||
|
This document is the result of discussions on the IMAP4 and IMAPEXT
|
|||
|
mailing lists and is meant to reflect consensus of those groups. In
|
|||
|
particular, Mark Crispin, Philip Guenther, Cyrus Daboo, Timo
|
|||
|
Sirainen, Ken Murchison, Rob Siemborski, Steve Hole, Arnt
|
|||
|
Gulbrandsen, Larry Greenfield, Dave Cridland, and Pete Maclean were
|
|||
|
active participants in those discussions or made suggestions to this
|
|||
|
document.
|
|||
|
|
|||
|
11. References
|
|||
|
|
|||
|
11.1. Normative References
|
|||
|
|
|||
|
[ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
|
|||
|
Specifications: ABNF", STD 68, RFC 5234, January 2008.
|
|||
|
|
|||
|
[ACAP] Newman, C. and J. Myers, "ACAP -- Application Configuration
|
|||
|
Access Protocol", RFC 2244, November 1997.
|
|||
|
|
|||
|
[I18N] Newman, C., Gulbrandsen, A., and A. Melnikov, "Internet
|
|||
|
Message Access Protocol Internationalization", RFC 5255,
|
|||
|
June 2008.
|
|||
|
|
|||
|
[IMAP4] Crispin, M., "Internet Message Access Protocol - Version
|
|||
|
4rev1", RFC 3501, March 2003.
|
|||
|
|
|||
|
[Kwds] Bradner, S., "Key words for use in RFCs to Indicate
|
|||
|
Requirement Levels", RFC 2119, March 1997.
|
|||
|
|
|||
|
[MBRef] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193,
|
|||
|
September 1997.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 29]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
11.2. Informative References
|
|||
|
|
|||
|
[CMbox] Gahrns, M. and R. Cheng, "The Internet Message Action
|
|||
|
Protocol (IMAP4) Child Mailbox Extension", RFC 3348,
|
|||
|
July 2002.
|
|||
|
|
|||
|
Authors' Addresses
|
|||
|
|
|||
|
Barry Leiba
|
|||
|
IBM T.J. Watson Research Center
|
|||
|
19 Skyline Drive
|
|||
|
Hawthorne, NY 10532
|
|||
|
US
|
|||
|
|
|||
|
Phone: +1 914 784 7941
|
|||
|
EMail: leiba@watson.ibm.com
|
|||
|
|
|||
|
|
|||
|
Alexey Melnikov
|
|||
|
Isode Limited
|
|||
|
5 Castle Business Village
|
|||
|
36 Station Road
|
|||
|
Hampton, Middlesex TW12 2BX
|
|||
|
UK
|
|||
|
|
|||
|
EMail: Alexey.Melnikov@isode.com
|
|||
|
URI: http://www.melnikov.ca/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 30]
|
|||
|
|
|||
|
RFC 5258 IMAP4 LIST Command Extensions June 2008
|
|||
|
|
|||
|
|
|||
|
Full Copyright Statement
|
|||
|
|
|||
|
Copyright (C) The IETF Trust (2008).
|
|||
|
|
|||
|
This document is subject to the rights, licenses and restrictions
|
|||
|
contained in BCP 78, and except as set forth therein, the authors
|
|||
|
retain all their rights.
|
|||
|
|
|||
|
This document and the information contained herein are provided on an
|
|||
|
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
|||
|
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
|||
|
THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
|
|||
|
|
|||
|
Intellectual Property
|
|||
|
|
|||
|
The IETF takes no position regarding the validity or scope of any
|
|||
|
Intellectual Property Rights or other rights that might be claimed to
|
|||
|
pertain to the implementation or use of the technology described in
|
|||
|
this document or the extent to which any license under such rights
|
|||
|
might or might not be available; nor does it represent that it has
|
|||
|
made any independent effort to identify any such rights. Information
|
|||
|
on the procedures with respect to rights in RFC documents can be
|
|||
|
found in BCP 78 and BCP 79.
|
|||
|
|
|||
|
Copies of IPR disclosures made to the IETF Secretariat and any
|
|||
|
assurances of licenses to be made available, or the result of an
|
|||
|
attempt made to obtain a general license or permission for the use of
|
|||
|
such proprietary rights by implementers or users of this
|
|||
|
specification can be obtained from the IETF on-line IPR repository at
|
|||
|
http://www.ietf.org/ipr.
|
|||
|
|
|||
|
The IETF invites any interested party to bring to its attention any
|
|||
|
copyrights, patents or patent applications, or other proprietary
|
|||
|
rights that may cover technology that may be required to implement
|
|||
|
this standard. Please address the information to the IETF at
|
|||
|
ietf-ipr@ietf.org.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Leiba & Melnikov Standards Track [Page 31]
|
|||
|
|