Qmail utilizando Dial-up con Fetchmail

Qmail utilizando conexión Dial-Up

La gran mayoría de las instalaciones de correo electrónico requieren de una conexión permanente, esto presenta un problema para varias empresas que no son capaces de alquilar un tipo de conexión permanente, pero Qmail ofrece una solución que permite acumular los mensajes en un sistema Dial-up y cada determinado tiempo enviar y recibir mensajes del exterior, sin embargo, esto sigue asumiendo que existirá un servidor permanente para recibir correos, generalmente una empresa que ofrece hosting con la finalidad que los correos del exterior sean recibidos en un punto.

Aunque parezca exagerada esta instalación, ahorra una gran cantidad de recursos administrativos y eficientiza el proceso de mensajes electrónicos , ya que se opta por una conexión económica (Dial-up) vs. una costosa (Permanente) y a su vez permite a la empresa el uso de un sistema de correo electrónico corporativo (distribuido) sin la necesidad de incurrir en el costo de conexiones permanentes.

El siguiente documento asume que ya realizo la instalación inicial de Qmail e instalo las utilerias http://cr.yp.to/ucspi-tcp.html ( estas fueron requeridas en la recabación de correo electrónico ) ya que se requiere de la utileria tcpclient , también necesita adquirir serialmail de http://pobox.com/~djb/serialmail.html .

Acumular correo electrónico que será enviado al exterior

El primer paso de esta instalación será la configuración de Qmail para enviar todo correo electrónico desconocido de la LAN a un directorio temporal ("Queue") , los mensajes permanecerán en este directorio ("Queue") hasta que se detecte o inicie un conexión Dial-up que los enviará al exterior.

 +:alias:894:506:/var/qmail/alias:-:: 

Esto indica que todo correo para el que no se encuentre resolución sea enviado al buzón del usuario alias (Véase el archivo assign )

  maildirmake  dialup  

Ya generado el Maildir (Buzon) asegúrese que los subdirectorios del buzón pertenezcan al usuario alias , ejecute: chown -R alias dialup

:alias-ppp

Lo anterior agrega el prefijo alias-ppp a todo mensaje enviado a usuarios desconocidos, osea, aquellos destinados al buzón /var/qmail/alias/dialup

Pruebas de Recepción

Después de los pasos anterior si envía correos electrónicos a su dominio conocido (aquellos definidos en /var/qmail/users/assign ) estos deben ser enviados a los buzones correspondientes, y en dado caso de ser un dominio desconocido estos serán enviados al buzón dialup que ha sido creado; una de las desventajas de esta metodología es que todo mensaje que sus usuarios envíen de su LAN será aceptado, y no será hasta que realice el Dial-up, que el proveedor de Hosting reconocerá si realmente existe la dirección.

Detalles sobre la configuración DNS

Este es un detalle interesante sobre esta configuración, se preguntara: Si ya existe un servidor DNS y MTA ("Mail Transfer Agent") que recaba mis mensajes en el exterior (ISP) para mi dominio osmosislatina.com, se puede duplicar esta información en un servidor DNS que no este conectado a Internet, como se configura para que no exista conflicto ?

