RFC 6154 PROPOSED STANDARD EMAIL · IMAP · MAILBOXES

IMAP Special-Use: IMAP LIST Extension for Special-Use Mailboxes

How an IMAP server can tell your mail client which folder is Drafts, Sent, Trash and so on.

On rfc-editor.org ↗
PUBLISHED
March 2011
AUTHORS
B. Leiba, J. Nicolson
STREAM
IETF
SPECIAL-USE ATTRIBUTES
7: \All, \Archive, \Drafts, \Flagged, \Junk, \Sent, \Trash
LIST CAPABILITY
SPECIAL-USE
CREATE CAPABILITY
CREATE-SPECIAL-USE
METADATA ENTRY
/private/specialuse
FAILURE RESPONSE CODE
USEATTR
DOI
10.17487/RFC6154
ERRATA
Reported errata

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                          B. Leiba
Request for Comments: 6154                           Huawei Technologies
Category: Standards Track                                    J. Nicolson
ISSN: 2070-1721                                                   Google
                                                              March 2011


             IMAP LIST Extension for Special-Use Mailboxes

Abstract

   Some IMAP message stores include special-use mailboxes, such as those
   used to hold draft messages or sent messages.  Many mail clients
   allow users to specify where draft or sent messages should be put,
   but configuring them requires that the user know which mailboxes the
   server has set aside for these purposes.  This extension adds new
   optional mailbox attributes that a server may include in IMAP LIST
   command responses to identify special-use mailboxes to the client,
   easing configuration.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6154.

Copyright Notice

   Copyright (c) 2011 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  Conventions Used in This Document  . . . . . . . . . . . .  3
   2.  New Mailbox Attributes Identifying Special-Use Mailboxes . . .  3
   3.  Extension to IMAP CREATE Command to Set Special-Use
       Attributes . . . . . . . . . . . . . . . . . . . . . . . . . .  5
   4.  IMAP METADATA Entry for Special-Use Attributes . . . . . . . .  6
   5.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . .  7
     5.1.  Example of an IMAP LIST Command  . . . . . . . . . . . . .  7
     5.2.  Example of an Extended IMAP LIST Command . . . . . . . . .  7
     5.3.  Example of an IMAP CREATE Command  . . . . . . . . . . . .  8
     5.4.  Example of Using IMAP METADATA to Manipulate
           Special-Use Attributes . . . . . . . . . . . . . . . . . .  8
   6.  Formal Syntax  . . . . . . . . . . . . . . . . . . . . . . . .  9
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . .  9
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 10
     8.1.  Registration of USEATTR IMAP Response Code . . . . . . . . 10
     8.2.  Registration of CREATE-SPECIAL-USE IMAP Capability . . . . 10
     8.3.  Registration of SPECIAL-USE IMAP Capability  . . . . . . . 10
     8.4.  Registration of SPECIAL-USE Selection Option . . . . . . . 10
     8.5.  Registration of SPECIAL-USE Return Option  . . . . . . . . 11
     8.6.  Registration of SPECIAL-USE Metadata . . . . . . . . . . . 11
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
     9.1.  Normative References . . . . . . . . . . . . . . . . . . . 12
     9.2.  Informative References . . . . . . . . . . . . . . . . . . 12

1.  Introduction

   Some IMAP message stores include special-use mailboxes, such as those
   used to hold draft messages or sent messages.  Many mail clients
   allow users to specify where draft or sent messages should be put,
   but configuring them requires that the user know which mailboxes the
   server has set aside for these purposes.  This extension adds new
   optional mailbox attributes that a server may include in IMAP LIST
   command responses to identify special-use mailboxes to the client,
   easing configuration.

   In addition, this extension adds an optional parameter on the IMAP
   CREATE command, allowing a client to assign a special use to a
   mailbox when it is created.  Servers may choose to support this part
   of the extension, but are not required to.

1.1.  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", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

