IMAP: bring OBJECTID+ up to draft rev 08 #219

Merged
jcoffey-dev merged 1 commits from fix/imap-objectid-rev08 into main 2026-10-28 06:35:25 +00:00
Owner

Brings our OBJECTID+ support in line with draft-ietf-mailmaint-imap-objectid-bis-08, as promised on the mailmaint list. LIST now takes the OBJECTID return option, and SELECT/EXAMINE by identifier follows -08's matching rules. A MAILBOXID on its own means the personal account, and a mailbox the user can't read falls back to the name instead of answering NO [NOPERM], which used to give away that it existed.

New checks are in the IMAP suite, which passes; I confirmed both SELECT checks fail on main. Two older quirks turned up while writing them, left for separate fixes: SETACL right after CREATE in the same session says the mailbox doesn't exist (the session's mailbox list isn't refreshed), and deleting a shared mailbox without revoking leaves the owner's empty prefix in the sharee's LIST.

Brings our OBJECTID+ support in line with draft-ietf-mailmaint-imap-objectid-bis-08, as promised on the mailmaint list. LIST now takes the OBJECTID return option, and SELECT/EXAMINE by identifier follows -08's matching rules. A MAILBOXID on its own means the personal account, and a mailbox the user can't read falls back to the name instead of answering NO [NOPERM], which used to give away that it existed. New checks are in the IMAP suite, which passes; I confirmed both SELECT checks fail on main. Two older quirks turned up while writing them, left for separate fixes: SETACL right after CREATE in the same session says the mailbox doesn't exist (the session's mailbox list isn't refreshed), and deleting a shared mailbox without revoking leaves the owner's empty prefix in the sharee's LIST.
jcoffey-dev added 1 commit 2026-10-28 05:26:09 +00:00
IMAP: bring OBJECTID+ up to draft rev 08
ci / fork-checks (pull_request) Skipped
ci / build (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 7m48s
80c07fe1f8
LIST gains the OBJECTID return option: every name carries an "OBJECTID"
extended item (the empty one for names that aren't mailboxes), and asking
for it, or for STATUS (OBJECTID) inside LIST, activates OBJECTID+.

SELECT/EXAMINE by identifier now follows rev 08's matching rules: a
MAILBOXID without an ACCOUNTID means the personal account, an identifier
that can't be decoded matches nothing, and a mailbox the user may not read
is never matched by identifier. Selection falls back to the name instead of
answering NO [NOPERM], which told the client the mailbox existed.
jcoffey-dev merged commit 25583a6a17 into main 2026-10-28 06:35:25 +00:00
jcoffey-dev deleted branch fix/imap-objectid-rev08 2026-10-28 06:35:25 +00:00
Sign in to join this conversation.