ADR 09: Two-tier email
Self-hosted mail for transactional, Listmonk plus SES for scale.
Status: adopted (2026-07-18)
Context
Need: transactional email for the fleet, newsletters for small clients, and one client with a 1.5M-subscriber list wanting cheap, high-quality newsletters. Vendor claim of “80k emails/week for $0 on a $5 VPS” is credible at that volume and dangerously wrong at 1.5M per send.
Decision
Tier 1, fleet transactional and small newsletters: the Openship mail server on our VPS. Per-client domains, DKIM auto-configured, low volume, high value.
Tier 2, the 1.5M list: Listmonk (self-hosted campaign manager, built for multi-million lists) relaying through Amazon SES at $0.10 per thousand. A full-list send costs about $150 versus $10k+/mo for an ESP at that contact count. Dedicated sending subdomain (news.clientdomain.com) so reputation is isolated.
Non-negotiables at scale
- Never mix the bulk stream and fleet transactional on the same IP or domain reputation. One bad campaign must not take down password resets for every client.
- Validate the list before first send (expect 5 to 10 percent dead addresses; over 5 percent bounces gets the SES account suspended).
- Warm up over weeks with ramping volume. SES production access starts around 50k/day and is raised on request.
- Wire SES bounce and complaint webhooks into Listmonk suppression.
- Gmail/Yahoo bulk rules: DMARC, one-click unsubscribe, spam rate under 0.3 percent in Postmaster Tools.
This is also a sellable service: running a 1.5M newsletter for hundreds per month in infra instead of five figures in ESP fees.