Guide pilier · 22 min de lecture · Mis à jour le May 2026

L'email marketing auto-hébergé en 2026 — maîtrisez votre liste, votre envoi et vos coûts.

L'email marketing auto-hébergé consiste à exécuter le logiciel de campagne, la base de données des abonnés et le pipeline d'envoi sur une infrastructure que vous contrôlez — au lieu de les louer à Mailchimp, Brevo ou un SaaS similaire. Le compromis est réel : vous assumez le devops en échange d'un coût par envoi linéaire, d'une résidence des données complète et d'une délivrabilité qui évolue avec votre réputation, et non avec celle de la plateforme. Ce guide parcourt l'architecture, le calcul de coût, les fondamentaux de la délivrabilité et les plateformes — avec chaque affirmation traçable jusqu'à un chemin de fichier ou une source publiée.

Dans ce guide

  1. Qu'est-ce que l'email marketing auto-hébergé ?
  2. Fonctionnement — l'architecture
  3. Pourquoi les équipes passent à l'auto-hébergement
  4. Le calcul de coût de 5K à 200K abonnés
  5. Choisir votre architecture d'envoi
  6. Plateformes open source — comparatif objectif
  7. Feuille de route d'installation (serveur → DNS → warm-up)
  8. Fondamentaux de la délivrabilité
  9. RGPD + résidence des données
  10. Quand l'auto-hébergement est le mauvais choix
  11. FAQ
  12. Pour aller plus loin

§1 · Définition

Qu'est-ce que l'email marketing auto-hébergé ?

L'email marketing auto-hébergé est la pratique consistant à exécuter une application d'email marketing — gestion de listes, éditeur de campagnes, flux d'automatisation, analytics — sur votre propre serveur, accompagnée d'un pipeline d'envoi que vous contrôlez également. À l'opposé se trouve le modèle SaaS, où un fournisseur (Mailchimp, Brevo, Constant Contact, Klaviyo, ConvertKit, MailerLite, Campaign Monitor) héberge l'application et l'infrastructure d'envoi pour votre compte, et vous facture un abonnement récurrent indexé sur votre nombre d'abonnés.

Une installation auto-hébergée comporte trois composants, dont vous possédez les deux derniers :

  1. La couche applicative. Une application web installable — généralement PHP/Laravel, Go, Ruby ou Node — qui gère les listes d'abonnés, les brouillons de campagne, les déclencheurs d'automatisation, le suivi des clics et ouvertures, ainsi que le tableau de bord utilisé par vos marketeurs. Exemples : AcelleMail, Listmonk, Mautic, Sendy.
  2. Le pipeline d'envoi. Le mécanisme qui prend un message en file d'attente et le remet à un Mail Transfer Agent (MTA) qui dialogue en SMTP avec les serveurs de messagerie destinataires. Vous pouvez exploiter votre propre MTA (Postfix, Postal, Haraka), utiliser un relais en tant que service (Amazon SES, SendGrid, Mailgun, Postmark, SparkPost) ou les deux — selon le volume et votre tolérance au travail sur la réputation IP.
  3. L'infrastructure. Un VPS Linux, une instance Postgres/MySQL gérée, une file d'attente Redis ou beanstalkd, un domaine que vous contrôlez et l'autorité DNS pour les enregistrements SPF, DKIM, DMARC et PTR. Une petite liste (moins de 50 000 abonnés) tourne confortablement sur un droplet à 5–20 $/mois ; les listes plus volumineuses s'étendent horizontalement avec des queue workers supplémentaires et des bases de données en réplica de lecture.

Le compromis que vous faites est : du travail administratif contre du coût par envoi et de la résidence des données. Les fournisseurs SaaS abstraient entièrement les étapes 2 et 3 ; vous leur payez cette taxe d'abstraction sous forme de frais mensuels indexés sur le nombre d'abonnés. L'auto-hébergement récupère cette taxe en échange du temps nécessaire pour provisionner un serveur, configurer le DNS et mettre en place un relais d'envoi — des opérations désormais inférieures à une heure pour quelqu'un qui l'a déjà fait, et un week-end pour un débutant disposant de la documentation.

