remove intention to implement \important special-use mailbox and $important message flag, rfc 8457

they are intended to be used by the server to automatically mark some messages
as important, based on server-defined heuristics. we don't have such heuristics
at the moment. perhaps in the future, but until then there are no plans.
This commit is contained in:
Mechiel Lukkien 2025-02-19 22:44:04 +01:00
parent 5e4d80d48e
commit 02c4715724
No known key found for this signature in database
7 changed files with 18 additions and 22 deletions

View File

@ -138,7 +138,7 @@ https://nlnet.nl/project/Mox/.
- "mox setup" command, with webapp for interactive setup
- Automate DNS management, for setup and maintenance, such as DANE/DKIM key rotation.
- Calendaring with CalDAV/iCal
- More IMAP extensions (PREVIEW, IMPORTANT, COMPRESS=DEFLATE, UNAUTHENTICATE,
- More IMAP extensions (PREVIEW, COMPRESS=DEFLATE, UNAUTHENTICATE,
REPLACE, QUOTA, NOTIFY, MULTIAPPEND, OBJECTID, MULTISEARCH, THREAD, SORT)
- Introbox, to which first-time senders are delivered
- ARC, with forwarded email from trusted source

View File

@ -150,7 +150,7 @@ func (c *Conn) Examine(mailbox string) (untagged []Untagged, result Result, rerr
// Create makes a new mailbox on the server.
// SpecialUse can only be used on servers that announced the CREATE-SPECIAL-USE
// capability. Specify flags like \Archive, \Draft, \Junk, \Sent, \Trash, \All.
// capability. Specify flags like \Archive, \Drafts, \Junk, \Sent, \Trash, \All.
func (c *Conn) Create(mailbox string, specialUse []string) (untagged []Untagged, result Result, rerr error) {
defer c.recover(&rerr)
if _, ok := c.CapAvailable[CapCreateSpecialUse]; !ok && len(specialUse) > 0 {

View File

@ -191,21 +191,17 @@ func (c *conn) cmdList(tag, cmd string, p *parser) {
flags = append(flags, bare(`\Subscribed`))
}
if info.mailbox != nil {
if info.mailbox.Archive {
flags = append(flags, bare(`\Archive`))
add := func(b bool, v string) {
if b {
flags = append(flags, bare(v))
}
if info.mailbox.Draft {
flags = append(flags, bare(`\Drafts`))
}
if info.mailbox.Junk {
flags = append(flags, bare(`\Junk`))
}
if info.mailbox.Sent {
flags = append(flags, bare(`\Sent`))
}
if info.mailbox.Trash {
flags = append(flags, bare(`\Trash`))
}
mb := info.mailbox
add(mb.Archive, `\Archive`)
add(mb.Draft, `\Drafts`)
add(mb.Junk, `\Junk`)
add(mb.Sent, `\Sent`)
add(mb.Trash, `\Trash`)
}
var extStr string

View File

@ -229,7 +229,7 @@ https://www.iana.org/assignments/message-headers/message-headers.xhtml
8437 Roadmap - IMAP UNAUTHENTICATE Extension for Connection Reuse
8438 Yes - IMAP Extension for STATUS=SIZE
8440 ? - IMAP4 Extension for Returning MYRIGHTS Information in Extended LIST
8457 Roadmap - IMAP "$Important" Keyword and "\Important" Special-Use Attribute
8457 No - IMAP "$Important" Keyword and "\Important" Special-Use Attribute
8474 Roadmap - IMAP Extension for Object Identifiers
8508 Roadmap - IMAP REPLACE Extension
8514 Yes - Internet Message Access Protocol (IMAP) - SAVEDATE Extension

View File

@ -272,7 +272,7 @@ func (mc *MailboxCounts) Sub(delta MailboxCounts) {
// understand where messages should go.
type SpecialUse struct {
Archive bool
Draft bool
Draft bool // "Drafts"
Junk bool
Sent bool
Trash bool

View File

@ -1631,7 +1631,7 @@
},
{
"Name": "Draft",
"Docs": "",
"Docs": "\"Drafts\"",
"Typewords": [
"bool"
]
@ -3120,7 +3120,7 @@
},
{
"Name": "Draft",
"Docs": "",
"Docs": "\"Drafts\"",
"Typewords": [
"bool"
]

View File

@ -192,7 +192,7 @@ export interface Mailbox {
UIDValidity: number // If UIDs are invalidated, e.g. when renaming a mailbox to a previously existing name, UIDValidity must be changed. Used by IMAP for synchronization.
UIDNext: UID // UID likely to be assigned to next message. Used by IMAP to detect messages delivered to a mailbox.
Archive: boolean
Draft: boolean
Draft: boolean // "Drafts"
Junk: boolean
Sent: boolean
Trash: boolean
@ -498,7 +498,7 @@ export interface ChangeMailboxSpecialUse {
// understand where messages should go.
export interface SpecialUse {
Archive: boolean
Draft: boolean
Draft: boolean // "Drafts"
Junk: boolean
Sent: boolean
Trash: boolean