From cb6782d11ff4dc6adcba552cff410fb44d9bb1b8 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Wed, 29 Jul 2026 07:55:16 +0200 Subject: [PATCH] Document live IMAP mailbox lifecycle --- docs/release-testing-0.7.md | 4 ++-- docs/test-evidence/0.7-r1.md | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/release-testing-0.7.md b/docs/release-testing-0.7.md index b797320..542f027 100644 --- a/docs/release-testing-0.7.md +++ b/docs/release-testing-0.7.md @@ -171,8 +171,8 @@ review does not mark an open live test as passed. | IMAP-02 | Port 143 STARTTLS, pre-TLS `LOGINDISABLED`, tagged `NO` for plaintext LOGIN, repeated STARTTLS rejection | [PASS](test-evidence/0.7-r1.md#imap-01020304) | | | | IMAP-03 | Port 993 TLS, LOGIN, SASL PLAIN, and SASL LOGIN | [PASS](test-evidence/0.7-r1.md#imap-01020304) | | | | IMAP-04 | CAPABILITY, NOOP, LOGOUT, ID, and NAMESPACE | [PASS](test-evidence/0.7-r1.md#imap-01020304) | | | -| IMAP-05 | LIST, LSUB, extended LIST, LIST-STATUS, hierarchy quoting | | | | -| IMAP-06 | CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE | | | | +| IMAP-05 | LIST, LSUB, extended LIST, LIST-STATUS, hierarchy quoting | [PASS](test-evidence/0.7-r1.md#imap-0506) | | | +| IMAP-06 | CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE | [PASS](test-evidence/0.7-r1.md#imap-0506) | | | | IMAP-07 | SELECT, EXAMINE, STATUS/SIZE, CHECK, CLOSE, UNSELECT | | | | | IMAP-08 | APPEND, LITERAL+, APPENDLIMIT, flags/date, oversized literals | | | | | IMAP-09 | FETCH/UID FETCH body, headers, partials, flags, envelope, binary | | | | diff --git a/docs/test-evidence/0.7-r1.md b/docs/test-evidence/0.7-r1.md index 71fbd14..0278051 100644 --- a/docs/test-evidence/0.7-r1.md +++ b/docs/test-evidence/0.7-r1.md @@ -3460,3 +3460,41 @@ IMAP-01/02/03/04 PASS host=127.0.0.1 starttls=143/TLSv1.3 imaps=993/TLSv1.3 prot The test only authenticates and logs out. It does not create, alter, or delete any mailbox or message and leaves the service configuration unchanged. + +## IMAP-05/06 + +Result: **PASS** + +The installed `9bb5eb8e` GCC 15.3.0 debug build was exercised on 2026-07-29 +with the reusable `imap-mailbox-check.py`. The test used disposable mailbox +names containing spaces and multiple hierarchy levels. It verified the +reported hierarchy delimiter, LIST with both `%` and `*`, exact and recursive +LSUB, LIST-EXTENDED selection options and CHILDREN information, and +LIST-STATUS responses. + +CREATE left new mailboxes unsubscribed until an explicit SUBSCRIBE. RENAME +moved the complete hierarchy without changing any child or grandchild suffix. +UNSUBSCRIBE removed only the subscription. DELETE removed an empty leaf, and +deleting a parent with inferiors retained its children while converting the +parent into a `\NoSelect` hierarchy placeholder. The test then removed all +disposable objects depth-first and verified that none remained. + +The live pass exposed and fixed three issues before succeeding: CREATE had +implicitly subscribed folders, recursive Store rename truncated hierarchy +suffixes, and Store commands did not quote paths containing spaces when +converting a deleted parent to hierarchy-only state. Focused native coverage +now exercises SPECIAL-USE creation, LIST-EXTENDED parsing, and the exact SQL +rename boundary for children, grandchildren, and similarly prefixed +mailboxes. + +The behavior was also compared directly with current Cyrus IMAP source: +subscription is independent of mailbox creation, hierarchy rename preserves +descendants, and deleting a mailbox with inferiors leaves the hierarchy +available for those descendants. + +```text +IMAP-05/06 PASS host=127.0.0.1:993 delimiter=/ hierarchy=quoted list=percent/star lsub=subscribed-only extended=subscribed/children/list-status lifecycle=create/rename/sub/unsub/delete delete-with-inferiors=noselect/preserved cleanup=yes +``` + +The test creates only uniquely named disposable mailboxes for `test1`, removes +them before exit, and does not alter service configuration or existing mail.