« Auto-hébergé » ne doit pas être confondu avec « bricolé de zéro ». Toutes les grandes plateformes open source sont livrées comme des installations clés en main — téléversement, configuration des identifiants de base de données, pointage d'un domaine. La partie bricolage concerne le relais d'envoi et le DNS — et si vous utilisez Amazon SES (ou tout autre relais SMTP), elle se réduit à un formulaire rempli une seule fois.

§2 · Architecture

Comment fonctionne réellement un système d'email marketing auto-hébergé.

L'envoi d'une campagne traverse cinq étapes. Les comprendre est le prérequis pour choisir des plateformes, choisir un relais d'envoi et déboguer la délivrabilité quand une campagne sous-performe.

[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

Étape 1 — création de campagne. Le marketeur rédige une campagne dans l'interface web : objet, nom de l'expéditeur, sélection de la liste, éditeur de contenu (drag-and-drop, MJML ou HTML brut). Lorsqu'il clique sur « envoyer », l'application crée un enregistrement de campagne et place en file d'attente les jobs par destinataire pour un traitement en arrière-plan. Rien ne quitte encore le serveur.

Étape 2 — queue + worker. Les workers en arrière-plan dépilent les jobs au rythme configuré (généralement 5–50 envois/seconde par worker). Le worker récupère la ligne de l'abonné, fusionne les champs personnalisés dans le template, intègre un pixel de suivi indexé par message-id et réécrit chaque lien vers une redirection de suivi de clic. Le résultat est un message MIME entièrement personnalisé, prêt à être remis à un sending driver.

Étape 3 — sending driver. Le driver est l'adaptateur entre votre application et le transport choisi : un appel d'API Amazon SES, un POST HTTPS Mailgun, un appel Web API SendGrid ou une poignée de main SMTP brute AUTH PLAIN vers votre propre MTA Postal. Le pattern sending-driver de AcelleMail, par exemple, définit un contrat à 5 méthodes (connect, send, getDeliveryStatus, getCapabilities, validateConfig) que chaque driver implémente — voir /developers/sending-drivers pour le guide complet des drivers. Des drivers intégrés sont livrés pour Amazon SES, SendGrid, Mailgun, SparkPost, Elastic Email, Gmail SMTP et tout serveur SMTP générique (8 fournisseurs vivent dans app/SendingServers/Drivers/Vendors/).

Étape 4 — MTA → destinataire. Le MTA (le vôtre ou celui de votre relais) ouvre une connexion SMTP vers le serveur MX du destinataire, se présente avec un HELO/EHLO, négocie STARTTLS, authentifie les clés de DKIM-signing et soumet le message. Le serveur de messagerie destinataire effectue le scoring spam, la vérification SPF/DKIM/DMARC, le traitement de l'en-tête list-unsubscribe, puis place en boîte de réception ou rejette.

Étape 5 — boucle de feedback. Trois signaux reviennent, tous asynchrones. Les rebonds arrivent par SMTP (codes 5xx pour les hard bounces, 4xx pour les soft) ou via le webhook du relais. Les plaintes (le destinataire a cliqué « spam ») arrivent via la Feedback Loop du Mailbox Provider ou, là encore, via le webhook du relais. L'engagement (impacts du pixel d'ouverture, requêtes de redirection de clic) arrive en HTTP simple vers votre application web. L'application les utilise pour mettre à jour les listes de suppression, retirer les adresses mortes et alimenter les analytics de campagne. Le catalogue d'événements webhook de AcelleMail vit dans config/webhook_events.php — c'est la liste canonique des événements émis et consommés par l'application.

La forme est la même sur toutes les plateformes auto-hébergées, à une variable près : où vivent la queue et le MTA. Le worker de AcelleMail tourne par défaut sur la même machine que l'application web ; Listmonk fait de même ; Mautic utilise Symfony Messenger et prend en charge des machines worker séparées. Le relais mail peut être local (Postal sur la même machine, Postfix sur une machine sœur) ou distant (SES, Mailgun) — cette décision fait l'objet de la §5.

§3 · Motivation

Pourquoi les équipes passent du SaaS à l'auto-hébergement.

1. Le coût par envoi devient linéaire

