Guía pilar · 22 min de lectura · Actualizado el May 2026

Email marketing autoalojado en 2026: sea dueño de su lista, de su envío y de sus costes.

El email marketing autoalojado significa ejecutar el software de campañas, la base de datos de suscriptores y el pipeline de envío sobre una infraestructura que usted controla, en lugar de alquilarlos a Mailchimp, Brevo o un SaaS similar. La contrapartida es real: usted asume DevOps a cambio de un coste por envío lineal, residencia de datos completa y una entregabilidad que escala con su reputación, no con la de la plataforma. Esta guía recorre la arquitectura, las cuentas de coste, los fundamentos de entregabilidad y las plataformas, con cada afirmación rastreable a una ruta de archivo o a una fuente publicada.

En esta guía

  1. ¿Qué es el email marketing autoalojado?
  2. Cómo funciona — la arquitectura
  3. Por qué los equipos se pasan al autoalojado
  4. Las cuentas de coste de 5K a 200K suscriptores
  5. Cómo elegir su arquitectura de envío
  6. Plataformas de código abierto — comparativa objetiva
  7. Hoja de ruta de configuración (servidor → DNS → warm-up)
  8. Fundamentos de entregabilidad
  9. GDPR y residencia de datos
  10. Cuándo el autoalojado es la decisión equivocada
  11. FAQ
  12. A dónde ir después

§1 · Definición

¿Qué es el email marketing autoalojado?

El email marketing autoalojado es la práctica de ejecutar una aplicación de email marketing (gestión de listas, constructor de campañas, flujos de automatización, analíticas) en su propio servidor, junto a un pipeline de envío que también controla. Lo opuesto es el modelo SaaS, en el que un proveedor (Mailchimp, Brevo, Constant Contact, Klaviyo, ConvertKit, MailerLite, Campaign Monitor) aloja la aplicación y la infraestructura de envío por usted y le factura una tarifa recurrente escalada por número de suscriptores.

Una configuración autoalojada tiene tres componentes, y los dos de abajo son suyos:

  1. La capa de aplicación. Una app web instalable —normalmente en PHP/Laravel, Go, Ruby o Node— que gestiona listas de suscriptores, borradores de campaña, disparadores de automatización, seguimiento de clics/aperturas y el panel que usan sus marketers. Ejemplos: AcelleMail, Listmonk, Mautic, Sendy.
  2. El pipeline de envío. El mecanismo que toma un mensaje en cola y lo entrega a un Mail Transfer Agent (MTA) que habla SMTP con los servidores de correo del destinatario. Puede ejecutar su propio MTA (Postfix, Postal, Haraka), usar un relay-as-a-service (Amazon SES, SendGrid, Mailgun, Postmark, SparkPost) o ambos, según el volumen y su tolerancia al trabajo de reputación de IP.
  3. La infraestructura. Un VPS Linux, una instancia gestionada de Postgres/MySQL, una cola Redis o beanstalkd, un dominio que usted controle y autoridad DNS para los registros SPF, DKIM, DMARC y PTR. Una lista pequeña (menos de 50K suscriptores) corre cómodamente en un droplet de $5–$20/mes; las listas más grandes escalan horizontalmente con workers de cola extra y réplicas de lectura de la base de datos.

El intercambio que está haciendo es trabajo administrativo a cambio de coste por envío y residencia de datos. Los proveedores SaaS abstraen por completo los pasos 2 y 3; usted les paga ese impuesto de abstracción en cuotas mensuales que escalan con el número de suscriptores. El autoalojado recupera ese impuesto a cambio del tiempo que lleva aprovisionar un servidor, configurar el DNS y montar un relay de envío, operaciones que hoy se hacen en menos de una hora para quien ya lo ha hecho antes, y en un fin de semana para un principiante con la documentación delante.

«Autoalojado» no se debería confundir con «hágalo todo desde cero». Todas las grandes plataformas de código abierto se entregan como instalaciones llave en mano: suba, configure las credenciales de la base de datos, apunte un dominio. La parte de hágalo-usted-mismo es el relay de envío y el DNS; y si usa Amazon SES (o cualquier relay SMTP) esa parte se reduce a un formulario rellenado una sola vez.

