Phase 2g of the DLP and mail flow rules spec: transport rules now act, on outgoing and incoming mail. - features/mailflow/rewrite.rs: add or remove a header, prefix or set the subject (an RFC 2047 word when not ASCII), add a disclaimer. A disclaimer edits the message's main text and HTML bodies only, each decoded, changed and written back as UTF-8 quoted-printable with its other headers kept, top or bottom (after <body> or before </body> in HTML); attachments and attached messages are left alone, and a disclaimer already present isn't added again. - smtp/inbound/mailflow.rs: the check runs for incoming mail too (transport rules only; DLP stays outgoing). After DLP passes, each matched transport rule's actions run in order: message edits, add-recipient and redirect (envelope changes DATA applies), route (a per-message queue ahead of the queue strategy), refuse (550 5.7.1 with the rule's text). The override tag is stripped with the same subject writer, so a non-ASCII subject stays valid. - Audit: refusals and changes to where mail goes are recorded (sender, or system:mail-flow for incoming mail); wording and header changes aren't, or a banner rule would record every message (spec §2.7). Tests: rewrite unit tests (headers, encoded subjects, disclaimers on a single part and on multipart/alternative with an attachment, once only); mail_rules_tests gains the actions end to end: disclaimer, header and subject prefix on a delivered message, a redirect, a refusal, a banner on incoming LMTP mail that outgoing rules leave alone, and which of those are audited.
34 lines
1.0 KiB
TOML
34 lines
1.0 KiB
TOML
[package]
|
|
name = "inbuxa-features"
|
|
description = "inbuxa's rebuilt features: behavior Stalwart ships only in its Enterprise Edition, rebuilt clean-room"
|
|
license = "AGPL-3.0-only"
|
|
version = "0.16.22"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
registry = { path = "../registry" }
|
|
jmap_proto = { path = "../jmap-proto" }
|
|
store = { path = "../store" }
|
|
trc = { path = "../trc" }
|
|
types = { path = "../types" }
|
|
utils = { path = "../utils" }
|
|
ahash = { version = "0.8.12", features = ["serde"] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
toml = "1.1"
|
|
xxhash-rust = { version = "0.8.18", features = ["xxh3"] }
|
|
base64 = "0.23"
|
|
sha2 = "0.11"
|
|
flate2 = "1.1"
|
|
tokio = { version = "1.53", features = ["sync", "rt"] }
|
|
# inbuxa: DLP detectors and attachment text (dlp-and-mail-flow-rules spec)
|
|
regex = "1.13.1"
|
|
aho-corasick = "1.1"
|
|
zip = "8.6"
|
|
quick-xml = "0.41"
|
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
|
mail-builder = { version = "1.0" }
|
|
|
|
[dev-dependencies]
|
|
tokio = { version = "1.53", features = ["macros", "rt"] }
|