Skip to content

Self-hosted transactional email

Self-hosted transactional email: what fits, and when to pick a dedicated MTA

For high-volume, app-triggered transactional email — password resets, receipts, per-event notifications sent through a programmatic per-message API — the best self-hosted, open-source choices are dedicated mail transfer agents like Postal, Haraka, and Cuttlefish, or the managed pay-as-you-go backend Amazon SES. AcelleMail is not one of those — it is a self-hosted marketing platform (campaigns, lists, automation). It fits transactional-adjacent work — notifications, digests, and receipts modeled as automations — and sends through the same SES/SMTP backend a dedicated MTA would use, on a $80 one-time license. If your sends are purely programmatic, use a dedicated MTA; the two can even relay through one SES account.

Try the live demo

What "transactional email" actually means

Transactional email is triggered by a single user action and sent to one recipient: a password reset, an order receipt, a shipping alert, a one-time code, a per-event notification. Your application calls a send API (or hands a message to SMTP) the moment the event happens. The workload is high-frequency, low-latency, one-to-one, and driven entirely by code — not by a person composing a newsletter.

That is a different job from marketing email, where a human builds a campaign, targets a list or segment, schedules it, and reviews open/click reports afterward. The tools optimized for one are usually a poor fit for the other. A self-hosted transactional stack has three broad options:

  • A dedicated open-source MTA you run yourself — Postal, Haraka, or Cuttlefish.
  • A managed sending backend like Amazon SES — not self-hosted, but pay-as-you-go and the delivery layer many self-hosted apps relay through.
  • A self-hosted marketing platform like AcelleMail — the right choice only when your "transactional" sends overlap with marketing (notifications, digests, receipts you'd model as automations).

The dedicated self-hosted transactional MTAs

If you need a programmatic per-message API for app-triggered mail at volume, start here. These are purpose-built for transactional delivery and are open source:

  • Postal — a full open-source mail platform (Ruby, with MySQL/MariaDB and RabbitMQ) that offers a SendGrid-style HTTP API, SMTP, inbound handling, message tracking, and multi-tenant mail servers. A strong fit for teams sending real transactional volume that want an API plus a deliverability dashboard.
  • Haraka — a high-performance SMTP server and framework built on Node.js with a plugin architecture. It is closer to a toolkit than a finished product: you assemble the pieces (queueing, tracking, UI) yourself, which suits teams that want maximum control.
  • Cuttlefish — a self-hosted transactional email server (Ruby on Rails, built on Postfix) with a web dashboard, bounce handling, open/click tracking, and a per-email log. It is labeled beta but has run in production for years at the OpenAustralia Foundation, sending over a million emails a month.

All three run on your own hardware, keep your data in-house, and cost only your server and engineering time. In exchange you own deliverability operations: IP warmup, SPF/DKIM/DMARC, blocklist monitoring, and bounce/complaint feedback loops.

Amazon SES — managed, not self-hosted, but often the backend

Amazon SES is not self-hosted (it runs in AWS), but it is worth naming because it is the cheapest way to deliver at scale — roughly $0.10 per 1,000 emails — and it hands you managed IP reputation and DKIM signing. Many self-hosted apps, including AcelleMail, relay through SES rather than running their own outbound MTA. If you don't want to operate mail infrastructure at all, SES (or a self-hosted MTA pointed at SES as a smarthost) is the pragmatic middle ground. See our dedicated Amazon SES page.

Where AcelleMail fits — and where it doesn't

Being upfront: AcelleMail is a self-hosted marketing platform, not a drop-in transactional MTA. Its REST API is built around campaigns, lists, and subscribers — you create a campaign, add subscribers, and run it — not a per-message send() endpoint like SendGrid's or Postal's. So for password resets and receipts fired by application code, a dedicated MTA is the better tool.

AcelleMail is a good fit when your sends sit between marketing and transactional:

  • Notification-style email — product updates, weekly digests, and re-engagement that you'd rather model as automations with tracking and unsubscribe handling.
  • Trigger-based journeys — its visual automation (trigger / wait / condition / branch) covers onboarding drips and behavior-based follow-ups.
  • One self-hosted app for the marketing side — a drag-and-drop builder, segments, A/B testing, and open/click/bounce analytics, on your own server with full PHP source.

And the backend is shared: AcelleMail sends through 8 drivers — Amazon SES, SendGrid, SparkPost, Mailgun, Elastic Email, Blastengine, Gmail relay, and generic SMTP — so it can relay through the exact same SES account or SMTP host a dedicated transactional MTA uses. A common setup runs a dedicated MTA (or SES) for pure transactional traffic and AcelleMail for marketing, both on one delivery backend.

Own it for $80 one-time — no per-message metering

Hosted transactional services meter you per email or per thousand and add a monthly fee. The self-hosted options remove the software rent: dedicated MTAs are free and open source (you pay for servers), and AcelleMail is a one-time license ($80 Regular) with lifetime point/minor updates and full, unencrypted PHP source. On the marketing side you pay only your delivery backend — for example SES at ~$0.10 per 1,000 — plus a modest VPS, with no per-subscriber or per-message software charge. Your data and your list stay on your server.

Build your own self-hosted email SaaS ($199 Extended)

The Extended License turns one install into a multi-tenant product. It bundles customer accounts, subscription plans, 6 payment gateways (Stripe, PayPal, Braintree, Razorpay, Paystack, Offline), prorated upgrades, dunning, and white-label branding. You run one install, your clients log in to their own accounts, and all sending flows through your chosen backend (SES or SMTP). See For Developers.

AcelleMail vs Postal vs Cuttlefish vs raw SES

Capability AcelleMail Postal Cuttlefish Raw Amazon SES
Self-hosted (runs on your server) Yes Yes Yes No (managed AWS)
Programmatic per-message transactional API No — campaign/list API Yes (HTTP API) Via SMTP Yes (API + SMTP)
Built for app-triggered transactional volume No — marketing-first Yes Yes Yes
Drag-and-drop campaign builder Yes No No No
Lists, segments, signup forms Yes No No No
Visual branching automation Yes (Automation2) No No No
Open / click / bounce tracking Yes Yes Yes No
Multi-tenant / resell to clients Yes (Extended) Yes (mail servers) Limited No
License $80 one-time Open source (MIT) Open source (AGPL) n/a (usage-billed)
Cost model $80 once + backend usage Free + your servers Free + your servers ~$0.10 per 1,000

Postal facts from postalserver.io / its GitHub repository; Cuttlefish facts from cuttlefish.io / its GitHub repository; SES facts are the documented Amazon SES model. Licenses noted per each project's stated terms and can change — verify against the source before you rely on them.

How to choose your self-hosted transactional stack

  1. Purely app-triggered mail at volume? Run a dedicated MTA — Postal (API-first), Haraka (framework), or Cuttlefish (dashboard + tracking).
  2. Don't want to operate mail infrastructure? Point your app (or a self-hosted MTA) at Amazon SES as the delivery backend.
  3. Sends that overlap with marketing — notifications, digests, receipts as automations? Use AcelleMail for that layer and keep a dedicated MTA for pure transactional.
  4. Want one backend for both? Relay AcelleMail and your transactional MTA through the same SES account or SMTP host, and keep DKIM/SPF aligned on your domain.
  5. Reselling to clients? The AcelleMail Extended License adds the multi-tenant billing layer on top of your chosen backend.

Self-hosted transactional email — frequently asked questions

For high-volume, app-triggered transactional email — password resets, receipts, notifications sent through a programmatic per-message API — the leading self-hosted, open-source options are Postal (a full mail platform with a SendGrid-style HTTP API), Haraka (a Node.js SMTP server and framework), and Cuttlefish (a Postfix-based server with a tracking dashboard). Amazon SES is a managed pay-as-you-go backend many of them relay through. AcelleMail is not a pure transactional MTA — it is a self-hosted marketing platform — so pick a dedicated MTA for purely programmatic sends.

No — and we'll say so plainly. AcelleMail is a self-hosted marketing platform: its REST API is built around campaigns, lists, and subscribers, not a per-message send() endpoint like SendGrid's or Postal's. For password resets and receipts fired by application code, a dedicated MTA (Postal, Haraka, Cuttlefish) or Amazon SES is the right tool. AcelleMail fits the marketing and notification layer — campaigns, automations, digests — that sits alongside your transactional traffic.

Use AcelleMail when your sends overlap with marketing rather than being purely programmatic: product-update notifications, weekly digests, re-engagement, and onboarding journeys you'd model as automations with tracking and unsubscribe handling. You get a drag-and-drop builder, segments, A/B testing, and open/click/bounce analytics on your own server. For per-event, one-to-one mail triggered by code (resets, one-time codes, order receipts), keep a dedicated MTA — the two commonly run side by side.

Yes. AcelleMail sends through 8 drivers — Amazon SES, SendGrid, SparkPost, Mailgun, Elastic Email, Blastengine, Gmail relay, and generic SMTP — so it can relay through the exact same SES account or SMTP host your transactional MTA uses. A common setup runs a dedicated MTA (or SES) for pure transactional traffic and AcelleMail for marketing, both on one delivery backend, with DKIM and SPF aligned on your domain.

Postal is a full open-source mail platform (Ruby, with MySQL/MariaDB and RabbitMQ) offering a SendGrid-style HTTP API, SMTP, inbound handling, tracking, and multi-tenant mail servers — a strong fit when you want an API plus a deliverability dashboard. Haraka is a high-performance SMTP server and framework on Node.js with a plugin architecture — closer to a toolkit you assemble than a finished product. Cuttlefish is a Postfix-based server (Ruby on Rails) with a web dashboard, bounce handling, and open/click tracking; it is labeled beta but has run in production for years at the OpenAustralia Foundation.

The dedicated MTAs (Postal, Haraka, Cuttlefish) are free and open source — you pay only for servers and your own time to operate deliverability. Amazon SES is roughly $0.10 per 1,000 emails with no software fee. AcelleMail, for the marketing side, is a one-time license ($80 Regular / $199 Extended) with no per-message or per-subscriber charge — you pay only your delivery backend (for example SES at ~$0.10/1,000) plus a modest VPS.

Yes — that is the trade-off. Running your own MTA means you own IP warmup, SPF/DKIM/DMARC, blocklist monitoring, and bounce/complaint feedback loops. Relaying through Amazon SES offloads managed IP reputation and DKIM signing while keeping your app self-hosted, which is why many self-hosted stacks — including AcelleMail — point at SES as the backend rather than sending direct.

For the marketing layer, yes — that is the AcelleMail Extended License ($199). It adds customer accounts, subscription plans, 6 payment gateways (Stripe, PayPal, Braintree, Razorpay, Paystack, Offline), prorated upgrades, dunning, and white-label branding on top of your chosen backend. If clients also need programmatic transactional APIs, pair it with a multi-tenant MTA like Postal. See For Developers.

Self-hosted email marketing on your own backend

For pure transactional sending, pick a dedicated MTA. For the marketing and notification layer — campaigns, automation, and analytics you own — AcelleMail Regular is $80, one-time, with full PHP source and unlimited subscribers. Try the live demo before you buy.

Try the live demo