Por qué las agencias necesitan una plataforma SMTP completa
Gestionar el envío de correo de una cartera de clientes solo con Postfix es navegar a ciegas. El MTA entrega o rechaza, pero no te dice por qué se produjo un rebote, qué campaña degradó la reputación de un dominio ni qué cliente consume más recursos de envío.
Para una agencia que gestiona 10, 20 o 50 dominios de clientes, esa opacidad es un riesgo operativo directo. Un solo cliente mal configurado puede provocar que la IP compartida acabe en listas negras y perjudique a toda la cartera. Y cuando el cliente llama para reportar un problema, no tienes nada que mostrarle.
Postal resuelve esto añadiendo una capa de control completa sobre el pipeline SMTP.
Lo que Postal aporta a tu agencia
- Interfaz web multi-servidor: crea un servidor de envío aislado por cliente o proyecto, con sus propias credenciales SMTP y clave API.
- Estadísticas por dominio: tasa de entrega, rebotes, entregabilidad y volumen de envío — por dominio remitente, por periodo, exportables.
- Gestión de rebotes en tiempo real: cada mensaje devuelto queda registrado, categorizado (hard/soft), visible en la interfaz y enviado via webhook a tu aplicación.
- API REST y webhooks: integra Postal con tu CRM, plataforma de e-commerce o herramienta de facturación.
- Colas de mensajes: los envíos se ponen en cola y son trazables hasta el acuse de recibo o el error final, sin caja negra.
- Aislamiento de clientes: cada servidor Postal tiene sus propios IP pools, su propia reputación y sus propios límites — un cliente en dificultades no afecta a los demás.
- Licencia MIT: código abierto, sin coste por correo, sin dependencia de terceros.
Requisitos previos: VPS, puerto 25 e IPv4 dedicada
Postal v3.3.7 se instala mediante Docker. Los requisitos oficiales son:
Recursos: al menos 2 vCPU y 4 GB de RAM. Para volúmenes superiores a 50.000 correos diarios, se recomiendan 8 GB. Reserva al menos 25 GB de almacenamiento SSD.
Sistema operativo: Ubuntu 22.04 o Ubuntu 24.04 LTS con Docker Engine y el plugin Docker Compose.
Base de datos: MariaDB 10.6 o superior. MySQL no está soportado explícitamente.
Puerto 25: el punto crítico. El puerto 25 saliente debe estar abierto para que Postal pueda entregar mensajes a los servidores destinatarios. Muchos proveedores cloud lo bloquean por defecto — verifica esto antes de empezar.
rDNS: el DNS inverso de tu IPv4 debe apuntar al hostname de Postal (p.ej. postal.tu-agencia.com). Un registro PTR ausente o incorrecto es la principal causa de rechazo por parte de los grandes proveedores de correo.
Instalación de Postal en un VPS
Preparar el servidor e instalar Docker
Conéctate como root en tu VPS Ubuntu 24.04, actualiza los paquetes e instala Docker Engine y el plugin Compose:
apt update && apt upgrade -y curl -fsSL https://get.docker.com | sh docker --version && docker compose versionVerifica que el puerto 25 saliente esté abierto:
nc -zv smtp.gmail.com 25. Si falla, contacta con tu proveedor para desbloquearlo.Configurar DNS para el servidor Postal
Antes del bootstrap, crea los registros DNS para el dominio de tu instalación Postal (p.ej.
postal.tu-agencia.com):- Registro A:
postal.tu-agencia.com→ IP del VPS
- rDNS (PTR): configúralo en tu panel de control
- SPF del dominio infraestructura:v=spf1 ip4:<IP_VPS> ~allEspera la propagación DNS (15 a 30 minutos) antes de continuar.
Bootstrap de la configuración de Postal
Descarga la imagen de Postal y ejecuta el bootstrap para generar los ficheros de configuración:
docker pull ghcr.io/postalserver/postal:latest mkdir -p /opt/postal/config docker run --rm -v /opt/postal/config:/config \ ghcr.io/postalserver/postal:latest \ postal bootstrap postal.tu-agencia.comEsto genera
/opt/postal/config/postal.ymlysigning.key. Abrepostal.ymle introduce las credenciales de MariaDB y la URL pública de tu instalación.Iniciar MariaDB e inicializar la base de datos
Lanza un contenedor MariaDB dedicado y luego inicializa el esquema de Postal:
docker run -d --name postal-mariadb \ -e MYSQL_ROOT_PASSWORD=<contraseña> \ -e MYSQL_DATABASE=postal \ --restart always mariadb:10.11 docker run --rm -v /opt/postal/config:/config \ --network host \ ghcr.io/postalserver/postal:latest \ postal initializeCrear el primer usuario administrador
Crea tu cuenta de administrador para acceder a la interfaz web:
docker run --rm -v /opt/postal/config:/config \ --network host \ ghcr.io/postalserver/postal:latest \ postal make-userIntroduce el correo electrónico, el nombre y la contraseña del administrador.
Iniciar Postal y configurar el proxy inverso
Lanza todos los servicios de Postal (web, workers, SMTP):
docker run -d --name postal \ --restart always \ --network host \ -v /opt/postal/config:/config \ ghcr.io/postalserver/postal:latest \ postal startPostal expone la interfaz web en el puerto 5000. Coloca un proxy inverso (Caddy o nginx) delante para terminar TLS y accede a
https://postal.tu-agencia.com.Crear una organización y el primer servidor de envío
En la interfaz de Postal, crea una organización (tu agencia) y luego un servidor de envío para tu primer cliente. Cada servidor tiene sus propias credenciales SMTP, su propia clave API y sus propios dominios de envío — es la unidad de aislamiento por cliente.
Anota el hostname SMTP, el puerto (25, 465 o 587) y las credenciales generadas: son los datos que deberás facilitar a la aplicación cliente.
Configuración de un dominio remitente
En cada servidor de envío de Postal, añade los dominios desde los que tus clientes enviarán correo. Para cada dominio, Postal genera automáticamente un par de claves RSA de 1024 bits y un selector DKIM único (formato postal-XXXXXX._domainkey).
Registros DNS a publicar para cada dominio de cliente:
SPF — añade include:spf.postal.tu-agencia.com en el registro TXT apex:
v=spf1 include:spf.postal.tu-agencia.com ~allDKIM — publica el valor TXT mostrado en la interfaz en el subdominio generado:
postal-XXXXXX._domainkey.dominio-cliente.com TXT "v=DKIM1; k=rsa; p=<clave pública>"Return Path (recomendado) — un CNAME para mejorar el seguimiento de rebotes:
psrp.dominio-cliente.com CNAME psrp.postal.tu-agencia.comPostal verifica estos registros automáticamente cada hora e indica en la interfaz si alguno falta o es incorrecto.
DMARC: la última pieza de la entregabilidad
Con SPF y DKIM configurados, añade una política DMARC en cada dominio de cliente. Empieza en modo monitorización (p=none) para recoger informes sin riesgo de bloqueo, luego endurece progresivamente hacia p=quarantine y p=reject:
_dmarc.dominio-cliente.com TXT "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1"El atributo rua envía informes agregados diarios a tu dirección. Postal produce correos alineados con SPF + DKIM: en dominios correctamente configurados, DMARC pasará desde el primer día.
Gestión de rebotes y estadísticas
Esta es la diferencia más visible entre Postal y un relay Postfix básico. En la pestaña Mensajes de cada servidor de envío, cada correo enviado se rastrea con su estado: Sent, Delivered, SoftFail, HardFail, Bounced.
Cuando se detecta un rebote, Postal:
1. Registra el motivo exacto del rechazo en el log del mensaje (p.ej. 550 5.1.1 The email account does not exist)
2. Actualiza el estado de entrega en la interfaz
3. Dispara un evento webhook MessageBounced hacia tu endpoint HTTP configurado
Un log de rebote visible en la interfaz tiene este aspecto:
[2026-10-15 09:14:22] Delivery attempt to mx1.example.com (203.0.113.10:25)
[2026-10-15 09:14:22] << 550 5.1.1 <[email protected]> User unknown
[2026-10-15 09:14:22] Message marked as HardFail (permanent)Las estadísticas por dominio agrupan, sobre ventanas deslizantes (24 h, 7 d, 30 d): volumen enviado, tasa de entrega, tasa de rebote, tasa de rechazo por filtros antispam.
Postal vs soluciones SaaS vs relay Postfix
Desplace la tabla
| Criterio | Postal (autoalojado) | Mailgun / Postmark | SMTP relay Postfix |
|---|---|---|---|
| Visibilidad | Interfaz completa: log por mensaje, log de rebotes, estadísticas por dominio | Dashboard SaaS con logs de 30 días (según plan) | Sin interfaz — solo logs del sistema |
| Coste | VPS + tiempo de administración (sin coste por correo) | Facturación por envío (aprox. 0,80-1,20 $ por 1.000 correos) | Solo VPS (sin coste de software) |
| Control | Total: IP, retención, política de rebotes, aislamiento por cliente | Parcial: políticas impuestas por el proveedor, IPs compartidas por defecto | Control total de enrutamiento, cero visibilidad |
| Límite de envío | Limitado por recursos del VPS y reputación de IP — escalable | Cuotas según plan, escalado facturado | Limitado por VPS — sin gestión nativa de cuotas por dominio |
Una infraestructura de correo bajo tu control
Postal es la herramienta que buscan las agencias cuando comprenden que Postfix solo ya no es suficiente para operar una cartera de clientes. La plataforma aporta la visibilidad que faltaba — logs estructurados, rebotes rastreados, estadísticas por dominio — sin las restricciones de precio y dependencias de los SaaS.
Un VPS con 2 vCPU, 4 GB de RAM y una IPv4 dedicada es suficiente para empezar. El puerto 25 desbloqueado y un rDNS correctamente configurado son los dos requisitos previos que muchos proveedores no cumplen por defecto — verifícalos antes de contratar.
Los artículos SMTP relay Postfix en VPS y SPF, DKIM y DMARC completan esta guía para cubrir la entregabilidad en su conjunto.