Busqueda sobre Linux y software libre

Noticias sobre linux y software libre - Google 

Cómo configurar la retransmisión de correo (relay) basada en IP mediante tcpserver en QMail

 Le preguntamos a Gemini, la inteligencia artificial de Google, cómo configurar la retransmisión de correo (relay) basada en IP mediante tcpserver en QMail

Explicanos detalladamente cómo configurar la retransmisión de correo (relay) basada en IP mediante tcpserver en QMail

Configurar la retransmisión de correo (relay) basada en direcciones IP en Qmail utilizando tcpserver (parte del paquete ucspi-tcp) es el método clásico y más eficiente para permitir que redes o equipos de confianza (como la red local de una oficina, un servidor web asociado o clientes específicos) envíen correos hacia el exterior sin necesidad de autenticación por usuario y contraseña. 

A continuación, se detalla paso a paso cómo implementarlo, estructurarlo y ponerlo en marcha.

¿Cómo funciona este mecanismo?

Por defecto, Qmail rechaza cualquier intento de reenvío de correo externo para evitar ser utilizado como spam relay (arrojando el famoso error "that domain isn't in my list of allowed rcpthosts"). 

tcpserver actúa como un intermediario en el puerto SMTP (25). Antes de pasar la conexión entrante al proceso qmail-smtpd, consulta una base de datos binaria (.cdb). Si la IP del cliente coincide con una regla de IP permitida, tcpserver inyecta la variable de entorno RELAYCLIENT="". Al recibir esta variable, qmail-smtpd entiende que el cliente está autorizado y le permite hacer relay de forma incondicional. 

Paso 1: Ubicar y editar el archivo de control de reglas (tcp.smtp)

Por lo general, este archivo se encuentra en /etc/tcp.smtp o /etc/tcprules.d/tcp.smtp (o en la ruta definida dentro de tu script de arranque, como /var/qmail/control/rules.smtpd.cdb).

Abre el archivo con tu editor de texto preferido:

Bash

sudo nano /etc/tcp.smtp

Paso 2: Escribir las reglas de acceso por IP

El formato de cada línea consta de una dirección IP o subred seguida de :allow o :deny, junto con las variables de entorno opcionales.

Añade las siguientes líneas de ejemplo según tus necesidades:

Plaintext

# Permitir localhost de forma explícita

127.0.0.1:allow,RELAYCLIENT=""
 

# Permitir una subred interna completa (ej. oficina u hogar 192.168.1.0/24)

192.168.1.:allow,RELAYCLIENT=""
 

# Permitir a un servidor de aplicaciones o IP fija externa específica

203.0.113.50:allow,RELAYCLIENT=""
 

# Denegar explícitamente a una IP maliciosa o abusiva (Opcional)

203.0.113.99:deny
 

# REGLA POR DEFECTO: Denegar el relay a todo lo demás que no coincida arriba

:allow


Nota sobre la regla por defecto (:allow): Dejar :allow al final permite que cualquier usuario externo se conecte y envíe correos únicamente a los buzones alojados localmente en tu servidor (definidos en rcpthosts), pero bloqueará el relay hacia otros dominios de internet a menos que cumplan con la condición RELAYCLIENT="".

Paso 3: Compilar el archivo de reglas a formato binario (.cdb)

tcpserver no lee directamente el archivo de texto plano, sino una base de datos optimizada en formato .cdb.

Para compilar el archivo, utiliza la herramienta tcprules incluida en ucspi-tcp:

Bash

sudo tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
  • /etc/tcp.smtp.cdb: Es el archivo binario final que leerá tcpserver.
  • /etc/tcp.smtp.tmp: Un archivo temporal que utiliza tcprules para hacer una actualización atómica y segura sin interrumpir el servicio activo.

Importante: Cada vez que modifiques /etc/tcp.smtp, debes volver a ejecutar este comando de compilación. Los cambios se aplican de forma inmediata sin necesidad de reiniciar Qmail ni tcpserver.

Paso 4: Verificar la invocación de tcpserver en el arranque

Asegúrate de que el demonio que levanta qmail-smtpd esté configurado para invocar la base de datos .cdb mediante el parámetro -x.

Por lo general, esto se encuentra en tu script de supervisión (ej. Daemontools en /var/service/qmail-smtpd/run o en tus scripts de inicio del sistema):

Bash

#!/bin/sh

exec /usr/bin/softlimit -m 20000000 \

/usr/local/bin/tcpserver -v -H -R \

-x /etc/tcp.smtp.cdb \

-c 40 -u 777 -g 2101 0 25 \

/var/qmail/bin/qmail-smtpd 2>&1 | /var/local/bin/splogger smtpd


-x /etc/tcp.smtp.cdb: Es el argumento crítico que le indica a tcpserver que consulte las reglas de IP y aplique las variables de entorno correspondientes antes de aceptar el tráfico en el puerto 25.

Paso 5: Pruebas y Diagnóstico

Puedes comprobar que el filtrado funciona correctamente simulando una conexión o revisando los logs.

Prueba de relay desde una IP autorizada:

Conéctate por telnet o netcat desde el equipo autorizado:

Bash

telnet <IP_DE_TU_SERVIDOR_QMAIL>  25

Escribe los comandos SMTP simulando un envío externo:

Plaintext

HELO clientela.local

MAIL FROM:<admin@tudominio.com>


RCPT TO:<destinatario@dominioexterno.com>


Si el relay es correcto, el servidor responderá con un 250 ok en el comando RCPT TO en lugar del error de restricción.

Monitoreo en tiempo real:Si utilizas splogger o syslog, puedes seguir los registros de conexión en directo para verificar qué IPs están aplicando la regla de relay:

Bash

tail -f /var/log/maillog | grep tcpserver

Ads by CJ - Linux Foundation

Share This