Ghost CMS Mailgun Alternatives: How to Send Newsletters Without Mailgun

Ghost CMS Mailgun alternatives for self-hosted email newsletter sending

Self-hosting Ghost is a genuinely good deal — until you hit the email wall. Mailgun's free tier caps at 100 emails per day, and once you cross that, you're looking at $35/month minimum. For a blogger sending one newsletter a month to 500 subscribers, that's a steep price. This frustration has been boiling over in the Ghost forum: a thread titled Having only Mailgun integration for newsletter is a major hurdle for self-hosting racked up 22 replies and 10 participants in days.

The good news: you're not actually stuck with Mailgun. Ghost separates two distinct email functions — transactional emails (magic links, password resets) and bulk newsletter sending — and each has different options. Understanding that split is the key to escaping the Mailgun lock-in.

This guide covers every working Mailgun alternative for Ghost CMS in 2026, with real setup steps and honest trade-offs for each.

Quick answer: Ghost CMS supports SMTP for transactional emails (magic links, password resets), meaning any SMTP provider works: AWS SES, Brevo, Postmark, or Resend. For bulk newsletter sending, native Mailgun is still required — but open-source proxies like mailgun-ses-proxy and ghost-cms-amazon-ses-adapter route newsletter sends through AWS SES, cutting costs by 90%+.

Ghost CMS Mailgun alternatives for self-hosted email newsletters

Why Is Mailgun Required for Ghost Newsletters?

Ghost's bulk newsletter sending is hardcoded to use the Mailgun API — not SMTP. When you publish a newsletter, Ghost calls Mailgun's batch sending endpoint directly. This is different from transactional emails (magic links, password resets), which Ghost sends via standard SMTP and can use any provider.

The two email systems in Ghost are:

Email TypeUsed ForProtocolProvider Options
TransactionalMagic links, password resets, new subscriber welcomeSMTPAny SMTP: SES, Brevo, Postmark, Resend
Bulk / NewsletterPublishing newsletters to subscribersMailgun APIMailgun only (natively), or via proxy

This architecture explains why so many self-hosters feel trapped: you can swap transactional email easily, but the newsletter sender still calls Mailgun.

How Do I Set Up Transactional Email Without Mailgun?

Ghost's config.production.json has a mail block that handles transactional sends. Any SMTP provider works here. This is the easiest switch to make.

Example using AWS SES:

{
  "mail": {
    "transport": "SMTP",
    "options": {
      "host": "email-smtp.us-east-1.amazonaws.com",
      "port": 465,
      "secure": true,
      "auth": {
        "user": "YOUR_SES_SMTP_USER",
        "pass": "YOUR_SES_SMTP_PASSWORD"
      }
    },
    "from": "Your Name <hello@yourdomain.com>"
  }
}

AWS SES costs $0.10 per 1,000 emails — so sending 10,000 transactional emails a month costs $1. Compare that to Mailgun's starting plan at $35/month. For general SMTP configuration on Ghost, the Ghost installation guide covers where to find and edit this config file on your server.

After editing, restart Ghost:

ghost restart

Can I Use AWS SES for Ghost Newsletter Sending?

Yes — through a proxy. Since Ghost hardcodes Mailgun for bulk sends, you need a layer that translates Mailgun API calls into SES calls. Two open-source solutions exist:

1. mailgun-ses-proxy (by tilak999)

This runs a small Node.js server locally that impersonates the Mailgun API. Ghost sends to it thinking it's Mailgun; the proxy forwards to SES. Setup takes about 15 minutes on the same server as Ghost.

git clone https://github.com/tilak999/mailgun-ses-proxy
cd mailgun-ses-proxy
npm install
# Configure your AWS credentials in .env
node index.js