La tarification SaaS évolue avec le nombre de contacts, quelle que soit la fréquence d'envoi. L'auto-hébergement découple les deux : le logiciel est un coût fixe (gratuit pour Listmonk/Mautic, $80 en paiement unique pour AcelleMail Standard, 59 $ pour Sendy) ; les envois sont facturés au destinataire au tarif publié du relais (Amazon SES facture 0,10 $ par tranche de 1 000). À 50 000 abonnés envoyant une campagne par semaine, la facture des frais de plateforme passe de 385 $/mois sur Mailchimp Standard à environ 20 $/mois en frais d'envoi — voir §4 pour le tableau.

2. Les données des abonnés vivent sur votre serveur

Adresses email, champs personnalisés, tags de segmentation, historique des clics, ouvertures, plaintes — tout réside dans une base de données que vous contrôlez. Aucun sous-traitant tiers. Aucun export de données côté plateforme pour des intégrations marketing-data fabric. L'export CSV couvre tout, parce que vous avez écrit le schéma (ou que vous pouvez le lire). Pour une installation de facturation SaaS soumise à des obligations d'audit, cette propriété est la colonne vertébrale de la conformité.

3. La délivrabilité évolue avec votre domaine

Sur une plateforme SaaS, votre réputation d'expéditeur est mêlée à celle des autres locataires de la plateforme. La plainte spam d'un locataire voisin peut déteindre sur la délivrabilité de votre domaine. L'auto-hébergement via un relais comme Amazon SES vous offre une option d'IP dédiée (ou partagée, à votre choix), et la réputation du domaine d'expédition réellement notée par les Mailbox Providers vous appartient en propre. Warming, throttling et rotation d'IP sont des leviers visibles, pas un comportement caché de la plateforme.

4. Pas de lock-in fournisseur par construction

Le schéma, les templates, les flux d'automatisation et (pour les plateformes open source) le code source sont sur votre disque. Migrer hors d'une plateforme auto-hébergée est un export de données, pas un projet d'intégration. Migrer entre relais d'envoi est un changement de configuration. Le coût de sortie est celui du changement d'un formulaire, pas celui de reconstruire neuf mois de déclencheurs d'automatisation dans l'éditeur d'un nouveau fournisseur.

5. La posture de conformité est à vous de définir

Choisissez une région (eu-west-1, us-east-1, ap-southeast-1). Choisissez les fenêtres de rétention. Choisissez quels champs personnalisés sont chiffrés au repos. L'arrêt Schrems II de la Court of Justice européenne a fait des transferts transfrontaliers un casse-tête juridique récurrent pour les listes hébergées en SaaS ; l'auto-hébergement avec une infrastructure UE écarte la question. Voir §9.

6. L'extensibilité, c'est du code, pas une demande de fonctionnalité

Une segmentation personnalisée que la plateforme ne prend pas en charge, un webhook vers votre CRM, une passerelle de paiement régionale pour votre facturation revendeur, un rapport sectoriel — tout devient un plugin de 200 lignes ou une requête SQL, pas une soumission de roadmap. AcelleMail fournit un plugin SDK avec onze documents développeur ancrés dans le code source, couvrant hooks, cycle de vie, drivers, passerelles et tests.

§4 · Calcul de coût

Ce que cela coûte réellement à 5K, 10K, 50K et 200K abonnés.

Hypothèses : une campagne par abonné par semaine (4,33 envois par mois par contact), Amazon SES au tarif publié de 0,10 $ par tranche de 1 000 emails, un VPS à 5–20 $/mois pour l'application, et soit la licence Standard de AcelleMail à $80 en paiement unique amortie sur 36 mois, soit une plateforme open source gratuite. La tarification Mailchimp Standard est le tarif publié au May 2026.

Abonnés Mailchimp Standard / mois Auto-hébergé SES + VPS / mois Économie sur 3 ans
5 000100 $~7 $~3 300 $
10 000135 $~9 $~4 500 $
50 000385 $~25 $~13 000 $
200 0001 310 $~90 $~44 000 $

Colonne « Auto-hébergé » = frais d'envoi SES + VPS à 5–20 $ + 2 $/mois de licence amortie. Hors temps d'installation. Tarifs Mailchimp Standard selon mailchimp.com/pricing/marketing 2026-05.

Ce que le calcul ne capture pas

