Instalar tu propio servidor de correo con Modoboa en Debian

Publicado el Actualizado el 6 min de lectura

El instalador de Modoboa configura Postfix, Dovecot, el webmail y el SSL de una sola vez. Así instalas tu propio servidor de correo en Debian y creas los registros DNS necesarios.

¿Prefieres no dejar tu correo en manos de un proveedor gratuito y tenerlo en un servidor propio, bajo tu propio dominio? Modoboa es una de las soluciones más cómodas para eso. El instalador que trae configura Postfix, Dovecot, la base de datos, el filtro antispam, el webmail y una interfaz de administración de una sola vez.

Esta guía describe la instalación en Debian 12 y Debian 11. Debian 10 ya no recibe soporte y no debería usarse para un servidor de correo nuevo.

Requisitos

  • Un VPS propio o un servidor root con una instalación de Debian recién hecha. Recomendamos (no es obligatorio, pero sí sensato) dedicar un servidor pequeño exclusivamente al correo, porque el nombre de host y el DNS inverso se adaptan al dominio de correo.
  • Acceso root por SSH.
  • Un dominio propio en el que puedas configurar tú mismo los registros DNS.
  • Una dirección IPv4 fija para la que puedas crear un registro de DNS inverso.
  • Los puertos de correo tienen que estar accesibles: 25 (SMTP), 587 y 465 (envío por parte de tus usuarios), 143 y 993 (IMAP), además de 80 y 443 para el webmail y para la emisión del certificado.

Importante: ejecuta la instalación en un sistema recién instalado. Un servidor web ya en marcha o una base de datos existente hacen que el instalador se interrumpa con frecuencia.

Preparar el sistema

Actualiza primero la lista de paquetes y todos los paquetes instalados:

apt update && apt upgrade -y

Después instala los paquetes que el instalador espera encontrar:

apt-get install sudo git python3 mariadb-server -y

Termina la configuración de la base de datos respondiendo a las preguntas del asistente. Elige en ese momento una contraseña segura para el administrador de la base de datos:

sudo mysql_secure_installation

Definir el nombre de host

El servidor necesita un nombre de host completo que encaje con el futuro dominio de correo. Sin este paso, la instalación falla:

hostnamectl set-hostname mail.<DOMINIO>.<EXTENSION>

Lo mejor es crear ya ahora en el DNS el registro A para exactamente ese nombre. El instalador solicita más adelante un certificado de Let's Encrypt, y eso solo funciona si el nombre ya apunta a la IP de tu servidor.

Descargar el instalador de Modoboa

cd /tmp
git clone https://github.com/modoboa/modoboa-installer
cd modoboa-installer

Generar y adaptar el archivo de configuración

Deja que el instalador cree primero solo el archivo de configuración y se detenga a continuación:

python3 ./run.py --stop-after-configfile-check <DOMINIO>.<EXTENSION>

Abre el archivo generado:

nano installer.cfg

Adapta las siguientes secciones. Así el servidor obtiene un certificado SSL gratuito de Let's Encrypt y se conecta a la base de datos local:

[certificate]
generate = true
type = letsencrypt

[letsencrypt]
email = admin@<DOMINIO>.<EXTENSION>

[database]
engine = mysql
host = 127.0.0.1
install = true

Indica una dirección de correo que leas de verdad. Let's Encrypt envía ahí los avisos si una renovación no llega a producirse.

Iniciar la instalación

python3 ./run.py mail.<DOMINIO>.<EXTENSION>

El proceso tarda unos minutos. Aprovecha ese tiempo para crear los registros DNS.

Crear los registros DNS

Registro A y registro MX

El registro A apunta a la IP de tu servidor y el registro MX le indica al resto del mundo qué host acepta el correo de tu dominio. La prioridad "10" es el valor habitual cuando solo hay un servidor de correo:

Primer registro:
Subdominio: mail
Tipo: A (IPv4)
Destino: <IP-Servidor>
El resultado debería quedar así: mail.<DOMINIO>.<EXTENSION> IN A <IP-Servidor>

Segundo registro:
(Subdominio: @)
Tipo: MX
Destino: mail.<DOMINIO>.<EXTENSION>
El resultado debería quedar así: @ IN MX 10 mail.<DOMINIO>.<EXTENSION>

SPF, DKIM y DMARC

Sin estos tres registros, tus mensajes acabarán con mucha probabilidad en la carpeta de spam de los destinatarios. Los grandes proveedores ya los exigen de forma explícita.

