I Got Ghosted by Mailgun (So I Built a Fix)
TL;DR: Mailgun falsely flagged me for spamming and shut down my account without an appeal process, leaving me unable to send newsletters from Ghost. That motivated me to build multi-provider bulk email support, starting with Amazon SES.
Hello! I wanted to share a story about my newsletter going dark—and this fix.
Back in 2023, I started self-hosting a blog with Ghost. It was a great excuse to write more and it inspired me to learn how to use Google Cloud. I wanted to email posts to subscribers, and at the time to do that (easily) with Ghost I had one option: use a bulk mail provider called Mailgun. While Mailgun had a free tier it was mentioned nowhere obvious on their site.
I remember thinking, it’s almost like they didn’t want this plan to exist. (Pin that thought.)
I found a tip instructing me to reach out to Mailgun support asking to downgrade my account to their pay-as-you-go plan:
Mailgun Support — Aug 8, 2023
I understand that you would like to switch to the pay as you go (Flex) plan. We will check and help you on this. Thank you for your request. We are happy to confirm, we have successfully downgraded the account to the requested plan.
I wired everything up and it worked. I sent around 70 emails to a small list. Then one day it stopped working. I don’t even remember how I noticed but I eventually found this in my Ghost logs: Mailgun Error 403: Domain not allowed.
So I opened a ticket with Mailgun and a few days later:
Mailgun Support — Jun 27, 2024
Your account was automatically placed on an evaluation period enforcing limits (100 msgs/hr, max 9 recipients). To help protect our customers against spam, we have automated systems in place to flag accounts that appear suspicious. Sometimes we get it wrong… Please read our Email Best Practices/AUP and answer:
– What types of emails will you be sending?
– Transactional, marketing, or both?
– How do you source email lists/contacts and what are the URLs of these sources?
– Could you please provide the URLs to your Terms of Service and Privacy Policy for our review?
– Expected monthly volume of messages?
Okay. I answered everything, assuming it was a false positive and they’d flip the switch back on. Instead, it escalated:
Mailgun Support — Jun 28, 2024
After reviewing the ticket, it has been determined that we will need to engage another group of colleagues. We are transferring the ticket to them.
And then:
Mailgun Support — Jul 1, 2024
After reviewing your account details and activity, we’ve decided to permanently disable your Mailgun account. Unfortunately, we are unable to fully disclose specific reasons behind this action in order to protect our customers, internal processes, and compliance systems. Our Terms or AUP are available on our website with more information.
No appeal process. No logical explanation. No support number. I tried finding and emailing the CEO William Conway who was ironically, unreachable. After a few more attempts for mercy, I accepted my fate.

Fast forward to October 2025
I stumbled upon a community attempt to add Postmark support to Ghost. Quite a bit of time had elapsed and it didn’t seem to be progressing, but a note from Ghost’s CTO stuck with me with clear guidance: “Make the smallest change you can that moves bulk mail toward an adapter, not built-in.” That was the nudge I needed.
One evening I built the foundation for multiple bulk email providers in Ghost’s newsletter pipeline. A few days later, I extended it with an Amazon SES adapter. SES provides Ghost with a highly affordable, alternative email-sending solution.
Getting locked out of sending a newsletter on my own domain as a legitimate, small sender was demoralizing. I missed sharing my thoughts with others and am glad to have a way to reach out again.
Ghost likely has higher-priority work than adding alternate email providers for self-hosters, so I did my best to follow their guidelines.
Hopefully it’s useful to the Ghost community and maintainers will review and reach out to discuss next steps to explore getting this upstreamed. My sense is folks have wanted more bulk-mail options for a while. I believe it makes Ghost more resilient and more valuable. It’s good timing too since Ghost recently added the ability to email a post without publishing it.
I’m excited to return to a more consistent writing rhythm and share some of the projects I’ve been working on. I’ve actually been publishing pretty regularly—it just wasn’t making it to inboxes. Starting today, that changes.
And if Mailgun ever pulls the plug on your Ghost newsletter too, you’ve now got an alternative. In unsurprising news, Mailgun has discontinued its pay-as-you-go plan.
Update 11/25/2025
I recently came across a simple but effective solution for using AWS SES instead of Mailgun for sending Ghost newsletters — without modifying Ghost’s source code:
The approach I built takes a much more complex path. It’s designed to help Ghost migrate from Mailgun to an adapter model, making SES the first reference email adapter with built-in analytics support — something the above approach doesn’t include. Unfortunately, using my approach currently requires patching Ghost after every update. I do have a script to automate it, but it’s fragile and definitely a bit of a hassle. If Ghost eventually accepts the adapter approach, this should make long-term maintenance much simpler.
My approach also adds open, click, and bounce tracking for SES emails via a lightweight AWS pipeline: SES → SNS → SQS → Ghost (with polling every 5 minutes). I shared SES Setup instructions for the faint of heart.
Great to see there are options out there to suit different needs and preferences!