Pillar guide · 22 phút đọc · Cập nhật May 2026

Email marketing tự host 2026 — sở hữu danh sách, hệ thống gửi, và chi phí của chính bạn.

Email marketing tự host nghĩa là chạy phần mềm campaign, database subscriber, và pipeline gửi mail trên hạ tầng do bạn kiểm soát — thay vì thuê chúng từ Mailchimp, Brevo, hay một SaaS tương tự. Đánh đổi là có thật: bạn nhận lấy phần devops để đổi lại chi phí gửi tuyến tính, full data residency, và deliverability mở rộng theo reputation của bạn — không phải của nền tảng. Hướng dẫn này đi qua kiến trúc, bài toán chi phí, nền tảng deliverability, và các platform — với mọi tuyên bố đều truy ngược được tới file path hoặc nguồn đã publish.

Trong hướng dẫn này

  1. Email marketing tự host là gì?
  2. Hoạt động ra sao — kiến trúc
  3. Vì sao các team chuyển sang tự host
  4. Bài toán chi phí ở 5K → 200K subscriber
  5. Chọn kiến trúc gửi mail
  6. Các nền tảng open-source — so sánh khách quan
  7. Lộ trình setup (server → DNS → warmup)
  8. Nền tảng deliverability
  9. GDPR + data residency
  10. Khi nào tự host là lựa chọn sai
  11. FAQ
  12. Đi tiếp đến đâu

§1 · Định nghĩa

Email marketing tự host là gì?

Email marketing tự host là việc chạy một ứng dụng email-marketing — quản lý danh sách, campaign builder, automation flow, analytics — trên server của bạn, kèm theo một pipeline gửi mail cũng do bạn kiểm soát. Đối lập là mô hình SaaS, nơi vendor (Mailchimp, Brevo, Constant Contact, Klaviyo, ConvertKit, MailerLite, Campaign Monitor) host cả application hạ tầng gửi mail thay bạn, rồi thu phí định kỳ scale theo số subscriber.

Setup tự host có ba thành phần, và bạn sở hữu hai phần dưới:

  1. Lớp ứng dụng. Một web app có thể cài đặt — thường là PHP/Laravel, Go, Ruby, hoặc Node — xử lý danh sách subscriber, draft campaign, automation trigger, tracking click/open, và dashboard mà marketer sử dụng. Ví dụ: AcelleMail, Listmonk, Mautic, Sendy.
  2. Pipeline gửi mail. Cơ chế nhận một message từ queue rồi giao cho Mail Transfer Agent (MTA), MTA này nói SMTP với mail server bên nhận. Bạn có thể chạy MTA riêng (Postfix, Postal, Haraka), dùng relay-as-a-service (Amazon SES, SendGrid, Mailgun, Postmark, SparkPost), hoặc cả hai — tùy vào volume và mức độ chấp nhận công việc lo IP reputation.
  3. Hạ tầng. Một Linux VPS, một instance Postgres/MySQL managed, một queue Redis hoặc beanstalkd, một domain bạn kiểm soát, và quyền DNS để cấu hình SPF, DKIM, DMARC, và PTR. Danh sách nhỏ (dưới 50K subscriber) chạy thoải mái trên droplet $5–$20/tháng; danh sách lớn scale ngang bằng cách thêm queue worker và DB read-replica.

Đánh đổi bạn đang làm là công việc quản trị để lấy chi phí gửi và data residency. Vendor SaaS abstract toàn bộ bước 2 và 3; bạn trả họ thuế abstraction qua phí hàng tháng scale theo subscriber count. Tự host hoàn lại khoản thuế đó để đổi lấy thời gian provision một server, cấu hình DNS, và setup sending relay — các thao tác giờ đã rút xuống dưới một giờ với người làm quen, và một cuối tuần với người lần đầu có sẵn tài liệu trước mặt.

