9. Usando xinetd en reemplazo de tcpserver

Con este procedimiento (algo iconoclasta), el lector podrá emplear qmail sin necesidad de tcpserver, aunque no es lo más recomendable. La ventaja de usar xinetd reside simplemente en que éste ya viene en la distribución RedHat 7.1 que estoy empleando y puede usarse como una solución temporal hasta instalar tcpserver.

9.1. Configurar el servicio smtp

Ud. deberá crear el archivo /etc/xinetd.d/smtp con el siguiente contenido:

# Servicio SMTP con qmail
service smtp
{
	socket_type		= stream
	protocol		= tcp
	wait			= no
	user			= qmaild
	server			= /var/qmail/bin/tcp-env
	server_args		= /var/qmail/bin/qmail-smtpd 
	disable			= no
}
		
Nota: aunque no es el caso de RedHat 7.1, muchos sistemas no usan xinetd, sino inetd. En este caso, añadir la siguiente línea al archivo /etc/inetd.conf:
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env \
	tcp-env /var/qmail/bin/qmail-smtpd
		

Con la configuración presentada, el sistema será capaz de recepcionar correo para sus usuarios. Para enviar mensajes desde el sistema, los usuarios Linux pueden emplear MUA's como mail:

$ mail usuario@yahoogoogle.org
Sin embargo, no podrán remitirlo desde sus estaciones, pues no se ha configurado el RELAY para ellos (ver siguiente sección.)

9.2. Relay qmail con xinetd

Voy a asumir que se pretende configurar qmail para que opere como en el ejemplo descrito anteriormente. Si no hubieran estaciones que emplean a qmail como RELAY, bastaría con la configuración de la sección anterior.

El archivo /etc/xinetd.d/smtp define la "escucha" del puerto 25 (smtp) para cualquier interfaz de red. Modifiquemos esto añadiendo la siguiente línea:

service smtp
{
	disable	= no
	socket_type		= stream
	protocol		= tcp
	wait			= no
	user			= qmaild
	server			= /var/qmail/bin/tcp-env
	server_args		= /var/qmail/bin/qmail-smtpd 
# Linea añadida
	bind			= 1.2.3.4
}
Donde el lector reemplazará la dirección IP por la que realmente tiene el host. Con esto, sólo los requerimientos dirigidos a este IP serán procesados del modo normal (sin relay.)

Acto seguido, asociaremos una nueva dirección IP (IP alias) a la interfaz de red. No vamos a entrar en muchos detalles al respecto:

# ifconfig eth0:0 1.2.3.200 netmask 255.255.255.0
Esta dirección debe estar en su red, pero no debe hacer conflicto con ningún host. Asegúrese de que este IP alias siempre esté disponible al reiniciar el computador (sugerencia: control-panel.)

Ahora generaremos un nuevo archivo (por ejemplo, /etc/xinetd.d/smtp2 con el siguiente contenido:

service smtp
{
	disable	= no
	socket_type		= stream
	protocol		= tcp
	wait			= no
	user			= qmaild
	server			= /var/qmail/bin/tcp-env
	server_args		= /var/qmail/bin/qmail-smtpd 
	bind			= 1.2.3.200
	env			= RELAYCLIENT=
}
Nótese que sólo hemos añadido la línea env = RELAYCLIENT= (variable de entorno), y hemos especificado la dirección (bind) al nuevo IP-alias. Con esto, las conexiones a esta dirección de red dispondrán de la facultad de hacer RELAY. Tenga cuidado con los signos de igualdad (=) de la línea mencionada.

Los MUA's de las estaciones de la red local ahora se deberán configurar para que la conexión de salida (SMTP) se dirija hacia la dirección 1.2.3.200. Si se desea, se puede asignar un nombre a esta dirección en el DNS (por ejemplo "envios.unima.edu.pe".)

El único detalle suelto consiste en evitar que desde Internet se conecten a este IP (de relay.) Lo más sencillo es configurar el filtro de paquetes con una línea como la que se muestra:

# ipchains -A input -d 1.2.3.200 -s ! 1.2.3.0/24 -j DENY
o, si se usa netfilter:
# iptables -A INPUT -d 1.2.3.200 -s ! 1.2.3.0/24 -j DROP
Esto evita las conexiones a la dirección de RELAY, excepto para la subnet 1.2.3.0/24, que debe coincidir con nuestras estaciones de trabajo.