Por qué un servidor de correo en VPS en 2026
Los grandes proveedores de correo — Gmail y Outlook a la cabeza — han endurecido sus reglas de autenticación. Gmail activó el rechazo estricto de remitentes no conformes en noviembre de 2025; Microsoft Outlook siguió en mayo de 2025 para volúmenes superiores a 5.000 mensajes diarios. Un correo enviado sin SPF, DKIM y DMARC correctamente configurados acaba hoy en spam o rebota.
Para agencias y desarrolladores que gestionan múltiples dominios de clientes, un servidor de correo self-hosted en VPS ofrece una ventaja concreta: infraestructura centralizada, reputación de IP controlada y control total sobre los registros DNS de autenticación. El coste de una reputación de IP deteriorada — semanas de calentamiento, o incluso una lista negra — justifica invertir en una configuración rigurosa desde el primer envío.
Lo que aporta Stalwart frente a una stack clásica
- Binario único: SMTP, IMAP4, POP3, JMAP, ManageSieve y WebAdmin en un solo proceso — sin Docker Compose de múltiples contenedores que orquestar.
- Escrito en Rust: seguridad de memoria por diseño, bajo consumo de RAM, arranque rápido.
- SPF, DKIM y DMARC integrados: verificación entrante y firma saliente configurables desde la interfaz WebAdmin, sin plugins de terceros.
- JMAP: protocolo moderno que reduce la latencia del cliente frente a IMAP solo — soportado de forma nativa por Stalwart.
- AGPL-3.0: código auditable, sin dependencia de un servicio cloud propietario.
- WebAdmin integrada: gestión de dominios, cuentas, reglas de filtrado e informes DMARC desde el navegador.
Requisitos previos antes de empezar
Stalwart funciona en cualquier VPS Linux de 64 bits. Para un uso en producción estable, planificar al menos 2 vCPU y 2 GB de RAM — el binario en sí es ligero, pero la gestión de colas SMTP y la indexación IMAP consumen memoria bajo carga.
Dos puntos bloqueantes a verificar antes de la instalación:
El puerto 25 debe estar abierto hacia el exterior. Muchos proveedores de hosting bloquean este puerto en los planes VPS de entrada para limitar el spam. Verificar con el proveedor que el puerto 25 de salida esté desbloqueado — sin él, Stalwart puede recibir correo pero no puede enviarlo a otros servidores.
La IP del VPS debe tener un PTR (registro DNS inverso) correcto. Un PTR ausente o inconsistente es una de las principales causas de rechazo por parte de los grandes proveedores de correo. La mayoría de los proveedores VPS permiten definir este PTR desde su panel de control.
Lista de requisitos previos
- VPS Linux de 64 bits (Debian 12 o Ubuntu 22.04 recomendados), mínimo 2 vCPU / 2 GB RAM.
- IP dedicada — nunca una IP compartida para un servidor de correo en producción.
- PTR DNS configurado en la IP del VPS: debe coincidir con el hostname del servidor de correo.
- Puerto 25 de salida desbloqueado por el proveedor de hosting (verificar antes de contratar).
- Puertos 465 (SMTPS), 587 (submission), 993 (IMAPS) y 143 (IMAP) abiertos en el cortafuegos.
- Un nombre de dominio con acceso a la gestión de registros DNS (añadir registros TXT para SPF, DKIM, DMARC).
- Un certificado TLS válido — Let's Encrypt mediante ACME es soportado de forma nativa por Stalwart.
Instalación de Stalwart en un VPS
Stalwart proporciona un script de instalación oficial que descarga el binario precompilado, crea un usuario de sistema dedicado, instala un servicio systemd y guía la configuración inicial en modo interactivo.
Despliegue paso a paso
Descargar y ejecutar el script de instalación
Conectarse al VPS como root o con
sudo, y ejecutar el script oficial:curl -fsSL https://get.stalw.art/install.sh | sudo bashEl script detecta la arquitectura, descarga el binario de la última versión estable (v0.16.19 en el momento de escribir este artículo), crea el usuario
stalwart-mail, instala el binario en/usr/local/bin/stalwart-maily genera la configuración inicial en/etc/stalwart/.Configurar el dominio y los parámetros SMTP
El script lanza un asistente interactivo. Introducir el nombre de dominio principal (
mail.tudominio.com), el dominio de envío y la ruta de almacenamiento de los buzones. La configuración se escribe en TOML en/etc/stalwart/config.toml.Para activar Let's Encrypt, asegurarse de que el puerto 443 sea accesible y que el registro DNS
mail.tudominio.comapunte a la IP del VPS antes de ejecutar el script.Iniciar el servicio y verificar los logs
sudo systemctl enable --now stalwart-mail sudo systemctl status stalwart-mail journalctl -u stalwart-mail -fEl servicio escucha en los puertos configurados. Los logs indican si el certificado TLS se ha obtenido y si los sockets SMTP e IMAP están activos.
Configurar SPF, DKIM y DMARC en DNS
Iniciar sesión en la WebAdmin (puerto 8080 por defecto, a proteger detrás de un proxy inverso o por lista de IPs permitidas) y navegar a Gestión → Dominios.
Stalwart genera la clave DKIM y muestra los registros DNS a añadir. Publicar en el gestor DNS:
# SPF — autorizar al VPS a enviar por el dominio tudominio.com. TXT "v=spf1 mx a:mail.tudominio.com ~all" # DKIM — clave pública generada por Stalwart (valor mostrado en WebAdmin) default._domainkey.tudominio.com. TXT "v=DKIM1; k=rsa; p=<clave pública>" # DMARC — política de rechazo con dirección de informe _dmarc.tudominio.com. TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"Comenzar con
p=none(modo supervisión) durante 48 a 72 horas, analizar los informes agregados, luego pasar ap=quarantiney después ap=reject.Crear las primeras cuentas y probar el envío
En la WebAdmin, crear un dominio y las cuentas de usuario asociadas. Probar el envío con
swaksdesde el VPS:swaks --to [email protected] --from [email protected] \ --server mail.tudominio.com --port 587 \ --auth LOGIN --auth-user [email protected]Verificar el mensaje recibido y la cabecera
Authentication-Results— debe mostrarspf=pass,dkim=passydmarc=pass.Proteger la WebAdmin y endurecer el cortafuegos
La WebAdmin no debe estar expuesta públicamente. Dos opciones: restringirla a una IP de gestión en la configuración de Stalwart, o ponerla detrás de un proxy inverso nginx con autenticación básica.
En el cortafuegos, permitir solo los puertos estrictamente necesarios:
# Ejemplo con ufw ufw allow 25/tcp # SMTP entrante ufw allow 465/tcp # SMTPS ufw allow 587/tcp # Submission ufw allow 993/tcp # IMAPS ufw allow 143/tcp # IMAP (si es necesario) ufw deny 8080/tcp # WebAdmin — acceso restringido, no públicoConsultar el artículo sobre hardening de VPS Linux para la configuración completa del cortafuegos y la gestión de claves SSH.
Reputación de IP: el factor más ignorado
Una instalación técnicamente perfecta no es suficiente si la IP del VPS ya figura en una base de datos de reputación negativa (Spamhaus, Barracuda, SORBS). Antes de pasar a producción, verificar la IP en MXToolbox Blacklists y en Spamhaus Checker. Si la IP está listada, abrir una solicitud de eliminación en cada base de datos — un proceso que puede llevar entre 24 horas y dos semanas. Solicitar una IP nueva al proveedor de hosting a veces es más rápido.
Stalwart vs Mailcow: dos enfoques del servidor de correo self-hosted
Desplace la tabla
| Criterio | Stalwart Mail Server | Mailcow |
|---|---|---|
| Arquitectura | Binario único Rust (un solo proceso) | Stack Docker de múltiples contenedores (Postfix, Dovecot, Rspamd, SOGo...) |
| Protocolos | SMTP, IMAP4, POP3, JMAP, ManageSieve, CalDAV, CardDAV | SMTP, IMAP4, POP3, ManageSieve, CalDAV, CardDAV |
| RAM mínima recomendada | 2 GB en producción | 4 a 6 GB recomendados (múltiples contenedores) |
| SPF/DKIM/DMARC | Integrados de forma nativa en el binario | Vía Rspamd y OpenDKIM (configuración separada) |
| Interfaz de administración | WebAdmin integrada (HTTP, REST API) | SOGo + interfaz Mailcow dedicada |
| Licencia | AGPL-3.0 | MIT (pero dependencias con licencias variadas) |
| Madurez | Estable, v0.16.x, pre-1.0 | Maduro, en producción desde 2016 |
Errores comunes que hay que evitar
PTR ausente o inconsistente. Es la causa más frecuente de rechazo silencioso por Gmail y Outlook. El PTR debe resolver al hostname utilizado en el SMTP EHLO, que a su vez debe coincidir con el dominio de envío. Verificar con dig -x <IP-del-VPS>.
Puerto 25 bloqueado por el proveedor de hosting. Algunos proveedores VPS bloquean el puerto 25 de salida por defecto para contener el spam. Stalwart puede recibir correo, pero el envío a servidores externos falla. La verificación previa evita descubrir este bloqueo tras la instalación.
Pasar demasiado rápido a p=reject en DMARC. Una política DMARC restrictiva aplicada sin un período de supervisión previo puede bloquear flujos legítimos (boletines, formularios de contacto) si SPF o DKIM no cubren todos los caminos de envío. Las primeras 48 a 72 horas en p=none con informes agregados son necesarias.
Descuidar el calentamiento de la IP. Una IP nueva que envía repentinamente cientos de mensajes al día es señalada como sospechosa por los filtros antispam. Aumentar el volumen progresivamente durante una o dos semanas, comenzando por los destinatarios más comprometidos.
Actualizaciones y mantenimiento
Stalwart publica actualizaciones periódicas en su repositorio de GitHub. La v0.16.19 (agosto de 2026) es la versión estable actual — el proyecto apunta a v1.0 tras finalizar el esquema de base de datos y las optimizaciones de rendimiento.
Para actualizar el binario:
sudo systemctl stop stalwart-mail
sudo curl -fsSL https://get.stalw.art/install.sh | sudo bash
sudo systemctl start stalwart-mailLos archivos de configuración en /etc/stalwart/ y los datos en el directorio de almacenamiento no se sobreescriben con el script de actualización. Mantener una copia de seguridad de las claves DKIM antes de cualquier operación — perder la clave privada DKIM obliga a rotar el registro DNS y esperar un período de propagación.
Seguir las releases en github.com/stalwartlabs/stalwart/releases para estar informado de los parches de seguridad.