IMAP in OCaml
1
2
3
4
5MailMaint N.M. Jenkins
6Internet-Draft Fastmail
7Intended status: Informational D. Eggert
8Expires: 4 June 2026 Apple Inc
9 1 December 2025
10
11
12 Registration of further IMAP/JMAP keywords and mailbox name attributes
13 draft-ietf-mailmaint-messageflag-mailboxattribute-13
14
15Abstract
16
17 This document defines a number of keywords and mailbox name
18 attributes that have been in use across different server and client
19 implementations. It defines the intended use of these keywords and
20 mailbox name attributes. This document registers all of these with
21 IANA to avoid name collisions.
22
23Status of This Memo
24
25 This Internet-Draft is submitted in full conformance with the
26 provisions of BCP 78 and BCP 79.
27
28 Internet-Drafts are working documents of the Internet Engineering
29 Task Force (IETF). Note that other groups may also distribute
30 working documents as Internet-Drafts. The list of current Internet-
31 Drafts is at https://datatracker.ietf.org/drafts/current/.
32
33 Internet-Drafts are draft documents valid for a maximum of six months
34 and may be updated, replaced, or obsoleted by other documents at any
35 time. It is inappropriate to use Internet-Drafts as reference
36 material or to cite them other than as "work in progress."
37
38 This Internet-Draft will expire on 4 June 2026.
39
40Copyright Notice
41
42 Copyright (c) 2025 IETF Trust and the persons identified as the
43 document authors. All rights reserved.
44
45 This document is subject to BCP 78 and the IETF Trust's Legal
46 Provisions Relating to IETF Documents (https://trustee.ietf.org/
47 license-info) in effect on the date of publication of this document.
48 Please review these documents carefully, as they describe your rights
49 and restrictions with respect to this document. Code Components
50 extracted from this document must include Revised BSD License text as
51 described in Section 4.e of the Trust Legal Provisions and are
52 provided without warranty as described in the Revised BSD License.
53
54
55
56Jenkins & Eggert Expires 4 June 2026 [Page 1]
57
58Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
59
60
61Table of Contents
62
63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
64 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 4
65 3. Flag Color Keywords . . . . . . . . . . . . . . . . . . . . . 4
66 3.1. Definition of the $MailFlagBit_ Message Keywords . . . . 4
67 3.2. Implementation Notes . . . . . . . . . . . . . . . . . . 5
68 4. Attachment Detection Keywords . . . . . . . . . . . . . . . . 5
69 4.1. $hasattachment . . . . . . . . . . . . . . . . . . . . . 5
70 4.2. $hasnoattachment . . . . . . . . . . . . . . . . . . . . 6
71 5. Memos Keywords . . . . . . . . . . . . . . . . . . . . . . . 6
72 5.1. $hasmemo . . . . . . . . . . . . . . . . . . . . . . . . 6
73 5.2. $memo . . . . . . . . . . . . . . . . . . . . . . . . . . 7
74 6. Subscription Management Keywords . . . . . . . . . . . . . . 7
75 6.1. $canunsubscribe . . . . . . . . . . . . . . . . . . . . . 7
76 6.2. $unsubscribed . . . . . . . . . . . . . . . . . . . . . . 8
77 7. Other Message Keywords . . . . . . . . . . . . . . . . . . . 8
78 7.1. $autosent . . . . . . . . . . . . . . . . . . . . . . . . 8
79 7.2. $followed . . . . . . . . . . . . . . . . . . . . . . . . 9
80 7.3. $imported . . . . . . . . . . . . . . . . . . . . . . . . 9
81 7.4. $istrusted . . . . . . . . . . . . . . . . . . . . . . . 9
82 7.5. $maskedemail . . . . . . . . . . . . . . . . . . . . . . 10
83 7.6. $muted . . . . . . . . . . . . . . . . . . . . . . . . . 10
84 7.7. $new . . . . . . . . . . . . . . . . . . . . . . . . . . 11
85 7.8. $notify . . . . . . . . . . . . . . . . . . . . . . . . . 12
86 8. Mailbox Name Attributes . . . . . . . . . . . . . . . . . . . 12
87 8.1. Snoozed . . . . . . . . . . . . . . . . . . . . . . . . . 12
88 8.2. Scheduled . . . . . . . . . . . . . . . . . . . . . . . . 13
89 8.3. Memos . . . . . . . . . . . . . . . . . . . . . . . . . . 13
90 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
91 9.1. IMAP/JMAP Keyword Registrations . . . . . . . . . . . . . 14
92 9.1.1. $autosent keyword registration . . . . . . . . . . . 14
93 9.1.2. $canunsubscribe keyword registration . . . . . . . . 14
94 9.1.3. $followed keyword registration . . . . . . . . . . . 14
95 9.1.4. $hasattachment keyword registration . . . . . . . . . 15
96 9.1.5. $hasmemo keyword registration . . . . . . . . . . . . 15
97 9.1.6. $hasnoattachment keyword registration . . . . . . . . 16
98 9.1.7. $imported keyword registration . . . . . . . . . . . 16
99 9.1.8. $istrusted keyword registration . . . . . . . . . . . 16
100 9.1.9. $MailFlagBit0 keyword registration . . . . . . . . . 17
101 9.1.10. $MailFlagBit1 keyword registration . . . . . . . . . 17
102 9.1.11. $MailFlagBit2 keyword registration . . . . . . . . . 18
103 9.1.12. $maskedemail keyword registration . . . . . . . . . . 18
104 9.1.13. $memo keyword registration . . . . . . . . . . . . . 18
105 9.1.14. $muted keyword registration . . . . . . . . . . . . . 19
106 9.1.15. $new keyword registration . . . . . . . . . . . . . . 19
107 9.1.16. $notify keyword registration . . . . . . . . . . . . 20
108 9.1.17. $unsubscribed keyword registration . . . . . . . . . 20
109
110
111
112Jenkins & Eggert Expires 4 June 2026 [Page 2]
113
114Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
115
116
117 9.2. IMAP Mailbox Name Attributes Registrations . . . . . . . 21
118 9.2.1. Snoozed mailbox name attribute registration . . . . . 21
119 9.2.2. Scheduled mailbox name attribute registration . . . . 21
120 9.2.3. Memos mailbox name attribute registration . . . . . . 21
121 10. Security Considerations . . . . . . . . . . . . . . . . . . . 21
122 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 21
123 11.1. Normative References . . . . . . . . . . . . . . . . . . 22
124 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22
125
1261. Introduction
127
128 The Internet Message Access Protocol (IMAP) specification [RFC9051]
129 defines the use of message keywords, and an "IMAP and JMAP Keywords"
130 registry is created in [RFC5788]. Similarly [RFC8457] creates an
131 "IMAP Mailbox Name Attributes Registry". JMAP Mail [RFC8621] updated
132 these registries to apply to messages and mailboxes over the JMAP
133 protocol as well.
134
135 This document defines 17 message keywords:
136
137 $autosent
138 $canunsubscribe
139 $followed
140 $hasattachment
141 $hasmemo
142 $hasnoattachment
143 $imported
144 $istrusted
145 $MailFlagBit0
146 $MailFlagBit1
147 $MailFlagBit2
148 $maskedemail
149 $memo
150 $muted
151 $new
152 $notify
153 $unsubscribed
154
155 And defines 3 mailbox name attributes:
156
157 Memos
158 Scheduled
159 Snoozed
160
161 This document also registers these in the "IMAP and JMAP Keywords"
162 registry and "IMAP Mailbox Name Attributes" registry.
163
164
165
166
167
168Jenkins & Eggert Expires 4 June 2026 [Page 3]
169
170Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
171
172
1732. Requirements Language
174
175 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
176 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
177 "OPTIONAL" in this document are to be interpreted as described in BCP
178 14 [RFC2119] [RFC8174] when, and only when, they appear in all
179 capitals, as shown here.
180
1813. Flag Color Keywords
182
183 The Internet Message Access Protocol (IMAP) specification [RFC9051]
184 defines a \Flagged system flag to mark a message for urgent/special
185 attention. The new keywords defined in Section 3.1 allow such a
186 flagged message to have that flag be of one of 7 colors.
187
1883.1. Definition of the $MailFlagBit_ Message Keywords
189
190 The 3 flag color keywords
191
192 $MailFlagBit0
193 $MailFlagBit1
194 $MailFlagBit2
195
196 make up a bit pattern that defines the color of the flag as such:
197
198 +=======+=======+=======+========+
199 | Bit 0 | Bit 1 | Bit 2 | Color |
200 +=======+=======+=======+========+
201 | 0 | 0 | 0 | red |
202 +-------+-------+-------+--------+
203 | 1 | 0 | 0 | orange |
204 +-------+-------+-------+--------+
205 | 0 | 1 | 0 | yellow |
206 +-------+-------+-------+--------+
207 | 1 | 1 | 0 | green |
208 +-------+-------+-------+--------+
209 | 0 | 0 | 1 | blue |
210 +-------+-------+-------+--------+
211 | 1 | 0 | 1 | purple |
212 +-------+-------+-------+--------+
213 | 0 | 1 | 1 | gray |
214 +-------+-------+-------+--------+
215
216 Table 1: Flag Colors
217
218 Note that the bit combination 111 (all three bits set) is not
219 assigned a color, resulting in 7 distinct flag colors instead of 8
220 possible combinations.
221
222
223
224Jenkins & Eggert Expires 4 June 2026 [Page 4]
225
226Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
227
228
229 These flags MUST be ignored if the \Flagged system flag is not set.
230 If the \Flagged system flag is set, the flagged status MAY be
231 presented to the user in the color corresponding to the combination
232 of the 3 flag color keywords.
233
2343.2. Implementation Notes
235
236 A mail client that is aware of these flag color keywords MUST clear
237 all 3 flag color keywords when the user unflags the message, i.e.
238 when clearing the \Flagged system flag, all 3 flag color keywords
239 MUST also be cleared.
240
241 A mail client MUST NOT set any of these flags unless the \Flagged
242 system flag is already set or is being set.
243
244 Servers MAY clear these flag color keywords when a client clears the
245 \Flagged system flag.
246
247 While these keywords are defined in terms of colors, clients SHOULD
248 provide alternatives for users who cannot perceive colors. This
249 could include using different shapes, patterns, text labels, audio
250 cues, or other distinguishing characteristics that convey the same
251 semantic meaning as the color variations. The specific bit patterns
252 can serve as identifiers for such alternative representations.
253
2544. Attachment Detection Keywords
255
256 The following keywords help clients determine whether a message
257 contains attachments without having to fetch and parse the entire
258 message structure. This is particularly useful for displaying
259 attachment indicators in message lists or implementing attachment-
260 based filtering.
261
262 The $hasattachment and $hasnoattachment keywords are mutually
263 exclusive. A message MUST NOT have both keywords set simultaneously.
264
2654.1. $hasattachment
266
267 The $hasattachment keyword indicates that a message has one or more
268 attachments. It is set by the server during message delivery, or by
269 the client (if neither $hasattachment nor $hasnoattachment are
270 currently set).
271
272 This keyword enables clients to indicate attachments (e.g., paperclip
273 icons) in message lists without having to fetch the full MIME
274 structure for each message. It also facilitates attachment-based
275 filtering and search operations.
276
277
278
279
280Jenkins & Eggert Expires 4 June 2026 [Page 5]
281
282Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
283
284
285 When using JMAP, the "hasAttachment" Email property MUST reflect the
286 same information as this keyword for consistency across protocols.
287
2884.2. $hasnoattachment
289
290 The $hasnoattachment keyword explicitly indicates that a message does
291 not have any attachments. It is set by the server during message
292 delivery, or by the client (if neither $hasattachment nor
293 $hasnoattachment are currently set).
294
295 This keyword complements $hasattachment by providing definitive
296 information about messages that have been analyzed but found to
297 contain no attachments. The absence of $hasattachment alone is
298 inconclusive, as it might simply mean the message hasn't been
299 processed for attachment detection.
300
301 This explicit distinction is important for clients that need to know
302 whether attachment detection has been performed on a message. When
303 using JMAP, the "hasAttachment" Email property MUST reflect the same
304 information as this keyword.
305
3065. Memos Keywords
307
308 The following keywords are used to support user-created annotations
309 or memos attached to messages. They allow for contextual notes to be
310 added to conversations while maintaining proper cross-referencing
311 between messages and their annotations.
312
313 The $memo keyword is applied to the memo message itself (the note-to-
314 self), while the $hasmemo keyword is applied to the original message
315 being annotated. This creates a bidirectional relationship that
316 allows clients to efficiently locate memos and their associated
317 messages.
318
319 The $memo and $hasmemo keywords are mutually exclusive. A message
320 MUST NOT have both keywords set simultaneously.
321
3225.1. $hasmemo
323
324 The $hasmemo keyword indicates that a message has an associated memo
325 (identified by the $memo keyword) in the same thread. This allows
326 clients to efficiently identify messages with annotations without
327 having to examine all messages in a thread.
328
329 When a client creates a memo for a message, it MUST add this keyword
330 to the message being annotated while adding the $memo keyword to the
331 memo message itself. Conversely, when a memo is deleted, the client
332 MUST remove this keyword from the annotated message.
333
334
335
336Jenkins & Eggert Expires 4 June 2026 [Page 6]
337
338Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
339
340
341 This keyword enables several optimizations for clients. It allows
342 for efficient searching for messages with annotations, enables
343 indicators in message lists to indicate which messages have memos,
344 and helps clients decide whether to fetch entire conversation threads
345 when loading a mailbox to ensure memos are properly presented.
346
3475.2. $memo
348
349 The $memo keyword identifies a message as a note-to-self created by
350 the user regarding another message in the same thread. It allows for
351 contextual annotations to be added to conversations.
352
353 Messages with this keyword should be constructed similar to a reply
354 to the message being annotated, with appropriate Subject and Reply-To
355 headers set to maintain context and threading. Servers SHOULD store
356 messages with this keyword in a mailbox with the "Memos" mailbox name
357 attribute (see Section 9.2.3), if available.
358
359 Supporting clients MUST present these messages differently from
360 regular emails. Rather than presenting them as standalone messages,
361 they MUST be presented as annotations attached to the message they're
362 commenting on. Clients may provide special UI affordances for
363 editing or deleting these memos, which typically requires replacing
364 the message since email messages are immutable.
365
366 When a client creates or removes a memo, it MUST also set or clear
367 the related $hasmemo keyword on the message being annotated to
368 maintain proper cross-referencing.
369
3706. Subscription Management Keywords
371
372 The following keywords help clients manage mailing list
373 subscriptions. They provide mechanisms for tracking unsubscription
374 attempts and identifying messages with valid unsubscribe options.
375
3766.1. $canunsubscribe
377
378 The $canunsubscribe keyword indicates that a message contains a
379 valid, [RFC8058]-compliant List-Unsubscribe header that clients can
380 use to provide one-click unsubscribe functionality.
381
382 This keyword is set by servers during message delivery when they
383 detect a valid List-Unsubscribe header and the message passes
384 implementation-specific reputation checks. This pre-verification is
385 important, as not all List-Unsubscribe headers are trustworthy, and
386 some might lead to phishing sites or generate additional spam.
387
388
389
390
391
392Jenkins & Eggert Expires 4 June 2026 [Page 7]
393
394Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
395
396
397 The primary benefit of this keyword is efficiency--clients can know
398 whether to offer unsubscribe functionality in their user interface
399 without having to fetch and validate the List-Unsubscribe header for
400 every message. It also provides an extra layer of safety since the
401 server has already performed reputation checks on the unsubscribe
402 mechanism.
403
4046.2. $unsubscribed
405
406 The $unsubscribed keyword indicates that the user has attempted to
407 unsubscribe from the mailing list associated with a message. It
408 provides a persistent record of unsubscription attempts across
409 multiple clients.
410
411 This keyword is set by a client after a user attempts to unsubscribe
412 from a mailing list, typically via a one-click List-Unsubscribe
413 action as defined in [RFC8058]. It serves as a record that an
414 unsubscription attempt has been made, even if confirmation of
415 successful unsubscription hasn't been received. It MUST NOT be set
416 if the unsubscription attempt definitely failed.
417
418 Supporting clients can use this to provide an indicator on messages
419 with this keyword to remind the user they have previously attempted
420 to unsubscribe from this sender or mailing list. This can be helpful
421 when users revisit old messages and might otherwise attempt to
422 unsubscribe again, or when they receive additional messages despite
423 unsubscribing and need to take further action.
424
4257. Other Message Keywords
426
4277.1. $autosent
428
429 The $autosent keyword identifies messages that were automatically
430 generated and sent by the system on behalf of the user, typically in
431 response to user-defined filtering rules or settings.
432
433 This keyword is set by the server on the user's copy of vacation
434 auto-replies, automated responses, or other system-generated messages
435 sent on behalf of the user. It allows clients to clearly distinguish
436 these messages from those directly composed and sent by the user.
437
438 Supporting clients can present these messages differently in the sent
439 items folder, such as with a distinct indicator (e.g., icon or label)
440 indicating their automated nature. This helps prevent user confusion
441 when they encounter messages they don't remember writing,
442 particularly in the case of vacation responses or other automated
443 replies that may have been configured and then forgotten.
444
445
446
447
448Jenkins & Eggert Expires 4 June 2026 [Page 8]
449
450Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
451
452
4537.2. $followed
454
455 The $followed keyword indicates that a user is particularly
456 interested in future messages in a specific thread. This enables
457 special handling to ensure these messages receive appropriate
458 attention.
459
460 When a new message arrives in a thread where this keyword is present,
461 supporting servers MAY take actions to prioritize the message. This
462 could include ensuring it is available in the inbox regardless of
463 filtering rules that might otherwise affect it, automatically adding
464 the $notify keyword to ensure notifications, or applying other
465 handling that increases its prominence. The specific actions taken
466 and whether they can be configured by the user depends on the
467 implementation.
468
469 Thread identification for this keyword follows the same definition as
470 described in $muted.
471
472 This keyword is set or cleared by clients based on user actions to
473 follow or unfollow a thread. When unfollowing a thread, clients MUST
474 remove this keyword from all messages in the thread that have it.
475 The $followed keyword is mutually exclusive with the $muted keyword.
476 If both are present on messages in the same thread, servers MUST
477 treat the thread as followed rather than muted.
478
4797.3. $imported
480
481 The $imported keyword identifies messages that were imported into the
482 mailbox from another system rather than received through normal mail
483 delivery channels.
484
485 This keyword is set by servers during import operations from other
486 mail systems, data migrations, or manual imports from local files.
487 It helps distinguish messages that didn't arrive through normal mail
488 delivery and may have different characteristics or behaviors.
489
490 Supporting clients can provide an indicator for imported messages,
491 especially if they have unusual properties such as unexpectedly old
492 dates, unusual header structures, or other anomalies that might
493 otherwise confuse users. Some clients might also offer filtering or
494 search capabilities specifically for imported messages.
495
4967.4. $istrusted
497
498 The $istrusted keyword indicates that a message's sender identity has
499 been verified by the server with a high degree of confidence. It
500 provides an indication that the message is likely authentic.
501
502
503
504Jenkins & Eggert Expires 4 June 2026 [Page 9]
505
506Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
507
508
509 This advisory keyword is set by the server during message delivery
510 when the authenticity of both the sender's name and email address can
511 be verified with a high degree of confidence. This level of
512 verification typically applies to messages sent by the mailbox
513 provider itself to its customers, where the provider has strong
514 evidence of the message's origin.
515
516 Supporting clients can provide a verification indicator (e.g.,
517 checkmark icon) for messages with this keyword, helping users
518 identify legitimate communications from their service provider. This
519 is particularly important for distinguishing authentic provider
520 messages from phishing attempts that impersonate the provider.
521
522 Servers MUST exercise caution when applying this keyword, as it
523 conveys trust to the user. If misapplied, it could lead users to
524 trust fraudulent messages.
525
526 It MUST NOT be used for messages that have only passed standard
527 authentication mechanisms like SPF, DKIM, or DMARC.
528
5297.5. $maskedemail
530
531 The $maskedemail keyword indicates that a message was received
532 through a masked email address--an alias created specifically for
533 communications with a particular sender to protect the user's primary
534 email address.
535
536 This advisory keyword is set by the server during message delivery on
537 messages that arrive via such aliases. These might be automatically
538 generated single-use addresses, service-specific addresses, or user-
539 created aliases for specific correspondents.
540
541 Supporting clients can provide an indicator (e.g., mask icon) for
542 messages with this keyword. This helps users understand that the
543 message was received through a privacy-enhancing alias rather than
544 their primary address. Clients might also provide related
545 functionality, such as the ability to disable the specific alias used
546 if it starts receiving unwanted messages.
547
5487.6. $muted
549
550 The $muted keyword provides a way for users to indicate they are not
551 interested in future messages in a particular conversation thread.
552 This enables automated processing of subsequent messages in that
553 thread to reduce their prominence.
554
555
556
557
558
559
560Jenkins & Eggert Expires 4 June 2026 [Page 10]
561
562Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
563
564
565 When a new message arrives that belongs to the same thread as one
566 marked with this keyword, supporting servers MAY automatically
567 deprioritize the message. This could include moving it to an archive
568 or trash folder, marking it as read, or applying other handling that
569 reduces its prominence. The specific actions taken and whether they
570 can be configured by the user depends on the implementation.
571
572 For thread identification purposes, messages are considered part of
573 the same thread when they share the same thread identifier as defined
574 in [RFC8474] Section 5.2 for IMAP or [RFC8621], Section 3 for JMAP.
575 This definition applies to all thread-related keywords in this
576 document.
577
578 This keyword is set or cleared by clients based on user actions to
579 mute or unmute a thread. When unmuting a thread, clients MUST remove
580 this keyword from all messages in the thread that have it. The
581 $muted keyword is mutually exclusive with the $followed keyword. If
582 both are present on messages in the same thread, both servers and
583 clients MUST treat the thread as followed rather than muted.
584
585 Implementers should note the security considerations in the IANA
586 registration: if an attacker gains access to a user's account, they
587 could mute threads to hide important communications. However, this
588 represents only a small increase in risk since compromised accounts
589 allow many other similar actions.
590
5917.7. $new
592
593 The $new keyword indicates that a message should be emphasized or
594 made more prominent to the user due to a recent system action, even
595 if the message itself is not new.
596
597 This advisory keyword is typically set by servers when a previously
598 snoozed message "awakens" and returns to the inbox after its snooze
599 period has elapsed. It signals to clients that although this message
600 might have an older date, it should be treated as effectively new in
601 terms of user attention.
602
603 Supporting clients can present these messages with special treatment
604 to draw user attention, such as emphasizing, bolding, or placing them
605 at the top of the message list, even if strict date sorting would
606 place them elsewhere.
607
608 Clients MUST clear this keyword when the user interacts with the
609 message, such as by opening, replying to, or otherwise acknowledging
610 it. This prevents the message from remaining emphasized indefinitely
611 after the user has accessed it.
612
613
614
615
616Jenkins & Eggert Expires 4 June 2026 [Page 11]
617
618Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
619
620
6217.8. $notify
622
623 The $notify keyword indicates that a client should present a
624 notification for a message. This provides a mechanism for more
625 selective notifications than the common approach of notifying for
626 every message arriving in the inbox.
627
628 When a message with this keyword is delivered to a mailstore,
629 supporting clients SHOULD present a notification to the user unless
630 configured otherwise by the user. This notification may occur
631 alongside other message notifications according to user preferences.
632
633 This keyword enables both users (through filtering rules) and servers
634 (through automated processing) to identify specific messages that
635 warrant user attention, even if they might otherwise be filtered or
636 sorted in a way that wouldn't normally trigger a notification.
637
638 Servers typically set this keyword during message delivery when a
639 message meets certain criteria indicating importance to the user.
640 Clients may clear the keyword when the user interacts with the
641 message by opening it, archiving it, or performing other actions.
642 When one client clears this keyword, other clients connected to the
643 same account may choose to automatically dismiss their corresponding
644 notification.
645
6468. Mailbox Name Attributes
647
6488.1. Snoozed
649
650 The Snoozed mailbox name attribute identifies a mailbox that is used
651 to store messages that have been temporarily removed from the user's
652 attention and scheduled to reappear at a later time.
653
654 When a user chooses to "snooze" a message, the supporting server will
655 move the message to a mailbox with this attribute. At the specified
656 "awaken" time, the server will automatically move the message back to
657 its original location (typically the inbox) and may mark it with the
658 $new keyword to ensure it receives proper attention.
659
660 This attribute standardizes the location of snoozed messages across
661 clients, allowing them to identify and manage snoozed messages
662 consistently. However, this attribute merely identifies the storage
663 location for snoozed messages and does not itself define the snoozing
664 mechanism or interface.
665
666
667
668
669
670
671
672Jenkins & Eggert Expires 4 June 2026 [Page 12]
673
674Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
675
676
677 Supporting clients may present the contents of this mailbox
678 differently from regular mailboxes, such as organizing messages by
679 their scheduled "awaken" time rather than received date, or providing
680 specialized interfaces for adjusting the snooze duration.
681
6828.2. Scheduled
683
684 The Scheduled mailbox name attribute identifies a mailbox that
685 contains messages that have been composed but are scheduled to be
686 sent at a future time rather than immediately.
687
688 When a user composes a message and chooses to send it at a later date
689 or time, the supporting server will store the message in a mailbox
690 with this attribute until the scheduled sending time. Once that time
691 is reached, the server will send the message and typically move it to
692 the \Sent mailbox or delete it according to server policy.
693
694 This attribute standardizes the location of scheduled messages across
695 clients, enabling users to review, edit, or cancel scheduled messages
696 before they are sent, regardless of which client was used to schedule
697 them.
698
699 Supporting clients may present the contents of this mailbox in a way
700 that highlights the scheduled sending time and allow users to modify
701 or cancel scheduled messages before they are sent.
702
7038.3. Memos
704
705 The Memos mailbox name attribute identifies a mailbox designated for
706 storing messages that have the $memo keyword. These messages are
707 user-created notes or annotations related to other messages.
708
709 When a user creates a memo (a note-to-self regarding another
710 message), clients SHOULD store these messages in a mailbox with this
711 attribute. This separation allows clients to handle memos
712 differently from regular messages, presenting them as annotations
713 rather than standalone communications.
714
715 Storing memos in a designated mailbox helps prevent them from
716 cluttering the user's inbox or other message folders, while still
717 maintaining them as proper email messages for compatibility and
718 synchronization purposes.
719
720 Supporting clients MUST NOT present the contents of this mailbox as
721 regular messages in their interface, but instead MUST present them
722 contextually alongside the messages they annotate when those messages
723 are accessed.
724
725
726
727
728Jenkins & Eggert Expires 4 June 2026 [Page 13]
729
730Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
731
732
7339. IANA Considerations
734
735 The following 16 IMAP/JMAP keywords are registered in the _IMAP and
736 JMAP Keywords_ registry, as established in [RFC5788].
737
7389.1. IMAP/JMAP Keyword Registrations
739
7409.1.1. $autosent keyword registration
741
742 IMAP/JMAP keyword name: $autosent
743 Purpose: Indicate to the client that a message was sent
744 automatically as a response due to a user rule or setting.
745 Private or Shared on a server: SHARED
746 Is it an advisory keyword or may it cause an automatic action: This
747 keyword is advisory.
748 When/by whom the keyword is set/cleared: This keyword is set by the
749 server on delivery.
750 Related keywords: None
751 Related IMAP capabilities: None
752 Security considerations: None
753 Published specification: This document
754 Intended usage: COMMON
755 Scope: BOTH
756 Owner/Change controller: IESG
757
7589.1.2. $canunsubscribe keyword registration
759
760 IMAP/JMAP keyword name: $canunsubscribe
761 Purpose: Indicate to the client that this message has an [RFC8058]-
762 compliant List-Unsubscribe header.
763 Private or Shared on a server: SHARED
764 Is it an advisory keyword or may it cause an automatic action: This
765 keyword is advisory.
766 When/by whom the keyword is set/cleared: This keyword is set by the
767 server on delivery.
768 Related keywords: None
769 Related IMAP capabilities: None
770 Security considerations: None
771 Published specification: This document
772 Intended usage: COMMON
773 Scope: BOTH
774 Owner/Change controller: IESG
775
7769.1.3. $followed keyword registration
777
778 IMAP/JMAP keyword name: $followed
779 Purpose: Indicate to the server that the user is particularly
780 interested in future replies to a particular thread.
781
782
783
784Jenkins & Eggert Expires 4 June 2026 [Page 14]
785
786Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
787
788
789 Private or Shared on a server: SHARED
790 Is it an advisory keyword or may it cause an automatic action: This
791 keyword can cause automatic action.
792 When/by whom the keyword is set/cleared: This keyword is set and
793 cleared by the client.
794 Related keywords: Mutually exclusive with $muted. If both are
795 specified on a thread, servers MUST behave as though only
796 $followed were set.
797 Related IMAP capabilities: None
798 Security considerations: None
799 Published specification: This document
800 Intended usage: COMMON
801 Scope: BOTH
802 Owner/Change controller: IESG
803
8049.1.4. $hasattachment keyword registration
805
806 IMAP/JMAP keyword name: $hasattachment
807 Purpose: Indicate to the client that a message has an attachment.
808 Private or Shared on a server: SHARED
809 Is it an advisory keyword or may it cause an automatic action: This
810 keyword is advisory.
811 When/by whom the keyword is set/cleared: It is set by the server
812 during message delivery, or by the client (if neither
813 $hasattachment nor $hasnoattachment are currently set).
814 Related keywords: $hasnoattachment
815 Related IMAP capabilities: None
816 Security considerations: None
817 Published specification: This document
818 Intended usage: COMMON
819 Scope: BOTH
820 Owner/Change controller: IESG
821
8229.1.5. $hasmemo keyword registration
823
824 IMAP/JMAP keyword name: $hasmemo
825 Purpose: Indicate to the client that a message has an associated
826 memo with the $memo keyword.
827 Private or Shared on a server: SHARED
828 Is it an advisory keyword or may it cause an automatic action: This
829 keyword is advisory.
830 When/by whom the keyword is set/cleared: This keyword is set and
831 cleared by the client based on user interaction.
832 Related keywords: The $memo and $hasmemo keywords are mutually
833 exclusive.
834 Related IMAP capabilities: None
835 Security considerations: None
836 Published specification: This document
837
838
839
840Jenkins & Eggert Expires 4 June 2026 [Page 15]
841
842Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
843
844
845 Intended usage: COMMON
846 Scope: BOTH
847 Owner/Change controller: IESG
848
8499.1.6. $hasnoattachment keyword registration
850
851 IMAP/JMAP keyword name: $hasnoattachment
852 Purpose: Indicate to the client that a message does not have an
853 attachment.
854 Private or Shared on a server: SHARED
855 Is it an advisory keyword or may it cause an automatic action: This
856 keyword is advisory.
857 When/by whom the keyword is set/cleared: It is set by the server
858 during message delivery, or by the client (if neither
859 $hasattachment nor $hasnoattachment are currently set).
860 Related keywords: None
861 Related IMAP capabilities: None
862 Security considerations: None
863 Published specification: This document
864 Intended usage: COMMON
865 Scope: BOTH
866 Owner/Change controller: IESG
867
8689.1.7. $imported keyword registration
869
870 IMAP/JMAP keyword name: $imported
871 Purpose: Indicate to the client that this message was imported from
872 another mailbox.
873 Private or Shared on a server: SHARED
874 Is it an advisory keyword or may it cause an automatic action: This
875 keyword is advisory.
876 When/by whom the keyword is set/cleared: This keyword is set by the
877 server on delivery.
878 Related keywords: None
879 Related IMAP capabilities: None
880 Security considerations: None
881 Published specification: This document
882 Intended usage: COMMON
883 Scope: BOTH
884 Owner/Change controller: IESG
885
8869.1.8. $istrusted keyword registration
887
888 IMAP/JMAP keyword name: $istrusted
889 Purpose: Indicate to the client that the authenticity of the from
890 name and email address have been verified by the server.
891 Private or Shared on a server: SHARED
892 Is it an advisory keyword or may it cause an automatic action: This
893
894
895
896Jenkins & Eggert Expires 4 June 2026 [Page 16]
897
898Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
899
900
901 keyword is advisory.
902 When/by whom the keyword is set/cleared: This keyword is set by the
903 server on delivery.
904 Related keywords: None
905 Related IMAP capabilities: None
906 Security considerations: Servers should make sure this keyword is
907 only set for messages that really are trusted.
908 Published specification: This document
909 Intended usage: COMMON
910 Scope: BOTH
911 Owner/Change controller: IESG
912
9139.1.9. $MailFlagBit0 keyword registration
914
915 IMAP/JMAP keyword name: $MailFlagBit0
916 Purpose: Bit 0 part of a 3-bit bitmask that defines the color of the
917 flag when the message has the system flag \Flagged set. See
918 Section 3 for details.
919 Private or Shared on a server: SHARED
920 Is it an advisory keyword or may it cause an automatic action: No
921 When/by whom the keyword is set/cleared: This keyword is set by a
922 client as the result of a user action to "flag" a message for
923 urgent/special attention.
924 Related keywords: $MailFlagBit1, $MailFlagBit2
925 Related IMAP capabilities: None
926 Security considerations: None
927 Published specification: This document
928 Intended usage: COMMON
929 Scope: BOTH
930 Owner/Change controller: IESG
931
9329.1.10. $MailFlagBit1 keyword registration
933
934 IMAP/JMAP keyword name: $MailFlagBit1
935 Purpose: Bit 1 part of a 3-bit bitmask that defines the color of the
936 flag when the message has the system flag \Flagged set. See
937 Section 3 for details.
938 Private or Shared on a server: SHARED
939 Is it an advisory keyword or may it cause an automatic action: No
940 When/by whom the keyword is set/cleared: This keyword is set by a
941 client as the result of a user action to "flag" a message for
942 urgent/special attention.
943 Related keywords: $MailFlagBit0, $MailFlagBit2
944 Related IMAP capabilities: None
945 Security considerations: None
946 Published specification: This document
947 Intended usage: COMMON
948 Scope: BOTH
949
950
951
952Jenkins & Eggert Expires 4 June 2026 [Page 17]
953
954Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
955
956
957 Owner/Change controller: IESG
958
9599.1.11. $MailFlagBit2 keyword registration
960
961 IMAP/JMAP keyword name: $MailFlagBit2
962 Purpose: Bit 2 part of a 3-bit bitmask that defines the color of the
963 flag when the message has the system flag \Flagged set. See
964 Section 3 for details.
965 Private or Shared on a server: SHARED
966 Is it an advisory keyword or may it cause an automatic action: No
967 When/by whom the keyword is set/cleared: This keyword is set by a
968 client as the result of a user action to "flag" a message for
969 urgent/special attention.
970 Related keywords: $MailFlagBit0, $MailFlagBit1
971 Related IMAP capabilities: None
972 Security considerations: None
973 Published specification: This document
974 Intended usage: COMMON
975 Scope: BOTH
976 Owner/Change controller: IESG
977
9789.1.12. $maskedemail keyword registration
979
980 IMAP/JMAP keyword name: $maskedemail
981 Purpose: Indicate to the client that the message was received via an
982 alias created for an individual sender.
983 Private or Shared on a server: SHARED
984 Is it an advisory keyword or may it cause an automatic action: This
985 keyword is advisory.
986 When/by whom the keyword is set/cleared: This keyword is set by the
987 server on delivery.
988 Related keywords: None
989 Related IMAP capabilities: None
990 Security considerations: None
991 Published specification: This document
992 Intended usage: LIMITED
993 Scope: BOTH
994 Owner/Change controller: IESG
995
9969.1.13. $memo keyword registration
997
998 IMAP/JMAP keyword name: $memo
999 Purpose: Indicate to the client that a message is a note-to-self
1000 from the user regarding another message in the same thread.
1001 Private or Shared on a server: SHARED
1002 Is it an advisory keyword or may it cause an automatic action: This
1003 keyword is advisory.
1004 When/by whom the keyword is set/cleared: This keyword is set and
1005
1006
1007
1008Jenkins & Eggert Expires 4 June 2026 [Page 18]
1009
1010Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
1011
1012
1013 cleared by the client based on user interaction.
1014 Related keywords: The $memo and $hasmemo keywords are mutually
1015 exclusive.
1016 Related IMAP capabilities: None
1017 Security considerations: None
1018 Published specification: This document
1019 Intended usage: COMMON
1020 Scope: BOTH
1021 Owner/Change controller: IESG
1022
10239.1.14. $muted keyword registration
1024
1025 IMAP/JMAP keyword name: $muted
1026 Purpose: Indicate to the server that the user is not interested in
1027 future replies to a particular thread.
1028 Private or Shared on a server: SHARED
1029 Is it an advisory keyword or may it cause an automatic action: This
1030 keyword can cause an automatic action.
1031 When/by whom the keyword is set/cleared: This keyword is set and
1032 cleared by the client.
1033 Related keywords: Mutually exclusive with $followed. If both are
1034 specified on a thread, servers MUST behave as though only
1035 $followed were set.
1036 Related IMAP capabilities: None
1037 Security considerations: Muting a thread can mean a user won't be
1038 notified of a reply. If someone compromises a user's account,
1039 they may mute threads where they don't want the user to be
1040 notified of the reply, for example when sending phishing to the
1041 user's contacts. There are many other ways an attacker with
1042 access to the user's mailbox can also achieve this however, so
1043 this is not greatly increasing the attack surface. When restoring
1044 legitimate access to a stolen account, care must be taken to find
1045 and confirm/revert mute actions that may have been taken by the
1046 attacker.
1047 Published specification: This document
1048 Intended usage: COMMON
1049 Scope: BOTH
1050 Owner/Change controller: IESG
1051
10529.1.15. $new keyword registration
1053
1054 IMAP/JMAP keyword name: $new
1055 Purpose: Indicate to the client that a message should be made more
1056 prominent to the user due to a recent action.
1057 Private or Shared on a server: SHARED
1058 Is it an advisory keyword or may it cause an automatic action: This
1059 keyword is advisory.
1060 When/by whom the keyword is set/cleared: This keyword is set by the
1061
1062
1063
1064Jenkins & Eggert Expires 4 June 2026 [Page 19]
1065
1066Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
1067
1068
1069 server. Clients can clear the keyword based on user interaction.
1070 Related keywords: None
1071 Related IMAP capabilities: None
1072 Security considerations: None
1073 Published specification: This document
1074 Intended usage: LIMITED
1075 Scope: BOTH
1076 Owner/Change controller: IESG
1077
10789.1.16. $notify keyword registration
1079
1080 IMAP/JMAP keyword name: $notify
1081 Purpose: Indicate to the client that a notification should be
1082 presented for this message.
1083 Private or Shared on a server: SHARED
1084 Is it an advisory keyword or may it cause an automatic action: This
1085 keyword can cause an automatic action.
1086 When/by whom the keyword is set/cleared: This keyword is set by the
1087 server on delivery when a message meets certain criteria. It may
1088 be cleared by a client when the user interacts with the message.
1089 Related keywords: None
1090 Related IMAP capabilities: None
1091 Security considerations: None
1092 Published specification: This document
1093 Intended usage: COMMON
1094 Scope: BOTH
1095 Owner/Change controller: IESG
1096
10979.1.17. $unsubscribed keyword registration
1098
1099 IMAP/JMAP keyword name: $unsubscribed
1100 Purpose: Indicate the client has attempted to unsubscribe from the
1101 mailing list this message is from.
1102 Private or Shared on a server: SHARED
1103 Is it an advisory keyword or may it cause an automatic action: This
1104 keyword is advisory.
1105 When/by whom the keyword is set/cleared: This keyword is set by the
1106 client based on user interaction.
1107 Related keywords: None
1108 Related IMAP capabilities: None
1109 Security considerations: None
1110 Published specification: This document
1111 Intended usage: COMMON
1112 Scope: BOTH
1113 Owner/Change controller: IESG
1114
1115
1116
1117
1118
1119
1120Jenkins & Eggert Expires 4 June 2026 [Page 20]
1121
1122Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
1123
1124
11259.2. IMAP Mailbox Name Attributes Registrations
1126
1127 The following 3 IMAP/JMAP mailbox name attributes are registered in
1128 the IMAP Mailbox Name Attributes Registry, as established in
1129 [RFC8457].
1130
1131 Note that none of the attributes in this section have an implied
1132 backslash. This sets them apart from those specified in Section 2 of
1133 [RFC6154].
1134
11359.2.1. Snoozed mailbox name attribute registration
1136
1137 Attribute Name: Snoozed
1138 Description: Identifies the mailbox where temporarily snoozed
1139 messages are stored.
1140 Reference: This document.
1141
11429.2.2. Scheduled mailbox name attribute registration
1143
1144 Attribute Name: Scheduled
1145 Description: Identifies the mailbox where messages scheduled to be
1146 sent at a later time are stored.
1147 Reference: This document.
1148
11499.2.3. Memos mailbox name attribute registration
1150
1151 Attribute Name: Memos
1152 Description: Identifies the mailbox where user-created memo messages
1153 are stored.
1154 Reference: This document.
1155
115610. Security Considerations
1157
1158 The security considerations for the $istrusted and $muted keywords
1159 are described in Section 9.1.8, Section 7.4, and Section 9.1.14
1160 respectively.
1161
1162 The use and interpretation of the keywords and mailbox name
1163 attributes defined in this document depend on the client's and user's
1164 ability to trust the IMAP server. Clients should be aware that a
1165 compromised or malicious server could set these keywords incorrectly
1166 or manipulate them to mislead users. For additional security
1167 considerations related to IMAP, refer to [RFC9051].
1168
1169 Besides that this document should not affect the security of the
1170 Internet.
1171
117211. References
1173
1174
1175
1176Jenkins & Eggert Expires 4 June 2026 [Page 21]
1177
1178Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
1179
1180
118111.1. Normative References
1182
1183 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1184 Requirement Levels", BCP 14, RFC 2119,
1185 DOI 10.17487/RFC2119, March 1997,
1186 <https://www.rfc-editor.org/info/rfc2119>.
1187
1188 [RFC5788] Melnikov, A. and D. Cridland, "IMAP4 Keyword Registry",
1189 RFC 5788, DOI 10.17487/RFC5788, March 2010,
1190 <https://www.rfc-editor.org/info/rfc5788>.
1191
1192 [RFC6154] Leiba, B. and J. Nicolson, "IMAP LIST Extension for
1193 Special-Use Mailboxes", RFC 6154, DOI 10.17487/RFC6154,
1194 March 2011, <https://www.rfc-editor.org/info/rfc6154>.
1195
1196 [RFC8058] Levine, J. and T. Herkula, "Signaling One-Click
1197 Functionality for List Email Headers", RFC 8058,
1198 DOI 10.17487/RFC8058, January 2017,
1199 <https://www.rfc-editor.org/info/rfc8058>.
1200
1201 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
1202 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
1203 May 2017, <https://www.rfc-editor.org/info/rfc8174>.
1204
1205 [RFC8457] Leiba, B., Ed., "IMAP "$Important" Keyword and
1206 "\Important" Special-Use Attribute", RFC 8457,
1207 DOI 10.17487/RFC8457, September 2018,
1208 <https://www.rfc-editor.org/info/rfc8457>.
1209
1210 [RFC8474] Gondwana, B., Ed., "IMAP Extension for Object
1211 Identifiers", RFC 8474, DOI 10.17487/RFC8474, September
1212 2018, <https://www.rfc-editor.org/info/rfc8474>.
1213
1214 [RFC8621] Jenkins, N. and C. Newman, "The JSON Meta Application
1215 Protocol (JMAP) for Mail", RFC 8621, DOI 10.17487/RFC8621,
1216 August 2019, <https://www.rfc-editor.org/info/rfc8621>.
1217
1218 [RFC9051] Melnikov, A., Ed. and B. Leiba, Ed., "Internet Message
1219 Access Protocol (IMAP) - Version 4rev2", RFC 9051,
1220 DOI 10.17487/RFC9051, August 2021,
1221 <https://www.rfc-editor.org/info/rfc9051>.
1222
1223Authors' Addresses
1224
1225
1226
1227
1228
1229
1230
1231
1232Jenkins & Eggert Expires 4 June 2026 [Page 22]
1233
1234Internet-Draft Further IMAP/JMAP keywords & attributes December 2025
1235
1236
1237 Neil Jenkins
1238 Fastmail
1239 PO Box 234, Collins St West
1240 Melbourne VIC 8007
1241 Australia
1242 Email: neilj@fastmailteam.com
1243 URI: https://www.fastmail.com
1244
1245
1246 Daniel Eggert
1247 Apple Inc
1248 One Apple Park Way
1249 Cupertino, CA 95014
1250 United States of America
1251 Email: deggert@apple.com
1252 URI: https://www.apple.com
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288Jenkins & Eggert Expires 4 June 2026 [Page 23]