Por qué Stalwart para un parque multidominio
La gestión del correo para varios clientes tropieza siempre con el mismo escollo: cada solución popular impone o bien una instancia por dominio, o bien una configuración compartida en la que el aislamiento sigue siendo parcial. Stalwart se diseñó desde el origen para el multi-tenant: un dominio es un objeto de primer nivel en su modelo de datos, no una variante de configuración. El resultado es una arquitectura en la que añadir un cliente se reduce a crear un dominio mediante la API o la interfaz web, sin tocar el binario, sin reiniciar ningún contenedor y sin margen de error en la separación de los datos.
Para una agencia que gestiona de 5 a 50 clientes, es la diferencia entre una infraestructura que crece linealmente (una instancia más por cliente) y una infraestructura que escala de forma plana — un VPS, una instancia, N clientes.
Lo que Stalwart aporta en concreto
- Binario único, sin necesidad de Docker — un solo archivo compilado en Go, sin dependencias del sistema, colocable directamente en cualquier distribución Linux.
- Multi-tenant nativo — dominios, buzones, alias y cuotas gestionados por objeto, con aislamiento estricto de los datos entre clientes.
- JMAP (RFC 8620) como protocolo de primer nivel — el protocolo moderno de sincronización de correo, además de los clásicos IMAP4 y POP3.
- WebAdmin integrado — interfaz de administración HTTPS en el puerto 8080, sin herramienta de terceros que desplegar.
- API JMAP para la automatización — creación de dominios y cuentas scriptable, adaptada a los flujos de onboarding de clientes de una agencia.
- Soporte ACME/Let's Encrypt nativo — renovación TLS automática sin Certbot ni reverse proxy obligatorio.
- Licencia AGPL-3.0 — código fuente verificable, sin dependencia propietaria para la versión comunitaria.
Requisitos previos antes de la instalación
Stalwart es notablemente más ligero que Mailcow. Para un uso ligero (de 1 a 5 dominios, unas decenas de buzones), cuente con 1 vCPU y 1 GB de RAM. Para un parque de varias decenas de dominios de clientes con tráfico activo, 2 vCPU y 2 GB de RAM constituyen la configuración recomendada — es el dimensionamiento que la documentación oficial cita para un uso multidominio.
En cuanto a la red, cuatro puertos deben estar abiertos en entrada: 25 (SMTP, recepción MX), 465 (SMTPS/submission), 993 (IMAPS) y 443 (HTTPS — WebAdmin y JMAP). El puerto 4190 es necesario para Sieve (filtros de servidor). Su VPS debe disponer de una IPv4 dedicada y de un rDNS configurado que apunte al nombre de host del servidor — indispensable para la entregabilidad. Por último, se requiere un nombre de dominio con acceso a la zona DNS para colocar los registros MX, SPF, DKIM y DMARC.
Instalación de Stalwart Mail Server
Descargar el binario
Conéctese por SSH a su VPS. Descargue la última versión estable desde el repositorio oficial:
curl -fsSL https://github.com/stalwartlabs/stalwart/releases/latest/download/stalwart-linux-x86_64.tar.gz | tar -xz -C /usr/local/bin/ chmod +x /usr/local/bin/stalwartPara un servidor ARM (Ampere, AWS Graviton), sustituya
x86_64poraarch64.Lanzar el asistente de instalación
Stalwart ofrece un asistente interactivo que configura los directorios de datos, genera los certificados TLS iniciales y crea la primera cuenta de administrador:
sudo stalwart --initEl asistente le pide el nombre de host del servidor (p. ej.
mail.votre-domaine.com), la ruta de los datos (por defecto/opt/stalwart-mail), el modo TLS (ACME recomendado) y la contraseña de administrador. Al terminar el init, los archivos de configuración quedan en/opt/stalwart-mail/etc/.Crear la unidad systemd
Para que Stalwart arranque automáticamente, cree la unidad de servicio:
sudo tee /etc/systemd/system/stalwart-mail.service << 'EOF' [Unit] Description=Stalwart Mail Server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/stalwart --config /opt/stalwart-mail/etc/config.toml Restart=on-failure User=stalwart [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload && sudo systemctl enable --now stalwart-mailCree previamente el usuario dedicado:
sudo useradd -r -s /bin/false stalwart && sudo chown -R stalwart /opt/stalwart-mail.Abrir los puertos en el firewall
En Ubuntu/Debian con UFW:
sudo ufw allow 25/tcp comment 'SMTP' sudo ufw allow 465/tcp comment 'SMTPS' sudo ufw allow 993/tcp comment 'IMAPS' sudo ufw allow 443/tcp comment 'HTTPS WebAdmin/JMAP' sudo ufw allow 4190/tcp comment 'Sieve' sudo ufw reloadSi su VPS está detrás de un firewall cloud (Hetzner, OVH…), replique estas reglas en el panel de control.
Añadir el primer dominio desde el WebAdmin
Abra
https://mail.votre-domaine.com:8080en su navegador y conéctese con la cuenta de administrador creada en el paso 2. En Gestión → Dominios, haga clic en Añadir un dominio, escribavotre-domaine.comy valide. Stalwart genera automáticamente los registros DNS que hay que colocar (MX, SPF, DKIM, DMARC) y los muestra en la interfaz — cópielos en su zona DNS.Crear los buzones y validar
En Gestión → Cuentas, cree una cuenta de usuario asociándole el dominio añadido. Pruebe la recepción con:
swaks --to [email protected] --server mail.votre-domaine.com --port 25Luego pruebe la conexión IMAP desde Thunderbird o el cliente que prefiera — servidor
mail.votre-domaine.com, puerto 993, SSL/TLS. Para un cliente adicional, repita el paso 5 con un nuevo dominio: no hace falta reiniciar el servicio.
Configuración posterior a la instalación
Reverse proxy. Si desea hacer pasar el WebAdmin y JMAP por detrás de Nginx (para compartir el puerto 443 con otros servicios), configure un bloque stream para los protocolos de correo (25, 465, 993) y un bloque server HTTPS para /jmap y el WebAdmin. Stalwart también acepta conexiones directas sin proxy — la elección depende de su arquitectura.
Copia de seguridad. Los datos de Stalwart residen en /opt/stalwart-mail/data/. Un snapshot diario de ese directorio — comprimido y transferido fuera del sitio — basta para una restauración completa. Con el plan {{vps.power.name}} de ServOrbit, las copias de seguridad semanales están incluidas; active las copias diarias para un RPO adaptado al correo.
Dominios adicionales. Cada dominio de cliente se añade desde el WebAdmin o mediante la API JMAP. El comando stalwart expone además un subcomando CLI para las operaciones por lotes — útil para el onboarding automatizado de un nuevo cliente.
Endurecimiento: limitar el acceso al WebAdmin
El WebAdmin escucha por defecto en 0.0.0.0:8080. En producción, restrinja el acceso a sus IP de administración:
sudo ufw deny 8080
sudo ufw allow from <votre-ip-admin> to any port 8080Active también la autenticación de dos factores (TOTP) para la cuenta de administrador desde Seguridad → Autenticación en el WebAdmin. Para el acceso remoto en una red no segura, prefiera un túnel SSH antes que una exposición directa del puerto 8080.
Solución de los errores más frecuentes
Literal exceeds the maximum request size of X bytes (IMAP). Este mensaje aparece cuando Thunderbird u otro cliente IMAP intenta subir un archivo adjunto voluminoso mediante el comando APPEND. Stalwart corta la conexión y el cliente interpreta los datos siguientes como comandos IMAP. Aumente el límite en /opt/stalwart-mail/etc/config.toml, en la clave imap.request.max-size, y reinicie el servicio.
Registro DKIM rechazado por el registrador. Si su proveedor DNS (Vultr, algunos registradores) no consigue crear la clave RSA DKIM porque supera los 255 caracteres, divídala en dos segmentos entre comillas dentro del valor TXT: "v=DKIM1; k=rsa; p=MIIBIj..." "AQAB...". Stalwart los concatena al leerlos.
Dominio Punycode rechazado en la creación. Las versiones anteriores a la v0.16 rechazaban los dominios internacionalizados ya codificados en A-label (p. ej. xn--mondomaine-o2a.com). Introduzca el dominio en Unicode (mondomainé.com) y deje que Stalwart efectúe la conversión.
El servicio no arranca tras una actualización. Compruebe que el archivo de configuración es compatible con la nueva versión: stalwart --check-config /opt/stalwart-mail/etc/config.toml. Las migraciones del esquema de configuración están documentadas en las notas de release en GitHub.
Conexiones IMAP rechazadas desde un cliente móvil. Compruebe que el certificado TLS es válido y no ha caducado (openssl s_client -connect mail.votre-domaine.com:993) y que el puerto 993 está realmente abierto en UFW y en el firewall de red de su VPS.
Para ir más lejos
Stalwart cubre la infraestructura de correo — recepción, envío y almacenamiento. Para que sus correos lleguen a la bandeja de entrada y no al spam, los registros SPF, DKIM y DMARC deben estar correctamente configurados y probados: consulte nuestra guía sobre la entregabilidad del correo profesional.
Si su parque cPanel envía correo transaccional (confirmaciones de pedido, alertas) y desea centralizar el envío sin mover los buzones, la guía de SMTP relay con Postfix cubre esta arquitectura complementaria. Para las agencias que migran una cartera de clientes desde Google Workspace o Microsoft 365 hacia servidores autoalojados, el artículo sobre Mailcow detalla los pasos de la migración IMAP.