"Tự host" không nên nhầm với "DIY từ con số không." Tất cả các nền tảng open-source lớn đều ship dạng turnkey install — upload, cấu hình thông tin DB, trỏ domain. Phần DIY là sending relay và DNS — và nếu dùng Amazon SES (hoặc bất kỳ SMTP relay nào) thì phần DIY rút lại còn một form điền một lần.

§2 · Kiến trúc

Một hệ thống email marketing tự host thực sự hoạt động như thế nào.

Một lần gửi campaign đi qua năm giai đoạn. Hiểu các giai đoạn này là điều kiện tiên quyết để chọn nền tảng, chọn sending relay, và debug deliverability khi một campaign chạy kém.

[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 — soạn campaign. Marketer viết campaign trong UI web: subject line, sender name, chọn danh sách, content editor (drag-and-drop, MJML, hay raw HTML). Khi họ nhấn "send", application tạo một bản ghi campaign rồi enqueue per-recipient job vào background queue. Chưa có gì rời server cả.

Stage 2 — queue + worker. Background worker pull job với tốc độ queue được cấu hình (thường 5–50 send/giây mỗi worker). Worker fetch row subscriber, merge custom field vào template, embed tracking pixel keyed theo message-id, và viết lại mọi link thành click-tracking redirect. Kết quả là một MIME message đã được personalize đầy đủ, sẵn sàng giao cho sending driver.

Stage 3 — sending driver. Driver là adapter giữa application của bạn và bất kỳ transport nào bạn chọn: một API call Amazon SES, một HTTPS POST Mailgun, một SendGrid Web API call, hay một handshake SMTP AUTH PLAIN thô tới Postal MTA của riêng bạn. Pattern sending-driver của AcelleMail, ví dụ, định nghĩa một contract 5 method (connect, send, getDeliveryStatus, getCapabilities, validateConfig) mà mọi driver implement — xem /developers/sending-drivers cho guideline driver đầy đủ. Driver built-in ship cho Amazon SES, SendGrid, Mailgun, SparkPost, Elastic Email, Gmail SMTP, và bất kỳ generic SMTP server nào (8 vendor sống trong app/SendingServers/Drivers/Vendors/).

Stage 4 — MTA → recipient. MTA (của bạn hoặc của relay) mở SMTP connection tới MX server bên nhận, tự giới thiệu bằng HELO/EHLO, negotiate STARTTLS, authenticate khóa DKIM-signing, và submit message. Mail server bên nhận chạy spam scoring, verify SPF/DKIM/DMARC, xử lý header list-unsubscribe, rồi quyết định inbox hay reject.

Stage 5 — feedback loop. Ba tín hiệu quay về, đều bất đồng bộ. Bounce đến qua SMTP (mã 5xx cho hard bounce, 4xx cho soft) hoặc qua webhook của relay. Complaint (người nhận nhấn "spam") đến qua Feedback Loop của Mailbox Provider hoặc, lại, webhook của relay. Engagement (open pixel hit, click-redirect request) đến qua HTTP thuần ngược về web app của bạn. Application dùng các tín hiệu này để update suppression list, retire địa chỉ chết, và đẩy vào analytics campaign. Catalogue webhook-event của AcelleMail nằm tại config/webhook_events.php — đó là danh sách canonical các event mà application emit và consume.

Hình dáng giống nhau trên mọi nền tảng tự host, với một biến: queue và MTA sống ở đâu. Worker của AcelleMail chạy cùng box với web app mặc định; Listmonk làm tương tự; Mautic dùng Symfony Messenger và hỗ trợ worker box tách riêng. Mail relay có thể local (Postal cùng máy, Postfix trên box anh em) hoặc remote (SES, Mailgun) — quyết định đó là chủ đề của §5.

§3 · Động lực

Vì sao các team chuyển từ SaaS sang tự host.

1. Chi phí gửi trở nên tuyến tính

Pricing SaaS scale theo contact count bất kể bạn gửi tần suất nào. Tự host tách hai biến này: software là chi phí cố định (free cho Listmonk/Mautic, $80 một lần cho AcelleMail Standard, $59 cho Sendy); send tính theo recipient ở mức relay published (Amazon SES là $0.10 cho 1.000 email). Ở 50.000 subscriber gửi một campaign mỗi tuần, hóa đơn phí nền tảng giảm từ $385/tháng trên Mailchimp Standard xuống còn khoảng $20/tháng phí gửi — xem §4 cho bảng.

2. Dữ liệu subscriber sống trên server của bạn

Email address, custom field, segmentation tag, click history, open, complaint — tất cả nằm trong database bạn kiểm soát. Không có data processor bên thứ ba. Không có data dump phía nền tảng cho các tích hợp marketing-data fabric. CSV export bao phủ mọi thứ vì bạn viết ra schema (hoặc bạn đọc được nó). Với setup SaaS billing có nghĩa vụ audit, quyền sở hữu đó là xương sống compliance.

3. Deliverability scale theo domain của bạn

Trên một nền tảng SaaS, sender reputation của bạn bị trộn với các tenant khác của nền tảng. Một complaint spam của tenant kế bên có thể tràn sang deliverability của domain bạn. Tự host qua relay như Amazon SES cho bạn option dedicated IP (hoặc shared, tùy bạn chọn), và From-domain reputation mà mailbox provider thực sự chấm điểm là của riêng bạn. Warming, throttling, IP rotation là những đòn bẩy nhìn thấy được — không phải hành vi ẩn của nền tảng.

4. Không vendor lock-in theo cấu trúc

Schema, template, automation flow, và (với nền tảng open-source) cả source code đều nằm trên đĩa của bạn. Chuyển khỏi một nền tảng tự host là một bài data export, không phải một dự án integration. Chuyển giữa các sending relay là một thay đổi cấu hình. Chi phí thoát là chi phí đổi một form, không phải chi phí dựng lại chín tháng automation trigger trong editor của vendor mới.

5. Tư thế compliance do bạn định nghĩa

Chọn region (eu-west-1, us-east-1, ap-southeast-1). Chọn cửa sổ retention. Chọn custom field nào encrypt at rest. Phán quyết Schrems II của Tòa án Công lý châu Âu biến chuyển dữ liệu xuyên biên giới thành cơn đau đầu pháp lý định kỳ cho list host-SaaS; tự host với hạ tầng EU loại câu hỏi đó khỏi bàn. Xem §9.

6. Khả năng mở rộng là code, không phải feature request

Một custom segmentation mà nền tảng không hỗ trợ, một webhook tới CRM của bạn, một regional payment gateway cho reseller billing, một báo cáo industry-specific — tất cả trở thành plugin 200 dòng hoặc query SQL, không phải đề xuất roadmap. AcelleMail ship một plugin SDK với mười một developer doc grounded từ source, phủ hook, lifecycle, driver, gateway, và testing.

§4 · Bài toán chi phí

Thực tế tốn bao nhiêu ở 5K, 10K, 50K, và 200K subscriber.

Giả định: một campaign mỗi subscriber mỗi tuần (4.33 send/tháng/contact), Amazon SES ở mức published $0.10/1.000 email, VPS $5–$20/tháng cho application, và hoặc licence Standard một lần $80 của AcelleMail amortize qua 36 tháng hoặc một nền tảng open-source free. Pricing tier Mailchimp Standard là mức published tại May 2026.

Subscriber Mailchimp Standard / tháng Tự host SES + VPS / tháng Tiết kiệm 3 năm
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

Cột "Tự host" = phí gửi SES + VPS $5–$20 + licence amortize $2/tháng. Loại trừ thời gian setup. Mức Mailchimp Standard theo mailchimp.com/pricing/marketing 2026-05.

Cái mà bài toán chưa phản ánh

Bảng đang conservative trên hai trục và aggressive trên một trục thứ ba. Conservative: nó giả định một campaign mỗi tuần — nhiều list gửi 2–4 campaign/tuần, gấp đôi hoặc gấp bốn khoản tiết kiệm (send tuyến tính theo count, trần plan SaaS thì giữ nguyên). Conservative lần nữa: nó không model khoản tiết kiệm từ email transactional (reset mật khẩu, hóa đơn) — vốn trên SaaS thường nằm trên một plan riêng Mailchimp Transactional / Postmark / SendGrid, còn tự host gộp vào cùng một hóa đơn SES.

Aggressive: nó không tính thời gian engineering cho setup ban đầu hoặc maintenance liên tục. Ước lượng hợp lý là 8–16 giờ engineering cho lần install đầu, rồi 1–2 giờ/tháng cho OS patch, certificate renewal, queue monitoring, và bounce-list curation. Với rate nội bộ $100/giờ thì đó là $200/tháng overhead — đáng kể ở 5.000 subscriber, không đáng kể ở 50.000, có lợi nhuận ở 200.000.

Mô hình tư duy gọn nhất: tự host là kiến trúc fixed-cost-per-send, SaaS là kiến trúc subscriber-tax. Hai mô hình giao nhau ở những điểm khác nhau với mỗi team, nhưng với bất kỳ list nào trên ~10.000 với cadence gửi đều đặn hàng tuần, premium SaaS trở thành khoản chi áp đảo. /vs/mailchimp đi qua so sánh song song ở mức feature.

§5 · Kiến trúc gửi

Chọn pipeline gửi mail của bạn.

Tự host cho phép bạn tách "marketing app" khỏi "thứ nói SMTP". Ba kiến trúc thống lĩnh; mỗi cái có một profile chi phí, kiểm soát, và reputation khác nhau.

A. Cloud SMTP relay (khuyến nghị cho hầu hết các team)

Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, Elastic Email — là các relay thương mại nhận message của bạn qua API hoặc SMTP rồi xử lý transaction SMTP thực sự với bên nhận. Họ publish IP pool, xử lý warming defaults, monitor blocklist, và submit báo cáo Feedback Loop. Driver vendor của AcelleMail phủ năm cái lớn out-of-the-box (app/SendingServers/Drivers/Vendors/{Amazon, Mailgun, SendGrid, SparkPost, ElasticEmail}) cộng generic SMTP cho mọi vendor khác.

Vì sao đây là mặc định: SES tốn $0.10/1.000 email không có minimum tháng. Relay xử lý các phần phức tạp (rDNS, MX backup, retry logic, parse complaint feedback). Cái bạn sở hữu là reputation domain; cái bạn outsource là reputation IP. Với 95% team, sự phân chia đó là đúng.

B. Chạy MTA riêng (Postal / Postfix + DKIM)

Postal là một nền tảng mail open-source bạn cài trên server riêng và đối xử như SMTP target từ marketing app. Postfix là MTA Unix kỳ cựu, linh hoạt hơn nhưng cấu hình nhiều hơn. Cả hai cho bạn kiểm soát hoàn toàn IP gửi, đó là lựa chọn đúng khi bạn có yêu cầu deliverability cụ thể (một ngân hàng, một nhà cung cấp healthcare, một sender high-volume có abuse desk riêng).

Vì sao khó hơn: bạn giờ sở hữu IP warming, parse complaint feedback, blocklist remediation, và rotation on-call khi port 25 bắt đầu trả mã 5xx. Phần lớn cloud provider (DigitalOcean, AWS) hạn chế outbound port 25 mặc định — bạn sẽ cần một colo, một MTA host dedicated, hoặc một provider cho phép direct send rõ ràng. Đáng làm trên ~10M send/tháng hoặc trong ngành regulated; over-engineering với mọi người còn lại.

C. Hybrid (nhiều relay, tự động rotate)

AcelleMail (và phần lớn nền tảng tự host trưởng thành) hỗ trợ nhiều sending server cấu hình. Bạn có thể route transactional qua Postmark, marketing qua SES, và campaign re-engagement qua Mailgun — mỗi cái với daily quota riêng, IP pool riêng, và DKIM key riêng. Đây là setup của sender high-volume: relay diversity giới hạn blast radius nếu IP pool một provider bị blocklist, và cho phép match chi phí gửi với độ khẩn cấp gửi. Driver registry (app/SendingServers/DriverRegistry.php) là catalogue trung tâm.

Khung quyết định

  • Dưới 1M send/tháng, muốn tải vận hành tối thiểu → Amazon SES (hoặc Mailgun nếu thích dashboard của họ).
  • 1M–10M send/tháng, cần dedicated IP → SES với dedicated IP ($24.95/tháng/IP) hoặc SendGrid Pro.
  • 10M+ send/tháng, yêu cầu pháp lý kiểm soát IP đầy đủ → Postal trên hạ tầng tự sở hữu.
  • SaaS multi-tenant nơi mỗi khách hàng cần domain gửi riêng → SES per-domain configuration set hoặc nhiều SendGrid subuser, cấu hình như nhiều bản ghi sending-server trong application.

§6 · Nền tảng

Các nền tảng tự host open-source lớn — so sánh khách quan.

Disclosure. AcelleMail là nhà xuất bản trang này. Chúng tôi cite code path của chính mình minh bạch và link tới tài liệu published của đối thủ cho các tuyên bố factual của họ. Bảng dưới ghi license model, language, sending model, và headline target audience — không phải value judgement.

Nền tảng License Stack Sending built-in Headline focus
AcelleMail $80 một lần, source available PHP 8.3, Laravel 11, MySQL SES, Mailgun, SendGrid, SparkPost, Elastic, Gmail, generic SMTP SaaS billing multi-tenant + plugin SDK
Listmonk AGPL v3 Go single binary, Postgres Generic SMTP, cấu hình per server Newsletter nhẹ + transactional
Mautic GPL v3 PHP 8, Symfony, MySQL SMTP, Amazon SES, SendGrid (qua plugin) Focus marketing-automation, hình dáng CRM
Sendy $59 một lần, closed source PHP, MySQL Amazon SES (chính), generic SMTP Gửi newsletter qua SES, UI tối giản
Postal MIT Ruby, MariaDB, RabbitMQ Đóng vai MTA luôn (ghép với AcelleMail/Listmonk/Mautic) MTA + relay tự host (không phải campaign tool)

Các trục lớn phân biệt các nền tảng này trong thực tế:

  • Multi-tenancy. AcelleMail và Mautic đều có mô hình Customer/Plan gate volume gửi theo tenant — hữu ích nếu bạn đang resell email-marketing-as-a-service hoặc chạy setup multi-brand. Listmonk và Sendy là single-tenant.
  • Marketing automation. Mautic được purpose-built quanh lead-scoring + drip-flow + CRM integration. AcelleMail có automation flow với conditional branch và event trigger (xem trang automation). Listmonk có chủ ý newsletter-shaped — campaign và transactional, không có flow builder.
  • License model. Listmonk (AGPL v3) và Mautic (GPL v3) yêu cầu disclose source của derivative work theo điều khoản các license đó; AcelleMail là source-available với CodeCanyon Regular License (dùng trên unlimited install bạn kiểm soát) hoặc Extended License (quyền resale). Sendy là phân phối binary closed-source.
  • Plugin / extension model. AcelleMail ship plugin SDK có tài liệu (hook, lifecycle, driver, gateway). Mautic có plugin support hướng tới CRM bridge. Listmonk và Sendy không có hệ thống plugin — extension là fork.

Quyết định dẫn dắt bởi hình dáng dự án, không phải "cái nào tốt nhất". Một tác giả newsletter solo với 5.000 subscriber và không nhu cầu plugin được phục vụ tốt bởi Listmonk. Một team SaaS muốn per-customer plan cộng REST API cộng một plugin tích hợp billing webhook là use case AcelleMail. Một team B2B sales scoring lead là use case Mautic. Postal là plumbing — ghép nó với một trong số còn lại.

§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