Then update Ghost's Mailgun config to point at your proxy's local address (http://localhost:PORT) with dummy credentials.

2. ghost-cms-amazon-ses-adapter (by exlab-code)

This adapter patches Ghost's email service at a lower level. It intercepts the newsletter send and routes it through SES's SendBulkEmail endpoint. One Reddit user reported switching from ~$60/month on SES to $640/month on Mailgun if they'd stayed — the cost difference is real.

One known issue with the exlab-code adapter: unsubscribe links and subscription details can break if the adapter doesn't handle list management headers properly. Check issue #8 on their GitHub before deploying to production. This is also why Ghost's Mailchimp integration route is worth considering for list management alongside SES for sending.

Does Brevo (Formerly Sendinblue) Work With Ghost?

Brevo works for transactional emails immediately — just use their SMTP credentials in config.production.json. For newsletter sending, you'd need the same proxy approach as SES.

Brevo's free tier sends 300 emails per day, which covers small newsletters. Their paid plans start at $9/month for 5,000 emails/month — cheaper than Mailgun's $35/month floor. If you're under 300 subscribers and send infrequently, the free tier might be enough for transactional alone.

Brevo SMTP config for Ghost:

{
  "mail": {
    "transport": "SMTP",
    "options": {
      "host": "smtp-relay.brevo.com",
      "port": 587,
      "auth": {
        "user": "your-brevo-login@email.com",
        "pass": "your-brevo-smtp-key"
      }
    },
    "from": "Your Name <hello@yourdomain.com>"
  }
}

What About Resend or Postmark for Ghost?

Both work for transactional emails via SMTP. Resend's free tier gives you 3,000 emails/month and 100/day — generous for small sites. Postmark is pricier but has excellent deliverability reputation, especially for time-sensitive emails like magic links.

ProviderFree TierPaid FromNewsletter SendingGhost SMTP Support
AWS SES3,000/month (in first 12 months)$0.10/1,000Via proxy
Brevo300/day$9/monthVia proxy
Resend3,000/month$20/monthVia proxy
Postmark100 test emails$15/monthVia proxy
Mailgun100/day (limited)$35/monthNative ✅

For bulk newsletter sending at scale, SES remains the cost winner. At $0.10 per 1,000 emails, sending 10,000 newsletters costs $1.00. Mailgun's equivalent would cost $35. The 1GB server Ghost guide is relevant here if you're running the SES proxy on constrained hardware.

What Is Ghosler and Should I Use It?

Ghosler is a self-hosted newsletter delivery tool built specifically as a Mailgun replacement for Ghost. It runs alongside Ghost, intercepts newsletter sends, and delivers them through any SMTP provider. It's more polished than the raw SES adapters and handles unsubscribe links correctly.

Setup involves running Ghosler as a Docker container or Node.js service, then pointing Ghost's newsletter webhook at it. If you're comfortable with Docker, this is the cleanest solution — no patching Ghost internals, no proxy quirks. Pair it with Brevo or SES for actual delivery and you have a complete Mailgun-free stack.

Can I Send Ghost Newsletters Through Mailchimp?

Not directly via Ghost's native newsletter feature. The Ghost Mailchimp integration syncs members to Mailchimp lists — you'd then send campaigns from Mailchimp's interface instead of Ghost's publish flow. This means losing Ghost's native "publish + send newsletter" workflow but gaining Mailchimp's full email marketing features.

It's a valid option if you already use Mailchimp and don't need the tight Ghost publisher workflow. For pure newsletter delivery, the SES proxy approach keeps everything inside Ghost.

These posts connect directly to the email and deliverability setup covered above:

Frequently Asked Questions

Does Ghost require Mailgun?

Ghost requires Mailgun only for its native bulk newsletter sending feature. Transactional emails (magic links, password resets) work with any SMTP provider. If you want to send newsletters without Mailgun, you need an open-source proxy like mailgun-ses-proxy or Ghosler that routes sends through another service.

What is the cheapest email option for self-hosted Ghost?

AWS SES is the cheapest production-grade option at $0.10 per 1,000 emails. For a newsletter with 500 subscribers sent once a month, the cost is $0.05. The setup complexity is higher than Mailgun, but the cost savings are substantial for any list above 100 subscribers.

Can I use SendGrid with Ghost CMS?

SendGrid works as an SMTP provider for Ghost's transactional emails. For newsletter sending, you'd need a proxy that translates Ghost's Mailgun API calls into SendGrid API calls. No official adapter exists, so most users choose SES proxies over SendGrid for this use case.

Why does Mailgun cost $35/month minimum?

Mailgun's free tier allows 100 emails per day, which covers small personal blogs. Once you exceed that limit — either by having more than 100 subscribers or sending multiple emails in a day — you're required to upgrade to a paid plan starting at $35/month. Ghost forum users note this hits particularly hard for low-frequency senders with growing lists.

Does Ghost support SMTP for newsletters?

Ghost does not support SMTP for bulk newsletter sending natively — it uses the Mailgun API directly. SMTP is only supported for transactional emails. Community-built tools like Ghosler or the mailgun-ses-proxy add SMTP-backed newsletter sending by sitting between Ghost and the email provider.

Is there a native AWS SES integration for Ghost?

Ghost does not have a native AWS SES integration for newsletters. For transactional emails, SES SMTP credentials work directly in config.production.json. For newsletters, two open-source adapters exist: mailgun-ses-proxy and ghost-cms-amazon-ses-adapter.

What happens if I exceed Mailgun's free limit on Ghost?

Ghost reports a delivery error and the newsletter fails to send to subscribers beyond the daily limit. You'd need to retry sending manually for affected subscribers. This is the exact scenario described in the Ghost forum's most active self-hosting thread from March 2026.

Can I use Resend with Ghost?

Resend works for Ghost transactional emails via its SMTP endpoint. For newsletter sending, no purpose-built Ghost adapter exists for Resend, so the SES proxy approach is more commonly used. Resend's 3,000 free emails/month makes it attractive for small sites that only need transactional delivery.

What's the Right Setup for Your Situation?

If you're on Ghost with under 300 subscribers and send infrequently: Brevo's free tier handles transactional emails and the newsletter proxy covers bulk sends. Total cost: $0/month.

If you're growing past 1,000 subscribers and want the lowest cost: Set up AWS SES for transactional via SMTP in config.production.json, then deploy the mailgun-ses-proxy for newsletters. Budget $1-5/month at most, versus $35+ with Mailgun. Make sure to check your Ghost SEO setup while you're in the config — email deliverability and search visibility compound together.

If you want zero maintenance: Stay on Mailgun's paid plan and focus your energy elsewhere. The $35/month is the cost of not configuring a proxy. For high-volume senders, Ghost vs Substack is worth revisiting — Substack includes email delivery in its revenue share model.

Subscribe to Ghost SEO

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe