oxedyne/fe2o3/fe2o3_net/src/imap/mod.rs
1.4 KiB, 9 runs
created by r1870400018:9842, which is this file's identity for as long as the history lasts, whatever it is later renamed to
download · who wrote it · its history
| 1 | //! IMAP4rev1 (RFC 3501): a server and a client. |
| 2 | //! |
| 3 | //! [`client`] connects out to somebody else's IMAP server and reads mail |
| 4 | //! from it. [`server`] is the other direction -- a Thunderbird-compatible |
| 5 | //! subset serving a local Hematite mailbox -- and is described below. |
| 6 | //! |
| 7 | //! # Server |
| 8 | //! |
| 9 | //! Implements the wire protocol and just enough of the command set to |
| 10 | //! run a single Hematite mailbox in front of Thunderbird: |
| 11 | //! |
| 12 | //! - `CAPABILITY`, `NOOP`, `LOGOUT` |
| 13 | //! - `LOGIN` (no SASL on the MVP) |
| 14 | //! - `LIST`, `LSUB`, `SUBSCRIBE`, `UNSUBSCRIBE` |
| 15 | //! - `SELECT`, `EXAMINE`, `CLOSE` |
| 16 | //! - `STATUS` |
| 17 | //! - `FETCH` and `UID FETCH` for the items Thunderbird actually asks |
| 18 | //! for: `UID`, `FLAGS`, `RFC822.SIZE`, `INTERNALDATE`, `ENVELOPE`, |
| 19 | //! `BODY[]`, `BODY.PEEK[]`, `BODY[HEADER.FIELDS (...)]`, |
| 20 | //! `BODY.PEEK[HEADER.FIELDS (...)]`, `RFC822.HEADER`, `RFC822`. |
| 21 | //! - `STORE` and `UID STORE` for `+FLAGS`, `-FLAGS`, `FLAGS`. |
| 22 | //! - `UID SEARCH` (the trivial `ALL` and UID-range queries). |
| 23 | //! - `APPEND` (synchronising and non-synchronising literals). |
| 24 | //! - `EXPUNGE`, `CREATE`, `DELETE`. |
| 25 | //! |
| 26 | //! Out of scope for the MVP and not implemented: `IDLE`, `CONDSTORE`, |
| 27 | //! `QRESYNC`, `BINARY`, `LITERAL+` quirks beyond plain pass-through, |
| 28 | //! ACLs, quotas, namespace, sort, thread. |
| 29 | //! |
| 30 | //! [Written with AI entirely](https://need2know.ai/entirely-ai/code)\ |
| 31 | //! Anthropic Claude |
| 32 | |
| 33 | pub mod client; |
| 34 | pub mod server; |