IMAP in OCaml
at main 1288 lines 50 kB view raw
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]