Postal
Self-hosted open-source mail platform combining MTA, click/open tracking, and webhook delivery in one stack.
What Postal is
Postal is a complete mail delivery platform you self-host. The closest commercial analog is SendGrid or Mailgun: API-driven, sends transactional and bulk mail, tracks opens/clicks, fires webhooks on events.
Started by atech (the UK hosting company behind Krystal). Open-sourced in 2017. Continues active development. Used by hundreds of self-hosted senders globally as alternative to commercial ESP APIs.
The architecture is genuinely full-stack: Ruby on Rails web application, MariaDB or MySQL for the database, RabbitMQ for queueing, optionally Redis. Compared to PowerMTA (single C++ binary) it is heavier — but you get an ESP feature set built-in instead of needing MailWizz or custom code on top.
Architecture in detail
Postal runs multiple processes:
- Web server: the admin UI and the API endpoint. Customers post messages via HTTP API.
- SMTP server: accepts mail from applications that prefer SMTP submission over HTTP API.
- Worker processes: consume from RabbitMQ, deliver mail to receivers via outbound SMTP, process bounces, fire webhooks.
- MariaDB: stores accounts, messages, events, statistics.
- RabbitMQ: message queueing for inbound submissions and outbound delivery attempts.
Compared to PowerMTA's "one binary, one config file" model, Postal has more moving parts. The trade-off is that the moving parts give you ESP functionality you would otherwise build yourself.
Resource requirements scale with volume. Modest deployments (under 1M monthly messages): single server with 4-8 GB RAM works fine. Larger deployments (10M+ monthly): separate database server, multiple worker nodes, beefier RabbitMQ instance.
How Postal compares to PowerMTA
Different design philosophies for different use cases.
PowerMTA strengths: raw send rate (sustains 5M+ messages/hour on modest hardware), per-receiver throttling sophistication, VMTA pool architecture for IP segmentation, mature operational tooling, used by every major ESP.
Postal strengths: integrated ESP feature set, open-source (zero license cost), HTTP API parity with commercial ESPs, click/open tracking and webhook delivery built-in, easier to customize because the source is available.
PowerMTA gaps: just an MTA, you need MailWizz/Acelle/custom code for any user-facing features; commercial license fees (€2K-10K+ annually depending on tier).
Postal gaps: lower raw throughput per server (still respectable but PowerMTA wins on pure scale), more operational complexity to deploy, smaller community than PowerMTA's commercial ecosystem.
See the full PowerMTA vs Postal comparison for detail on which fits which use case.
When Postal makes sense
SaaS senders building transactional APIs: Postal's HTTP API matches what SendGrid/Mailgun customers are used to. Migrate code from a commercial ESP to Postal with minimal API changes.
Self-hosted alternatives to commercial ESPs: the killer use case. If you are paying SendGrid €2K/month at moderate volume, a Postal deployment running on a €120/month server replaces it.
Multi-tenant operators wanting open-source: Postal supports organization/server hierarchies, making it usable for ESP resellers who want to give clients their own sending accounts.
Senders who need click/open tracking without buying MailWizz: Postal includes tracking infrastructure. If you do not need full email marketing software (segmentation, automation, subscriber UI) you can use Postal directly without the marketing layer.
When Postal does not make sense
Extreme scale (10M+ daily): not impossible with Postal, but PowerMTA fits this better. The throughput per server is higher and the operational maturity at scale is better-documented.
Strict per-receiver throttling needs: Postal's throttling is adequate but PowerMTA's is more granular. If you have specific delivery patterns at Gmail/Outlook/Yahoo that need fine-tuned send rates, PowerMTA gives you more knobs.
Pure marketing email use cases: Postal is API-driven. If your operators send via a UI rather than via code, MailWizz or Acelle on top of PowerMTA gives a better user experience.
Operations without Ruby/Rails experience: Postal is Ruby. If something breaks at the application level, debugging requires Ruby familiarity. Teams without it may prefer PowerMTA's simpler operational footprint.