Hi everyone,
I wanted to share a small project I have been working on after getting tired of paying Mailgun just to send newsletters from a self-hosted Ghost install.
Ghost’s native newsletter feature still expects Mailgun, so instead of modifying Ghost core, I built a Mailgun-compatible proxy that sits between Ghost and Amazon SES.
Ghost talks to the proxy as if it was Mailgun. The proxy accepts the Mailgun API calls, queues the newsletter work, sends the emails through Amazon SES, and then converts SES events back into Mailgun-like events so Ghost can still show newsletter stats.
Repo:
Provenance / attribution: this is not a from-scratch project. It is a modified distribution of typetale-app/mailgun-ses-proxy, kept under the same AGPL-3.0 license. My work here is focused on making it practical for self-hosted Ghost + Amazon SES: Ghost newsletter compatibility, SES event mapping, suppression handling, Docker/GHCR publishing, deployment docs, and production hardening.
What it supports:
- Ghost native newsletters through the existing Mailgun integration.
- Amazon SES sending.
- SQS-based background workers for larger sends.
- Delivery, open, click, bounce and complaint events from SES.
- Mailgun-like event responses for Ghost analytics.
- Local suppression handling for complaints, permanent bounces and repeated transient bounces.
- Docker / Docker Compose deployment.
I have tested it on my own self-hosted Ghost site with almost 5,000 contacts, and the first real sends worked well.
The cost difference is the main reason I did this. My Mailgun bill was around 28-29 EUR/month for this kind of usage. With Amazon SES, sending around 5,000 emails costs about $0.50, roughly 0.45-0.50 EUR depending on exchange rate and billing details. That is about 98% cheaper for my use case.
Important caveats:
- This is not an official Ghost feature.
- It is for self-hosters who are comfortable running an extra Docker service.
- You still need to configure SES properly: verified domain, DKIM, SPF, DMARC, production access, configuration set and event publishing.
- Transactional emails can already use SES SMTP directly in Ghost. This project is mainly about replacing Mailgun for Ghost native newsletters.
- Test with a small segment before sending to your full list.
This is not meant as a perfect Mailgun clone, but as a practical bridge for people who want to keep Ghost’s native newsletter workflow while using Amazon SES.
Feedback, testing and issues are welcome.