Reusable Rust components for source-agnostic messages and read-only email ingestion.
Status: pre-alpha (
0.1.x). The API is not stable and will change without a deprecation period. There is one production consumer so far, so the interfaces have been shaped by a single use case. Pin an immutable commit rather than a range.
postroom: stable source identity, canonical immutable messages, checkpoints, capabilities, typed extensions, and separate source/sink traits.postroom-rfc5322: email-specific headers, participants, RFC 5322/MIME parsing, and lazy attachment content references.postroom-imap: read-only IMAP configuration, runtime credential injection, UIDVALIDITY/UID cursors, deterministic fetch planning, a native-TLS transport, andMessageSourceintegration.
The split is intentional: folders, UIDs, MIME and email headers are not generalized into concepts that webhook, file-inbox, or messenger sources would have to imitate. SMTP, mailbox mutation, application persistence, UI workflows, OCR, tax and receipt processing are out of scope.
ImapConfig contains connection and fetch policy only. Credentials are supplied at runtime through
CredentialProvider; neither credentials nor passwords implement serialization, and debug output
redacts the password. Applications remain responsible for using an OS keychain or equivalent
secret store in their provider implementation.
Consumers pin a release tag or immutable Git commit. The current API is versioned as 0.1.2.
Under 0.x, semver grants no compatibility guarantee, and this project makes none: any
release may break the API. The crates carry publish = false and are consumed via Git,
not from crates.io.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.