abce753ba8
- Confirm stack: Go, single binary, embed Mox + pluggable backend (chosen after landscape research). - Add MailBackend interface: relay (v1 default) / imap_smtp (BYO mailbox) / embedded (go-smtp + mox smtpclient/dane/mtasts, flagship). Deliverability becomes opt-in; useful on day 1. - Add competitive positioning (§0.1): closest competitor agenticmail is TS + Stalwart(AGPL) Docker sidecar; OpenMail differentiates as single binary, all-MIT, in-process. agentic-inbox is Cloudflare-locked. - Reorder milestones backend-first: relay loop before embedded SMTP. - State scope: self-hostable app, not a SaaS — no billing/Stripe. - README: pluggable backends + positioning. Repo layout: internal/mail/*. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
56 lines
3.4 KiB
Markdown
56 lines
3.4 KiB
Markdown
# OpenMail
|
|
|
|
**An agent-native, self-hosted mail server.** One Go binary that gives an AI agent its own real
|
|
email address — receive, parse, thread, search, and send actual SMTP mail on a box you control —
|
|
behind a clean REST API and an MCP server.
|
|
|
|
Think "AgentMail, but self-hosted and MIT-licensed." OpenMail embeds the battle-tested mail
|
|
internals of [Mox](https://github.com/mjl-/mox) (also MIT) for the hard, correctness-critical
|
|
plumbing — DKIM, SPF/DMARC, DANE + MTA-STS secure delivery, real-world MIME parsing, spam
|
|
filtering — and layers a native, agent-shaped data model (Postgres + object storage) and API on top.
|
|
|
|
Mail I/O is **pluggable**: start in minutes against a relay (SES/Postmark/Resend) or your existing
|
|
mailbox (IMAP/SMTP), and graduate to a fully self-hosted, in-process SMTP engine when you want to own
|
|
the whole stack. The in-process engine is the part nobody else ships — the only comparable project,
|
|
[agenticmail](https://github.com/agenticmail/agenticmail), runs a Stalwart (AGPL) mail server in a
|
|
Docker sidecar; OpenMail is **one static binary, fully MIT, no sidecar.**
|
|
|
|
> **Status: early WIP, private during initial build.** Will be released MIT-licensed and public.
|
|
> Designed only from public RFCs and public API surfaces — nothing proprietary.
|
|
|
|
License: **MIT** — see [LICENSE](./LICENSE). Builds on Mox (MIT) and the `emersion/go-*` mail
|
|
libraries. See **[ARCHITECTURE.md](./ARCHITECTURE.md)** for the design of record.
|
|
|
|
## Why
|
|
|
|
The valuable, hard part of an agent-mailbox product is not the API — it's the mail plumbing:
|
|
receiving over SMTP/MX, *sending with real deliverability* (SPF/DKIM/DMARC, DANE/MTA-STS, IP
|
|
reputation), parsing messy MIME, threading, and storage. Hosted products (AgentMail and similar)
|
|
solve this well but are closed and run on someone else's infrastructure. OpenMail's bet: you can
|
|
**embed** an existing MIT-licensed, production-grade Go mail stack instead of rebuilding it, and
|
|
spend your effort on the part nobody has done well — the **agent-native** layer.
|
|
|
|
## What makes it agent-native
|
|
|
|
- **Persistent inboxes as first-class API resources**, provisioned in one call.
|
|
- **Structured threads**, not raw IMAP — `In-Reply-To`/`References` stitched into conversations.
|
|
- **`extracted_text`** — reply content with quoted history stripped, so an agent reads the new part.
|
|
- **MCP server** — an agent (Claude Code, etc.) owns and operates its mailbox directly as tools.
|
|
- **Webhooks + WebSocket** `message.received` events — agents react to mail in real time.
|
|
- **AgentMail-API-shaped** REST where reasonable, so existing tooling points at a self-hosted base URL.
|
|
|
|
## Goals
|
|
|
|
- **Self-hostable** in one `docker compose up` on a single VPS; scales to a fleet later.
|
|
- **Deliverability taken seriously** — self-host SMTP send with DKIM + DANE + MTA-STS via Mox's
|
|
delivery stack, *or* a relay backend (SES/Postmark/Resend) for inbox placement on day one.
|
|
- **Single static Go binary** with subcommands; Postgres + S3-compatible object store as the only deps.
|
|
- **Genuinely MIT** — every embedded dependency is MIT/BSD; no GPL/AGPL anywhere in the tree.
|
|
|
|
## Non-goals (for v1)
|
|
|
|
- A hosted multi-tenant SaaS. OpenMail is self-host-first (multi-tenant `pods` exist, but you run it).
|
|
- A full webmail UI. The product is the API + MCP; humans use their own client.
|
|
- Beating a mature provider's deliverability on day one — self-host IP reputation takes warmup + time;
|
|
the relay backend exists for exactly that gap.
|