steve
c99eaedafd
feat(send): Phase 2 send path — SMTP, MIME, reply threading, outbound policy
...
Adds the `send` agent command and everything behind it:
- store: Account carries SMTP host/port/security (NULL-safe scan/insert/select);
admin `account add` gains --smtp-* flags (applied for RW accounts).
- policy: OutboundRule.Check(recipients) → (ok, reason); RO ⇒ ro_mode,
whitelist-out blocks the whole send if any recipient fails (no partial send).
- mail: Header.References; OutgoingMessage + BuildMIME (plain text + attachments,
In-Reply-To/References threading, Bcc envelope-only); SendSMTP (tls/starttls,
SASL PLAIN, envelope send) via emersion/go-smtp.
- cli: SendCmd gates outbound, resolves --reply-to under the inbound filter
(filtered/absent source ⇒ not_found), reads attachments, audits, emits the
JSON envelope; repeatable --to/--cc/--bcc/--attach flags wired into the router.
Implemented test-first; full suite passes incl -race. Validated live against
friday.mxlogin.com: real send to me@stevecliff.com , RO + whitelist-out blocks,
and --reply-to threading off a live INBOX message. test-creds.md gitignored.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 17:39:07 +01:00
steve
04d3b61bb0
Plan: Phase 1 — foundation & read path implementation plan
...
TDD task-by-task plan for the read-only emcli: crypto, encrypted store,
seen-set read state, policy filtering, IMAP read, and the agent
list/get/search/ack commands with flag-based admin. Phases 2-4 (send,
OAuth2, TUI) to follow as their own plans.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-21 21:17:29 +01:00