RFC 8457

IMAP "$Important" Keyword and "\Important" Special-Use Attribute

πŸ“… published September 2018, from ietf

RFC 8457: IMAP "$Important" Keyword and "\Important" Special-Use Attribute πŸ’–

Okay bestie, this is RFC 8457 πŸŽ€. It's written by B. Leiba, Ed. from Huawei Technologies, and it's on the Standards Track (so it's an actual Internet standard, not just vibes). It came out in September 2018 and has ISSN 2070-1721. The title block doesn't list any RFCs it obsoletes or updates, so it's not replacing anything 🫢. It's all about IMAP, the protocol your email app uses to talk to the mail server πŸ“¬.


Abstract ✨

Okay so, RFC 6154 made an IMAP special-use LIST extension and defined a first set of attributes πŸ’…. This document adds a new attribute, \Important, and sets up a brand-new IANA registry for IMAP folder attributes. That registry holds the attributes from RFCs 5258, 3501, and 6154 too, so they all live in one place πŸ—‚οΈ. It also adds a new IMAP keyword, $Important, and registers it in the registry from RFC 5788 πŸ”₯.

Status of This Memo 🌸

This is an Internet Standards Track document, so it's official πŸ’Ό.

It's a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community πŸ«‚. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) βœ…. If you want more on Internet Standards, check Section 2 of RFC 7841 🧚.

For the current status, any errata, and how to give feedback, go to https://www.rfc-editor.org/info/rfc8457 πŸ”—.

Copyright (c) 2018 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 (https://trustee.ietf.org/license-info) as they stand on the publication date. Please read these carefully, because they explain your rights and restrictions for this document πŸ“œ. Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions. They come without warranty, as the Simplified BSD License describes πŸ’œ.

Table of Contents πŸ“

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
1.1.  Conventions Used in This Document . . . . . . . . . . . . .   3
2.  Definition of the "$Important" Message Keyword  . . . . . . .   3
3.  Definition of the 'Important' Mailbox Attribute . . . . . . .   3
3.1.  Formal Syntax . . . . . . . . . . . . . . . . . . . . . . .   4
3.2.  Examples  . . . . . . . . . . . . . . . . . . . . . . . . .   4
3.2.1.  Example of a LIST Response  . . . . . . . . . . . . . . .   4
3.2.2.  Examples of Creating a New Mailbox Using "\Important" . .   4
4.  Implementation Notes  . . . . . . . . . . . . . . . . . . . .   5
5.  Security Considerations . . . . . . . . . . . . . . . . . . .   5
6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
6.1.  Registration of the "$Important" Keyword  . . . . . . . . .   6
6.2.  Creation of the IMAP Mailbox Name Attributes Registry . . .   7
6.2.1.  Instructions to the Designated Expert . . . . . . . . . .   8
6.3.  Initial Entries for the IMAP Mailbox Name Attributes
      Registry  . . . . . . . . . . . . . . . . . . . . . . . . .   9
7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  10
7.1.  Normative References  . . . . . . . . . . . . . . . . . . .  10
7.2.  Informative References  . . . . . . . . . . . . . . . . . .  10
Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  11
Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  11

1. Introduction ✨

Okay so the Internet Message Access Protocol (IMAP) spec, [RFC3501], defines how message keywords work, and the "IMAP Keywords" registry was made in [RFC5788] πŸ—οΈ. [RFC6154] adds an extension to the IMAP LIST command for special-use mailboxes πŸ“¦. That lets servers share extra info (attributes) about what a mailbox is for, and it defines a first set of special-use attributes πŸ¦‹.

This document does the following:

  • defines a new message keyword, $Important, for messages that are considered important to the user by some externally defined criteria πŸ’–;
  • registers the $Important keyword in the "IMAP Keywords" registry πŸ“;
  • defines a new special-use attribute, \Important, to mark a mailbox that holds messages considered important to the user by some externally defined criteria 🌟; and
  • creates a registry for IMAP mailbox attributes and registers the new attribute along with the ones defined in [RFC5258], [RFC3501], and [RFC6154] πŸ—‚οΈ.

1.1. Conventions Used in This Document πŸŽ€

In this doc's examples, C: means lines sent by a client connected to a server, and S: means lines the server sends back to the client πŸ’¬.

2. Definition of the "$Important" Message Keyword πŸ’–

The $Important keyword is a signal that a message is likely important to the user 🚨. It's generally expected to be set automatically by the system, using whatever signals are available. Those can be things like who sent the message, who else it's addressed to, how the subject or content looks, or other heuristics 🧠. The keyword can also be set by the user, but that's not expected to be the main way it gets used πŸ™ˆ.

It's different from the \Flagged system flag in two ways:

  1. $Important means general importance, not follow-up or urgency πŸ“. It's meant for a kind of triage, while \Flagged stays for special attention, follow-up, or time sensitivity ⏰. The point of $Important is that other messages that are "like this one," according to some server-applied heuristics, will also get $Important πŸͺ„.
  2. Setting $Important is expected to be based at least partly on heuristics, and the server usually sets it automatically πŸ€–. \Flagged, on the other hand, is only meant to be set by the user through some "flag this message" or "put a star on this message" interface ⭐.

3. Definition of the 'Important' Mailbox Attribute πŸ¦‹

The \Important mailbox attribute is a signal that the mailbox holds messages that are likely important to the user πŸ“«. On an implementation that also supports the $Important keyword, this special use will probably be a virtual mailbox that collects messages from other mailboxes marked with $Important πŸŒ€. Other implementations might just put messages there automatically, using the same kinds of heuristics noted for $Important (see Section 2) 🧚. The differences between \Important and \Flagged for mailboxes are like the ones between $Important and \Flagged for messages πŸ’….

3.1. Formal Syntax 🌸

This syntax spec adds to the one in Section 6 of [RFC6154], using Augmented Backus-Naur Form (ABNF) as described in [RFC5234]. Also be sure to check the ABNF notes at the start of Section 9 of [RFC3501] πŸ“–.

    use-attr      =/  "\Important"

3.2. Examples 🍬

3.2.1. Example of a LIST Response πŸ“‹

In this example, the mailbox called "Important Messages" is the one with the \Important attribute πŸ’«.

   C: t1 LIST "" "Imp*"
   S: * LIST (\HasNoChildren \Important) "/" "Important Messages"
   S: * LIST (\HasNoChildren) "/" "Imported Wine"
   S: t1 OK Success

3.2.2. Examples of Creating a New Mailbox Using "\Important" πŸ› οΈ

In this example, the "Important Messages" mailbox gets created with the \Important attribute on a server that advertises the CREATE-SPECIAL-USE capability string πŸŽ‰.

   C: t1 CREATE "Important Messages" (USE (\Important))
   S: t1 OK Mailbox created

Next up, it's basically the same thing, but the server can't assign \Important to the new mailbox 😬.

   C: t1 CREATE "Important Messages" (USE (\Important))
   S: t1 NO [USEATTR] An \Important mailbox already exists

And here's one more, same idea, but this server doesn't support this extension at all πŸ’€.

   C: t1 CREATE "Important Messages" (USE (\Important))
   S: t1 NO [USEATTR] Mailbox not created; unsupported use \Important

In both of the failure examples, the USEATTR response code tells the client the problem is in the USE parameters πŸ”. Here's the tea β˜•: both cases send the same response code, so the human-readable text is the only way to tell them apart. And that text isn't parsable by the client, so it can only be logged or shown to the user 🫠.


6.1. Registration of the "$Important" Keyword ✨

okay so IANA already registered the $Important keyword in the "IMAP Keywords" registry, using the template from [RFC5788]. here's the whole entry, bestie πŸŽ€

IMAP keyword name:  $Important

Purpose (description):  The "$Important" keyword is a signal that a
      message is likely important to the user.

Private or Shared on a server:  PRIVATE

Is it an advisory keyword or may it cause an automatic action:
      Advisory (but see the reference for details).

When/by whom the keyword is set/cleared:  The keyword can be set by
      the user, or automatically by the system based on available
      signals (such as who the message is from, who else the message
      is addressed to, evaluation of the subject or content, or other
      heuristics).

Related keywords:  None (see the reference for the related mailbox
      name attribute).

Related IMAP capabilities:  None.

Security considerations:  See Section 5 of RFC 8457.

Published specification:  RFC 8457
Person & email address to contact for further information:
      IETF Applications and Real-Time Area <art@ietf.org>

Intended usage:  COMMON

Owner/Change controller:  IESG

Note: None.

6.2. Creation of the IMAP Mailbox Name Attributes Registry πŸ¦‹

IANA also made a brand-new registry in the "Internet Message Access Protocol (IMAP)" group, and it's called "IMAP Mailbox Name Attributes" πŸ’…. It has two references: "RFC 3501, Section 7.2.2" and "RFC 8457, Section 6". This registry is going to be shared with JMAP for Mail [JMAP-MAIL], so both protocols can use the same list 🌈.

Every entry in the registry has these four fields:

  1. Attribute Name
  2. Description
  3. Reference
  4. Usage Notes

IANA keeps the list in alphabetical order by Attribute Name. The names are registered without the initial backslash (""), and they're usually written with initial capital letters. They're treated as case-insensitive US-ASCII strings, so no drama there ✨.

The Usage Notes field is free-form US-ASCII text. It's usually empty (and stays empty if the registration request doesn't mention it). It's meant to hold things like "not used by JMAP" and "JMAP only" πŸ“. This field is for humans to read, so there's no separate registry of the strings that can go in there, which is very chill 🫢.

The registration policy for this registry is listed as "IETF Review" or "Expert Review" [RFC8126], and new registrations get accepted in one of two ways:

  1. For registrations requested in an IETF consensus document, the registration policy is IETF Review. The request is made in the IANA Considerations section of that document, and it gives the requested value for each field.
  2. For everything else, the policy is Expert Review (see Section 6.2.1). The request is made by emailing IANA, asking for a new IMAP Mailbox Name Attribute and giving the requested value for each field. A formal specification isn't required, but the reference document should describe the proposed attribute well enough that people can build interoperable implementations 🧚. An Informational RFC (submitted, for example, through the IETF or Independent stream) is a fine way to publish that reference document πŸ’œ.

6.2.1. Instructions to the Designated Expert πŸ‘‘

The expert reviewer is designated by the IESG, and their job is to give the requested registration a general review πŸ”₯. They check that the reference and description are good enough to understand what the registered attribute is for. People should also try to generalize what an attribute means, so that several implementations with the same needs can reuse an attribute that already exists 🌸.

Apart from that check, this policy is basically first come, first served, and the expert should not block serious registration requests that come with a reasonable reference πŸ’…. The reference can be any form of documentation, including a web page, but it's worth aiming for something that's expected to be long-lived and stable πŸ™ˆ.

6.3. Initial Entries for the IMAP Mailbox Name Attributes Registry πŸ’–

The registry starts out with these entries (the rows with a "*" have their Usage Notes set to "not used by JMAP"):

+===============+===================================+===========+
| Attribute     | Description                       | Reference |
| Name          |                                   |           |
+===============+===================================+===========+
| All           | All messages                      | [RFC6154] |
+---------------+-----------------------------------+-----------+
| Archive       | Archived messages                 | [RFC6154] |
+---------------+-----------------------------------+-----------+
| Drafts        | Messages that are working drafts  | [RFC6154] |
+---------------+-----------------------------------+-----------+
| Flagged       | Messages with the \Flagged flag   | [RFC6154] |
+---------------+-----------------------------------+-----------+
| HasChildren   | Has accessible child mailboxes    | [RFC5258] | *
+---------------+-----------------------------------+-----------+
| HasNoChildren | Has no accessible child mailboxes | [RFC5258] | *
+---------------+-----------------------------------+-----------+
| Important     | Messages deemed important to user |  RFC 8457 |
+---------------+-----------------------------------+-----------+
| Junk          | Messages identified as Spam/Junk  | [RFC6154] |
+---------------+-----------------------------------+-----------+
| Marked        | Server has marked the mailbox as  | [RFC3501] | *
|               | "interesting"                     |           |
+---------------+-----------------------------------+-----------+
| NoInferiors   | No hierarchy under this name      | [RFC3501] | *
+---------------+-----------------------------------+-----------+
| NonExistent   | The mailbox name doesn't actually | [RFC5258] | *
|               | exist                             |           |
+---------------+-----------------------------------+-----------+
| Noselect      | The mailbox is not selectable     | [RFC3501] | *
+---------------+-----------------------------------+-----------+
| Remote        | The mailbox exists on a remote    | [RFC5258] | *
|               | server                            |           |
+---------------+-----------------------------------+-----------+
| Sent          | Sent mail                         | [RFC6154] |
+---------------+-----------------------------------+-----------+
| Subscribed    | The mailbox is subscribed to      | [RFC5258] |
+---------------+-----------------------------------+-----------+
| Trash         | Messages the user has discarded   | [RFC6154] |
+---------------+-----------------------------------+-----------+
| Unmarked      | No new messages since last select | [RFC3501] | *
+===============+===================================+===========+

7. References πŸ“š

7.1. Normative References

[RFC3501]  Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
           4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003,
           <https://www.rfc-editor.org/info/rfc3501>.

[RFC5234]  Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
           Specifications: ABNF", STD 68, RFC 5234,
           DOI 10.17487/RFC5234, January 2008,
           <https://www.rfc-editor.org/info/rfc5234>.

[RFC6154]  Leiba, B. and J. Nicolson, "IMAP LIST Extension for
           Special-Use Mailboxes", RFC 6154, DOI 10.17487/RFC6154,
           March 2011, <https://www.rfc-editor.org/info/rfc6154>.

[RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
           Writing an IANA Considerations Section in RFCs", BCP 26,
           RFC 8126, DOI 10.17487/RFC8126, June 2017,
           <https://www.rfc-editor.org/info/rfc8126>.

7.2. Informative References

[JMAP-MAIL]
           Jenkins, N. and C. Newman, "JMAP for Mail", Work in
           Progress, draft-ietf-jmap-mail-07, August 2018.

[RFC5258]  Leiba, B. and A. Melnikov, "Internet Message Access
           Protocol version 4 - LIST Command Extensions", RFC 5258,
           DOI 10.17487/RFC5258, June 2008,
           <https://www.rfc-editor.org/info/rfc5258>.

[RFC5788]  Melnikov, A. and D. Cridland, "IMAP4 Keyword Registry",
           RFC 5788, DOI 10.17487/RFC5788, March 2010,
           <https://www.rfc-editor.org/info/rfc5788>.

Contributors 🫢

The following author was an original contributor to this document in
addition to the editor.

Eric "Iceman"
Google
Email: iceman@google.com

Author's Address πŸŽ€

Barry Leiba (editor)
Huawei Technologies

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

that's the whole spec, bestie πŸŒˆπŸ’œ we're literally done!!

πŸ“¦ where this page comes from