Mail-in-a-Box convierte un servidor Ubuntu recién instalado en un servidor de correo completo con un único instalador: Postfix y Dovecot para el correo, Roundcube como webmail, Nextcloud para contactos y calendarios, SpamAssassin, un servidor DNS propio y certificados de Let's Encrypt, todo gestionado desde un panel web. En este tutorial prepararás el servidor, ejecutarás el instalador, configurarás el DNS del dominio, crearás buzones y comprobarás que las copias de seguridad funcionan.
La contrapartida de esa sencillez es que Mail-in-a-Box toma el control completo de la máquina: configura el firewall, Nginx y el DNS a su manera, y solo admite una versión concreta de Ubuntu. Si necesitas algo más flexible, Mailcow es la alternativa habitual.
Requisitos previos
Para seguir esta guía necesitas:
- Un servidor nuevo con Ubuntu 22.04 LTS de 64 bits, sin ningún otro servicio instalado, por ejemplo un VPS de CubePath. Es la única versión que admite Mail-in-a-Box en este momento; comprueba en mailinabox.email si ya hay soporte para una versión posterior antes de elegir el sistema.
- Al menos 1 GB de RAM (el mínimo absoluto es 512 MB).
- Un usuario no root con privilegios
sudo. - Un dominio propio, en esta guía
your_domain, con acceso al panel del registrador. El servidor se llamarábox.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.
Paso 1: Preparar el servidor
Comprueba primero que el servidor puede conectar con otros servidores de correo por el puerto 25:
nc -vz -w 5 gmail-smtp-in.l.google.com 25
Connection to gmail-smtp-in.l.google.com (142.250.27.26) 25 port [tcp/smtp] succeeded!
Si el comando termina con timed out, solicita la apertura del puerto antes de seguir: sin él, el servidor podrá recibir correo pero no enviarlo.
Actualiza el sistema e instala curl si no lo tienes:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl
Configura el DNS inverso de la IP para que resuelva a box.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 el resultado cuando se haya aplicado:
dig +short -x your_server_ip
box.your_domain.
Paso 2: Ejecutar el instalador
El método oficial de instalación es un script que clona el repositorio de Mail-in-a-Box y lanza la configuración. Descárgalo primero para poder revisarlo:
curl -fsSL https://mailinabox.email/setup.sh -o setup.sh
less setup.sh
Ejecútalo con sudo -E, como indica la documentación oficial:
sudo -E bash setup.sh
El instalador hace varias preguntas en modo texto:
- Email address: la primera dirección de correo del servidor, por ejemplo
admin@your_domain. Será también la cuenta de administrador. - Hostname: el nombre del servidor. Acepta la propuesta
box.your_domain. - Timezone: tu zona horaria, por ejemplo
Europe/Madrid. - Password: la contraseña de la cuenta de administrador. Usa una contraseña robusta.
La instalación tarda entre 10 y 20 minutos. Al terminar, el script muestra la dirección del panel de administración y la huella del certificado autofirmado provisional:
-----------------------------------------------
Your Mail-in-a-Box is running.
Please log in to the control panel for further instructions at:
https://your_server_ip/admin
You will be alerted that the website has an invalid certificate. Check that
the certificate fingerprint matches:
XX:XX:XX:...
Mail-in-a-Box también ha activado UFW con las reglas que necesita. Compruébalo:
sudo ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
53 ALLOW Anywhere
25/tcp ALLOW Anywhere
587/tcp ALLOW Anywhere
993/tcp ALLOW Anywhere
...
Paso 3: Configurar el DNS del dominio
Mail-in-a-Box incluye un servidor DNS autoritativo y genera él mismo todos los registros de correo (MX, SPF, DKIM, DMARC, MTA-STS, autoconfig). Tienes dos formas de publicarlos.
Opción A: usar el DNS de Mail-in-a-Box (recomendada)
Es la opción que menos mantenimiento requiere, porque el servidor actualiza sus propios registros. En el panel del registrador de your_domain:
- Crea los registros de pegamento (glue records)
ns1.box.your_domainyns2.box.your_domain, ambos apuntando ayour_server_ip. - Cambia los servidores de nombres del dominio a
ns1.box.your_domainyns2.box.your_domain.
Cada registrador llama a los glue records de forma distinta ("host records", "nameservers personalizados" o "child nameservers").
Opción B: usar tu DNS actual
Si prefieres mantener el DNS en tu proveedor actual, entra en el panel de Mail-in-a-Box y abre System > External DNS. La página lista todos los registros que debes crear, con su nombre, tipo y valor exactos, incluida la clave DKIM. Cópialos uno a uno a tu zona DNS. En este caso, cualquier cambio futuro que muestre esa página tendrás que replicarlo tú.
Sea cual sea la opción, comprueba que los registros principales ya resuelven:
dig +short MX your_domain
dig +short A box.your_domain
dig +short TXT mail._domainkey.your_domain
10 box.your_domain.
your_server_ip
"v=DKIM1; h=sha256; k=rsa; s=email; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
Paso 4: Obtener los certificados TLS
Con el DNS apuntando al servidor, sustituye el certificado autofirmado por uno de Let's Encrypt. Inicia sesión en el panel con la dirección y la contraseña de administrador, abre System > TLS (SSL) Certificates y pulsa Provision. Mail-in-a-Box solicita certificados para box.your_domain y el resto de nombres que gestiona, y los renueva automáticamente.
A partir de ahora accede al panel por su nombre, https://box.your_domain/admin. Comprueba que el certificado es válido:
openssl s_client -connect box.your_domain:993 -brief < /dev/null
CONNECTION ESTABLISHED
Protocol version: TLSv1.3
Ciphersuite: TLS_AES_256_GCM_SHA384
Peer certificate: CN = box.your_domain
Hash used: SHA256
Signature type: RSA-PSS
Verification: OK
Paso 5: Revisar el estado del sistema
Abre System > Status Checks. Mail-in-a-Box comprueba el DNS, el DNS inverso, los certificados, los puertos abiertos, las listas negras y si hay una versión nueva disponible. Todas las comprobaciones deberían aparecer en verde. Los avisos más habituales tras una instalación nueva son:
- El DNS inverso no coincide con
box.your_domain: revisa el paso 1. - Los registros DNS todavía no se han propagado: espera unos minutos y recarga la página.
- La IP aparece en una lista negra: suele pasar con IPs reutilizadas; solicita la baja en la lista correspondiente.
El panel envía además un resumen diario al administrador cuando cambia alguna de estas comprobaciones.
Paso 6: Crear buzones y configurar los clientes
Para añadir usuarios, abre Mail > Users en el panel, escribe la dirección (usuario@your_domain) y una contraseña, y pulsa Add User. Desde Mail > Aliases puedes crear alias y redirecciones. Si quieres alojar más dominios, basta con crear un usuario o alias en el dominio nuevo y publicar sus registros DNS.
Los usuarios disponen de estos servicios:
| Servicio | Dirección |
|---|---|
| Webmail (Roundcube) | https://box.your_domain/mail |
| Contactos y calendario (Nextcloud) | https://box.your_domain/cloud |
| CardDAV / CalDAV | https://box.your_domain/cloud/remote.php/dav |
Y los clientes de correo se configuran así:
| Protocolo | Servidor | Puerto | Seguridad |
|---|---|---|---|
| IMAP | box.your_domain | 993 | SSL/TLS |
| SMTP (envío) | box.your_domain | 465 | SSL/TLS |
| SMTP (envío) | box.your_domain | 587 | STARTTLS |
El usuario es siempre la dirección de correo completa. La página Mail > Instructions del panel muestra estos datos adaptados a tu servidor.
Para verificar el conjunto, entra en el webmail con un usuario, envía un correo a una cuenta de Gmail y responde desde ella. En Gmail, la opción Mostrar original debe indicar PASS en SPF, DKIM y DMARC. Si algo falla, el registro de Postfix indica el motivo:
sudo tail -n 50 /var/log/mail.log
Paso 7: Comprobar las copias de seguridad
Mail-in-a-Box hace una copia de seguridad cifrada e incremental cada noche de todo el directorio /home/user-data, que contiene el correo, los usuarios, Nextcloud y la configuración. Por defecto la guarda en el propio servidor, en /home/user-data/backup/encrypted, lo que no te protege si pierdes la máquina.
Abre System > Backup Status para ver las copias existentes y elegir otro destino: un servidor remoto por rsync o un almacenamiento compatible con S3. Comprueba que ya hay copias:
sudo ls -lh /home/user-data/backup/encrypted
Las copias están cifradas con la clave de /home/user-data/backup/secret_key.txt. Sin ella no podrás restaurarlas, así que guárdala fuera del servidor, por ejemplo en tu gestor de contraseñas:
sudo cat /home/user-data/backup/secret_key.txt
Importantesi el servidor se pierde, la clave se pierde con él. Cópiala ahora, no cuando la necesites.
Paso 8: Actualizar Mail-in-a-Box
Cuando Status Checks avise de que hay una versión nueva, actualiza volviendo a ejecutar el instalador. Descarga la versión actual del script y ejecútalo igual que en la instalación:
curl -fsSL https://mailinabox.email/setup.sh -o setup.sh
sudo -E bash setup.sh
El instalador conserva tus datos y tu configuración; solo repite las preguntas cuyo valor no pueda deducir. Si solo quieres volver a aplicar la configuración de la versión instalada (por ejemplo, tras tocar algo a mano por error), ejecuta:
sudo mailinabox
Instala también las actualizaciones de seguridad de Ubuntu con regularidad (sudo apt update && sudo apt upgrade); Mail-in-a-Box deja activadas las actualizaciones automáticas de seguridad.
Solución de problemas
El instalador aborta al principio. Mail-in-a-Box comprueba la versión del sistema y la memoria disponible. Si no usas Ubuntu 22.04 de 64 bits o tienes menos de 512 MB de RAM, se detiene sin instalar nada.
Los correos salientes se quedan en cola. Consulta la cola con sudo postqueue -p. Si los mensajes muestran Connection timed out hacia servidores remotos, la salida por el puerto 25 sigue bloqueada.
El panel muestra 502 Bad Gateway. El servicio de gestión no está en marcha. Reinícialo y revisa su registro:
sudo systemctl restart mailinabox
sudo journalctl -u mailinabox -n 50
Instalé otro software y algo dejó de funcionar. Mail-in-a-Box sobrescribe la configuración de Nginx, Postfix y el resto de servicios cada vez que se ejecuta. No instales otras aplicaciones en el mismo servidor; ejecuta sudo mailinabox para devolver el sistema a su configuración esperada.
Conclusión
Con Mail-in-a-Box tienes un servidor de correo propio con webmail, contactos, calendario, DNS y copias de seguridad cifradas, gestionado casi por completo desde su panel. Como siguientes pasos, envía las copias a un destino externo, revisa Status Checks tras cada actualización y, cuando los informes DMARC confirmen que todo tu correo pasa la autenticación, considera endurecer la política desde System > Custom DNS.
