支柱指南 · 22 分钟阅读 · 更新于 May 2026

2026 年的自托管邮件营销 — 掌控您的名单、发送与成本。

自托管邮件营销意味着在您掌控的基础设施上运行营销活动软件、订阅者数据库与发送流水线 — 而不是从 Mailchimp、Brevo 或类似 SaaS 租用。这是一笔真实的取舍:您承担运维,换来线性的按发送成本、完整的数据驻留,以及随您信誉而非平台信誉扩展的送达率。本指南走通架构、成本算式、送达率基础与平台 — 每一项主张都可追溯到文件路径或公开来源。

本指南内容

  1. 什么是自托管邮件营销?
  2. 它如何运作 — 架构
  3. 团队为何迁往自托管
  4. 5K → 200K 订阅者下的成本算式
  5. 挑选您的发送架构
  6. 开源平台 — 客观对比
  7. 配置路线图 (服务器 → DNS → 预热)
  8. 送达率基础
  9. GDPR + 数据驻留
  10. 什么时候自托管是错的选择
  11. FAQ
  12. 接下来去哪里

§1 · 定义

什么是自托管邮件营销?

自托管邮件营销是指在您自己的服务器上运行邮件营销应用 — 名单管理、营销活动构建器、自动化流程、分析 — 并搭配您同样掌控的发送流水线的实践。其对立面是 SaaS 模型,服务商 (Mailchimp、Brevo、Constant Contact、Klaviyo、ConvertKit、MailerLite、Campaign Monitor) 代您托管应用发送基础设施,并按您订阅者数收取按月递增的费用。

一份自托管部署有三个组件,您拥有最下面两个:

  1. 应用层。一个可安装的 Web 应用 — 通常 PHP/Laravel、Go、Ruby 或 Node — 处理订阅者名单、营销活动草稿、自动化触发器、点击/打开追踪,以及您营销人员使用的仪表盘。例子:AcelleMail、Listmonk、Mautic、Sendy。
  2. 发送流水线。把队列中的消息交给与收件方邮件服务器通过 SMTP 通信的 Mail Transfer Agent (MTA) 的机制。您可以运行自有 MTA (Postfix、Postal、Haraka),使用中继即服务 (Amazon SES、SendGrid、Mailgun、Postmark、SparkPost),或两者并用 — 取决于发送量与您对 IP 信誉工作的容忍度。
  3. 基础设施。一台 Linux VPS、一份托管 Postgres/MySQL 实例、一份 Redis 或 beanstalkd 队列、您掌控的域名,以及 SPF、DKIM、DMARC 与 PTR 记录的 DNS 权威。小型名单 (5 万订阅者以下) 在 $5-20/月的 droplet 上运行无压力;更大的名单通过额外的队列工作进程与读副本数据库横向扩展。

您做的取舍是以管理工作换取按发送成本与数据驻留。SaaS 服务商把第 2 步和第 3 步完全抽象掉;您以按月递增、按订阅者数计费的方式为这层抽象买单。自托管把这笔税收回来,代价是配置服务器、配置 DNS、搭建发送中继所需的时间 — 这些操作对做过的人现在一小时就够,对手边有文档的首次操作者则是一个周末。

"自托管"不应与"完全从零 DIY"混为一谈。所有主流开源平台都以一键安装形态交付 — 上传、配置数据库凭据、指向一个域名。DIY 部分是发送中继与 DNS — 而如果您用 Amazon SES (或任何 SMTP 中继),DIY 部分就缩减为一份只填一次的表单。

§2 · 架构

一份自托管邮件营销系统到底如何运作。

一次营销活动发送走过五个阶段。理解它们是挑选平台、挑选发送中继,以及营销活动表现不佳时调试送达率的前置条件。