Le tableau est conservateur sur deux axes et agressif sur un troisième. Conservateur : il suppose une campagne par semaine — beaucoup de listes envoient 2 à 4 fois par semaine, ce qui double ou quadruple l'économie (les envois sont linéaires en quantité, le plafond du plan SaaS reste le même). Conservateur encore : il ne modélise pas les économies sur l'email transactionnel (réinitialisations de mot de passe, emails de reçu) qui, en SaaS, repose souvent sur un plan distinct Mailchimp Transactional / Postmark / SendGrid et que l'auto-hébergement intègre dans la même facture SES.

Agressif : il ne facture ni le temps d'ingénierie pour l'installation initiale, ni la maintenance courante. Une estimation raisonnable est de 8 à 16 heures d'ingénierie pour la première installation, puis 1 à 2 heures/mois pour les correctifs de l'OS, le renouvellement des certificats, la surveillance de la queue et la curation des listes de rebonds. À un taux interne de 100 $/h, cela représente 200 $/mois de frais généraux — significatif à 5 000 abonnés, négligeable à 50 000, profitable à 200 000.

Le modèle mental le plus net : l'auto-hébergement est une architecture à coût fixe par envoi, le SaaS est une architecture à taxe par abonné. Elles se croisent à des points différents selon les équipes, mais pour toute liste au-dessus d'environ 10 000 abonnés avec un rythme d'envoi hebdomadaire régulier, la prime SaaS devient la dépense dominante. /vs/mailchimp parcourt la comparaison côte à côte au niveau de la fonctionnalité.

§5 · Architecture d'envoi

Choisir votre pipeline d'envoi.

L'auto-hébergement permet de découpler « l'application marketing » de « ce qui parle SMTP ». Trois architectures dominent ; chacune a un profil différent en termes de coût, de contrôle et de réputation.

A. Relais SMTP cloud (recommandé pour la plupart des équipes)

Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, Elastic Email — ce sont des relais commerciaux qui acceptent votre message par API ou SMTP et gèrent la transaction SMTP réelle avec le destinataire. Ils publient des pools d'IP, gèrent les valeurs par défaut de warm-up, surveillent les blocklists et soumettent les rapports de Feedback Loop. Les vendor drivers de AcelleMail couvrent nativement les cinq principaux (app/SendingServers/Drivers/Vendors/{Amazon, Mailgun, SendGrid, SparkPost, ElasticEmail}) plus SMTP générique pour tous les autres.

Pourquoi c'est le choix par défaut : SES facture 0,10 $ par tranche de 1 000 emails sans minimum mensuel. Le relais gère les parties pénibles (rDNS, MX de secours, logique de retry, parsing du feedback de plaintes). Ce que vous possédez, c'est la réputation de votre domaine ; ce que vous externalisez, c'est la réputation IP. Pour 95 % des équipes, cette répartition est la bonne.

B. Exploiter votre propre MTA (Postal / Postfix + DKIM)

Postal est une plateforme mail open source que vous installez sur votre propre serveur et que vous traitez comme une cible SMTP depuis votre application marketing. Postfix est le vénérable MTA Unix, plus flexible mais demandant plus de configuration. Tous deux vous permettent de contrôler entièrement l'IP d'envoi, ce qui est le bon choix quand vous avez des exigences de délivrabilité spécifiques (une banque, un acteur de santé, un expéditeur à fort volume avec un service abuse dédié).

Pourquoi c'est plus difficile : vous possédez désormais le warm-up d'IP, le parsing du feedback de plaintes, la remédiation des blocklists et la rotation d'astreinte quand le port 25 se met à émettre des codes 5xx. La plupart des fournisseurs cloud (DigitalOcean, AWS) restreignent par défaut le port 25 sortant — il vous faudra un colo, un hôte MTA dédié ou un fournisseur qui autorise explicitement l'envoi direct. Cela en vaut la peine au-dessus d'environ 10 M d'envois/mois ou dans les secteurs régulés ; sur-ingénierie pour tous les autres.

C. Hybride (plusieurs relais, rotation automatique)

AcelleMail (et la plupart des plateformes auto-hébergées matures) prend en charge plusieurs serveurs d'envoi configurés. Vous pouvez router le transactionnel via Postmark, le marketing via SES et les campagnes de réengagement via Mailgun — chacun avec son propre quota quotidien, son pool d'IP et sa clé DKIM. C'est la configuration de l'expéditeur à fort volume : la diversité des relais plafonne le rayon d'impact si le pool d'IP d'un fournisseur se retrouve sur blocklist, et permet d'aligner le coût par envoi sur l'urgence d'envoi. Le driver registry (app/SendingServers/DriverRegistry.php) est le catalogue central.

