ADVERTENCIA: Este tutorial data del año 2006 y no ha sido actualizado (salvo en su presentación.) Muchas cosas han cambiado en estos años, por lo que el lector debe considerar seriamente las alternativas a su disposición.
Resumen
Esta es una guía breve y básica para utilizar el MTA QMAIL en Linux desarrollada en ambiente RedHat 7.1; sin embargo, debe ser útil en cualquier otro sistema operativo compatible. Se describirá tanto la instalación como principios de administración.
Introducción
Qmail es un MTA que proporciona el servicio de correo electrónico en sistemas Linux (y Unix.) Está diseñado como un reemplazo más seguro para el clásico http://www.sendmail.org .
¿Por qué usar qmail?
En pocas palabras: por seguridad y por comodidad. Sendmail y otros MTA’s menos utilizados han sido (y de seguro seguirán siendo) una fuente constante de "bugs" y "vulnerabilidades" explotables por los hackers. Según algunos, esto se debe a que toda la complejidad del sistema de correo recae en un solo programa que necesariamente debe ejecutarse con privilegios de administrador. Qmail intenta paliar este problema mediante un esquema modular en el cual diversas etapas del procesamiento del correo electrónico son llevadas a cabo por distintos procesos que mayormente se ejecutan con un usuario no privilegiado.
Asimismo, la modularidad mencionada permite intercalar con facilidad filtros personalizados a criterio del administrador, cosa poco usual en los MTA’s sencillos, y compleja en el MTA sendmail. Un caso muy útil correspondería a la instalación de programas antivirus, a fin de filtar los mensajes maliciosos que pasan por el MTA.
Además, qmail promueve (aunque no obliga) al uso del mailbox en el "home directory" a fin de evitar los riesgos que presenta el tradicional directorio de mailbox común; también promueve el uso de un formato distinto para este archivo, de modo tal que sea invulnerable a los fallos imprevistos que fácilmente corrompen el mailbox tradicional.
Requisitos para usar qmail
Si Ud. descarga qmail del site oficial, probablemente tendrá que compilarlo. Para esto, su sistema deberá disponer del compilador de lenguaje C. Si Ud. no desea hacer esto, los desarrolladores también mantienen paquetes RPM (binarios.)
Es muy recomendable (casi imprescindible) instalar el programa tcpserver. Si por algún motivo no se desea emplear tcpserver, se puede usar una combinación de inetd con los tcp+wrappers tal como recomienda la documentación que acompaña a qmail. Finalmente (como aporte inédito) aquí mostramos cómo trabajar con xinetd aunque la solución tiene visos de "hack".
Otros requisitos evidentes corresponden a una conexión de red, y posiblemente la facultad de configurar el nameserver si se está instalando por primera vez un mailserver para las estaciones de un dominio. Aquí asumiremos que el usuario está familiarizado con la arquitectura de Internet de correo electrónico y con el DNS.
Descargar y desempacar
El primer paso consiste en obtener el software y compilarlo. Si Ud. tiene un paquete binario (por ejemplo, en formato RPM) entonces puede saltearse esta sección. Las instrucciones de instalación pueden variar, así que tenga cuidado.
Para descargar +qmail+ (si todavía no lo ha hecho), dirigirse a http://www.qmail.org y obtener la última versión (que se supone está exenta de más bugs.) En esta guía se trabajará con la versión 1.03, que viene en el archivo +qmail-1.03.tar.gz+.
Este archivo se deberá desempacar en cualquier lugar razonable (que luego podrá ser eliminado), por ejemplo:
# cd /usr/local # tar xvzf /ruta_al_empaquetado/qmail-1.03.tar.gz .... se crea el directorio qmail-1.03 con los archivos fuente .... # cd qmail-1.03
En este directorio debemos efectuar todos los pasos que se indican a continuación. Todos los archivos a que haremos referencia se encuentran en este directorio.
Instalación de qmail
Este proceso es algo extenso, pero en general involucra tareas muy sencillas que difícilmente podrían fallar si se realizan con cuidado.
Crear el directorio de qmail
Lo primero que debemos hacer es crear el directorio de trabajo para +qmail+. La sugerencia de los creadores es el directorio +/var/qmail+ (hay pocos motivos para cambiarlo.) Así que el administrador ejecutará algo como:
# mkdir /var/qmail
Si se desea emplear otra ubicación, esta se debe registrar en el archivo conf-qmail. En lo que sigue, asumiremos la ruta arriba indicada.
Usuarios para qmail
Qmail requiere la creación de diversos usuarios para su correcta ejecución. Estos son: alias, qmaild, qmaill, qmailp, qmailq, qmailr, y qmails. Si por algún motivo no se puede emplear estos pseudo-usuarios (por ejemplo, si algún usuario real coincide con los mencionados), entonces se deberá especificar los nuevos valores en el archivo conf-users. Igualmente se requiere de la creación de dos grupos (especificados en el archivo conf-groups.)
Para crear los usuarios y grupos usar:
# groupadd nofiles # useradd -g nofiles -d /var/qmail/alias alias # useradd -g nofiles -d /var/qmail qmaild # useradd -g nofiles -d /var/qmail qmaill # useradd -g nofiles -d /var/qmail qmailp # groupadd qmail # useradd -g qmail -d /var/qmail qmailq # useradd -g qmail -d /var/qmail qmailr # useradd -g qmail -d /var/qmail qmails
Compilar y configurar el directorio de trabajo
En este paso se generan los ejecutables de qmail y se prepara el directorio de trabajo de qmail:
# make setup check
Especificar el nombre del host
Luego se deberá especificar el nombre de nuestro host (incluyendo el dominio completo) mediante el comando config-fast del siguiente modo:
# ./config-fast marquesa.unima.edu.pe
Establecer los "alias" del sistema
En qmail, el correo para los usuarios especiales postmaster, MAILER-DAEMON y root, es redirigido hacia el pseudo-usuario alias. Esto requiere de la existencia de ciertos archivos en el "home directory" del pseudo-usuario alias:
# (cd ~alias; touch .qmail-postmaster \ .qmail-mailer-daemon .qmail-root) # chmod 644 ~alias/.qmail*
Especificar el agente de procesamiento de correo
El correo dirigido a los usuarios locales debe ser almacenado en algún archivo o directorio (el 'mailbox'.) Esto normalmente 'NO' lo realiza el MTA, sino que lo delega a un programa auxiliar. Sendmail normalmente emplea a procmail para este fin. A fin de realizar una rápida puesta a punto, mantendremos el uso de procmail (luego veremos el agente alternativo que proporciona qmail llamado qmail-local.) Para esto tan sólo es necesario efectuar el siguiente comando:
# cp /var/qmail/boot/proc /var/qmail/rc
Sin embargo, procmail en este caso será ejecutado mediante un usuario no privilegiado, por lo que es menester cambiar los permisos del directorio de los mailbox (que se mantendrá en /var/spool/mail.) Para RedHat 7.1:
# chmod 1777 /var/spool/mail
Nótese que qmail recomienda cambiar el mailbox; sin embargo, esto requiere algunos pasos adicionales que no veremos aquí. Lea la documentación respectiva (archivo INSTALL.mbox) para más detalles.
Eliminar Sendmail
Lo primero que debemos hacer es asegurarnos de que sendmail no está en ejecución, por lo que habremos de buscarlo en la tabla de procesos:
# ps ax | grep sendmail 698 ? S 0:00 sendmail: accepting connections 787 pts/0 S 0:00 grep sendmail
La primera línea indica que sendmail está en ejecución, por lo que debemos hacer que termine. Para esto usaremos cualquiera de los siguientes comandos (basta con uno) en orden de preferencia:
# service sendmail stop # /etc/rc.d/init.d/sendmail stop # kill 698
El "698" del último comando corresponde al PID del proceso y se obtiene del comando anterior. En su sistema deberá presentarse otro valor. Asegúrese (volviendo a lanzar "ps") de que sendmail ya no esté en ejecución.
Luego debemos asegurarnos de que sendmail no se vuelva a ejecutar. La manera más sencilla consiste en desinstalarlo mediante:
# rpm -e sendmail
Probablemente deberá desinstalar otros paquetes (como fetchmail y mutt.) Para forzar la desinstalación de sendmail:
# rpm -e --nodeps sendmail
El archivo REMOVE.sendmail muestra otras maneras de trabajar sin necesidad de eliminar el paquete sendmail, aunque lo anterior es más recomendable.
Instalar el "reemplazo" de sendmail
Diversos programas asumen la existencia de sendmail y lo invocan ciegamente. Por esto, qmail proporciona un "reemplazo" básico para sendmail, a fin de mantener operativas a las aplicaciones mencionadas.
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
Instalar los manuales
Qmail proporciona páginas de manual para diversas utilidades. Estas se instalan en /var/qmail/man. Sin embargo, el sistema "man" debe ser configurado para acceder a éste.
Para esto, añada el directorio de los manuales mediante el la directiva MANPATH en el archivo /etc/man.config:
... MANPATH /usr/share/man MANPATH /usr/man MANPATH /usr/X11R6/man MANPATH /usr/lib/perl5/man MANPATH /usr/kerberos/man MANPATH /usr/local/man # Añadido para qmail MANPATH /var/qmail/man ...
Luego, Ud. deberá probar algo como man qmail-send.
Instalación de tcpserver
Qmail necesita de un mecanismo que lance el demonio qmail-smtpd cada vez que llega un intento de conexión SMTP del exterior del mailserver. Esto se puede hacer de diversas maneras; sin embargo, los creadores recomiendan el uso del programa tcpserver que está disponible como parte del paquete ucspi-tcp de D.J. Bernstein. Es posible configurar inetd para este fin (ver el archivo FAQ) e incluso xinetd como ilustro en esta misma guía en otra sección.
Descargar y desempacar ucspi-tcp
En el http://cr.yp.to/ucspi-tcp.html site de ucspi-tcp Ud. deberá encontrar la última versión del paquete. Este viene en un archivo TAR comprimido. En mi caso, ucspi-tcp-0.88.tar.gz.
Ud. deberá luego desempacarlo en un lugar razonable (después lo podrá eliminar) mediente un comando como:
# cd /usr/local # tar xvzf /ruta_al_empaquetado/ucspi-tcp-0.88.tar.gz .... se crea el directorio ucspi-tcp-0.88 .....
Compilar e instalar tcpserver
Ud. procederá ahora a compilar los programas del paquete. Para esto ejecute:
# cd ucspi-tcp-0.88 # make
Y tras unos momentos deberá tener una serie de ejecutables en el mismo directorio. Proceda a copiar los ejecutables tcpserver y tcprules a un directorio en el PATH, como /usr/sbin o /usr/local/bin:
# cp tcpserver tcprules /usr/sbin
Sólo estos dos ejecutables serán necesarios, por lo que puede eliminar el directorio de ucspi-tcp-0.88.
Configurar el inicio automático de qmail
Ahora vamos a configurar el sistema para que siempre se ejecute qmail al reiniciarse el computador.
Ud. deberá averiguar el UID y el GID del usuario "qmaild" y del grupo "nofiles" respectivamente:
# id qmaild uid=1003(qmaild) gid=1002(nofiles) groups=1002(nofiles)
El número 1003 es el UID del usuario "qmaild", y el número asociado al grupo "nofiles" es 1002. Es seguro que estos valores serán distintos en su sistema. Ahora, simplemente añada los siguientes comandos:
csh -cf '/var/qmail/rc &' /usr/sbin/tcpserver -u 1003 -g 1002 0 smtp \ /var/qmail/bin/qmail-smtpd &
al final del archivo /etc/rc.d/rc.local.
Probando qmail
Para las pruebas que siguen, se recomienda disponer de un computador auxiliar configurado para enviar y recibir correo (¡posiblemente usando sendmail') En lo que sigue, denominaremos remoto.unima.edu.pe a este computador.
Qmail enviará mensajes de diagnósitco a syslog, por lo cual normalmente deberíamos buscarlos en el archivo +/var/log/maillog+ que es donde syslog imprime los mensajes de email en RedHat (para más información, ver +/etc/syslog.conf+ y el manual de syslog.conf)
Iniciando qmail
Hemos configurado qmail para que se ejecute cada vez que el computador es reiniciado. Así que conviene en este momento reiniciar el computador a fin de apreciar que hemos realizado bien esta tarea.
Para analizar si los procesos de qmail están en ejecución, pruebe a lanzar el siguiente comando:
# ps axu | grep qmail qmails 3727 1392 pts/2 S Jan13 0:00 qmail-send qmaill 3728 1360 pts/2 S Jan13 0:00 splogger qmail root 3729 1348 pts/2 S Jan13 0:00 qmail-lspawn qmailr 3730 1348 pts/2 S Jan13 0:00 qmail-rspawn qmailq 3731 1340 372 pts/2 S Jan13 0:00 qmail-clean
Casi todos los valores numéricos serán distintos en su computador (incluso hemos recortado un poco la salida por cuestiones de formato.) Lo importante es el nombre de los procesos, y de los usuarios dueños de los mismos (a la extrema derecha e izquierda, respectivamente.) Revise el "log" si no se hubieran iniciado estos procesos.
En caso de que no pudiera reiniciar el computador en este momento, tendrá que iniciar qmail manualmente:
# csh -cf '/var/qmail/rc &' # /usr/sbin/tcpserver -u 1003 -g 1002 0 smtp \ /var/qmail/bin/qmail-smtpd &
Probar el delivery
Se trata de observar si los mensajes de qmail pueden ser distribuidos, es decir, pueden ser enviados a los usuarios de nuestro computador o de otro.
En primer lugar, "inyectamos" un mensaje con destino local, para lo cual Ud. deberá modificar la palabra xxxxx por el nombre de un usuario común del sistema (distinto del administrador.) Esta prueba la debería efectuar con un usuario común.
$ echo to: xxxxx | /var/qmail/bin/qmail-inject
Escriba con cuidado el "to:" separando el nombre de usuario. Observe el log, y pruebe a recepcionar este mensaje (por ejemplo, logeándose con el usuario y ejecutando $ mail.) Pruebe también el envío a un usuario local inexistente:
$ echo to: inexistente | /var/qmail/bin/qmail-inject
Pruebe ahora el envío a un computador remoto:
$ echo to: xxxxx@remoto.unima.edu.pe | /var/qmail/bin/qmail-inject
Esto requiere que qmail se conecte al puerto SMTP de "remoto" (donde también deberá haber un servidor de email) y que allí exista el usuario especificado.
El archivo TEST.deliver contiene más pruebas y detalles que Ud. debe leer.
Probar la recepción
Ahora se trata de observar si qmail acepta mensajes (que después serán distribuidos como se vió arriba.) Para esto, tcpserver debe estar "escuchando" en el puerto SMTP (25). Esto puede analizarse fácilmente con netstat:
# netstat -a --inet | grep smtp tcp 0 0 *:smtp *:* LISTEN
Si esto tarda mucho, o no funciona bien, usar:
# netstat -an --inet | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
Desde el computador remoto.unima.edu.pe, pruebe a enviar un mensaje a a cualquier usuario (no root) del computador local marquesa.unima.edu.pe, y observe los mensajes del log de ambos sistemas.
El archivo TEST.receive contiene más pruebas y detalles.
Algo sobre la arquitectura de qmail
En esta sección vamos a explorar ligeramente los componentes principales de qmail. El lector interesado en la rápida puesta a punto de un mailserver típico puede saltarse esta sección y retornar posteriormente. Como ya se ha indicado, qmail está compuesto de diversos subprogramas que realizan tareas específicas y que en conjunto constituyen el sistema de correo electrónico. La figura siguiente proporciona una visión esquemática de estos componentes. Para un esquema más completo, remito al lector a http://www.nrg4u.com/ (mi esquema se basa en aquél.)
Analicemos algunos de los posibles recorridos de un mensaje:
-
Origen local: Un usuario Linux operando en el sistema (por ejemplo, con un terminal) remite un mensaje usando un MUA como mail. Esto normalmente originará una llamada a qmail-inyect el cual llevará el mensaje al programa de encolamiento qmail-queue. Este lo almacenará en la cola de mensajes /var/qmail/queue. Acto seguido, qmail-send intentará remitirlo a su destino (si se puede) mediante los programas qmail-lspawn o qmail-rspawn
-
Origen remoto exterior: Un usuario de Internet ha enviado un mensaje hacia nuestra red (hacia un usuario de nuestra organización.) Este mensaje debe provenir de otro servidor de email mediante SMTP. qmail-smtpd descubre que el destinatario es de los nuestros, y acepta el mensaje, el cual pasa a la fase de encolamiento.
-
Origen remoto de la LAN: Un cliente de nuestra red desea enviar un mensaje. Para esto ha configurado su MUA a fin de remitir hacia el servidor qmail. Esta remisión normalmente la efectúa usando SMTP, y por tanto nuevamente qmail-smtpd es el encargado de la recepción.
-
Destino local: Los mensajes con destino local son guardados en el mailbox por procmail (o qmail-local) para ser recogidos por los MUAs de los usuarios que trabajan en el servidor. En el caso de que el usuario no esté en el servidor, sino, en una estación de trabajo, entonces su MUA deberá conectarse a un servidor IMAP o POP para obtener los mensajes del mailbox. En cualquier caso, qmail-lspawn es el encargado de controlar el agente de delivery local.
-
Destino remoto: Los mensajes remotos se remiten con SMTP hacia otros MTA. qmail-rspawn es el encargado de los mensajes que se envían remotamente.
No hemos mencionado a tcpserver debido a que estrictamente no es parte de qmail. Sin embargo, es el encargado de 'despertar' a qmail-smtpd de un modo seguro y relativamente inteligente.
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.
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".
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.
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.
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.
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.)
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.
Vocabulario y abreviaturas
-
IMAP: Ver POP.
-
Mailbox: Cuando un MTA recibe un mensaje destinado a un usuario local, debe remitirlo a su "casilla de correo" o "mailbox". Normalmente esto es delegado a un programa auxiliar como binmail, procmail o qmail-local. Sendmail (en Linux RedHat 7.1) viene configurado para emplear procmail.
Tradicionalmente, el mailbox ha consistido de un archivo con el mismo nombre que el usuario destinatario, ubicado en el directorio /usr/spool/mail o /var/spool/mail (esto último es usado en RedHat 7.1.) Qmail recomienda por el contrario emplear el home directory del usuario y un archivo llamado "Mailbox" por cuestiones de seguridad.
-
POP: Es un protocolo usado para que los MUA’s recepcionen mensajes pendientes. Es implementado por un demonio (como ipopd) que recoge los mensajes pendientes del "mailbox" y los transmite al MUA a través de la red.
POP no es muy flexible, no permitiendo, por ejemplo, navegar entre los asuntos (subjects) de los mensajes pendientes antes de descargarlos. IMAP está diseñado para hacer frente a estas deficiencias, permitiendo además la creación de carpetas del usuario en el servidor. Esta característica lo ha hecho ideal para sistemas tipo Webmail. Ver RFCs 1731, 1732, 1733, 1939, 2060, 2061, 2087, 2088.
-
MTA: Mail Transfer Agent, el programa encargado de transferir el correo electrónico a través de Internet. No es usado por los usuarios directamente (ver MUA.)
-
MUA: Mail User Agent, el programa que ejecuta el usuario para conectarse a un MTA y transferirle los mensajes de email. Asimismo se conecta a servidores de mensajería para recepcionar los mensajes enviados al usuario. Ver también SMTP, POP, IMAP.
-
Sendmail: Es el MTA clásico proporcionado en prácticamente todas las distribuciones Unix. Posee una gran capacidad de configuración mediante reglas y un lenguaje especial de macros.
-
SMTP: Es el protocolo estándar de Internet para transferir correo electrónico. Generalmente se utiliza en dos contextos, 1) para que los MTA se transfieran mensajes mutuamente y 2) para que los MUA remitan mensajes al MTA. Utiliza el puerto 25 de TCP. Ver RFCs 821, 1123, 1651, 1652, 974, 1854.