Follow the message.
A connected mail stack inside one Go executable. Protocol servers, message processing and local storage share the same runtime.
Receive
SMTP · port 25
Check
SPF · DKIM · DMARC
Route
Sieve · local delivery
Store
Maildir++ · bbolt
Connect
IMAP · webmail · API
Incoming mail
SMTP receives mail for your configured domains. The message-processing path applies enabled authentication and spam checks, including SPF, DKIM, DMARC, ARC, RBL, greylisting and Bayesian filtering. Sieve rules can apply server-side filtering.
Local messages are written to Maildir++ storage. IMAP and the webmail/API interfaces provide access to that mailbox. Optional POP3 support exists and is disabled by default.
Outgoing delivery
Clients submit mail using authenticated SMTP submission, ordinarily STARTTLS on port 587 or implicit TLS on 465. Outgoing messages enter a delivery queue with retry logic and exponential backoff.
Queue status and delivery actions are available through the admin REST API. Direct-database CLI commands require the server to be stopped; they cannot share the running server’s bbolt lock.
Local data, deliberately simple
Maildir++ holds messages; bbolt databases hold account and mail metadata. A local search index supports full-text search. Deploy with persistent disks and use a tested backup process.
Do not run several instances against the same data directory or assume shared-data replicas are supported. The current storage model is local to one server.
Three interfaces. One server.
- Webmail: folders, message reading, flags, compose, drafts, trash and search.
- Admin: domain, account and alias workflows, with delivery queue controls.
- Account portal: individual account access and available preferences.
The React interfaces are embedded through Go’s filesystem embedding. Realtime interface events use Server-Sent Events (SSE), despite older material referring to WebSocket updates. Contacts and some settings/profile interfaces remain incomplete in the current beta.
Your tools can join in
A REST API handles integration workflows. Webhooks send event notifications; Prometheus metrics and optional OpenTelemetry support observability. The MCP server provides domain and account tools for compatible assistants.
MCP queue operations are currently placeholders. Use the implemented admin REST API for live queue inspection and retry workflows.
Read the upstream architecture, HTTP server implementation and MCP implementation for the full source context.