[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

阶段 1 — 营销活动撰写。营销人员在 Web UI 中撰写营销活动:主题行、发件人名、名单选择、内容编辑器 (拖拽、MJML 或原生 HTML)。点击"发送",应用创建营销活动记录并把按收件人的作业入队到后台队列。此时尚无任何内容离开服务器。

阶段 2 — 队列 + 工作进程。后台工作进程按队列配置的速率拉取作业 (通常每个工作进程 5-50 封/秒)。工作进程拉取订阅者记录、把自定义字段合并入模板、嵌入按 message-id 关联的追踪像素,并将每个链接重写为点击追踪跳转。结果是一封可交给发送驱动的完整个性化 MIME 消息。

阶段 3 — 发送驱动。驱动是您的应用与您选择的任何传输之间的适配器:一次 Amazon SES API 调用、一次 Mailgun HTTPS POST、一次 SendGrid Web API 调用,或对您自有 Postal MTA 的原生 SMTP AUTH PLAIN 握手。AcelleMail 的发送驱动模式定义一份 5 方法契约 (connect、send、getDeliveryStatus、getCapabilities、validateConfig),每个驱动都实现 — 完整驱动指南见 /developers/sending-drivers。内置驱动覆盖 Amazon SES、SendGrid、Mailgun、SparkPost、Elastic Email、Gmail SMTP 与任意通用 SMTP 服务器 (8 家厂商位于 app/SendingServers/Drivers/Vendors/)。

阶段 4 — MTA → 收件方。MTA (您的或中继的) 与收件方 MX 服务器打开一次 SMTP 连接,以 HELO/EHLO 呈现自己,协商 STARTTLS,认证 DKIM 签名密钥,提交消息。收件方邮件服务器执行垃圾评分、SPF/DKIM/DMARC 验证、List-Unsubscribe 头处理,然后入收件箱或拒收。

阶段 5 — 反馈循环。有三种信号回流,全部异步。退信经 SMTP (硬退信 5xx 码、软退信 4xx) 或经中继的 webhook 抵达。投诉 (收件人点击"垃圾") 经邮箱服务商的反馈循环或同样经中继的 webhook 抵达。互动 (打开像素请求、点击跳转请求) 经普通 HTTP 回到您的 Web 应用。应用利用这些信号更新抑制名单、淘汰死地址,并喂入营销活动分析。AcelleMail 的 webhook 事件目录位于 config/webhook_events.php — 它是应用发出与消费的事件的规范清单。

在每个自托管平台上形态都相同,只有一个变量:队列与 MTA 住在哪里。AcelleMail 的工作进程默认与 Web 应用同机;Listmonk 也是;Mautic 使用 Symfony Messenger,支持独立的工作进程机器。邮件中继可本地 (同机的 Postal、同子网另一台的 Postfix) 或远程 (SES、Mailgun) — 这个决策是§5的主题。

§3 · 动机

团队为何从 SaaS 迁往自托管。

1. 按发送成本变得线性

SaaS 定价随联系人数变化,与您发送频率无关。自托管把两者解耦:软件是固定成本 (Listmonk/Mautic 免费、AcelleMail Standard $80 一次性、Sendy $59);发送按收件人以中继公布费率计费 (Amazon SES 每 1,000 封 $0.10)。50,000 订阅者每周发一场营销活动,平台费账单从 Mailchimp Standard 的 $385/月 变为约 $20/月 的发送费 — 表格见§4

2. 订阅者数据存活在您的服务器上

邮箱地址、自定义字段、细分标签、点击历史、打开、投诉 — 全部坐落在您掌控的数据库中。没有第三方数据处理者。没有平台侧的营销数据中台导出。CSV 导出涵盖一切,因为您写了 schema (或您可以读它)。对于有审计义务的 SaaS 计费部署,这种所有权就是合规的脊梁。

3. 送达率随您的域名扩展

在 SaaS 平台上,您的发件方信誉与平台其他租户混在一起。邻居租户的一次垃圾投诉可能渗入您域名的送达率。通过 Amazon SES 等中继自托管,可选独享 IP (或共享,由您决定),邮箱服务商真正评分的 From 域名信誉是您独有的。预热、节流与 IP 轮换是可见的杠杆,而非隐藏的平台行为。

4. 设计上不存在供应商锁定

Schema、模板、自动化流程,以及 (对开源平台) 源代码都在您磁盘上。从自托管平台迁出是数据导出,而非集成项目。在发送中继之间迁移是配置变更。退出成本是改一份表单的成本,不是在新供应商的编辑器里重建九个月自动化触发器的成本。

5. 合规姿态由您定义

挑选区域 (eu-west-1、us-east-1、ap-southeast-1)。挑选留存窗口。挑选哪些自定义字段静态加密。欧洲法院的 Schrems II 裁决让 SaaS 托管名单的跨境数据传输成了反复出现的法律头疼;欧洲基础设施上的自托管把这一问题从桌上拿掉。见 §9

6. 可扩展性是代码,不是功能请求

平台不支持的定制细分、给您 CRM 的 webhook、面向您分销商计费的地区性支付网关、行业专属报表 — 全都变成 200 行插件或一条 SQL 查询,而不是路线图提案。AcelleMail 交付一份 插件 SDK,附十一篇与源代码契约对齐的开发者文档,覆盖 hooks、生命周期、驱动、网关与测试。

§4 · 成本算式

在 5K、10K、50K 与 200K 订阅者下实际花多少。

假设:每位订阅者每周一场营销活动 (每位联系人每月 4.33 次发送)、Amazon SES 按公布的每 1,000 封 $0.10、$5-20/月 的应用 VPS,以及把 AcelleMail $80 一次性 Standard 授权摊销 36 个月或使用免费开源平台。Mailchimp Standard 档价格为 May 2026 时的公布费率。

订阅者 Mailchimp Standard / 月 自托管 SES + VPS / 月 3 年节省
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

"自托管"列 = SES 发送费 + $5-20 VPS + 摊销后的 $2/月授权。不计配置时间。Mailchimp Standard 费率以 mailchimp.com/pricing/marketing 2026-05 为准。

算式未涵盖的部分

这张表在两个维度上保守,在第三个维度上激进。保守一:假设每周一场营销活动 — 许多名单每周发 2-4 场,节省随之翻倍或翻四倍 (发送量与次数线性,SaaS 套餐档位上限不变)。保守二:不计事务性邮件 (密码重置、回执邮件) 的节省,这些在 SaaS 上常坐落在独立的 Mailchimp Transactional / Postmark / SendGrid 套餐上,自托管把它们并入同一份 SES 账单。

激进一:不计首次配置或持续维护的工程时间。一个合理估计:首次安装 8-16 小时工程时间,然后每月 1-2 小时用于 OS 补丁、证书续签、队列监控与退信名单维护。按 $100/小时的内部费率,即每月 $200 间接成本 — 在 5,000 订阅者时显著,在 50,000 时不显著,在 200,000 时盈利。

最清晰的心智模型:自托管是按发送固定成本架构,SaaS 是订阅者税架构。它们在不同团队的不同点交叉,但对任何稳定每周发送、超过约 10,000 的名单,SaaS 溢价成为主要支出。/vs/mailchimp 按功能粒度并列走通对比。

§5 · 发送架构

挑选您的发送流水线。

自托管让您可以把"营销应用"与"说 SMTP 的东西"解耦。三种架构居主导地位;每种的成本、控制度与信誉画像不同。

A. 云 SMTP 中继 (面向多数团队的推荐选择)

Amazon SES、Mailgun、SendGrid、Postmark、SparkPost、Elastic Email — 这些是商业中继,接受您通过 API 或 SMTP 提交的消息,并处理与收件方的实际 SMTP 事务。它们发布 IP 池、处理预热默认、监控黑名单、提交反馈循环报告。AcelleMail 的厂商驱动开箱即用覆盖主流五家 (app/SendingServers/Drivers/Vendors/{Amazon, Mailgun, SendGrid, SparkPost, ElasticEmail}) 加通用 SMTP 适合其他。

这为何是默认:SES 每 1,000 封 $0.10,无月度最低消费。中继处理脏活 (rDNS、MX 备用、重试逻辑、投诉反馈解析)。您拥有的是域名信誉;您外包的是 IP 信誉。对 95% 的团队,这种分工是对的。

B. 运行自有 MTA (Postal / Postfix + DKIM)

Postal 是您安装在自有服务器上、并从营销应用作为 SMTP 目标对待的开源邮件平台。Postfix 是经典的 Unix MTA,更灵活但配置更多。两者都让您完全掌控发送 IP,这在您有特定送达率要求时 (银行、医疗服务商、高发送量并配备专属滥用处理桌的发件方) 是正确选择。

这为何更难:您现在拥有 IP 预热、投诉反馈解析、黑名单解除,以及 25 端口开始抛 5xx 码时的 on-call 轮值。多数云服务商 (DigitalOcean、AWS) 默认限制出站 25 端口 — 您需要 colo、专用 MTA 主机,或明确允许直发的服务商。每月 1,000 万封发送量以上或在受监管行业值得;对其他人都是过度设计。

C. 混合 (多中继、自动轮换)

AcelleMail (以及多数成熟自托管平台) 支持配置多台发送服务器。您可以让事务走 Postmark、营销走 SES、唤回营销活动走 Mailgun — 各有自己的日配额、IP 池与 DKIM 密钥。这是高发送量发件方的配置:中继多元化在某家服务商的 IP 池被列入黑名单时控制爆炸半径,并让您按发送紧迫程度匹配按发送成本。驱动注册表 (app/SendingServers/DriverRegistry.php) 是中央目录。

决策准则

  • 每月低于 100 万封、想把运维负载降到最低 → Amazon SES (或您更喜欢 Mailgun 仪表盘的话用它)。
  • 每月 100 万-1,000 万封、需要独享 IP → SES 独享 IP ($24.95/月/IP) 或 SendGrid Pro
  • 每月 1,000 万封以上、监管要求完整 IP 控制 → 自有基础设施上的 Postal
  • 多租户 SaaS,每位客户需要自有发送域名 → SES 按域名的配置集多个 SendGrid 子用户,在应用中配置为多条发送服务器记录。

§6 · 平台

主流开源自托管平台 — 客观对比。

声明。AcelleMail 是本页面的发布方。我们透明地引用自己的代码路径,并就竞争对手的事实主张链接到其公开文档。下表记录授权模型、语言、发送模型与目标受众标题 — 不作价值判断。

平台 授权 技术栈 内置发送 主打方向
AcelleMail $80 一次性,源代码可见 PHP 8.3、Laravel 11、MySQL SES、Mailgun、SendGrid、SparkPost、Elastic、Gmail、通用 SMTP 多租户 SaaS 计费 + 插件 SDK
Listmonk AGPL v3 Go 单一二进制、Postgres 通用 SMTP,按服务器可配置 轻量级简报 + 事务
Mautic GPL v3 PHP 8、Symfony、MySQL SMTP、Amazon SES、SendGrid (通过插件) 营销自动化导向、CRM 形态
Sendy $59 一次性,闭源 PHP、MySQL Amazon SES (主要)、通用 SMTP 通过 SES 发简报、UI 极简
Postal MIT Ruby、MariaDB、RabbitMQ 自身充当 MTA (与 AcelleMail/Listmonk/Mautic 搭配) 自托管 MTA + 中继 (不是营销工具)

实操中区分这些平台的主要维度:

  • 多租户。AcelleMail 与 Mautic 都有 Customer/Plan 模型按租户门控发送量 — 如果您在转售邮件营销即服务或运行多品牌部署,这很有用。Listmonk 与 Sendy 是单租户。
  • 营销自动化。Mautic 围绕潜客评分 + 滴灌流程 + CRM 集成专门构建。AcelleMail 有带条件分支与事件触发器的自动化流程 (见自动化页)。Listmonk 有意设计为简报形态 — 营销活动与事务,无流程构建器。
  • 授权模型。Listmonk (AGPL v3) 与 Mautic (GPL v3) 按其授权条款要求衍生作品源代码披露;AcelleMail 以 CodeCanyon 普通授权 (在您掌控的无限次部署中使用) 或扩展授权 (转售权) 形式源代码可见。Sendy 是闭源二进制分发。
  • 插件/扩展模型。AcelleMail 交付一份有文档的插件 SDK (hooks、生命周期、驱动、网关)。Mautic 有围绕 CRM 桥接的插件支持。Listmonk 与 Sendy 没有插件系统 — 扩展即 fork。

决策由项目形态驱动,而不是"哪一个最好"。一位拥有 5,000 订阅者、无插件需求的独立简报作者,Listmonk 服务得很好。希望按客户套餐加 REST API 加集成其计费 webhook 的插件的 SaaS 团队,是 AcelleMail 的用例。给潜客评分的 B2B 销售团队,是 Mautic 的用例。Postal 是基础设施 — 与上述任一搭配。

§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 $80, 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 $80 one-time. Lifetime updates. Try the live demo before you buy.

Get AcelleMail — $80 Try Live Demo