2.  New Mailbox Attributes Identifying Special-Use Mailboxes

   An IMAP server that supports this extension MAY include any or all of
   the following attributes in responses to the non-extended IMAP LIST
   command.  The new attributes are included along with existing
   attributes, such as "\Marked" and "\Noselect".  A given mailbox may
   have none, one, or more than one of these attributes.  In some cases,
   a special use is advice to a client about what to put in that
   mailbox.  In other cases, it's advice to a client about what to
   expect to find there.  There is no capability string related to the
   support of special-use attributes on the non-extended LIST command.

   For the extended list command [RFC5258], this extension adds a new
   capability string, a new selection option, and a new return option,
   all called "SPECIAL-USE".  Supporting implementations MUST include
   the "SPECIAL-USE" capability string in response to an IMAP CAPABILITY
   command.  If the client specifies the "SPECIAL-USE" selection option,
   the LIST command MUST return only those mailboxes that have a
   special-use attribute set.  If the client specifies the "SPECIAL-USE"
   return option, the LIST command MUST return the new special-use
   attributes on those mailboxes that have them set.  The "SPECIAL-USE"
   return option is implied by the "SPECIAL-USE" selection option.  The
   extended LIST command MAY return SPECIAL-USE attributes even if the
   client does not specify the return option.

   The new attributes defined here are as follows:

   \All
        This mailbox presents all messages in the user's message store.
        Implementations MAY omit some messages, such as, perhaps, those
        in \Trash and \Junk.  When this special use is supported, it is
        almost certain to represent a virtual mailbox.

   \Archive
        This mailbox is used to archive messages.  The meaning of an
        "archival" mailbox is server-dependent; typically, it will be
        used to get messages out of the inbox, or otherwise keep them
        out of the user's way, while still making them accessible.

   \Drafts
        This mailbox is used to hold draft messages -- typically,
        messages that are being composed but have not yet been sent.  In
        some server implementations, this might be a virtual mailbox,
        containing messages from other mailboxes that are marked with
        the "\Draft" message flag.  Alternatively, this might just be
        advice that a client put drafts here.

   \Flagged
        This mailbox presents all messages marked in some way as
        "important".  When this special use is supported, it is likely
        to represent a virtual mailbox collecting messages (from other
        mailboxes) that are marked with the "\Flagged" message flag.

   \Junk
        This mailbox is where messages deemed to be junk mail are held.
        Some server implementations might put messages here
        automatically.  Alternatively, this might just be advice to a
        client-side spam filter.

   \Sent
        This mailbox is used to hold copies of messages that have been
        sent.  Some server implementations might put messages here
        automatically.  Alternatively, this might just be advice that a
        client save sent messages here.

   \Trash
        This mailbox is used to hold messages that have been deleted or
        marked for deletion.  In some server implementations, this might
        be a virtual mailbox, containing messages from other mailboxes
        that are marked with the "\Deleted" message flag.
        Alternatively, this might just be advice that a client that
        chooses not to use the IMAP "\Deleted" model should use this as
        its trash location.  In server implementations that strictly
        expect the IMAP "\Deleted" model, this special use is likely not
        to be supported.

   All of the above attributes are OPTIONAL, and any given server or
   message store may support any combination of the attributes, or none
   at all.  In most cases, there will likely be at most one mailbox with
   a given attribute for a given user, but in some server or message
   store implementations it might be possible for multiple mailboxes to
   have the same special-use attribute.

   Special-use attributes are likely to be user-specific.  User Adam
   might share his \Sent mailbox with user Barb, but that mailbox is
   unlikely to also serve as Barb's \Sent mailbox.  It's certainly
   possible for Adam and Barb to each set the \Sent use on the same
   mailbox, but that would be done by specific action (see the sections
   below).

