--- title: "Cómo instalar Stalwart Mail Server en Ubuntu 24.04" description: "Instala Stalwart en Ubuntu 24.04, completa el asistente web, obtén el certificado TLS, publica los registros DNS con DKIM y prueba el envío por SMTP e IMAP." category: "Email Avanzado" language: es source: https://cubepath.com/es/docs/email-avanzado/instalacion-de-stalwart-servidor-de-correo updated: 2026-09-25 --- # Cómo instalar Stalwart Mail Server en Ubuntu 24.04 Stalwart es un servidor de correo escrito en Rust que reúne en un único binario SMTP, IMAP, POP3, JMAP y ManageSieve, junto con filtro antispam, firma DKIM, certificados ACME y un panel de administración web. Al no depender de Postfix, Dovecot ni de una base de datos externa, consume pocos recursos y se administra desde un solo sitio. En este tutorial instalarás Stalwart en Ubuntu 24.04, lo configurarás con su asistente web, publicarás los registros DNS y comprobarás el envío y la recepción. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS dedicado al correo, por ejemplo un VPS de CubePath, con al menos 1 GB de RAM. - Un usuario no root con privilegios `sudo`. - Un dominio propio, en esta guía `your_domain`, con acceso a su zona DNS. El servidor usará el nombre `mail.your_domain`. - La IP pública del servidor, `your_server_ip`, con posibilidad de configurar su DNS inverso (PTR). - Salida por el puerto TCP 25 abierta. En CubePath, como en la mayoría de proveedores, el puerto 25 de salida está cerrado por defecto y se abre mediante una solicitud al soporte explicando el uso que harás del correo. - Ningún otro servicio escuchando en los puertos 25, 443, 465, 587 o 993. ## Paso 1: Preparar el DNS y el servidor Stalwart solicitará el certificado TLS a Let's Encrypt durante la configuración, así que el nombre del servidor debe resolver antes de empezar. Crea en la zona de `your_domain` un registro A `mail` que apunte a `your_server_ip` (y un AAAA si usas IPv6). Configura también el DNS inverso de la IP para que resuelva a `mail.your_domain`. En CubePath se hace desde el panel: en la página **Floating IPs** o en la pestaña de red del VPS, edita el campo **Reverse DNS** de la IP. Comprueba ambos sentidos: ```bash dig +short A mail.your_domain dig +short -x your_server_ip ``` ```output your_server_ip mail.your_domain. ``` Asigna el nombre al servidor y comprueba que puedes conectar a otros servidores por el puerto 25: ```bash sudo hostnamectl set-hostname mail.your_domain nc -vz -w 5 gmail-smtp-in.l.google.com 25 ``` ```output Connection to gmail-smtp-in.l.google.com (142.250.27.26) 25 port [tcp/smtp] succeeded! ``` Si el segundo comando termina con `timed out`, solicita la apertura del puerto antes de continuar. ## Paso 2: Abrir los puertos en el firewall Stalwart necesita estos puertos accesibles desde Internet: | Puerto | Uso | |--------|-----| | 25 | Recepción de correo de otros servidores | | 465 | Envío desde clientes con TLS implícito | | 587 | Envío desde clientes con STARTTLS | | 993 | IMAP con TLS | | 443 | Panel web, JMAP, autoconfiguración, MTA-STS y validación ACME | | 8080 | Panel web por HTTP, solo durante la configuración inicial | Ábrelos con UFW sin olvidar SSH: ```bash sudo ufw allow OpenSSH sudo ufw allow 25,465,587,993,443/tcp sudo ufw allow 8080/tcp sudo ufw enable ``` ```bash sudo ufw status ``` ```output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 25,465,587,993,443/tcp ALLOW Anywhere 8080/tcp ALLOW Anywhere ... ``` ## Paso 3: Instalar Stalwart Stalwart se distribuye con un script de instalación oficial que descarga el binario de la última versión, crea el usuario del sistema y registra el servicio systemd. Descárgalo y revísalo antes de ejecutarlo: ```bash curl --proto '=https' --tlsv1.2 -sSf https://get.stalw.art/install.sh -o install.sh less install.sh ``` Ejecútalo como root: ```bash sudo sh install.sh ``` El script sigue la jerarquía estándar de Linux: | Ruta | Contenido | |------|-----------| | `/usr/local/bin/stalwart` | Binario del servidor | | `/etc/stalwart/` | Configuración y variables de entorno | | `/var/lib/stalwart/` | Datos (buzones, índices, colas) | | `/var/log/stalwart/` | Registros | Comprueba que el servicio está en marcha: ```bash sudo systemctl status stalwart ``` ```output ● stalwart.service - Stalwart Loaded: loaded (/etc/systemd/system/stalwart.service; enabled; preset: enabled) Active: active (running) since Fri 2026-09-25 10:12:41 UTC; 20s ago ... ``` ## Paso 4: Completar el asistente de configuración En su primer arranque Stalwart funciona en modo *bootstrap*: crea una cuenta de administración temporal con una contraseña aleatoria que solo escribe una vez en el registro. Recupérala: ```bash sudo journalctl -u stalwart -n 200 | grep -A8 'bootstrap mode' ``` La salida incluye una línea con `username: admin` y la contraseña. Abre `http://your_server_ip:8080/admin` en el navegador, inicia sesión con esas credenciales y sigue las pantallas del asistente: 1. **Identidad del servidor**: escribe `mail.your_domain` como nombre del servidor y `your_domain` como dominio de correo por defecto. Deja activadas las opciones para obtener automáticamente el certificado TLS y para generar las claves de firma (DKIM). 2. **Almacenamiento**: deja RocksDB, el valor por defecto, para una instalación de un solo servidor. 3. **Directorio de cuentas**: elige el directorio interno. 4. **Registros**: elige fichero de registro (*Log File*). 5. **Gestión automática del DNS**: elige la gestión manual, salvo que tu DNS esté en uno de los proveedores que Stalwart puede actualizar por API. Al terminar, el asistente muestra la dirección y la contraseña de la cuenta de administrador definitiva. Solo se muestran una vez: guárdalas en tu gestor de contraseñas. Después reinicia el servicio para aplicar la configuración: ```bash sudo systemctl restart stalwart ``` Con el DNS manual, Let's Encrypt valida el certificado por el puerto 443 (reto TLS-ALPN-01). La emisión tarda uno o dos minutos; mientras tanto el navegador mostrará un certificado autofirmado. Comprueba después que el certificado es válido: ```bash openssl s_client -connect mail.your_domain:443 -servername mail.your_domain -brief < /dev/null ``` ```output CONNECTION ESTABLISHED Protocol version: TLSv1.3 Ciphersuite: TLS_AES_256_GCM_SHA384 Peer certificate: CN = mail.your_domain Hash used: SHA256 Signature type: ECDSA-Signature Verification: OK ``` A partir de ahora entra al panel en `https://mail.your_domain/admin` con la cuenta de administrador definitiva. Cierra el puerto 8080, que ya no necesitas: ```bash sudo ufw delete allow 8080/tcp ``` ## Paso 5: Publicar los registros DNS del dominio Stalwart genera la zona DNS completa que necesita tu dominio: MX, SPF, DKIM, DMARC, MTA-STS, TLS-RPT y los registros de autoconfiguración de clientes. En el panel, ve a **Management › Domains**, abre el menú de tres puntos de `your_domain` y elige **View DNS Zone file**. Copia los registros a tu proveedor DNS. Los imprescindibles para entregar correo son estos (los nombres de los selectores DKIM y las claves los define tu instalación, así que usa los que muestra el panel): | Tipo | Nombre | Valor | |------|--------|-------| | MX | `@` | `10 mail.your_domain.` | | TXT | `@` | `v=spf1 mx -all` | | TXT | `._domainkey` | `v=DKIM1; k=...; p=...` | | TXT | `_dmarc` | `v=DMARC1; p=reject; ...` | Si prefieres empezar con una política DMARC menos estricta mientras compruebas que todo funciona, publica `p=quarantine` o `p=none` y endurécela más adelante. Verifica que los registros se han publicado: ```bash dig +short MX your_domain dig +short TXT your_domain dig +short TXT _dmarc.your_domain ``` ```output 10 mail.your_domain. "v=spf1 mx -all" "v=DMARC1; p=reject; rua=mailto:postmaster@your_domain" ``` ## Paso 6: Crear una cuenta de correo Además de la cuenta de administrador, crea las cuentas de los usuarios desde el panel de administración, en la sección de gestión del directorio (menú **Management**), apartado de cuentas: indica el nombre de usuario, la dirección `usuario@your_domain` y una contraseña robusta. Los clientes de correo se configuran con estos datos, y la mayoría los detectan solos gracias a los registros de autoconfiguración: | Protocolo | Servidor | Puerto | Seguridad | |-----------|----------|--------|-----------| | IMAP | `mail.your_domain` | 993 | SSL/TLS | | SMTP (envío) | `mail.your_domain` | 465 | SSL/TLS | | SMTP (envío) | `mail.your_domain` | 587 | STARTTLS | | JMAP | `https://mail.your_domain` | 443 | HTTPS | Cada usuario puede además entrar en `https://mail.your_domain/account` para cambiar su contraseña, activar la verificación en dos pasos o gestionar sus filtros. ## Paso 7: Probar el envío y la recepción Instala `swaks`, una herramienta para probar servidores SMTP desde la línea de comandos: ```bash sudo apt install swaks ``` Envía un correo autenticado a una cuenta externa usando el puerto 465. Sustituye `you@example.com` por una dirección tuya en Gmail u Outlook; `swaks` te pedirá la contraseña del buzón: ```bash swaks --to you@example.com --from usuario@your_domain \ --server mail.your_domain:465 --tlsc \ --auth LOGIN --auth-user usuario@your_domain ``` En la transcripción que muestra `swaks`, busca la respuesta `235` tras el comando `AUTH` (autenticación correcta) y la respuesta `250` tras enviar el cuerpo del mensaje (mensaje aceptado para su entrega). Un código `5xx` indica el motivo del rechazo. Abre el mensaje en el destino. En Gmail, la opción **Mostrar original** debe indicar `PASS` en SPF, DKIM y DMARC. Responde al correo para comprobar también la recepción. Por último, comprueba que JMAP responde. La URL `/.well-known/jmap` devuelve la sesión JMAP del usuario: ```bash curl -s -u usuario@your_domain https://mail.your_domain/.well-known/jmap | head -c 200 ``` ```output {"capabilities":{"urn:ietf:params:jmap:core":{... ``` ## Paso 8: Mantenimiento Stalwart guarda todos los datos en `/var/lib/stalwart` y la configuración en `/etc/stalwart`. Para una copia de seguridad consistente, detén el servicio un momento y archiva ambos directorios: ```bash sudo systemctl stop stalwart sudo tar -czf /root/stalwart-$(date +%F).tar.gz /etc/stalwart /var/lib/stalwart sudo systemctl start stalwart ``` Copia el archivo resultante fuera del servidor. Para instalaciones con muchos datos, o si no puedes permitirte la parada, usa las instantáneas de disco de tu proveedor o un almacén externo como PostgreSQL con sus propias copias. Para seguir la actividad del servidor, revisa el registro del servicio y los ficheros de `/var/log/stalwart`: ```bash sudo journalctl -u stalwart -f ``` Antes de actualizar a una versión nueva, lee las notas de la versión en el repositorio de GitHub de Stalwart: algunas versiones incluyen pasos de migración de la configuración o de los datos. ## Solución de problemas **No aparece la contraseña de bootstrap en el registro.** Solo se escribe una vez, en el primer arranque. Si la has perdido, define una credencial fija descomentando la variable `STALWART_RECOVERY_ADMIN` en `/etc/stalwart/stalwart.env`, reinicia el servicio y elimina la variable cuando termines. **El certificado no se emite.** Con el DNS manual, Let's Encrypt necesita llegar al puerto 443 de `mail.your_domain`. Comprueba que el registro A apunta al servidor, que UFW permite el 443 y que ningún otro servicio (Nginx, Apache) lo ocupa: ```bash sudo ss -tlnp | grep ':443 ' ``` **Los correos salientes no llegan.** Si en el registro ves errores de conexión con tiempo agotado hacia puertos 25 remotos, la salida por el puerto 25 sigue bloqueada. Si llegan a la carpeta de spam, revisa que SPF, DKIM y DMARC den `PASS` y que el PTR coincida con `mail.your_domain`. ## Conclusión Tienes Stalwart funcionando en Ubuntu 24.04 con certificado TLS automático, DKIM, SPF y DMARC publicados, y acceso por IMAP, SMTP y JMAP desde un único servicio. Como siguientes pasos, crea el resto de cuentas y alias, programa las copias de seguridad fuera del servidor y, si vienes de otro servidor de correo, migra los buzones existentes por IMAP con una herramienta como `imapsync`.