Rubrique de décision

  • Moins de 1 M d'envois/mois, charge opérationnelle minimale souhaitée → Amazon SES (ou Mailgun si vous préférez son tableau de bord).
  • 1 M–10 M d'envois/mois, IP dédiée requise → SES avec IP dédiée (24,95 $/mois par IP) ou SendGrid Pro.
  • 10 M+ d'envois/mois, exigence réglementaire de contrôle IP complet → Postal sur infrastructure possédée.
  • SaaS multi-tenant où chaque client a besoin de son propre domaine d'envoi → SES configuration sets par domaine ou plusieurs subusers SendGrid, configurés comme plusieurs enregistrements de serveur d'envoi dans l'application.

§6 · Plateformes

Les principales plateformes auto-hébergées open source — comparatif objectif.

Divulgation. AcelleMail est l'éditeur de cette page. Nous citons nos propres chemins de code de manière transparente et renvoyons à la documentation publiée des concurrents pour leurs affirmations factuelles. Le tableau ci-dessous consigne le modèle de licence, le langage, le modèle d'envoi et le public cible affiché — pas de jugements de valeur.

Plateforme Licence Stack Envoi intégré Cible affichée
AcelleMail $80 en paiement unique, source disponible PHP 8.3, Laravel 11, MySQL SES, Mailgun, SendGrid, SparkPost, Elastic, Gmail, SMTP générique Facturation SaaS multi-tenant + plugin SDK
Listmonk AGPL v3 Binaire unique Go, Postgres SMTP générique, configurable par serveur Newsletter légère + transactionnel
Mautic GPL v3 PHP 8, Symfony, MySQL SMTP, Amazon SES, SendGrid (via plugins) Marketing automation, taillé CRM
Sendy 59 $ en paiement unique, source fermée PHP, MySQL Amazon SES (principal), SMTP générique Envoi de newsletters via SES, UI minimale
Postal MIT Ruby, MariaDB, RabbitMQ Agit lui-même comme MTA (à coupler avec AcelleMail/Listmonk/Mautic) MTA auto-hébergé + relais (pas un outil de campagne)

Les axes majeurs qui distinguent ces plateformes en pratique :

  • Multi-tenancy. AcelleMail et Mautic disposent tous deux d'un modèle Customer + Plan qui plafonne le volume d'envoi par tenant — utile si vous revendez de l'email-marketing-as-a-service ou exploitez une installation multi-marques. Listmonk et Sendy sont mono-tenant.
  • Marketing automation. Mautic a été conçu autour du lead scoring + drip flow + intégration CRM. AcelleMail propose des flux d'automatisation avec branches conditionnelles et déclencheurs événementiels (voir la page automation). Listmonk est intentionnellement taillé pour la newsletter — campagnes et transactionnel, sans flow builder.
  • Modèle de licence. Listmonk (AGPL v3) et Mautic (GPL v3) imposent la divulgation du code source des œuvres dérivées selon les termes de ces licences ; AcelleMail est source-available avec une CodeCanyon Regular License (usage sur un nombre illimité d'installations que vous contrôlez) ou Extended License (droits de revente). Sendy est une distribution binaire à source fermée.
  • Modèle de plugin / extension. AcelleMail fournit un plugin SDK documenté (hooks, cycle de vie, drivers, passerelles). Mautic dispose d'un support plugin orienté ponts CRM. Listmonk et Sendy n'ont pas de systèmes de plugins — les extensions passent par des forks.

La décision dépend de la forme du projet, pas du « lequel est le meilleur ». Un auteur solo de newsletter avec 5 000 abonnés et aucun besoin de plugin sera très bien servi par Listmonk. Une équipe SaaS souhaitant des plans par client plus une REST API plus un plugin pour intégrer son webhook de facturation correspond au cas d'usage AcelleMail. Une équipe commerciale B2B faisant du lead scoring correspond à Mautic. Postal, c'est de la plomberie — couplez-le avec l'un des autres.

§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