SPF define qué servidores pueden enviar en nombre de tu dominio. Se declara como registro TXT en el dominio principal:

Tipo: TXT
Nombre: @
Valor: v=spf1 mx -all

DKIM firma criptográficamente tu correo saliente. Modoboa puede generar por sí mismo las claves de cada dominio. Después de la instalación encuentras la clave pública en la interfaz de administración, en los ajustes del dominio correspondiente. Ese valor es el que introduces como registro TXT en el DNS.

DMARC les dice a los destinatarios qué hacer con los mensajes que no superan SPF o DKIM. Empieza con una configuración de solo observación y endurécela más adelante:

Tipo: TXT
Nombre: _dmarc
Valor: v=DMARC1; p=none; rua=mailto:postmaster@<DOMINIO>.<EXTENSION>

DNS inverso (PTR)

El registro PTR resuelve tu dirección IP de vuelta al nombre de host. Muchos servidores de correo rechazan sin más las conexiones que no tienen un registro PTR coherente. Con nosotros lo defines tú mismo en el área de cliente:

"Mis Servicios" -> "Seleccionar el servidor" -> "Hacer clic en el botón Reverse DNS" -> mail.<DOMINIO>.<EXTENSION>

Lo importante es que el registro PTR y el nombre de host coincidan exactamente.

Primeros pasos después de la instalación

Si la instalación ha terminado bien, reinicia el servidor una vez:

reboot

Después llegas a la interfaz de administración en https://mail.<DOMINIO>.<EXTENSION>. Inicia sesión con la cuenta de administrador que ha creado el instalador y cambia la contraseña antes que nada. A continuación crea tu dominio y los buzones que necesites.

Después prueba en ambos sentidos: envía un mensaje desde tu nuevo servidor a un buzón externo y otro desde fuera a tu nueva dirección. La forma más rápida de comprobar que SPF, DKIM, DMARC y PTR funcionan de verdad es usar uno de los verificadores de correo gratuitos que hay en la red.

Errores frecuentes

  • La instalación se interrumpe de inmediato: el nombre de host no es un nombre de dominio completo. Compruébalo con hostname -f.
  • El certificado no se emite: el registro A de mail.tudominio no apunta al servidor, o el puerto 80 está bloqueado. Let's Encrypt valida el dominio a través del puerto 80.
  • El correo acaba en spam: por lo general falta el registro PTR, o SPF y DKIM no están configurados. Comprueba los cuatro registros antes de poner el servidor en producción.
  • El correo saliente es rechazado: puede que la dirección IP figure en una lista de bloqueo. La mayoría de los operadores ofrecen una forma de consultarlo y de solicitar la retirada.
  • El instalador informa de un error de base de datos: MariaDB todavía no se ha terminado con mysql_secure_installation, o la sección de la base de datos del archivo installer.cfg no encaja.
  • Después de un reinicio ya no funciona nada: comprueba los servicios implicados con systemctl status postfix dovecot nginx.

Un servidor de correo propio necesita más mantenimiento que otros servicios: actualizaciones, backups de los buzones y un ojo puesto en la entregabilidad. Si asumes esa tarea, a cambio obtienes el control total sobre tu comunicación.

Autor: XEfnexX (seudónimo)

Preguntas frecuentes

¿Qué versión de Debian necesito para Modoboa?
Usa Debian 12 o Debian 11 en una instalación recién hecha. Debian 10 ya no recibe soporte y no debería emplearse para un servidor de correo nuevo.
¿Por qué acaban mis mensajes en la carpeta de spam?
En la mayoría de los casos falta el registro de DNS inverso, o no hay registros SPF, DKIM y DMARC configurados. Comprueba esos cuatro puntos antes de poner el servidor en producción.
¿Puedo instalar Modoboa en un servidor que ya aloja una web?
Lo desaconsejamos. El instalador espera un sistema limpio y se interrumpe con frecuencia cuando ya hay un servidor web o una base de datos en marcha.
¿Qué puertos tengo que abrir?
El puerto 25 para la recepción de correo, 587 y 465 para el envío por parte de tus usuarios, 143 y 993 para IMAP, además de 80 y 443 para el webmail y la emisión del certificado SSL.
¿Cómo configuro el registro de DNS inverso?
El registro PTR lo defines tú mismo en el área de cliente, en Mis Servicios: selecciona el servidor, abre Reverse DNS e introduce ahí el nombre de host de tu servidor de correo.

Servidor de correo Modoboa Postfix Dovecot Debian SPF-DKIM-DMARC Reverse-DNS