le preguntamos a Gemini, la inteligencia artificial de Google cómo instalar y configurar QMail en linux
Explicanos detalladamente cómo instalar y configurar QMail en linuxQMail es un Agente de Transferencia de Correo (MTA) reconocido por su arquitectura modular con separación de privilegios, diseñada por Daniel J. Bernstein para garantizar máxima seguridad y evitar los agujeros de seguridad históricos de Sendmail.
A diferencia de Postfix o Sendmail (que corren como un proceso monolítico o con pocos demonios), QMail divide el procesamiento de correos en múltiples binarios pequeños e independientes (qmail-send, qmail-smtpd, qmail-inject, qmail-rspawn, qmail-lspawn) corriendo bajo usuarios de sistema específicos sin privilegios de root.
A continuación se detalla el proceso completo de compilación, creación de usuarios, configuración del directorio de control /var/qmail y puesta en marcha en Linux.
Requisitos Previos
Un servidor Linux con herramientas de compilación (build-essential, gcc, make).
Un nombre de dominio FQDN bien resuelto (ej. mail.tudominio.com).
Acceso como usuario root.
1.1. Crear grupos y usuarios de sistema obligatorios:
Creación de cuentas aisladas por seguridad.
QMail no funcionará si no existen sus usuarios y grupos de sistema dedicados. Cada binario se ejecuta bajo la identidad de un usuario distinto para limitar el impacto si un componente es comprometido.Ejecuta los siguientes comandos para crear los grupos y usuarios con sus UID/GID correspondientes:
Bash
# Crear los grupos de sistema
sudo groupadd nofiles
sudo groupadd qmail
# Crear los usuarios asociados al grupo nofiles
sudo useradd -g nofiles -d /var/qmail/alias -s /nonexistent alias
sudo useradd -g nofiles -d /var/qmail -s /nonexistent qmaild
sudo useradd -g nofiles -d /var/qmail -s /nonexistent qmaill
sudo useradd -g nofiles -d /var/qmail -s /nonexistent qmailp
# Crear los usuarios asociados al grupo qmail
sudo useradd -g qmail -d /var/qmail -s /nonexistent qmailq
sudo useradd -g qmail -d /var/qmail -s /nonexistent qmailr
sudo useradd -g qmail -d /var/qmail -s /nonexistent qmails
2.2. Descargar y parchear el código fuente (netqmail):
Requerido para compatibilidad con compiladores de 64 bits.
El código fuente original de QMail (v1.03) fue escrito en los años 90. En distribuciones Linux modernas de 64 bits (gcc moderno y glibc), la compilación directa fallará si no se aplican parches de compatibilidad (usualmente provistos por el paquete consolidado netqmail).
Bash
cd /usr/local/src
# Descargar el paquete consolidado netqmail
sudo wget https://qmail.org/netqmail-1.06.tar.gz
sudo tar -xzvf netqmail-1.06.tar.gz
cd netqmail-1.06
(En sistemas modernos de 64 bits con gcc estricto, es posible que necesites corregir el tipo de retorno en error.h agregando #include
3.3. Compilar e instalar binarios:
Bash
Si el comando finaliza sin errores, el compilador habrá generado el árbol completo de directorios en /var/qmail con los permisos exactos asignados a cada usuario de sistema (qmailq, qmailr, etc.).
4.4. Configurar los archivos de dominio en /var/qmail/control:
Archivos críticos dentro de /var/qmail/control.
Toda la lógica de QMail reside en archivos de texto dentro de /var/qmail/control/. Puedes generar la configuración base automáticamente usando el hostname del sistema, o crear los archivos manualmente:
Bash
# Para intentar auto-configurar basándose en el FQDN del sistema:
sudo ./config-fast mail.tudominio.com
Esto poblará los siguientes archivos esenciales dentro de /var/qmail/control/:
Reemplaza el formato mbox tradicional
QMail es el creador del formato Maildir (un archivo individual por correo), que es mucho más seguro y eficiente que el archivo monolítico mbox.
Definir Maildir como el método de entrega por defecto:
Bash
sudo echo './Maildir/' > /var/qmail/control/defaultdelivery
Crear Maildir en la plantilla de usuarios (/etc/skel):
Bash
sudo maildirmake /etc/skel/Maildir
Crear los alias de correo obligatorios para el sistema:
QMail exige definir quién recibirá los correos dirigidos a root, postmaster y mailer-daemon.
Bash
cd /var/qmail/alias
sudo touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# Reenvía todos los avisos de root a un usuario real (ejemplo: admin)
sudo echo "&admin" > .qmail-root
sudo echo "&admin" > .qmail-postmaster
sudo chmod 644 .qmail-*
6
6. Iniciar los servicios de QMail
Supervisión con daemontools o scripts de inicio
QMail tradicionalmente utiliza daemontools y tcpserver (ucspi-tcp) para la gestión de procesos y el daemon SMTP en el puerto 25.
Para una prueba rápida directa del motor de colas, puedes invocar el script de arranque base:
Bash
# Iniciar la cola de procesamiento de correo de QMail con formato Maildir
sudo /var/qmail/rc
Para exponer el servicio SMTP en el puerto 25 escuchando peticiones entrantes, se invoca tcpserver asignado a qmail-smtpd:
Bash
sudo tcpserver -v -c 100 -u $(id -u qmaild) -g $(id -g nofiles) 0 25 \
/var/qmail/bin/qmail-smtpd 2>&1 | logger -t qmail-smtpd &
Verificación del Funcionamiento
1. Inyectar un correo de prueba vía terminal
Puedes probar el pipeline local de QMail enviando un correo mediante qmail-inject:
Bash
/var/qmail/bin/qmail-inject usuario@tudominio.com << EOF
Subject: Prueba de QMail
From: admin@tudominio.com
Mensaje de prueba enviado a traves de la infraestructura de QMail.
EOF
2. Inspeccionar la cola de mensajes
QMail incluye el binario qmail-qstat para revisar la salud de la cola de correo saliente y entrante:
Bash
sudo /var/qmail/bin/qmail-qstat
# Ejemplo de salida:
# messages in queue: 0
# messages in queue but not yet preprocessed: 0
Archivos y Directorios Clave
Plaintext
/var/qmail/
├── alias/ # Aliases del sistema (.qmail-root, .qmail-postmaster)
├── bin/ # Ejecutables principales (qmail-inject, qmail-send, qmail-smtpd)
├── control/ # Configuración de dominios y políticas (rcpthosts, me, locals)
└── queue/ # Directorio de la cola de correo (privilegios estrictos de qmailq)
¿Quieres integrar QMail con daemontools para gestionar el servicio como un demonio moderno de systemd?