Self-hosted email marketing with full source code. Pay once, own forever. Get AcelleMail — $74 →

Pillar guide · 22 min read · Updated May 2026

Self-hosted email marketing in 2026 — own your list, your sending, your costs.

Self-hosted email marketing means running the campaign software, the subscriber database, and the sending pipeline on infrastructure you control — instead of leasing them from Mailchimp, Brevo, or a similar SaaS. The trade-off is real: you take on devops in exchange for linear cost-per-send, full data residency, and deliverability that scales with your reputation, not the platform's. This guide walks the architecture, the cost math, the deliverability fundamentals, and the platforms — with every claim traceable to a file path or a published source.

In this guide

  1. What is self-hosted email marketing?
  2. How it works — the architecture
  3. Why teams move to self-hosted
  4. The cost math at 5K → 200K subscribers
  5. Choosing your sending architecture
  6. Open-source platforms — objective compare
  7. Setup roadmap (server → DNS → warmup)
  8. Deliverability fundamentals
  9. GDPR + data residency
  10. When self-hosted is the wrong call
  11. FAQ
  12. Where to go next

§1 · Definition

What is self-hosted email marketing?

Self-hosted email marketing is the practice of running an email-marketing application — list management, campaign builder, automation flows, analytics — on your own server, alongside a sending pipeline you also control. The opposite is the SaaS model where a vendor (Mailchimp, Brevo, Constant Contact, Klaviyo, ConvertKit, MailerLite, Campaign Monitor) hosts the application and the sending infrastructure on your behalf, and bills you a recurring fee scaled to your subscriber count.

A self-hosted setup has three components, and you own the bottom two:

  1. The application layer. An installable web app — typically PHP/Laravel, Go, Ruby, or Node — that handles subscriber lists, campaign drafts, automation triggers, click/open tracking, and the dashboard your marketers use. Examples: AcelleMail, Listmonk, Mautic, Sendy.
  2. The sending pipeline. The mechanism that takes a queued message and hands it to a Mail Transfer Agent (MTA) which speaks SMTP to recipient mail servers. You can run your own MTA (Postfix, Postal, Haraka), use a relay-as-a-service (Amazon SES, SendGrid, Mailgun, Postmark, SparkPost), or both — depending on volume and your tolerance for IP-reputation work.
  3. The infrastructure. A Linux VPS, a managed Postgres/MySQL instance, a Redis or beanstalkd queue, a domain you control, and DNS authority for SPF, DKIM, DMARC, and PTR records. A small list (under 50K subscribers) runs comfortably on a $5–$20/month droplet; larger lists scale horizontally with extra queue workers and read-replica DBs.

The trade you're making is administrative work for cost-per-send and data residency. SaaS vendors abstract steps 2 and 3 entirely; you pay them the abstraction tax in monthly fees that scale with subscriber count. Self-hosting recovers that tax in exchange for the time it takes to provision a server, configure DNS, and set up a sending relay — operations that are now down to under an hour for someone who has done it before, and a weekend for a first-timer with the documentation in front of them.

"Self-hosted" should not be conflated with "DIY from scratch." All of the major open-source platforms ship as turnkey installs — upload, configure DB credentials, point a domain. The DIY part is the sending relay and the DNS — and if you use Amazon SES (or any SMTP relay) the DIY part shrinks to one form filled out once.

§2 · Architecture

How a self-hosted email-marketing system actually works.

A campaign send walks through five stages. Understanding them is the prerequisite for picking platforms, picking a sending relay, and debugging deliverability when a campaign underperforms.

