[feat] Synchronous Mailbox Gateway & Incremental Scan Cache #47

Closed
opened 2026-08-30 17:58:52 +03:00 by jalmari · 0 comments
Owner

Parent

#44: [spec] Port MailSweep to Synchronous Rust

What to build

Implement the synchronous IMAP gateway over TCP/TLS (imap + rustls) and the local JSON incremental scan cache (serde + serde_json), providing sub-second delta scans.

Acceptance criteria

  • Synchronous TLS connection lifecycle, authentication, and capability negotiation (MOVE, UIDPLUS, X-GM-EXT-1).
  • RFC 6154 virtual folder exclusion with 13-language fallback names.
  • Batch UID header fetching with real-time progress callbacks.
  • Incremental ScanCache JSON serialization with exact schema compatibility with Python .mailsweep_cache/scan_cache.json.
  • Delta scan logic: sub-second scans when UIDVALIDITY matches; full invalidation on UIDVALIDITY change.
  • cargo test, cargo fmt --check, and cargo clippy --all-targets --all-features -- -D warnings pass with 0 warnings.

Blocked by

  • #45: [feat] Core Domain Types, Configuration & RFC Codecs
## Parent #44: [spec] Port MailSweep to Synchronous Rust ## What to build Implement the synchronous IMAP gateway over TCP/TLS (`imap` + `rustls`) and the local JSON incremental scan cache (`serde` + `serde_json`), providing sub-second delta scans. ## Acceptance criteria - [ ] Synchronous TLS connection lifecycle, authentication, and capability negotiation (`MOVE`, `UIDPLUS`, `X-GM-EXT-1`). - [ ] RFC 6154 virtual folder exclusion with 13-language fallback names. - [ ] Batch UID header fetching with real-time progress callbacks. - [ ] Incremental `ScanCache` JSON serialization with exact schema compatibility with Python `.mailsweep_cache/scan_cache.json`. - [ ] Delta scan logic: sub-second scans when `UIDVALIDITY` matches; full invalidation on `UIDVALIDITY` change. - [ ] `cargo test`, `cargo fmt --check`, and `cargo clippy --all-targets --all-features -- -D warnings` pass with 0 warnings. ## Blocked by - #45: [feat] Core Domain Types, Configuration & RFC Codecs
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
Lavisys/mailsweep#47
No description provided.