Document live IMAP mailbox lifecycle

This commit is contained in:
Mario Fetka
2026-07-29 07:55:16 +02:00
parent 9bb5eb8e56
commit cb6782d11f
2 changed files with 40 additions and 2 deletions
+2 -2
View File
@@ -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 | | | |
+38
View File
@@ -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.