§2 · Arquitectura

Cómo funciona realmente un sistema de email marketing autoalojado.

El envío de una campaña recorre cinco etapas. Entenderlas es el prerrequisito para elegir plataformas, elegir un relay de envío y depurar la entregabilidad cuando una campaña rinde poco.

[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

Etapa 1 — autoría de la campaña. El marketer redacta una campaña en la UI web: línea de asunto, nombre del remitente, selección de lista, editor de contenido (drag-and-drop, MJML o HTML en bruto). Cuando pulsa «enviar», la aplicación crea un registro de campaña y encola trabajos por destinatario en una cola en segundo plano. Aún no sale nada del servidor.

Etapa 2 — cola + worker. Los workers en segundo plano sacan trabajos al ritmo configurado en la cola (normalmente 5–50 envíos/segundo por worker). El worker obtiene la fila del suscriptor, fusiona los campos personalizados en la plantilla, incrusta un píxel de seguimiento indexado por message-id y reescribe cada enlace a una redirección de seguimiento de clics. El resultado es un mensaje MIME totalmente personalizado, listo para entregar a un driver de envío.

Etapa 3 — driver de envío. El driver es el adaptador entre su aplicación y el transporte que elija: una llamada a la API de Amazon SES, un POST HTTPS a Mailgun, una llamada a la Web API de SendGrid o un handshake SMTP AUTH PLAIN en bruto contra su propio Postal MTA. El patrón de driver de envío de AcelleMail, por ejemplo, define un contrato de 5 métodos (connect, send, getDeliveryStatus, getCapabilities, validateConfig) que implementa cada driver: vea /developers/sending-drivers para la guía completa. Vienen drivers integrados para Amazon SES, SendGrid, Mailgun, SparkPost, Elastic Email, Gmail SMTP y cualquier servidor SMTP genérico (8 vendors viven en app/SendingServers/Drivers/Vendors/).

Etapa 4 — MTA → destinatario. El MTA (suyo o el del relay) abre una conexión SMTP con el servidor MX del destinatario, se presenta con un HELO/EHLO, negocia STARTTLS, autentica las claves de firma DKIM y entrega el mensaje. El servidor de correo del destinatario ejecuta puntuación de spam, verificación SPF/DKIM/DMARC, procesamiento de la cabecera list-unsubscribe y, o bien entrega en bandeja, o rechaza.

Etapa 5 — feedback loop. Vuelven tres señales, todas asíncronas. Los rebotes llegan por SMTP (códigos 5xx para rebotes duros, 4xx para blandos) o vía el webhook del relay. Las quejas (el destinatario pulsó «spam») llegan por el Feedback Loop del proveedor de buzón o, de nuevo, por el webhook del relay. La interacción (impactos en el píxel de apertura, peticiones de redirección de clic) llega por HTTP plano a su app web. La aplicación las usa para actualizar las listas de supresión, retirar direcciones muertas y alimentar las analíticas de campaña. El catálogo de eventos webhook de AcelleMail vive en config/webhook_events.php: es la lista canónica de los eventos que la aplicación emite y consume.

La forma es la misma en cada plataforma autoalojada, con una variable: dónde viven la cola y el MTA. El worker de AcelleMail corre por defecto en la misma máquina que la app web; Listmonk hace lo mismo; Mautic usa Symfony Messenger y admite máquinas de worker separadas. El relay de correo puede ser local (Postal en la misma máquina, Postfix en una máquina hermana) o remoto (SES, Mailgun); esa decisión es el tema del §5.

§3 · Motivación

Por qué los equipos se pasan del SaaS al autoalojado.

1. El coste por envío se vuelve lineal

El precio SaaS escala con el número de contactos sin importar la frecuencia de envío. El autoalojado desacopla ambos: el software es un coste fijo (gratis para Listmonk/Mautic, $80 en pago único para AcelleMail Standard, $59 para Sendy); los envíos se facturan por destinatario a la tarifa publicada del relay (Amazon SES cobra $0.10 por cada 1.000). Con 50.000 suscriptores enviando una campaña a la semana, la factura de tarifa de plataforma pasa de $385/mes en Mailchimp Standard a aproximadamente $20/mes en tarifas de envío: vea la tabla del §4.

2. Los datos de los suscriptores viven en su servidor

Direcciones de email, campos personalizados, etiquetas de segmentación, historial de clics, aperturas y quejas: todo en una base de datos que usted controla. Sin encargado del tratamiento de datos de terceros. Sin volcados de datos del lado de la plataforma para integraciones de marketing data fabric. La exportación a CSV cubre todo porque usted escribió el esquema (o lo puede leer). Para una configuración de facturación SaaS con obligaciones de auditoría, esa propiedad es la columna vertebral del cumplimiento.

3. La entregabilidad escala con su dominio

En una plataforma SaaS, su reputación de remitente se mezcla con la del resto de tenants de la plataforma. Una queja de spam de un tenant vecino puede contaminar la entregabilidad de su dominio. El autoalojado vía un relay como Amazon SES le da la opción de IP dedicada (o compartida, usted decide), y la reputación del dominio From que los proveedores de buzón puntúan de verdad es solo suya. El warming, el throttling y la rotación de IPs son palancas visibles, no comportamiento oculto de la plataforma.

4. Sin dependencia del proveedor por diseño

El esquema, las plantillas, los flujos de automatización y (en las plataformas de código abierto) el código fuente están en su disco. Migrar fuera de una plataforma autoalojada es una exportación de datos, no un proyecto de integración. Migrar entre relays de envío es un cambio de configuración. El coste de salida es el coste de cambiar un formulario, no el de reconstruir nueve meses de disparadores de automatización en el editor de otro proveedor.

5. La postura de cumplimiento la define usted

Elija una región (eu-west-1, us-east-1, ap-southeast-1). Elija las ventanas de retención. Elija qué campos personalizados se cifran en reposo. La sentencia Schrems II del Tribunal de Justicia europeo convirtió las transferencias transfronterizas de datos en un dolor de cabeza legal recurrente para las listas alojadas en SaaS; el autoalojado con infraestructura en la UE saca esa pregunta de la mesa. Vea el §9.

6. La extensibilidad es código, no una petición de feature

Una segmentación personalizada que la plataforma no admite, un webhook a su CRM, una pasarela de pago regional para su facturación de revendedor, un informe específico del sector: todo se convierte en un plugin de 200 líneas o en una consulta SQL, no en una solicitud al roadmap. AcelleMail entrega un SDK de plugins con once docs para desarrolladores fundamentados en el código, que cubren hooks, ciclo de vida, drivers, pasarelas y testing.

§4 · Cuentas de coste

Lo que realmente cuesta con 5K, 10K, 50K y 200K suscriptores.

Hipótesis: una campaña por suscriptor a la semana (4,33 envíos al mes por contacto), Amazon SES a la tarifa publicada de $0.10 por cada 1.000 emails, un VPS de $5–$20/mes para la aplicación y una licencia Standard de AcelleMail de $80 en pago único amortizada a 36 meses o una plataforma de código abierto gratuita. Los precios del nivel Mailchimp Standard son los publicados a fecha de May 2026.

Suscriptores Mailchimp Standard / mes Autoalojado SES + VPS / mes Ahorro en 3 años
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

Columna «Autoalojado» = tarifa de envío de SES + VPS de $5–$20 + $2/mes de licencia amortizada. No incluye el tiempo de configuración. Tarifas de Mailchimp Standard según mailchimp.com/pricing/marketing en mayo de 2026.

Lo que las cuentas no capturan

La tabla es conservadora en dos ejes y agresiva en un tercero. Conservadora: asume una campaña por semana; muchas listas envían 2–4 por semana, lo que duplica o cuadruplica el ahorro (los envíos son lineales en cantidad, el techo del plan SaaS es el mismo). Conservadora también: no modela el ahorro del email transaccional (restablecimientos de contraseña, emails de recibo) que en SaaS suele vivir en un plan aparte de Mailchimp Transactional / Postmark / SendGrid, y que el autoalojado dobla en la misma factura de SES.

Agresiva: no factura el tiempo de ingeniería de la configuración inicial ni del mantenimiento continuo. Una estimación razonable es de 8 a 16 horas de ingeniería para la primera instalación, y luego 1–2 horas al mes para parches del sistema operativo, renovaciones de certificados, monitorización de la cola y curaduría de las listas de rebote. A una tarifa interna de $100/h, eso son $200/mes de sobrecoste: significativo con 5.000 suscriptores, irrelevante con 50.000, rentable con 200.000.

El modelo mental más limpio: el autoalojado es una arquitectura de coste fijo por envío, el SaaS es una arquitectura de impuesto por suscriptor. Se cruzan en puntos distintos para equipos distintos, pero para cualquier lista por encima de ~10.000 con envío semanal estable, el sobrecoste del SaaS se convierte en el gasto dominante. /vs/mailchimp recorre la comparativa lado a lado a nivel de funcionalidad.

§5 · Arquitectura de envío

Cómo elegir su pipeline de envío.

El autoalojado le permite desacoplar «la app de marketing» de «lo que habla SMTP». Tres arquitecturas dominan; cada una tiene un perfil distinto de coste, control y reputación.

A. Relay SMTP en la nube (recomendado para la mayoría de los equipos)

Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, Elastic Email: son relays comerciales que aceptan su mensaje vía API o SMTP y gestionan la transacción SMTP real con el destinatario. Publican pools de IP, gestionan los valores por defecto de warming, monitorizan blocklists y envían informes de Feedback Loop. Los drivers de vendor de AcelleMail cubren los cinco principales de fábrica (app/SendingServers/Drivers/Vendors/{Amazon, Mailgun, SendGrid, SparkPost, ElasticEmail}) más SMTP genérico para cualquier otro.

Por qué este es el predeterminado: SES cuesta $0.10 por cada 1.000 emails sin mínimo mensual. El relay gestiona las partes feas (rDNS, MX backup, lógica de reintentos, parseo del feedback de quejas). Lo que usted es dueño es de la reputación de su dominio; lo que externaliza es la reputación de la IP. Para el 95% de los equipos, ese reparto es el correcto.

B. Ejecutar su propio MTA (Postal / Postfix + DKIM)

Postal es una plataforma de correo de código abierto que instala en su propio servidor y trata como destino SMTP desde su app de marketing. Postfix es el venerable MTA de Unix, más flexible pero con más configuración. Ambos le permiten controlar enteramente la IP de envío, que es la decisión correcta cuando tiene requisitos específicos de entregabilidad (un banco, un proveedor sanitario, un remitente de gran volumen con un equipo dedicado de abuse).

Por qué esto es más difícil: usted asume ahora el warming de IP, el parseo del feedback de quejas, la remediación de blocklists y la rotación de guardia cuando el puerto 25 empieza a emitir códigos 5xx. La mayoría de los proveedores cloud (DigitalOcean, AWS) restringen el puerto 25 saliente por defecto: necesitará un colo, un host MTA dedicado o un proveedor que permita explícitamente el envío directo. Merece la pena por encima de ~10M de envíos al mes o en industrias reguladas; sobreingeniería para los demás.

C. Híbrido (varios relays con rotación automática)

AcelleMail (y la mayoría de las plataformas autoalojadas maduras) admite más de un servidor de envío configurado. Puede enrutar lo transaccional por Postmark, lo de marketing por SES y las campañas de reactivación por Mailgun, cada una con su propia cuota diaria, pool de IP y clave DKIM. Esta es la configuración del remitente de gran volumen: la diversidad de relays acota el radio de impacto si el pool de IPs de un proveedor entra en blocklist, y le permite ajustar el coste por envío a la urgencia del envío. El driver registry (app/SendingServers/DriverRegistry.php) es el catálogo central.

Rúbrica de decisión

  • Menos de 1M de envíos/mes, busca la mínima carga operativa → Amazon SES (o Mailgun si prefiere su panel).
  • De 1M a 10M de envíos/mes, IP dedicada necesaria → SES con IP dedicada ($24.95/mes por IP) o SendGrid Pro.
  • 10M+ de envíos/mes, requisito regulatorio de control total de la IP → Postal en infraestructura propia.
  • SaaS multi-tenant donde cada cliente necesita su propio dominio de envío → configuration sets por dominio en SES o varios subusuarios en SendGrid, configurados como múltiples registros de servidor de envío en la aplicación.

§6 · Plataformas

Las principales plataformas autoalojadas de código abierto — comparativa objetiva.

Aviso. AcelleMail es quien publica esta página. Citamos nuestras propias rutas de código de forma transparente y enlazamos a la documentación publicada de los competidores para sus afirmaciones de hecho. La tabla siguiente recoge el modelo de licencia, el lenguaje, el modelo de envío y el público objetivo principal: no son juicios de valor.

Plataforma Licencia Stack Envío integrado Foco principal
AcelleMail Pago único de $80, código disponible PHP 8.3, Laravel 11, MySQL SES, Mailgun, SendGrid, SparkPost, Elastic, Gmail, SMTP genérico Facturación SaaS multi-tenant + SDK de plugins
Listmonk AGPL v3 Binario único en Go, Postgres SMTP genérico, configurable por servidor Boletines ligeros + transaccional
Mautic GPL v3 PHP 8, Symfony, MySQL SMTP, Amazon SES, SendGrid (vía plugins) Foco en automatización de marketing, con forma de CRM
Sendy Pago único de $59, código cerrado PHP, MySQL Amazon SES (principal), SMTP genérico Envío de boletines vía SES, UI mínima
Postal MIT Ruby, MariaDB, RabbitMQ Actúa como MTA (emparejado con AcelleMail/Listmonk/Mautic) MTA + relay autoalojado (no es una herramienta de campañas)

Los ejes principales que distinguen estas plataformas en la práctica:

  • Multi-tenancy. AcelleMail y Mautic tienen ambos un modelo de Cliente/Plan que controla el volumen de envío por tenant: útil si está revendiendo email-marketing-como-servicio o gestiona un montaje multi-marca. Listmonk y Sendy son de un solo tenant.
  • Automatización de marketing. Mautic se construyó expresamente alrededor del lead scoring + flujos drip + integración con CRM. AcelleMail tiene flujos de automatización con ramas condicionales y disparadores por evento (vea la página de automatización). Listmonk tiene intencionadamente forma de boletín: campañas y transaccional, sin constructor de flujos.
  • Modelo de licencia. Listmonk (AGPL v3) y Mautic (GPL v3) exigen la divulgación del código fuente de las obras derivadas según los términos de esas licencias; AcelleMail es de código disponible bajo una Licencia Regular de CodeCanyon (uso en un número ilimitado de instalaciones que usted controle) o Licencia Extendida (derechos de reventa). Sendy es distribución de binario de código cerrado.
  • Modelo de plugin / extensión. AcelleMail entrega un SDK de plugins documentado (hooks, ciclo de vida, drivers, pasarelas). Mautic tiene soporte de plugins orientado a puentes con CRM. Listmonk y Sendy no tienen sistemas de plugins: las extensiones son forks.

La decisión se guía por la forma del proyecto, no por «cuál es la mejor». Un autor de boletines en solitario con 5.000 suscriptores y sin necesidades de plugin está bien servido por Listmonk. Un equipo SaaS que quiere planes por cliente más REST API más un plugin para integrar su webhook de facturación es el caso de uso de AcelleMail. Un equipo de ventas B2B que puntúa leads es el caso de uso de Mautic. Postal es fontanería: empárelo con uno de los anteriores.

§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