Every way of deleting mail for good (JMAP, IMAP expunge, POP3, Trash emptying, mailbox removal) notes the message's mailboxes and keywords while archiving is on, fixing its deadline then; when its data is finally removed it becomes an x:ArchivedItem record, written as upstream writes them, with its copy held until the deadline. Retention is read at deletion time, so a change applies at once. Restore puts a message back in the mailboxes it was in (Trash only if that was all), with its keywords, and removes the record; over quota it stays archived. x:ArchivedItem/get returns status and accountId; query filters on type, archivedAt and text; set requests a restore once or destroys; /changes is a fork addition. Expired items go in the data purge. The shared account-access rule moves to jmap::inbuxa::access. system_tests now calls undelete::test, and the archiving gate is gone.
32 lines
806 B
TOML
32 lines
806 B
TOML
[package]
|
|
name = "imap"
|
|
version = "0.16.22"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
imap_proto = { path = "../imap-proto" }
|
|
types = { path = "../types" }
|
|
directory = { path = "../directory" }
|
|
trc = { path = "../trc" }
|
|
store = { path = "../store" }
|
|
common = { path = "../common" }
|
|
email = { path = "../email" }
|
|
nlp = { path = "../nlp" }
|
|
utils = { path = "../utils" }
|
|
registry = { path = "../registry" }
|
|
inbuxa-features = { path = "../features" }
|
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
|
tokio = { version = "1.53", features = ["full"] }
|
|
tokio-rustls = { version = "0.26", default-features = false, features = ["aws_lc_rs", "tls12"] }
|
|
parking_lot = "0.12"
|
|
ahash = { version = "0.8" }
|
|
md5 = "0.8.1"
|
|
rand = "0.10.2"
|
|
compact_str = "0.10.0"
|
|
|
|
[features]
|
|
test_mode = []
|
|
|
|
[lints]
|
|
workspace = true
|