Guida pillar · 22 min di lettura · Aggiornato May 2026

Self-hosted email marketing nel 2026 — possiedi la tua lista, i tuoi invii, i tuoi costi.

Self-hosted email marketing significa eseguire il software di campagne, il database degli iscritti e la pipeline di invio su infrastruttura che controlli — invece di noleggiarli da Mailchimp, Brevo o un SaaS simile. Il compromesso è reale: prendi in carico il devops in cambio di costo-per-invio lineare, piena residenza dei dati e una deliverability che scala con la tua reputazione, non con quella della piattaforma. Questa guida percorre l'architettura, i conti economici, i fondamentali di deliverability e le piattaforme — con ogni affermazione tracciabile a un file path o a una fonte pubblicata.

In questa guida

  1. Cos'è il self-hosted email marketing?
  2. Come funziona — l'architettura
  3. Perché i team passano al self-hosted
  4. I conti economici da 5K → 200K iscritti
  5. Scegliere l'architettura di invio
  6. Piattaforme open source — confronto oggettivo
  7. Roadmap di setup (server → DNS → warmup)
  8. Fondamentali di deliverability
  9. GDPR + residenza dei dati
  10. Quando il self-hosted è la scelta sbagliata
  11. FAQ
  12. Dove andare adesso

§1 · Definizione

Cos'è il self-hosted email marketing?

Self-hosted email marketing è la pratica di eseguire un'applicazione di email marketing — gestione liste, builder di campagne, flussi di automazione, analytics — sul tuo server, insieme a una pipeline di invio che pure controlli. L'opposto è il modello SaaS in cui un vendor (Mailchimp, Brevo, Constant Contact, Klaviyo, ConvertKit, MailerLite, Campaign Monitor) ospita l'applicazione e l'infrastruttura di invio per tuo conto e ti addebita un canone ricorrente scalato sul numero di iscritti.

Un setup self-hosted ha tre componenti, e i due in basso sono tuoi:

  1. Il livello applicativo. Una web app installabile — tipicamente PHP/Laravel, Go, Ruby o Node — che gestisce liste iscritti, bozze di campagne, trigger di automazione, tracking di click/open e la dashboard che usano i tuoi marketer. Esempi: AcelleMail, Listmonk, Mautic, Sendy.
  2. La pipeline di invio. Il meccanismo che prende un messaggio in coda e lo consegna a un Mail Transfer Agent (MTA) che parla SMTP con i mail server dei destinatari. Puoi eseguire un tuo MTA (Postfix, Postal, Haraka), usare un relay-as-a-service (Amazon SES, SendGrid, Mailgun, Postmark, SparkPost) o entrambi — a seconda del volume e della tua tolleranza al lavoro sulla reputazione dell'IP.
  3. L'infrastruttura. Un VPS Linux, un'istanza Postgres/MySQL gestita, una coda Redis o beanstalkd, un dominio che controlli e autorità DNS per record SPF, DKIM, DMARC e PTR. Una lista piccola (sotto i 50K iscritti) gira tranquilla su un droplet da 5–20 $/mese; liste più grandi scalano orizzontalmente con worker di coda extra e DB con read-replica.

Il compromesso che stai facendo è lavoro amministrativo in cambio di costo-per-invio e residenza dei dati. I vendor SaaS astraggono interamente gli step 2 e 3; tu paghi la tassa di astrazione in canoni mensili che scalano con il numero di iscritti. Il self-hosting recupera quella tassa in cambio del tempo per provisionare un server, configurare il DNS e impostare un relay di invio — operazioni che oggi richiedono meno di un'ora per chi le ha già fatte e un weekend per chi è alla prima volta con la documentazione davanti.

"Self-hosted" non va confuso con "fai-da-te da zero". Tutte le principali piattaforme open source sono distribuite come install turnkey — carica i file, configura le credenziali DB, punta un dominio. La parte fai-da-te è il relay di invio e il DNS — e se usi Amazon SES (o qualsiasi relay SMTP) la parte fai-da-te si riduce a un modulo da compilare una volta.

