Categories
Self-Hosted Infrastructure Transactional Email Mail Server SMTP Email Delivery DeliverabilityStars
Forks
Watchers
Developer links
NitroMTA
Your application already knows how to send mail through Amazon SES; NitroMTA lets it keep that code, change the endpoint and keys, and deliver from IP addresses you actually control. The engine answers a submission only after the message is committed to disk, so accepted mail survives a crash, a power cut, and even the loss of its host when the disk survives. Capture mode runs the whole engine locally and shows each message in a browser at port 9090 instead of sending it, which makes testing painless before any DNS exists. Out in production, new IPs warm up receiver by receiver from fifty messages a day, rising after clean days and backing off when complaints, bounces, or throttling climb. Each provider gets its own connection limits and cooldowns, hard bounces and spam complaints suppress the address automatically, and outgoing mail is DKIM-signed and sent over TLS with MTA-STS and DANE verified where published. Templates, identities, configuration sets, tenants, dedicated IPs, and SES-shaped events through an SNS subset cover the SES surface your tooling expects, and a CLI explains why any given message is still waiting. Running on a dedicated VPS on RepoCloud with guaranteed CPU, RAM, and SSD, full root SSH access, and a browser serial console. Apache-2.0 licensed.
Benefits
- Keep Your SES Code
- SendEmail, SendBulkEmail, templates, identities, configuration sets, tenants, and the suppression list work through the SES v2 API, tested with the official SDKs, so migration is an endpoint change.
- Mail Committed Before Accepted
- A submission is answered only once it is committed to disk in the SQLite-backed store, so accepted messages survive crashes, power cuts, and host loss whenever the disk survives.
- Deliverability Built In
- New IPs warm up per receiver from fifty messages daily, provider-specific limits and cooldowns apply, bounces and complaints suppress addresses, and mail leaves DKIM-signed over TLS with MTA-STS checks.
- Capture Mode For Testing
- Run the whole engine with capture enabled and read every submitted message in a browser at port 9090 exactly as its receiver would have seen it, with no DNS required.
Features
- SES V2 API Compatibility
- The HTTPS endpoint on port 4443 implements SendEmail, SendBulkEmail, templates, identities, configuration sets, tenants, dedicated IPs, and SES-shaped events through an SNS subset.
- SMTP Submission Included
- Existing SMTP clients submit alongside SES SDK applications, and both paths share the same durable queue, signing, warmup, suppression, and retry machinery in one binary.
- Per-Receiver IP Warmup
- Sending volume starts near fifty messages a day per receiver, rises after clean days, and backs off automatically when complaints, bounces, or throttling signals climb.
- Doctor DNS Checks
- The nitromta doctor command checks reverse DNS, SPF, DKIM, DMARC, and the bounce MX for your sending domains and tells you exactly what to publish.
- Queue Insight CLI
- A bundled command-line tool explains why any message is waiting, while systemd units and Debian, RPM, Docker, and archive packages cover mainstream Linux deployment.