3.  Extension to IMAP CREATE Command to Set Special-Use Attributes

   As an OPTIONAL feature, a server MAY allow clients to designate a
   mailbox, at creation, as having one or more special uses.  This
   extension defines the "USE" parameter to the IMAP CREATE command for
   that purpose (using the syntax defined in RFC 4466 section 2.2
   [RFC4466]).  The new OPTIONAL "USE" parameter is followed by a
   parenthesized list of zero or more special-use attributes, as defined
   above.

   In some server implementations, some special uses may imply automatic
   action by the server.  For example, creation of a "\Junk" mailbox
   might cause the server to start placing messages that have been
   evaluated as spam into the mailbox.

   In some server implementations, some special uses may result in a
   mailbox with unusual characteristics or side effects.  For example,
   creation of an "\All" mailbox might cause the server to create a
   virtual mailbox, rather than a standard one, and that mailbox might
   behave in unexpected ways (COPY into it might fail, for example).

   Servers MAY allow the creation of a special-use mailbox even if one
   so designated already exists.  This might have the effect of moving
   the special use from the old mailbox to the new one, or might create
   multiple mailboxes with the same special use.  Alternatively, servers
   MAY refuse the creation, considering the designation to be a
   conflict.

   If the server cannot create a mailbox with the designated special use
   defined, for whatever reason, it MUST NOT create the mailbox, and
   MUST respond to the CREATE command with a tagged NO response.  If the
   reason for the failure is related to the special-use attribute (the
   specified special use is not supported or cannot be assigned to the
   specified mailbox), the server SHOULD include the new "USEATTR"
   response code in the tagged response (see Section 5.3 for an
   example).

   An IMAP server that supports this OPTIONAL feature will advertise the
   "CREATE-SPECIAL-USE" capability string.  Clients MUST NOT use the
   "USE" parameter unless the server advertises the capability.  Note
   that this capability string is different from the "SPECIAL-USE"
   string defined above, and a server that supports both functions MUST
   advertise both capability strings.

4.  IMAP METADATA Entry for Special-Use Attributes

   If a server supports this extension and the METADATA extension
   [RFC5464], it SHOULD tie the special-use attributes for a mailbox to
   its metadata entry "/private/specialuse".  The value of /private/
   specialuse is either NIL (if there are no special-use attributes for
   that mailbox) or a space-separated list of special-use attributes,
   presented the same way they would be presented in the LIST command
   response.

   Such a server MAY allow the setting of special-use attributes through
   the METADATA mechanisms, thereby allowing clients to change the
   special uses of existing mailboxes.  These changes might have side
   effects, as the server automatically adjusts the special uses
   accordingly, just as it might do with CREATE USE, above.  See
   Section 5.4 for an example.

   A server that supports this MUST check the validity of changes to the
   special-use attributes that are done through the metadata in the same
   way that it checks validity for the CREATE command and for any
   internal mechanisms for setting special uses on mailboxes.  It MUST
   NOT just blindly accept setting of these metadata by clients, which
   might result in the setting of special uses that the implementation
   does not support, multiple mailboxes with the same special use, or
   other situations that the implementation considers invalid.

5.  Examples

5.1.  Example of an IMAP LIST Command

   This example shows an IMAP LIST response from a server that supports
   this extension.  Note that not all of the attributes are used.  This
   server also supports the Child Mailbox extension [RFC3348].

     C: t1 LIST "" "%"
     S: * LIST (\Marked \HasNoChildren) "/" Inbox
     S: * LIST (\HasNoChildren) "/" ToDo
     S: * LIST (\HasChildren) "/" Projects
     S: * LIST (\Sent \HasNoChildren) "/" SentMail
     S: * LIST (\Marked \Drafts \HasNoChildren) "/" MyDrafts
     S: * LIST (\Trash \HasNoChildren) "/" Trash
     S: t1 OK done