Como se menciono en el articulo de DNS , DNS solo facilita el intercambio de información, pero esto no lo hace OBLIGATORIO. En esta configuración, para evitar mayores conflictos de nombre se asumirá que toda computadora dentro del LAN utilizara los servicios del MTA desarrollo-osmosis.com en realidad un dominio inexistente-ficticio que no causará ningún tipo de conflicto con Internet.(Asegúrese que su LAN utilice nodos IP privados para LAN's )

Marcacion con Qmail

La única configuración adicional que debe realizar con sus usuarios finales es que sus Mailers (MUA) utilicen el servidor SMTP desarrollo-osmosis.com , la utilización de desarrollo-osmosis se debe principalmente a la necesidad de procesar los correos electrónicos de su LAN, de otra manera (si no fueran procesados) se regresarían al usuario indicándole que no fue posible enviar el mensaje. Como se menciono anteriormente el archivo assign utilizado por Qmail será el encargado de redireccionar los mensajes a los buzones correspondientes.

Recuerde que sus usuarios NO deben enviar mensajes a desarrollo-osmosis.com, este es solo un dominio ficticio, deben continuar enviando a su dominio real

Enviar correo electrónico acumulado al exterior y recolectar mensajes del exterior

Ya que existen todos los mensajes en el buzón dialup , es necesario realizar una conexión a Internet (proveedor de Hosting) con dos intenciones: Enviar los mensajes destinados fuera de nuestro dominio y recolectar todos los mensajes que han sido acumulados en nuestro proveedor para envío a buzones locales.Los siguientes pasos asumen que ya tiene una conexión Dial-up funcional.

Envío de Mensajes

Para automatizar el envío de mensajes al ISP (empresa "Hosting") se deben colocar las siguientes lineas en el archivo ip-up.local que es ejecutado cada vez que se realiza una conexión.

#!/bin/sh
#Es conveniente mantener un registro para conocer tipo de errores
# estos estarán en un archivo /
exec >/var/qmail/alias/registro-dialup
exec 2>&1
date
#Enviar correo electrónico a Internet
/usr/local/bin/maildirsmtp /var/qmail/alias/dialup alias-ppp- mail.osmosislatina.com miservidor.osmosislatina.com
#

Las dos lineas exec son utilizadas para enviar cualquier tipo de error al "log" registro-dialup con su fecha correspondiente ( date ).

La última linea indica que se ejecute maildirsmtp , el cual lee todos los mensajes dentro del buzón Maildir /var/qmail/alias/dialup , el parámetro alias-ppp- es el prefijo que será eliminado de todos los sobres ("envelopes") que se encuentran en este buzón (esto fue agregado en el paso 5 inicial ).

mail.osmosislatina.com es el servidor de Mail (MTA) que opera nuestra ISP o servicio de Hosting, y miservidor.osmosislatina.com es el nombre con que será identificado el "Host" que esta realizando la conexión Dial-up.

Recepción de Mensajes

Para recibir los mensajes que han sido guardados dentro del servidor de nuestra ISP o servicio de Hosting se utiliza fetchmail , sin entrar en mucho detalle, fetchmail recaba los mensajes en el servidor exterior y los entrega al MTA local, en este caso: desarrollo-osmosis.com, por lo tanto para Qmail (MTA) aparentará que estos mensajes provienen de la LAN. Los pasos para configurar fetchmail :

defaults proto pop3
forcecr
poll mail.osmosislatina.com 
localdomains osmosislatina.com
aka rio.sitepro.com
user pedro 
with pass ref345#drt
to root * here 

El parámetro defaults proto pop3 indica que será utilizado el protocolo POP3 , forcecr que deben ser forzados saltos de linea ("carriage returns") en los mensajes.

El parámetro poll mail.osmosislatina.com indica que debe ser inspeccionado el servidor mail.osmosislatina.com utilizando el utilizando el usuario pedro con contraseña ref345#drt .

Las lineas localdomains osmosislatina.com y aka rio.sitepro.com significan, que el dominio será tratado como local y el posible nombre utilizado por nuestra ISP (servicio Hosting) respectivamente. Y finalmente el parámetro to root * here que todo mensaje será redirigido a envío local.

#!/bin/sh
su nsadmin -c /usr/bin/fetchmail

El "script" realiza un cambio de usuario a nsadmin y ejecuta el comando ( -c ), fetchmail ,es precisamente bajo el "Home Directory" de nsadmin donde es colocado el archivo .fetchmailrc. En lugar de definir un "script" independiente se recomienda agregar esta linea al mismo "script" de envío de mensajes

Consideraciones de la Conexión Dial-up

Debido a que en este tipo de configuración se requiere mantener una LAN y dominio ficticio (desarrollo-osmosis.com) es necesario mantener archivos de Zona para DNS, por lo tanto la sugerencia de configurar un DNS Cache para un conexión Dial-up tiene que ir más allá, los requisitos para configurar un archivo de Zona para un dominio ficticio son los mismos que para un dominio real, sin embargo, existe un detalle muy importante de esta configuración.

/etc/resolv.conf

En la configuración Dial-up clásica, el archivo resolv.conf contiene los nodos IP de los servidores DNS del proveedor de Servicios de Internet (ISP), cuando existía una sola computadora esto no presentaba mayor problema ya que no se requería de resoluciones, pero que sucede cuando una persona de la LAN envíe un correo electrónico e intente buscar el MUA (desarrollo-osmosis.com) ?.

Aunque se supone que resolv.conf debe descartar los servidores DNS que no sean alcanzables, esto no es así (posiblemente un error en DNS "BUG"), por lo tanto, si los servidores DNS de su ISP se encuentran en resolv.conf mientras no esta conectado a Internet, TODAS las computadoras de su LAN muy probablemente se congelen al enviar un mensaje, ya que no pueden localizar estos servidores DNS, este congelamiento puede durar hasta 5 minutos,que es cuando el resolver considera inalcanzable esta dirección ("Time-out").

Para contrarrestar este problema se recomienda eliminar los parámetros nameserver del archivo resolv.conf siempre que no este conectado a Internet y generar (o modificar) estos parámetros únicamente cuando exista una conexión a Internet, la manera más fácil de automatizar este proceso es utilizando los archivos ip-up y ip-down , a continuación se muestra su contenido:

#!/bin/sh
# Contenido de ip-up.local
mv /etc/resolv.conf /etc/resolv.conf.back
mv /etc/resolv.conf.dial /etc/resolv.conf
#!/bin/sh
# Contenido de ip-down.local
mv /etc/resolv.conf /etc/resolv.conf.dial 
mv /etc/resolv.conf.back /etc/resolv.conf

Lo anterior garantiza que sea substituido el archivo resolv.conf de una manera apropiada cada vez que sea detectada la conexión Dial-up. El contenido de los archivos resolv.conf y resolv.conf.dial se muestra a continuación.

#Archivo resolv.conf original  (sin Dial-Up)
#Todo parámetro con comentario lo convierte en inexistente 
#domain desarrollo-osmosis.com
#nameserver 192.168.1.1
#nameserver 200.23.249.1
#nameserver 200.38.10.1
#Archivo de substitución resolv.conf.dial (con Dial-Up)
domain desarrollo-osmosis.com
nameserver 192.168.1.1
nameserver 200.23.249.1
nameserver 200.38.10.1