[Marketer's browser]
        │
        ▼  HTTPS POST /campaigns
[Web app — Laravel/Symfony/Go]  ◀── REST API also lands here
        │
        ▼  enqueue per-recipient job
[Job queue — Redis / beanstalkd / DB]
        │
        ▼  worker picks job, renders MIME
[Sending driver — SES/Mailgun/SMTP]
        │
        ▼  TLS, AUTH, DATA, .
[Mail Transfer Agent (MTA)]
        │
        ▼  SMTP to recipient MX
[Recipient mail server — Gmail/O365/Yahoo]
        │
        ▼  open pixel · click redirect · bounce · complaint
[Webhook back to web app] ◀── reputation feedback loop

Stage 1 — campaign authoring. The marketer writes a campaign in the web UI: subject line, sender name, list selection, content editor (drag-and-drop, MJML, or raw HTML). When they hit "send," the application creates a campaign record and enqueues per-recipient jobs to a background queue. Nothing leaves the server yet.

Stage 2 — queue + worker. Background workers pull jobs at the rate the queue is configured for (typically 5–50 sends/second per worker). The worker fetches the subscriber row, merges custom fields into the template, embeds a tracking pixel keyed by message-id, and rewrites every link to a click-tracking redirect. The result is a fully personalised MIME message ready to hand to a sending driver.

Stage 3 — sending driver. The driver is the adapter between your application and whatever transport you pick: an Amazon SES API call, a Mailgun HTTPS POST, a SendGrid Web API call, or a raw SMTP AUTH PLAIN handshake to your own Postal MTA. AcelleMail's sending-driver pattern, for example, defines a 5-method contract (connect, send, getDeliveryStatus, getCapabilities, validateConfig) that every driver implements — see /developers/sending-drivers for the full driver guideline. Built-in drivers ship for Amazon SES, SendGrid, Mailgun, SparkPost, Elastic Email, Gmail SMTP, and any generic SMTP server (8 vendors live in app/SendingServers/Drivers/Vendors/).

Stage 4 — MTA → recipient. The MTA (yours or your relay's) opens an SMTP connection to the recipient's MX server, presents itself with a HELO/EHLO, negotiates STARTTLS, authenticates DKIM-signing keys, and submits the message. The recipient mail server runs spam scoring, SPF/DKIM/DMARC verification, list-unsubscribe header processing, and either inboxes or rejects.

Stage 5 — feedback loop. Three signals come back, all asynchronous. Bounces arrive over SMTP (5xx codes for hard bounces, 4xx for soft) or via the relay's webhook. Complaints (recipient hit "spam") arrive via the Mailbox Provider's Feedback Loop or, again, the relay's webhook. Engagement (open pixel hits, click-redirect requests) arrives via plain HTTP back to your web app. The application uses these to update suppression lists, retire dead addresses, and feed campaign analytics. Acelle's webhook-event catalogue lives at config/webhook_events.php — it's the canonical list of events the application emits and consumes.

The shape is the same on every self-hosted platform, with one variable: where the queue and MTA live. AcelleMail's worker runs on the same box as the web app by default; Listmonk does the same; Mautic uses Symfony Messenger and supports separate worker boxes. Mail relay can be local (Postal on the same machine, Postfix on a sister box) or remote (SES, Mailgun) — that decision is the subject of §5.

§3 · Motivation

Why teams move from SaaS to self-hosted.

1. Cost-per-send becomes linear

SaaS pricing scales with contact count regardless of how often you send. Self-hosted decouples the two: software is a fixed cost (free for Listmonk/Mautic, $74 one-time for AcelleMail Standard, $59 for Sendy); sends are billed by the recipient at the relay's published rate (Amazon SES is $0.10 per 1,000). At 50,000 subscribers sending one campaign a week, the platform-fee bill goes from $385/mo on Mailchimp Standard to roughly $20/mo in send fees — see §4 for the table.

2. Subscriber data lives on your server

Email addresses, custom fields, segmentation tags, click history, opens, complaints — all sit in a database you control. No third-party data processor. No platform-side data dumps for marketing-data fabric integrations. CSV export covers everything because you wrote the schema (or you can read it). For a SaaS billing setup with audit obligations, that ownership is the compliance backbone.

3. Deliverability scales with your domain

On a SaaS platform, your sender reputation is mixed with the platform's other tenants. A neighbouring tenant's spam complaint can bleed into your domain's deliverability. Self-hosted via a relay like Amazon SES gives you a dedicated IP option (or shared, your choice), and the From-domain reputation that mailbox providers actually score is yours alone. Warming, throttling, and IP rotation are visible levers, not hidden platform behaviour.

4. No vendor lock-in by construction

The schema, the templates, the automation flows, and (for open-source platforms) the source code are on your disk. Migrating off a self-hosted platform is a data export, not an integration project. Migrating between sending relays is a configuration change. The exit cost is the cost of changing one form, not the cost of rebuilding nine months of automation triggers in a new vendor's editor.

5. Compliance posture is yours to define

Choose a region (eu-west-1, us-east-1, ap-southeast-1). Choose retention windows. Choose which custom fields are encrypted at rest. The European Court of Justice's Schrems II ruling made cross-border data transfers a recurring legal headache for SaaS-hosted lists; self-hosted with EU infrastructure removes that question from the table. See §9.

6. Extensibility is code, not a feature request

Custom segmentation that the platform doesn't support, a webhook to your CRM, a regional payment gateway for your reseller billing, an industry-specific report — all become a 200-line plugin or a SQL query, not a roadmap submission. AcelleMail ships a plugin SDK with eleven source-grounded developer docs covering hooks, lifecycle, drivers, gateways, and testing.

§4 · Cost math

What it actually costs at 5K, 10K, 50K, and 200K subscribers.

Assumptions: one campaign per subscriber per week (4.33 sends per month per contact), Amazon SES at the published $0.10 per 1,000 emails, a $5–$20/month VPS for the application, and either AcelleMail's $74 one-time Standard licence amortised over 36 months or a free open-source platform. Mailchimp Standard tier pricing is the published rate as of May 2026.

Subscribers Mailchimp Standard / mo Self-hosted SES + VPS / mo 3-year saving
5,000$100~$7~$3,300
10,000$135~$9~$4,500
50,000$385~$25~$13,000
200,000$1,310~$90~$44,000

"Self-hosted" column = SES send fee + $5–$20 VPS + $2/mo amortised licence. Excludes setup time. Mailchimp Standard rates per mailchimp.com/pricing/marketing 2026-05.

What the math doesn't capture

The table is conservative on two axes and aggressive on a third. Conservative: it assumes one campaign per week — many lists send 2–4 per week, which doubles or quadruples the saving (sends are linear in count, the SaaS plan ceiling is the same). Conservative again: it doesn't model the savings from transactional email (password resets, receipt emails) which on SaaS often sits on a separate Mailchimp Transactional / Postmark / SendGrid plan and which self-hosted folds into the same SES bill.

Aggressive: it doesn't bill the engineering time for the initial setup or the ongoing maintenance. A reasonable estimate is 8–16 hours of engineering for the first install, then 1–2 hours/month for OS patches, certificate renewals, queue monitoring, and bounce-list curation. At a $100/hr internal rate that's $200/mo of overhead — material at 5,000 subscribers, immaterial at 50,000, profitable at 200,000.

The cleanest mental model: self-hosted is a fixed-cost-per-send architecture, SaaS is a subscriber-tax architecture. They cross at different points for different teams, but for any list above ~10,000 with steady weekly sending, the SaaS premium becomes the dominant expense. /vs/mailchimp walks the comparison side-by-side at feature granularity.

§5 · Sending architecture

Choosing your sending pipeline.

Self-hosted lets you decouple "the marketing app" from "the thing that talks SMTP." Three architectures dominate; each has a different cost, control, and reputation profile.

A. Cloud SMTP relay (recommended for most teams)

Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, Elastic Email — these are commercial relays that accept your message via API or SMTP and handle the actual SMTP transaction with the recipient. They publish IP pools, handle warming defaults, monitor blocklists, and submit Feedback Loop reports. AcelleMail's vendor drivers cover the major five out-of-the-box (app/SendingServers/Drivers/Vendors/{Amazon, Mailgun, SendGrid, SparkPost, ElasticEmail}) plus generic SMTP for anyone else.

Why this is the default: SES costs $0.10 per 1,000 emails with no monthly minimum. The relay handles the messy parts (rDNS, MX backup, retry logic, complaint feedback parsing). The thing you own is your domain reputation; the thing you outsource is the IP reputation. For 95% of teams, that split is correct.

B. Run your own MTA (Postal / Postfix + DKIM)

Postal is an open-source mail platform that you install on your own server and treat as an SMTP target from your marketing app. Postfix is the venerable Unix MTA, more flexible but more configuration. Both let you control the sending IP entirely, which is the right call when you have specific deliverability requirements (a bank, a healthcare provider, a high-volume sender with a dedicated abuse desk).

Why this is harder: you now own IP warming, complaint feedback parsing, blocklist remediation, and the on-call rotation when port 25 starts emitting 5xx codes. Most cloud providers (DigitalOcean, AWS) restrict outbound port 25 by default — you'll need a colo, a dedicated MTA host, or a provider that explicitly allows direct send. Worth it above ~10M sends/month or in regulated industries; over-engineering for everyone else.

C. Hybrid (multiple relays, automatic rotation)

AcelleMail (and most mature self-hosted platforms) supports more than one configured sending server. You can route transactional through Postmark, marketing through SES, and re-engagement campaigns through Mailgun — each with its own daily quota, IP pool, and DKIM key. This is the high-volume sender's setup: relay diversity caps the blast radius if one provider's IP pool gets blocklisted, and lets you match cost-per-send to send urgency. The driver registry (app/SendingServers/DriverRegistry.php) is the central catalogue.

Decision rubric

  • Under 1M sends/mo, want minimum operational load → Amazon SES (or Mailgun if you prefer their dashboard).
  • 1M–10M sends/mo, dedicated IP needed → SES with dedicated IP ($24.95/mo per IP) or SendGrid Pro.
  • 10M+ sends/mo, regulatory requirement for full IP control → Postal on owned infrastructure.
  • Multi-tenant SaaS where each customer needs their own sending domain → SES per-domain configuration sets or multiple SendGrid subusers, configured as multiple sending-server records in the application.

§6 · Platforms

The major open-source self-hosted platforms — objective compare.

Disclosure. AcelleMail is the publisher of this page. We cite our own code paths transparently and link to competitors' published documentation for their factual claims. The table below records license model, language, sending model, and headline target audience — not value judgements.

Platform License Stack Built-in sending Headline focus
AcelleMail $74 one-time, source available PHP 8.3, Laravel 11, MySQL SES, Mailgun, SendGrid, SparkPost, Elastic, Gmail, generic SMTP Multi-tenant SaaS billing + plugin SDK
Listmonk AGPL v3 Go single binary, Postgres Generic SMTP, configurable per server Lightweight newsletter + transactional
Mautic GPL v3 PHP 8, Symfony, MySQL SMTP, Amazon SES, SendGrid (via plugins) Marketing-automation focus, CRM-shaped
Sendy $59 one-time, closed source PHP, MySQL Amazon SES (primary), generic SMTP Newsletter sending via SES, minimal UI
Postal MIT Ruby, MariaDB, RabbitMQ Acts as MTA itself (paired with Acelle/Listmonk/Mautic) Self-hosted MTA + relay (not a campaign tool)

The major axes that distinguish these platforms in practice:

  • Multi-tenancy. AcelleMail and Mautic both have a Customer/Plan model that gates sending volume per tenant — useful if you're reselling email-marketing-as-a-service or running a multi-brand setup. Listmonk and Sendy are single-tenant.
  • Marketing automation. Mautic was purpose-built around lead-scoring + drip-flow + CRM integration. AcelleMail has automation flows with conditional branches and event triggers (see the automation page). Listmonk is intentionally newsletter-shaped — campaigns and transactional, no flow builder.
  • License model. Listmonk (AGPL v3) and Mautic (GPL v3) require source disclosure of derivative works under the terms of those licenses; AcelleMail is source-available with a CodeCanyon Regular License (use in unlimited installs you control) or Extended License (resale rights). Sendy is closed-source binary distribution.
  • Plugin / extension model. AcelleMail ships a documented plugin SDK (hooks, lifecycle, drivers, gateways). Mautic has plugin support oriented around CRM bridges. Listmonk and Sendy do not have plugin systems — extensions are forks.

The decision is project-shape-driven, not "which is best." A solo newsletter author with 5,000 subscribers and no plugin needs is well-served by Listmonk. A SaaS team wanting per-customer plans plus REST API plus a plugin to integrate their billing webhook is the AcelleMail use case. A B2B sales team scoring leads is the Mautic use case. Postal is plumbing — pair it with one of the others.

§7 · Setup roadmap

From zero to first campaign — the seven-step roadmap.

A first-time setup with Amazon SES as the relay typically lands in 4–8 hours, with DNS propagation eating most of the wall-clock time. Subsequent installs (the second tenant, a staging environment) are 30 minutes.

1

Provision a Linux VPS

A $5–$10/month droplet (DigitalOcean, Hetzner, Vultr, OVH, AWS Lightsail) is enough for under 50K subscribers. Pick a region that matches your data-residency story — eu-west for EU customers, us-east for US, ap-southeast for APAC. Ubuntu 22.04 LTS or 24.04 LTS is the path of least surprise for any PHP-Laravel platform.

2

Install the runtime + database

For AcelleMail: PHP 8.3 with the imagick / mbstring / xml / curl / mysql extensions; MySQL 8 (or MariaDB 10.6+); Redis or beanstalkd for the queue; nginx as the reverse proxy. The standard Laravel deployment guide applies. For Listmonk: just the single Go binary plus Postgres. For Mautic: PHP 8, Symfony's extension list, MySQL, plus a queue worker.

3

Issue TLS + point your domain

Let's Encrypt via certbot covers TLS for free. Point an A record (or AAAA) at your droplet's IP. Add the application's domain (e.g. email.example.com) and a separate DKIM domain (e.g. mail.example.com — the bounced-from address) so reputation segments correctly.

4

Open a sending account (Amazon SES recommended)

Sign up to AWS, enable SES in the region of your choice, request production-mode access (24h turnaround), generate SMTP credentials. SES costs $0.10 per 1,000 emails and includes the first 62K/month free if you send from an EC2 instance — most setups won't qualify but the published rate is the rate. Configure a configuration set for tracking events (opens, clicks, bounces, complaints) and point its SNS topic at your application's webhook endpoint.

5

Set DNS authentication records

Three TXT records, plus DKIM-signing CNAMEs from SES. SPF: v=spf1 include:amazonses.com -all (or ~all for a softer first run). DKIM: 3 CNAMEs SES generates for you; copy them into your DNS. DMARC: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com for the first month while you watch the reports, tighten to p=quarantine then p=reject as confidence builds. PTR (reverse DNS) is your hosting provider's setting — for SES, AWS handles it.

6

Connect application → relay

In the platform's admin UI, add a sending server: pick "Amazon SES" (or "SMTP" for any other relay), paste credentials, set daily quota at 80% of your relay's published limit. Most platforms include a "Send test" button that fires a single message to a verified address — use it before any real campaign. AcelleMail's verification flow walks the validation pipeline at /developers/sending-drivers.

7

Warm the IP, watch the metrics

If you're on a fresh dedicated IP (rare for first-time SES), warm over 4–6 weeks: 50 sends day 1, doubling every 2–3 days, capped at the relay's daily limit. On SES shared IPs, this is handled for you. Watch bounce rate (target < 2%), complaint rate (target < 0.1%), and the Mailbox Provider deliverability dashboards (Google Postmaster Tools, Microsoft SNDS). Day 30: if metrics are stable, tighten DMARC; day 60: review send cadence and segment-level engagement.

§8 · Deliverability

The deliverability fundamentals every self-hosted sender owns.

Mailbox providers — Gmail, Outlook, Yahoo, Apple Mail — score every incoming message against a stack of authentication and reputation signals before deciding inbox vs. spam vs. reject. On SaaS the platform abstracts these signals; self-hosted you tune them yourself. The good news: the standards are public and stable.

SPF — Sender Policy Framework (RFC 7208)

A TXT record on your sending domain that lists the IPs allowed to send mail "as" that domain. Mailbox providers check the envelope-from against the SPF record; mismatches degrade reputation. With SES the record is one line: v=spf1 include:amazonses.com -all. For multi-relay setups, chain includes: v=spf1 include:amazonses.com include:mailgun.org -all. The -all tail says "anything not listed should be rejected"; for the first month use ~all (soft-fail) until you're confident the record is exhaustive.

DKIM — DomainKeys Identified Mail (RFC 6376)

A cryptographic signature on every outgoing message, signed by a key whose public half is published as a DNS TXT record at {selector}._domainkey.{domain}. The receiver fetches the public key and verifies the signature; tamper-evident header + body chain. SES generates three CNAMEs for you to add — done. Self-hosted MTAs need OpenDKIM or rspamd configured. DKIM failures don't usually trigger immediate rejection, but they erode the domain reputation score that drives placement.

DMARC — alignment + reporting (RFC 7489)

The policy on top of SPF + DKIM. DMARC says "the From-header domain must align with the SPF or DKIM domain, and here's what to do if alignment fails: monitor (p=none), quarantine (p=quarantine), or reject (p=reject)." Plus an rua address that gets daily aggregate reports of who's sending mail "as" you. Start at p=none for a month, read the reports, fix any forgotten subdomains, then move to p=quarantine, then p=reject. As of February 2024, Google and Yahoo require DMARC for bulk senders (5K+ sends/day) — not optional.

List hygiene — the suppression habit

Hard bounces (5xx codes — invalid mailbox, domain doesn't exist) must be suppressed permanently after the first occurrence; otherwise mailbox providers treat your list as poorly maintained. Soft bounces (4xx — full mailbox, temporary failure) are retried with exponential backoff and suppressed after 3–5 retries. Complaints — recipient hit "spam" — suppress immediately and forever. Re-engagement campaigns should target the engaged half of your list every 90 days; non-openers in 180+ days come off entirely. Every self-hosted platform exposes this; AcelleMail's per-list suppression model integrates with the bounce-handler webhook hooked up at step 4 above.

Engagement signals + IP reputation

Mailbox providers increasingly weight recipient engagement: opens, clicks, "not spam" gestures, replies. Sending the same message to your most-engaged 10% drives reputation up; sending to your dead 50% drags it down. Self-hosted means you have raw access to engagement data — segment campaigns to the engaged half, suppress the long-cold half, and watch the bounce + complaint rates. Tools to monitor: Google Postmaster Tools (free), Microsoft SNDS (free), the relay's own dashboard. Acelle's automation flows can branch on engagement-score custom fields, which is the cleanest place to encode the rule.

§9 · Compliance

GDPR, data residency, and the Schrems II question.

GDPR (EU 2016/679) treats subscriber email addresses + custom fields as personal data, with seven principles that bind the data controller (you) and the data processor (your hosting + sending vendors). The big practical implications:

  • Lawful basis. For marketing email, consent or legitimate interest. Both require a record (timestamp, IP, source) and an unsubscribe path. The List-Unsubscribe RFC 8058 one-click header is non-negotiable since Feb 2024 for Gmail/Yahoo bulk senders.
  • Data subject rights. Right of access (export their record), right to erasure (delete on request), right to portability. All three are SQL queries on a self-hosted setup; on SaaS they're vendor support tickets.
  • Data Processing Agreement (DPA). Your relationship with each processor needs a written agreement specifying retention, security measures, sub-processors. SaaS platforms publish theirs; self-hosted you have one (with the host) plus one (with the sending relay) — fewer parties, simpler audit trail.
  • International transfers (Schrems II). The 2020 Court of Justice decision invalidated Privacy Shield as the legal basis for EU→US personal data transfers, making cross-border SaaS storage a moving target. Self-hosted on EU infrastructure (Hetzner Falkenstein, OVH Strasbourg, AWS Frankfurt with EU-only configuration) sidesteps the question; the data never crosses a border.

Practical residency checklist:

  • VPS region matches your customers' jurisdiction (eu-west-1 / Frankfurt for EU, us-east-1 for US).
  • Sending relay region pinned (SES region selector — switching from us-east-1 to eu-west-1 is one config field).
  • Backups stored in the same region (S3 with a region-locked bucket, encrypted at rest).
  • Database backups, log retention, and tracking-pixel hosts all on the same continent as the application.
  • Sub-processors documented in your privacy policy (e.g. "We use AWS SES eu-west-1 for email delivery; data does not leave the EU").

For more on AcelleMail's security posture and the underlying audit-log + RBAC model, see /security. None of this constitutes legal advice — engage a privacy lawyer for the DPA review.

§10 · Honest trade-offs

When self-hosted is the wrong call.

Self-hosted is not strictly better than SaaS — it's better for specific shapes of team and use case, and worse for others. Three patterns where the SaaS option is the right answer:

Under 1,000 subscribers, no engineering on hand

A 500-contact list on Mailchimp Free costs $0/month. Self-hosted at that scale costs the same in dollars but adds an evening of setup and ongoing OS-patch maintenance. Below the 1K subscriber line, the SaaS free-tier is rational. Re-evaluate above 5K (when the SaaS pricing kicks in) or when you outgrow the free tier's feature ceiling.

No devops, no plans to acquire it

The application self-updates monthly. The OS needs patches. TLS certs renew. Queue workers crash and need restart. None of this is heavy lifting, but it requires someone who's comfortable with SSH and a runbook. If your team is marketers-only and you have no path to a contractor or a managed-Laravel service, the abstraction tax of SaaS is paying for someone else's on-call.

Regulated industry needing certified processors

HIPAA-regulated US healthcare, certain financial-services frameworks, government contractors — these sometimes require their email vendor to hold a specific certification (HITRUST, FedRAMP, SOC 2 Type II), with penalties for using non-certified processors. Some SaaS platforms have those certifications; self-hosted you're outsourcing certification to your hosting provider + sending relay, which works for AWS-backed deployments but adds audit overhead. Check first; pivot to SaaS if the cert requirement is binding.

The honest framing: self-hosted shifts the work, it doesn't eliminate it. If shifted-to-you is the wrong place for that work, SaaS is correct. For the much larger group where shifted-to-you means "shifted to your existing devops capacity," self-hosted compounds the longer you run it.

§11 · FAQ

Frequently asked questions.

Is self-hosted email marketing free?

The software can be free (Listmonk, Mautic) or one-time paid (AcelleMail $74, Sendy $59). The hosting and sending relay are paid: a $5–$20/month VPS plus Amazon SES at $0.10 per 1,000 sends. At 10,000 subscribers sending one campaign per week, total operating cost is roughly $9/month — versus $135/month on Mailchimp Standard. See §4.

Do I need to run my own SMTP server?

Almost never. The standard architecture pairs a self-hosted application (AcelleMail, Listmonk, Mautic) with a cloud sending relay (Amazon SES, Mailgun, SendGrid). The relay handles the SMTP transactions, IP reputation, and bounce feedback; you keep the list, the campaigns, and the analytics on your server. Running your own MTA (Postal, Postfix) only makes sense above ~10M sends/month or for specific regulatory requirements — see §5.

How long does setup take for a first-time installer?

A weekend including DNS propagation. The application install is 15–30 minutes (download, upload, configure DB credentials, run the installer). Setting up SES with verified identities is another 30 minutes plus 24h for AWS to flip your account out of sandbox mode. DNS records (SPF, DKIM, DMARC) are 10 minutes plus 0–48h for propagation. Sending the first test campaign is the next 15 minutes.

Will mailbox providers treat my self-hosted sends as spam?

Only if you treat your list poorly. SPF, DKIM, DMARC alignment plus low bounce rate (< 2%) and low complaint rate (< 0.1%) are the inputs Gmail/Outlook score on. A self-hosted setup behind a major sending relay (SES, SendGrid) inherits the relay's IP reputation; your job is keeping the From-domain reputation healthy through hygiene and engagement-targeted sends — see §8.

Can I migrate my Mailchimp list to a self-hosted platform?

Yes. Mailchimp Audience exports cover contacts, merge fields, tags, and campaign history as CSV. Most self-hosted platforms have a CSV importer that maps merge fields to custom fields. Plan a one-week parallel-run window: send through both providers to a cohort, compare deliverability, switch primary. Automation flows are rebuilt manually but typically take an afternoon for a five-step sequence.

Is self-hosted email marketing GDPR-compliant?

It can be — compliance is determined by how you operate, not the deployment model. Self-hosted makes some GDPR obligations easier (data subject rights are SQL queries; data residency is hosting region; sub-processors are countable on one hand). It doesn't remove your obligations as the data controller. See §9 for the residency checklist; consult a privacy lawyer for the DPA review.

What's the difference between AcelleMail, Listmonk, and Mautic?

Project shape. AcelleMail is multi-tenant SaaS-shaped (Customer + Plan model, plugin SDK, REST API, payment gateways) — fits resellers and SaaS founders. Listmonk is single-tenant newsletter-shaped (Go single binary, lean UI) — fits solo creators and high-volume newsletter teams. Mautic is automation-shaped (lead scoring, CRM bridges, drip flows) — fits B2B sales-driven teams. See the §6 platform table.

Can I send unlimited emails from a self-hosted setup?

"Unlimited" by the application — yes, the software has no contact or send caps. Bounded by your sending relay's published rate (SES is $0.10 per 1,000 sends, no cap; production-mode quotas start at 50K/24h and scale on request) and your queue worker throughput. For practical purposes, self-hosted has no platform-imposed ceiling — only the cost-per-send and the time it takes the queue to drain.

Does self-hosted include marketing automation and drip campaigns?

Yes on AcelleMail and Mautic — both ship visual flow builders with conditional branches, time delays, and event triggers. Listmonk is intentionally newsletter-only (campaign + transactional, no flow builder). Sendy has basic auto-responders. The AcelleMail automation page walks the flow surface in detail.

What happens if my server goes down during a campaign?

Campaign jobs sit in the queue (Redis or DB) and resume when the worker comes back online. SES holds your API quota until you make the call; you don't lose paid send credits. Practical mitigations: monitoring (Uptime Kuma, healthcheck.io) for the queue worker process; a database-backed queue (atomic, survives restarts) if you can't run Redis with persistence; one warm standby box for high-stakes lists. The blast radius of a 30-minute outage is "campaign delivery slips by 30 minutes," not "campaign lost."

Stop renting your subscriber list. Start owning it.

AcelleMail is a self-hosted email-marketing platform with multi-tenant billing, a documented plugin SDK, and built-in drivers for Amazon SES, Mailgun, SendGrid, SparkPost, and any generic SMTP. Standard licence $74 one-time. Lifetime updates. Try the live demo before you buy.

Get AcelleMail — $74 Try Live Demo