5.2.  Example of an Extended IMAP LIST Command

   This example shows an IMAP LIST response from a server that supports
   this extension.  The client uses the extended IMAP LIST command.

     C: t1 CAPABILITY
     S: * CAPABILITY IMAP4rev1 SPECIAL-USE
     S: t1 OK done

     C: t2 LIST "" "%" RETURN (SPECIAL-USE)
     S: * LIST (\Marked) "/" Inbox
     S: * LIST () "/" ToDo
     S: * LIST () "/" Projects
     S: * LIST (\Sent) "/" SentMail
     S: * LIST (\Marked \Drafts) "/" MyDrafts
     S: * LIST (\Trash) "/" Trash
     S: t2 OK done

   Here, the client also includes the "SPECIAL-USE" selection option for
   the same list.  The "SPECIAL-USE" return option could also have been
   specified, but it is unnecessary, as it is implied by the selection
   option.  Note that in this case, mailboxes that do not have a
   special-use attribute are not listed.  Also note that we've used the
   wildcard "*", rather than "%", to make sure we see all special-use
   mailboxes, even ones that might not be at the namespace's root.

     C: t3 LIST (SPECIAL-USE) "" "*"
     S: * LIST (\Sent) "/" SentMail
     S: * LIST (\Marked \Drafts) "/" MyDrafts
     S: * LIST (\Trash) "/" Trash
     S: t3 OK done

5.3.  Example of an IMAP CREATE Command

   This example shows an IMAP CREATE command that might be used to
   create a mailbox designated to hold draft and sent messages.  It also
   attempts to create a mailbox that will contain all the user's
   messages, but the server does not support that special use for this
   user's message store.

     C: t1 CAPABILITY
     S: * CAPABILITY IMAP4rev1 CREATE-SPECIAL-USE
     S: t1 OK done

     C: t2 CREATE MySpecial (USE (\Drafts \Sent))
     S: t2 OK MySpecial created

     C: t3 CREATE Everything (USE (\All))
     S: t3 NO [USEATTR] \All not supported

5.4.  Example of Using IMAP METADATA to Manipulate Special-Use
      Attributes

   This example shows how IMAP METADATA can be used to manipulate
   special-use attributes, if the operation is supported on the server.

     ==> Starting point:
     C: t1 LIST "" "%" RETURN (SPECIAL-USE)
     S: * LIST (\Sent) "/" SentMail
     S: * LIST (\Drafts) "/" MyDrafts
     S: * LIST () "/" SavedDrafts
     S: * LIST (\Trash) "/" Trash
     S: t1 OK done

     ==> Demonstrate the connection:
     C: t2 GETMETADATA "MyDrafts" /private/specialuse
     S: * METADATA "MyDrafts" (/private/specialuse "\\Drafts")
     S: t2 OK done

     ==> Set new use for SavedDrafts; MyDrafts changes automatically:
     C: t3 SETMETADATA "SavedDrafts" (/private/specialuse "\\Drafts")
     S: * METADATA "MyDrafts" (/private/specialuse NIL)
     S: t3 OK SETMETADATA complete

     ==> Remove special use for SentMail:
     C: t4 SETMETADATA "SentMail" (/private/specialuse NIL)
     S: t4 OK SETMETADATA complete
     ==> Check the results:
     C: t5 LIST "" "%" RETURN (SPECIAL-USE)
     S: * LIST () "/" SentMail
     S: * LIST () "/" MyDrafts
     S: * LIST (\Drafts) "/" SavedDrafts
     S: * LIST (\Trash) "/" Trash
     S: t5 OK done

