8. Un caso real con qmail

Un caso típico se presenta en la siguiete figura. Se trata de proporcionar el servicio de email a la organizacion "incacoca.com.pe", la cual utilizará a "qmailserver" como servidor de correo. Las direcciones serán de la forma "usuario@incacoca.com.pe", y las estaciones obtendrán sus mensajes usando POP o IMAP.

Figura 2. Mailserver para una organización

8.1. Configurar el nameserver

Asumimos que el lector está familiarizado con las funciones generales del nameserver. Entre éstas, nos interesa la configuración del registro MX para el dominio de nuestra organización. Asumiendo que el nameserver utiliza bind, el archivo de la zona incacoca.com.pe debería contener algo como lo que se muestra a continuación:

$TTL 86400
@       IN      SOA     @  root.localhost (
                        4 ; serial
                        28800 ; refresh
                        7200 ; retry
                        604800 ; expire	
                        86400 ; ttl
                        )

@       IN      NS      localhost.

@       IN      MX      10      qmailserver

qmailserver     IN      A       201.5.223.16
ns              IN      A       201.5.223.12
; otros hosts
Con esto, todo el correo de Internet de la forma "usuario@incacoca.com.pe" se destina hacia "qmailserver.incacoca.com.pe".

8.2. Qmail debe aceptar correo para el dominio

Asumimos que el lector ha instalado qmail tal como se vio anteriormente. Cuando se instala qmail, éste asume que sólo debe aceptar mensajes destinados a su propio host; en nuestro caso, mensajes de la forma "usuario@qmailserver.incacola.com.pe". Como las direcciones ahora son diferentes, hay que configurar qmail para que las acepte. Para esto sólo se debe añadir "incacola.com.pe" (la parte de "host" de las direcciones electrónicas) a los archivos /var/qmail/control/rcpthosts y /var/qmail/control/locals:

qmailserver.incacola.com.pe
incacola.com.pe
Si se ha decidido mantener el mailbox en /var/spool/mail, entonces ya puede iniciar los demonios POP y/o IMAP. Asumimos que el lector sabe hacerlo (sugerencia: ntsysv, service xinetd reload.)

El archivo rcpthosts permite que qmail-smtp acepte los mensajes con el host especificado, en tanto locals permite que qmail-send efectue el delivery a un usuario local (en su mailbox.)

Con la configuración actual, los usuarios inscritos en qmailserver.incacola.com.pe ya pueden recibir correo desde sus estaciones (vía POP y/o IMAP.) Sin embargo, aún no pueden enviar correo.

8.3. Enviar correo desde las estaciones

Qmail deberá ser capaz de recibir correo desde las estaciones y redirigirlo hacia el exterior, esto es, servir de RELAY a las estaciones.

Esto normalmente está dehabilitado, pues en caso contario cualquier persona de Internet podría usar nuestro servidor para enviar correo SPAM. Sólo nuestras estaciones deberán habilitarse.

Lamentablemente qmail (en la versión actual) no proporciona un mecanismo sencillo para habilitar el RELAY. Los lectores que no utilizan tcpserver deben leer en el archivo FAQ la pregunta acerca de cómo hacer que qmail actúe como RELAY para nuestros clientes (pregunta 5.4 en mi versión.) Xinetd no proporciona un mecanismo satisfactorio, pero el procedimiento que se muestra más adelante funciona.

Qmail-smtpd se encarga de recepcionar el correo de las estaciones cliente y del exterior (medianet SMTP.) Sin embargo, para forzar a que nos sirva como RELAY es preciso que sea iniciado con la variable de entorno RELAYCLIENT. Esto es, dependiendo de quién se conecta a qmail-smtpd, deberíamos activar la variable mencionada.

Tcpserver satisface este requerimiento de un modo sencillo. Ud. deberá en primer lugar crear un archivo llamado /etc/tcp.smtp con el siguiente contenido:

127.:allow,RELAYCLIENT=""
1.2.3.101:allow,RELAYCLIENT=""
1.2.3.102:allow,RELAYCLIENT=""
1.2.3.103:allow,RELAYCLIENT=""
1.2.3.104:allow,RELAYCLIENT=""
Donde 1.2.3.100-104 corresponde a nuestras estaciones que podrán enviar el email al exterior (Ud. debe colocar sus direcciones reales.) A éstas se les proporcionará el RELAY. Acto seguido, debemos "compilar" este archivo mediante el comando:
# /usr/sbin/tcprules /etc/tcp.smtp.cdb \
                     /etc/tcp.smtp.tmp < /etc/tcp.smtp
Que creará una versión de acceso rápido en /etc/tcp.smtp.cdb.

Ahora modifique la invocación a tcpserver en /etc/rc.d/rc.local del siguiente modo:

csh -cf '/var/qmail/rc &'
/usr/sbin/tcpserver -x /etc/tcp.smtp.cdb -u 1003 \
	-g 1002 0 smtp /var/qmail/bin/qmail-smtpd &
Sólo hemos añadido la especificación del archivo tcp.smtp.cdb con la opción "-x". Reinicie su sistema para apreciar los cambios. Ahora las estaciones deberían poder remitir mensajes hacia el exterior.