Internet DRAFT - draft-melnikov-imap-createparams
draft-melnikov-imap-createparams
Internet Draft: Reporting flag state in IMAP A. Melnikov
Document: draft-melnikov-imap-createparams-01.txt Isode Ltd.
Expires: March 2006 September 2005
Intended category: Standards Track
IMAP CREATE/RENAME parameters
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79.
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.
A revised version of this draft document will be submitted to the RFC
editor as a Proposed Standard for the Internet Community. Discussion
and suggestions for improvement are requested, and should be sent to
the IMAPEXT Mailing list <ietf-imapext@imc.org>. Distribution of this
draft is unlimited.
Abstract
When creating (or renaming) a mailbox in [IMAP4] it is desirable to
be able to specify additional creation time parameters that can't be
changed after the mailbox is created. Some examples of the creation
time parameters are: mailbox type, mailbox location on a server or a
cluster of servers, mailbox flag state. This document extends IMAP
CREATE and RENAME commands to allow for such parameters.
A server which supports this extension indicates this with a
capability name of "X-DRAFT-I01-CREATEPARAM".
Melnikov Expires: March 2006 [Page 1]
INTERNET DRAFT IMAP CREATE parameters September 2005
Table of Contents
0. To do.........................................................1
1. Conventions Used in this Document.............................2
2. Extended CREATE command.......................................X
2.1. Partition identifier parameter to CREATE command.............X
2.2. TYPE parameter to CREATE command.............................X
2.3. SHAREDFLAGS parameter to CREATE command......................X
3. Extended RENAME command.......................................X
4. Security Considerations.......................................X
5. Formal Syntax.................................................X
6. IANA considerations...........................................X
7. Acknowledgments...............................................X
8. Normative References..........................................X
9. Author's Addresses............................................X
10. Intellectual Property.........................................X
11. Full Copyright Statement......................................X
1. Conventions Used in this Document
"C:" and "S:" in examples show lines sent by the client and server
respectively.
The keywords "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
in this document when typed in uppercase are to be interpreted as
defined in "Key words for use in RFCs to Indicate Requirement Levels"
[KEYWORDS].
Melnikov Expires: March 2006 [Page 2]
INTERNET DRAFT IMAP CREATE parameters September 2005
2. Extended CREATE command
Arguments: mailbox name
OPTIONAL list of CREATE parameters
Responses: no specific responses for this command
Result: OK - create completed
NO - create failure: can't create mailbox with that name
and parameters
BAD - argument(s) invalid
See section 6.3.3 of [IMAP4] for the description of the basic CREATE
command. The text in this section only describes how this behavior is
modified by additional parameter.
This extension adds the ability to include one or more parameters
with the IMAP CREATE command, to turn on or off certain standard
behaviour, or to add new optional behaviours required for a
particular extension. Optional parameters to the CREATE command are
added as a parenthesised list of attribute/value pairs after the
mailbox name. Each value can be either an atom, a string or a list.
The order of individual parameters is arbitrary. Individual
parameters may consist of one or more atoms or strings in a specific
order. If a parameter consists of more than one atom or string, it
MUST appear in its own parenthesised list. Any parameter not defined
by extensions that the server supports MUST be rejected with a BAD
response.
Several new CREATE command parameters are defined in subsequent
sections.
Extended CREATE can't be used to modify parameters of an already
existing mailbox. The server MUST return NO to any such request.
Example: C: a CREATE Forms (PARTITION Server1:partition5 TYPE
CALENDAR)
S: a OK CREATE complete
In the above example, the mailbox "Forms" is create on partition
names "Server1:partition5" and has a type CALENDAR. See also
section 2.2.
2.1. Partition identifier parameter to CREATE and RENAME commands
Several existing IMAP servers support a concept of "partition". A
partition describes a collection of related mailboxes in a
mailstore. Each partition is identified by a unique partition
Melnikov Expires: March 2006 [Page 3]
INTERNET DRAFT IMAP CREATE parameters September 2005
identifier, which may contains a globally unique prefix (e.g. host
name or domain name), followed by a local partition identifier. For
example, a server implementation that stores mailboxes in a
filesystem may choose to use the root directory for a partition as
the local partition identifier. (See also the Security
Considerations section for discussions about partition naming.)
Servers that don't support the partition concept SHOULD ignore the
partition parameter to CREATE and RENAME commands.
2.1.1. Additional requirements on the partition identifier parameter
to CREATE
Note, If the partition identifier parameter is not specified, the
server supporting multiple partitions uses internal policy to
assign the new mailbox to one of the existing partitions.
If one or more of the superior hierarchical mailboxes doesn't exist
the server SHOULD create such superior mailboxes, as described in
section 6.3.3 of [IMAP4]. Such superior mailboxes SHOULD be
assigned to the same partition as the mailbox itself. In other
words, an attempt to create "foo/bar/zap" on a server in which "/"
is the hierarchy separator character SHOULD create foo/ and
foo/bar/ if they do not already exist. If the mailbox "foo" already
exists and is assigned to "partition1" and the client requests to
create "foo/bar/zap" on "partition2", than the server SHOULD create
both "foo/bar" and "foo/bar/zap" on "partition2".
2.2. TYPE parameter to CREATE command
Many existing IMAP servers provide access to specialized
mailstores, for example mailstores that can store voice messages as
described in VPIM <<add informative reference>>.
The TYPE parameter to CREATE command allows the client to give a
hint about intended usage of the mailbox to be created. Such hint
can be used by the server to choose storage format. For example,
some storage formats can only store or be optimized for certain
types of MIME messages.
This document defines the following initial set of mailbox types:
- "CONTACT" - can contain MIME messages containing text/plain (?)
and
vCARD
- "CALENDAR" - can contain vCALENDAR objects as described in <<>>
- "VOICE"
- "IMAGE"
Melnikov Expires: March 2006 [Page 4]
INTERNET DRAFT IMAP CREATE parameters September 2005
- "VIDEO"
- "JUNK" - messages identified by the user as junk. Messages MAY
be deleted
automatically from such mailbox after some period of
time.
- "VIEW" - "virtual mailbox", created using a persistent mailbox
search mechanism.
<<TODO: review the list and potentially add more types, like task
lists>>
2.3. SHAREDFLAGS parameter to CREATE command
<<Also add PRIVATEFLAGS?>>
Let's call a flag shared for a mailbox if the mailbox may be set up
so that any changes to this flag by a user A are persistent and
visible to a different user B. Note, that different mailboxes may
have different flags as shared.
SHAREDFLAGS parameter allows to specify which system flags and user
defined keywords should be shared for the mailbox. It also allows
to "precreate" some user defined keyword.
The server is not required to be able to store any particular
system flag or user defined keyword as shared. If the server is
unable to persistently store certain flags from SHAREFLAGS list or
store certain flags as shared (or unable to store any user defined
flag, when a user defined flag is specified), it MUST return NO to
the CREATE command with the SHAREDFLAGS parameter and MUST NOT
create the mailbox.
If multiple flags are specified in the SHAREDFLAGS parameter the
server MUST either be able to store all requested flags as shared
or fail the command with the tagged NO response.
The server MAY restrict which users can create a mailbox with
SHAREDFLAGS parameter and which flags may be stored as shared.
When a child submailbox is created and no SHAREDFLAGS parameter is
specified, the parent SHAREDFLAGS settings SHOULD be used.
If a mailbox created with SHAREDFLAGS parameter is subsequently
renamed, the SHAREDFLAGS settings SHOULD be preserved. <<SHOULD
because it can be moved to a different namespace that might have
different restrictions>>
Melnikov Expires: March 2006 [Page 5]
INTERNET DRAFT IMAP CREATE parameters September 2005
A server which supports the SHAREDFLAGS parameter to the CREATE
command indicates this with a capability name of "X-DRAFT-
I00-CREATEFLAGS". This is in addition to the "X-DRAFT-
I00-CREATEPARAM" capability.
Example: C: a CREATE Forms (SHAREDFLAGS (\Seen $MDNSent))
S: a OK CREATE completed. Requested flags are shared.
...
C: b SELECT Forms
S: * 172 EXISTS
S: * 1 RECENT
S: * OK [UNSEEN 12] Message 12 is first unseen
S: * OK [UIDVALIDITY 3857529045] UIDs valid
S: * OK [UIDNEXT 4392] Predicted next UID
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft
$MDNSent)
S: * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted
\Seen $MDNSent)] Draft flag is not permanent
S: * OK [SHAREDFLAGS (\Seen $MDNSent)] Limited
S: b OK [READ-WRITE] SELECT completed
3. Extended RENAME command
Arguments: existing mailbox name
new mailbox name
OPTIONAL list of RENAME parameters
Responses: no specific responses for this command
Result: OK - rename completed
NO - rename failure: can't rename mailbox with that
name, can't rename to mailbox with that name,
can't move the mailbox to the specified partition,
etc.
BAD - argument(s) invalid
See section 6.3.5 of [IMAP4] for the description of the basic
RENAME command. The text in this section only describes how this
behavior is modified by additional parameter.
This extension adds the ability to include one or more parameters
with the IMAP RENAME command, to turn on or off certain standard
behaviour, or to add new optional behaviours required for a
particular extension. Optional parameters to the RENAME command
are added as a parenthesised list of attribute/value pairs after
the mailbox name. Each value can be either an atom, a string or a
list. The order of individual parameters is arbitrary. Individual
parameters may consist of one or more atoms or strings in a
Melnikov Expires: March 2006 [Page 6]
INTERNET DRAFT IMAP CREATE parameters September 2005
specific order. If a parameter consists of more than one atom or
string, it MUST appear in its own parenthesised list. Any parameter
not defined by extensions that the server supports MUST be rejected
with a BAD response.
Note that not all CREATE parameters are allowed as RENAME
parameters and vice versa.
The RENAME command changes the name of a mailbox from "existing
mailbox name" to "new mailbox name".
One of the RENAME command parameters is the partition identifier
parameter, which is described in more details in section 2.1.
Servers that don't support the partition concept SHOULD ignore the
partition parameter. When the new partition identifier parameter
is specified the server is requested to "move" the mailbox to a
different partition. Thus in order to move a mailbox between two
partitions the client can issue a RENAME command with the new
mailbox name being the same as the existing mailbox name, and the
partition identifier parameter specifying the new partition.
If one or more of the superior hierarchical mailboxes for the new
mailbox name doesn't exist the server SHOULD create such superior
mailboxes, as described in section 6.3.5 of [IMAP4]. Such superior
mailboxes SHOULD be assigned to the same partition as the new
mailbox name itself. In other words, an attempt to rename
"foo/bar/zap" to "baz/rag/zowie" on a server in which "/" is the
hierarchy separator character SHOULD create baz/ and baz/rag/ if
they do not already exist. If the mailbox "baz" already exists and
is assigned to "partition1" and the client requests to move
"foo/bar/zap" to "partition2", than the server SHOULD create both
"baz/rag" and "baz/rag/zowie" on "partition2".
If the existing mailbox name has inferior hierarchical mailboxes,
then the inferior hierarchical mailboxes MUST also be renamed. For
example, a rename of "foo" to "zap" will rename "foo/bar" (assuming
"/" is the hierarchy delimiter character) to "zap/bar". If the new
partition identifer parameter is specified, than all inferior
mailboxes SHOULD be moved to the specified partition.
4. Security Considerations
<<Certain CREATE/RENAME parameters shouldn't be allowed for all
users. For example, a server implementation may restrict usage of
the partion identifier parameter in CREATE/RENAME to users with
administrative priveleges.>>
Melnikov Expires: March 2006 [Page 7]
INTERNET DRAFT IMAP CREATE parameters September 2005
A partition name may disclose too match information about
particular implementation. For example, if different partitions are
implemented as different directories in a file system, and a
partition name is the file system path, partition name may disclose
the file system layout.
5. Formal Syntax
Formal syntax is defined using ABNF [ABNF] as modified by [IMAP4].
Non-terminals referenced but not defined below are as defined by
[ABNF], [IMAP4] or [IMAPABNF].
Except as noted otherwise, all alphabetic characters are case-
insensitive. The use of upper or lower case characters to define
token strings is for editorial clarity only. Implementations MUST
accept these strings in a case-insensitive fashion.
capability =/ "X-DRAFT-I00-CREATEPARAM" /
"X-DRAFT-I00-CREATEFLAGS"
;; "capability" is defined in [IMAP4]
create-param =/ partition-param /
("TYPE" SP mailbox-type) /
("SHAREDFLAGS" SP flag-list)
;; "flag-list" is defined in [IMAP4]
mailbox-type = "CONTACT" / "CALENDAR" / "VOICE" / "IMAGE" /
"VIDEO" / "JUNK" / "VIEW"
<<sync with section 2.2>>
partition-param = "PARTITION" SP partition
partition = [partition-server ":"] partition-local
;; use astring instead?
partition-server = atom
;; No ":" allowed, unless IPv6 address?
partition-local = atom
;; No ":" allowed
rename-param =/ partition-param
6. IANA considerations
Melnikov Expires: March 2006 [Page 8]
INTERNET DRAFT IMAP CREATE parameters September 2005
<<TBD>>
7. Acknowledgments
The author would like to thank Cyrus Daboo for the initial
motivation for this document.
8. Normative References
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", RFC 2119, March 1997.
[ABNF] Crocker, Overell, "Augmented BNF for Syntax Specifications:
ABNF", RFC 2234, Internet Mail Consortium, Demon Internet Ltd,
November 1997.
[IMAP4] Crispin, M., "Internet Message Access Protocol - Version
4rev1", RFC 3501, University of Washington, March 2003.
[IMAPABNF] Melnikov, A., and C. Daboo, "Collected extensions to IMAP4
ABNF", work in progress, draft-melnikov-imap-ext-abnf-XX.txt.
9. Author's Addresses
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/
Melnikov Expires: March 2006 [Page 9]
INTERNET DRAFT IMAP CREATE parameters September 2005
10. 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.
11. Full Copyright Statement
Copyright (C) The Internet Society (2005).
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 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.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Melnikov Expires: March 2006 [Page 10]