6.  Formal Syntax

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

   create-param   =/  "USE" SP "(" [use-attr *(SP use-attr)] ")"
                    ; Extends "create-param" from RFC 4466 [RFC4466]

   mbx-list-oflag =/  use-attr
                    ; Extends "mbx-list-oflag" from IMAP base [RFC3501]

   list-select-independent-opt =/  "SPECIAL-USE"
                    ; Extends "list-select-independent-opt" from
                    ; LIST-extended [RFC5258]

   return-option =/ "SPECIAL-USE"
                    ; Extends "return-option" from
                    ; LIST-extended [RFC5258]

   resp-text-code =/  "USEATTR"
                    ; Extends "resp-text-code" from
                    ; IMAP [RFC3501]

   use-attr        =  "\All" / "\Archive" / "\Drafts" / "\Flagged" /
                    "\Junk" / "\Sent" / "\Trash" / use-attr-ext

   use-attr-ext    =  "\" atom
                    ; Reserved for future extensions.  Clients
                    ; MUST ignore list attributes they do not understand
                    ; Server implementations MUST NOT generate
                    ; extension attributes except as defined by
                    ; future Standards-Track revisions of or
                    ; extensions to this specification.

7.  Security Considerations

   LIST response:
   Conveying special-use information to a client exposes a small bit of
   extra information that could be of value to an attacker.  Knowing,
   for example, that a particular mailbox (\All) contains pointers to
   every message the user has might be of particular value.  If the IMAP
   channel is not protected from passive eavesdropping, this could be an
   issue.

   CREATE command "USE" parameter and metadata extension: In some server
   implementations, some special uses may imply automatic action by the
   server.  For example, creation of a "\Junk" mailbox might cause the
   server to start placing messages that have been evaluated as spam
   into the mailbox.  Implementors SHOULD consider the consequences of
   allowing a user (or client program) to designate the target of such
   automatic action.

   Example: If a user is allowed to give the "\Junk" attribute to a
   shared mailbox, legitimate mail that's misclassified as junk (false
   positives) will be put into that shared mailbox, exposing the user's
   private mail to others.  The server might warn a user of that
   possibility, or might refuse to allow the specification to be made on
   a shared mailbox.  (Note that this problem exists independent of this
   specification, if the server allows a user to share a mailbox that's
   already in use for such a function.)

8.  IANA Considerations

8.1.  Registration of USEATTR IMAP Response Code

   This document defines a new IMAP response code, "USEATTR", which IANA
   added to the IMAP Response Codes registry.

8.2.  Registration of CREATE-SPECIAL-USE IMAP Capability

   This document defines a new IMAP capability, "CREATE-SPECIAL-USE",
   which IANA added to the IMAP 4 Capabilities registry.

8.3.  Registration of SPECIAL-USE IMAP Capability

   This document defines a new IMAP capability, "SPECIAL-USE", which
   IANA added to the IMAP 4 Capabilities registry.

8.4.  Registration of SPECIAL-USE Selection Option

   This document defines a new IMAP4 List Extended selection option,
   "SPECIAL-USE", which IANA added to the IMAP4 List Extended registry,
   as follows:

   To: iana@iana.org
   Subject: Registration of LIST-EXTENDED selection option SPECIAL-USE
   LIST-EXTENDED option name: SPECIAL-USE
   LIST-EXTENDED option type: SELECTION
   Implied return option(s): SPECIAL-USE
   LIST-EXTENDED option description: Limit the list to special-use
   mailboxes only
   Published specification: RFC 6154
   Security considerations: none
   Intended usage: COMMON
   Person and email address to contact for further information: Authors'
   Addresses at the end of RFC 6154
   Owner/Change controller: iesg@ietf.org

8.5.  Registration of SPECIAL-USE Return Option

   This document defines a new IMAP4 List Extended return option,
   "SPECIAL-USE", which IANA added to the IMAP4 List Extended registry,
   as follows:

   To: iana@iana.org
   Subject: Registration of LIST-EXTENDED return option SPECIAL-USE
   LIST-EXTENDED option name: SPECIAL-USE
   LIST-EXTENDED option type: RETURN
   LIST-EXTENDED option description: Request special-use mailbox
   information
   Published specification: RFC 6154
   Security considerations: none
   Intended usage: COMMON
   Person and email address to contact for further information: Authors'
   Addresses at the end of RFC 6154
   Owner/Change controller: iesg@ietf.org