§2 · Architettura

Come funziona davvero un sistema self-hosted di email marketing.

L'invio di una campagna attraversa cinque stage. Capirli è il prerequisito per scegliere piattaforma, scegliere un relay di invio e fare debug di deliverability quando una campagna sotto-performa.

[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 — authoring della campagna. Il marketer scrive una campagna nella UI web: oggetto, nome mittente, selezione lista, editor di contenuto (drag-and-drop, MJML o HTML grezzo). Quando preme "invia", l'applicazione crea un record di campagna e mette in coda job per-destinatario su una coda in background. Niente esce dal server per ora.

Stage 2 — coda + worker. I worker in background prelevano job al ritmo configurato della coda (tipicamente 5–50 invii/secondo per worker). Il worker legge la riga dell'iscritto, fonde i custom field nel template, embedda un tracking pixel chiavato sul message-id e riscrive ogni link in un redirect di tracking click. Il risultato è un messaggio MIME completamente personalizzato pronto per essere passato a un sending driver.

Stage 3 — sending driver. Il driver è l'adattatore tra la tua applicazione e qualsiasi transport scegli: una chiamata API Amazon SES, un POST HTTPS Mailgun, una chiamata Web API SendGrid o un handshake SMTP AUTH PLAIN grezzo verso il tuo MTA Postal. Il pattern sending-driver di AcelleMail, per esempio, definisce un contratto a 5 metodi (connect, send, getDeliveryStatus, getCapabilities, validateConfig) che ogni driver implementa — vedi /developers/sending-drivers per la guideline driver completa. Driver built-in sono inclusi per Amazon SES, SendGrid, Mailgun, SparkPost, Elastic Email, Gmail SMTP e qualsiasi server SMTP generico (8 vendor vivono in app/SendingServers/Drivers/Vendors/).

Stage 4 — MTA → destinatario. L'MTA (tuo o del tuo relay) apre una connessione SMTP verso il server MX del destinatario, si presenta con un HELO/EHLO, negozia STARTTLS, autentica le chiavi di firma DKIM e sottomette il messaggio. Il mail server del destinatario esegue spam scoring, verifica SPF/DKIM/DMARC, processing dell'header list-unsubscribe e o inbox o respinge.

Stage 5 — loop di feedback. Tre segnali tornano indietro, tutti asincroni. I bounce arrivano via SMTP (codici 5xx per hard bounce, 4xx per soft) o via il webhook del relay. Le complaint (il destinatario ha cliccato "spam") arrivano via il Feedback Loop del Mailbox Provider o, di nuovo, via il webhook del relay. L'engagement (hit sul pixel di apertura, richieste di click-redirect) arriva via plain HTTP di ritorno alla tua web app. L'applicazione usa questi segnali per aggiornare suppression list, ritirare indirizzi morti e alimentare l'analytics di campagna. Il catalogo di webhook event di AcelleMail vive in config/webhook_events.php — è la lista canonica degli eventi che l'applicazione emette e consuma.

La forma è la stessa su ogni piattaforma self-hosted, con una sola variabile: dove vivono coda e MTA. Il worker di AcelleMail gira di default sulla stessa macchina della web app; Listmonk fa lo stesso; Mautic usa Symfony Messenger e supporta macchine worker separate. Il mail relay può essere locale (Postal sulla stessa macchina, Postfix su una macchina sorella) o remoto (SES, Mailgun) — quella decisione è il tema di §5.

§3 · Motivazioni

Perché i team passano da SaaS a self-hosted.

1. Il costo-per-invio diventa lineare

Il pricing SaaS scala con il numero di contatti a prescindere da quanto spesso invii. Il self-hosted disaccoppia i due: il software è un costo fisso (gratis per Listmonk/Mautic, $80 una tantum per AcelleMail Standard, 59 $ per Sendy); gli invii sono fatturati per destinatario alla tariffa pubblicata del relay (Amazon SES è 0,10 $ per 1.000). Con 50.000 iscritti e una campagna a settimana, il conto delle platform-fee passa da 385 $/mese su Mailchimp Standard a circa 20 $/mese di fee di invio — vedi §4 per la tabella.

2. I dati degli iscritti vivono sul tuo server

Indirizzi email, custom field, tag di segmentazione, cronologia click, aperture, complaint — tutto siede in un database che controlli. Nessun data processor terzo. Nessun dump dati lato piattaforma per integrazioni di marketing-data fabric. L'export CSV copre tutto perché lo schema l'hai scritto tu (o lo puoi leggere). Per un setup SaaS billing con obblighi di audit, quella proprietà è la spina dorsale della compliance.

3. La deliverability scala col tuo dominio

Su una piattaforma SaaS la tua reputazione di mittente è mescolata con gli altri tenant della piattaforma. La complaint di spam di un tenant vicino può colare sulla deliverability del tuo dominio. Self-hosted via un relay come Amazon SES ti dà l'opzione di IP dedicato (o condiviso, a tua scelta), e la reputazione del From-domain che i mailbox provider effettivamente valutano è solo tua. Warming, throttling e rotazione IP sono leve visibili, non comportamento nascosto della piattaforma.

4. Nessun vendor lock-in per costruzione

Schema, template, flussi di automazione e (per le piattaforme open source) il codice sorgente sono sul tuo disco. Migrare via da una piattaforma self-hosted è un export di dati, non un progetto di integrazione. Migrare tra relay di invio è un cambio di configurazione. Il costo di uscita è il costo di cambiare un modulo, non quello di ricostruire nove mesi di trigger di automazione nell'editor di un nuovo vendor.

5. La postura di compliance la definisci tu

Scegli una region (eu-west-1, us-east-1, ap-southeast-1). Scegli le finestre di retention. Scegli quali custom field sono cifrati a riposo. La sentenza Schrems II della Corte di Giustizia europea ha reso i trasferimenti transfrontalieri di dati un mal di testa legale ricorrente per le liste ospitate in SaaS; il self-hosted con infrastruttura UE toglie la domanda dal tavolo. Vedi §9.

6. L'estensibilità è codice, non una feature request

Una segmentazione custom che la piattaforma non supporta, un webhook verso il tuo CRM, un gateway di pagamento regionale per il tuo reseller billing, un report di settore — tutti diventano un plugin da 200 righe o una query SQL, non un submit in roadmap. AcelleMail include un plugin SDK con undici doc per sviluppatori source-grounded che coprono hook, lifecycle, driver, gateway e testing.

§4 · Conti economici

Quanto costa davvero a 5K, 10K, 50K e 200K iscritti.

Assunzioni: una campagna per iscritto a settimana (4,33 invii al mese per contatto), Amazon SES alla tariffa pubblicata di 0,10 $ per 1.000 email, un VPS da 5–20 $/mese per l'applicazione e o la licenza Standard di AcelleMail a $80 una tantum ammortizzata su 36 mesi o una piattaforma open source gratuita. Il pricing del tier Mailchimp Standard è la tariffa pubblicata al May 2026.

Iscritti Mailchimp Standard / mese Self-hosted SES + VPS / mese Risparmio a 3 anni
5.000100 $~7 $~3.300 $
10.000135 $~9 $~4.500 $
50.000385 $~25 $~13.000 $
200.0001.310 $~90 $~44.000 $

Colonna "Self-hosted" = fee di invio SES + VPS 5–20 $ + 2 $/mese di licenza ammortizzata. Esclude il tempo di setup. Tariffe Mailchimp Standard da mailchimp.com/pricing/marketing 2026-05.

Cosa i conti non catturano

La tabella è conservativa su due assi e aggressiva su un terzo. Conservativa: assume una campagna a settimana — molte liste inviano 2–4 volte a settimana, il che raddoppia o quadruplica il risparmio (gli invii sono lineari nel conteggio, il tetto del piano SaaS è lo stesso). Conservativa di nuovo: non modella i risparmi sull'email transazionale (reset password, ricevute) che in SaaS spesso sta su un piano separato Mailchimp Transactional / Postmark / SendGrid e che in self-hosted finisce nello stesso conto SES.

Aggressiva: non fattura il tempo di engineering per il setup iniziale o la manutenzione corrente. Una stima ragionevole è 8–16 ore di engineering per la prima install, poi 1–2 ore/mese per patch OS, rinnovi certificati, monitoraggio coda e curation della bounce list. A una tariffa interna di 100 $/h sono 200 $/mese di overhead — sostanziale a 5.000 iscritti, irrilevante a 50.000, profittevole a 200.000.

Il modello mentale più pulito: il self-hosted è un'architettura a costo-per-invio fisso, il SaaS è un'architettura a subscriber-tax. Si incrociano in punti diversi per team diversi, ma per qualsiasi lista sopra i ~10.000 con invio settimanale stabile, il premio SaaS diventa la spesa dominante. /vs/mailchimp percorre il confronto fianco a fianco a granularità di feature.

§5 · Architettura di invio

Scegliere la tua pipeline di invio.

Il self-hosted ti permette di disaccoppiare "l'app di marketing" da "ciò che parla SMTP". Dominano tre architetture; ognuna ha un profilo diverso di costo, controllo e reputazione.

A. Relay SMTP cloud (consigliato per la maggior parte dei team)

Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, Elastic Email — sono relay commerciali che accettano il tuo messaggio via API o SMTP e gestiscono la transazione SMTP effettiva col destinatario. Pubblicano pool di IP, gestiscono i default di warming, monitorano le blocklist e sottomettono i report Feedback Loop. I driver vendor di AcelleMail coprono i cinque principali out-of-the-box (app/SendingServers/Drivers/Vendors/{Amazon, Mailgun, SendGrid, SparkPost, ElasticEmail}) più SMTP generico per chiunque altro.

Perché è il default: SES costa 0,10 $ per 1.000 email senza minimo mensile. Il relay gestisce le parti complicate (rDNS, MX di backup, logica di retry, parsing del feedback di complaint). La cosa che possiedi è la reputazione del tuo dominio; la cosa che esternalizzi è la reputazione dell'IP. Per il 95% dei team, quella divisione è corretta.

B. Esegui il tuo MTA (Postal / Postfix + DKIM)

Postal è una piattaforma mail open source che installi sul tuo server e tratti come target SMTP dalla tua app di marketing. Postfix è il venerabile MTA Unix, più flessibile ma più configurazione. Entrambi ti lasciano controllare interamente l'IP di invio, che è la scelta giusta quando hai requisiti specifici di deliverability (una banca, un operatore sanitario, un mittente ad alto volume con un abuse desk dedicato).

Perché è più difficile: ora possiedi tu il warming dell'IP, il parsing del feedback di complaint, la remediation delle blocklist e la rotazione on-call quando la porta 25 inizia a emettere codici 5xx. La maggior parte dei cloud provider (DigitalOcean, AWS) restringe di default la porta 25 in uscita — ti servirà un colo, un host MTA dedicato o un provider che permetta esplicitamente l'invio diretto. Vale la pena sopra i ~10M di invii/mese o in settori regolamentati; over-engineering per tutti gli altri.

C. Ibrido (più relay, rotazione automatica)

AcelleMail (e la maggior parte delle piattaforme self-hosted mature) supporta più di un sending server configurato. Puoi instradare il transazionale via Postmark, il marketing via SES e le campagne di re-engagement via Mailgun — ognuno con la sua quota giornaliera, il suo pool di IP e la sua chiave DKIM. È il setup del mittente ad alto volume: la diversità dei relay limita il raggio di blast se il pool IP di un provider finisce in blocklist e ti permette di abbinare costo-per-invio a urgenza di invio. Il driver registry (app/SendingServers/DriverRegistry.php) è il catalogo centrale.

Rubrica decisionale

  • Sotto 1M di invii/mese, vuoi carico operativo minimo → Amazon SES (o Mailgun se preferisci la loro dashboard).
  • 1M–10M di invii/mese, serve IP dedicato → SES con IP dedicato (24,95 $/mese per IP) o SendGrid Pro.
  • 10M+ di invii/mese, requisito regolatorio per controllo IP completo → Postal su infrastruttura di proprietà.
  • SaaS multi-tenant dove ogni cliente ha bisogno del proprio dominio di invio → configuration set SES per-dominio o più subuser SendGrid, configurati come più record di sending-server nell'applicazione.

§6 · Piattaforme

Le principali piattaforme open source self-hosted — confronto oggettivo.

Disclosure. AcelleMail è l'editore di questa pagina. Citiamo i nostri code path in modo trasparente e linkiamo alla documentazione pubblicata dei competitor per le loro affermazioni di fatto. La tabella sotto registra modello di licenza, linguaggio, modello di invio e audience target dichiarata — non giudizi di valore.

Piattaforma Licenza Stack Invio built-in Focus dichiarato
AcelleMail $80 una tantum, source available PHP 8.3, Laravel 11, MySQL SES, Mailgun, SendGrid, SparkPost, Elastic, Gmail, SMTP generico SaaS billing multi-tenant + plugin SDK
Listmonk AGPL v3 Go single binary, Postgres SMTP generico, configurabile per server Newsletter leggera + transazionale
Mautic GPL v3 PHP 8, Symfony, MySQL SMTP, Amazon SES, SendGrid (via plugin) Focus marketing-automation, forma CRM
Sendy 59 $ una tantum, closed source PHP, MySQL Amazon SES (primario), SMTP generico Invio newsletter via SES, UI minimale
Postal MIT Ruby, MariaDB, RabbitMQ Funge da MTA esso stesso (abbinato a AcelleMail/Listmonk/Mautic) MTA + relay self-hosted (non uno strumento di campagne)

I principali assi che distinguono queste piattaforme in pratica:

  • Multi-tenancy. AcelleMail e Mautic hanno entrambi un modello Customer/Plan che governa il volume di invio per tenant — utile se rivendi email-marketing-as-a-service o gestisci un setup multi-brand. Listmonk e Sendy sono single-tenant.
  • Marketing automation. Mautic è stato costruito di proposito attorno a lead-scoring + drip-flow + integrazione CRM. AcelleMail ha flussi di automazione con branch condizionali e trigger su evento (vedi la pagina automation). Listmonk è intenzionalmente in forma newsletter — campagne e transazionale, niente flow builder.
  • Modello di licenza. Listmonk (AGPL v3) e Mautic (GPL v3) richiedono la divulgazione del sorgente delle opere derivate secondo i termini di quelle licenze; AcelleMail è source-available con una CodeCanyon Regular License (uso in install illimitate che controlli) o Extended License (diritti di rivendita). Sendy è distribuzione binaria closed-source.
  • Modello plugin / estensioni. AcelleMail include un plugin SDK documentato (hook, lifecycle, driver, gateway). Mautic ha supporto plugin orientato ai bridge CRM. Listmonk e Sendy non hanno sistemi di plugin — le estensioni sono fork.

La decisione è guidata dalla forma del progetto, non da "quale è il migliore". Un autore di newsletter in solo con 5.000 iscritti e nessuna esigenza di plugin è ben servito da Listmonk. Un team SaaS che vuole piani per-customer più REST API più un plugin per integrare il proprio webhook di billing è il caso d'uso di AcelleMail. Un team di vendite B2B che fa scoring di lead è il caso d'uso di Mautic. Postal è plumbing — abbinalo a uno degli altri.

§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