8.6.  Registration of SPECIAL-USE Metadata

   This document defines a new IMAP METADATA entry.  IANA added the
   following to the IMAP METADATA Mailbox Entry registry:

   To: iana@iana.org
   Subject: IMAP METADATA Entry Registration
   Type: Mailbox
   Name: /private/specialuse
   Description: Defines any special-use features of a mailbox.  See the
   reference specification for details of its use.
   Content-type: text/plain; charset=us-ascii
   RFC Number: RFC 6154
   Contact: MORG mailing list mailto:morg@ietf.org

9.  References

9.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3501]  Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
              4rev1", RFC 3501, March 2003.

   [RFC4466]  Melnikov, A. and C. Daboo, "Collected Extensions to IMAP4
              ABNF", RFC 4466, April 2006.

   [RFC5234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
              Specifications: ABNF", STD 68, RFC 5234, January 2008.

   [RFC5258]  Leiba, B. and A. Melnikov, "Internet Message Access
              Protocol version 4 - LIST Command Extensions", RFC 5258,
              June 2008.

   [RFC5464]  Daboo, C., "The IMAP METADATA Extension", RFC 5464,
              February 2009.

9.2.  Informative References

   [RFC3348]  Gahrns, M. and R. Cheng, "The Internet Message Action
              Protocol (IMAP4) Child Mailbox Extension", RFC 3348,
              July 2002.

Authors' Addresses

   Barry Leiba
   Huawei Technologies

   Phone: +1 646 827 0648
   EMail: barryleiba@computer.org
   URI:   http://internetmessagingtechnology.org/


   Jamie Nicolson
   Google

   EMail: nicolson@google.com

AI ELI5

On this page
PROBLEMMail clients let users choose where drafts and sent messages go, but setting that up means knowing which mailboxes the server has reserved for those jobs.
MECHANISMThe server adds optional special-use attributes such as \Drafts, \Sent and \Trash to IMAP LIST responses. An optional USE parameter on CREATE and an optional METADATA entry can also assign them.
WHY IT MATTERSA client can find the right mailboxes without asking the user. Support is optional, so a server may offer any combination of the attributes, or none.

§1Introduction

Some IMAP message stores include special-use mailboxes, such as those that hold draft or sent messages. Many mail clients allow users to say where drafts and sent copies should be put, but configuring that requires knowing which mailboxes the server set aside.

This extension adds new optional mailbox attributes that a server may include in LIST responses to identify those mailboxes. It also adds an optional USE parameter on CREATE, so a client can assign a special use when it creates a mailbox. Servers may support that second part, but are not required to.

Your email app needs to know which folder is for drafts and which is for sent mail. The server can now just tell it.

§2The Special-Use Attributes

A server that supports the extension MAY include any of the new attributes in responses to the ordinary LIST command, next to existing ones such as \Marked and \Noselect. A mailbox can have none, one or several. The seven attributes are:

  • \All: presents all messages in the user's message store, almost certainly as a virtual mailbox.
  • \Archive: used to archive messages; the meaning is server-dependent.
  • \Drafts: holds messages being composed but not yet sent.
  • \Flagged: presents all messages marked as important.
  • \Junk: holds messages deemed to be junk mail.
  • \Sent: holds copies of sent messages.
  • \Trash: holds deleted or marked-for-deletion messages.

A special use can be advice to a client about what to put in the mailbox, or about what to expect to find there. All of the attributes are OPTIONAL. Special-use attributes are likely to be user-specific: if Adam shares his \Sent mailbox with Barb, it is unlikely to also be Barb's \Sent mailbox.

It is like colored stickers on folders: one for drafts, one for sent mail, one for trash, and a few more. A folder can have no sticker, or more than one.

SPECIAL-USE ATTRIBUTES
  • \AllAll messages — Presents all messages in the user's message store.
  • \ArchiveArchive — Used to archive messages.
  • \DraftsDrafts — Holds messages being composed.
  • \FlaggedFlagged — Messages marked as important.
  • \JunkJunk — Messages deemed junk mail.
  • \SentSent — Copies of sent messages.
  • \TrashTrash — Deleted or marked-for-deletion messages.

§3Capabilities and the Extended LIST

There is no capability string for special-use attributes on the plain LIST command. For the extended list command from RFC 5258, the extension adds a capability string, a selection option and a return option, all called SPECIAL-USE.

  • A supporting server MUST include SPECIAL-USE in its CAPABILITY response.
  • With the selection option, LIST MUST return only mailboxes that have a special-use attribute.
  • With the return option, LIST MUST return the attributes on mailboxes that have them. The selection option implies the return option.

The server MAY return the attributes even when the client did not ask for the return option.

The app can ask, 'Show me only the folders that have stickers,' or 'Show me everything, with stickers.' The server has to answer honestly.

§4Setting a Use with CREATE

As an OPTIONAL feature, a server MAY let clients designate a mailbox, at creation, as having one or more special uses. The USE parameter on CREATE takes a parenthesized list of zero or more attributes. A server that supports this advertises CREATE-SPECIAL-USE, and clients MUST NOT use USE unless it does. This is a different capability string from SPECIAL-USE, and a server that supports both functions MUST advertise both.

Some special uses may cause side effects. Creating a \Junk mailbox might make the server start filing spam there, and creating an \All mailbox might produce a virtual mailbox where, for example, COPY into it might fail.

A server MAY allow a second mailbox with a use that already exists, which might move the use or create duplicates. It MAY instead refuse. If it cannot create the mailbox, it MUST NOT create it and MUST answer with a tagged NO. If the cause is the special-use attribute, the server SHOULD include the new USEATTR response code.

When you make a new folder, you can ask for a sticker at the same time. If the server cannot do that, it says no and does not make the folder.

CREATE EXAMPLE (RFC 6154 SECTION 5.3)
CREATE with the USE parameter
C: t1 CAPABILITY
S: * CAPABILITY IMAP4rev1 CREATE-SPECIAL-USE
S: t1 OK done

C: t2 CREATE MySpecial (USE (\Drafts \Sent))
S: t2 OK MySpecial created

C: t3 CREATE Everything (USE (\All))
S: t3 NO [USEATTR] \All not supported

§5Using IMAP METADATA

If a server supports this extension and the METADATA extension (RFC 5464), it SHOULD tie a mailbox's special-use attributes to the metadata entry /private/specialuse. Its value is NIL if there are none, or a space-separated list of attributes written as they appear in LIST responses.

Such a server MAY let clients change special uses through METADATA. It MUST check each change as strictly as it checks CREATE and its internal mechanisms. It MUST NOT blindly accept values that would set unsupported uses or produce duplicates the implementation considers invalid.

The stickers can also be changed afterwards, but the server checks every change so nobody puts a sticker it cannot handle.

§6Formal Syntax

The ABNF extends several rules from the base IMAP specification (RFC 3501), RFC 4466 and RFC 5258. A use-attr is one of the seven names above or a use-attr-ext, which is a backslash followed by an atom and is reserved for future extensions.

Clients MUST ignore list attributes they do not understand. Servers MUST NOT generate extension attributes except as defined by future Standards-Track revisions of or extensions to this specification.

If the app sees a sticker it does not know, it ignores it. The server may not invent new stickers on its own.

§7Security Considerations

Telling a client about special uses exposes a little extra information an attacker might value. Knowing which mailbox is \All, for example, points to every message the user has. This matters if the IMAP channel is not protected from passive eavesdropping.

For the USE parameter and metadata, implementors SHOULD consider letting a user designate the target of automatic server action. If a user could give \Junk to a shared mailbox, legitimate mail misclassified as junk would land there, exposing private mail to others. A server might warn the user or refuse the designation on a shared mailbox.

Labels tell a snooper which folder holds everything, so keep the connection private. Also, do not let the junk label point at a folder other people can read.

§8References