Correo automático en fli4l

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

UNIXBasics

AuthorImage:[Here we need a little image from you]

Stefan Blechschmidt

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Stefan Blechschmidt.

en to es Edgar Hernández Zúñiga.

AboutTheAuthor:[A small biography about the author]

Siendo un ingeniero eléctrico me encontré un buen día, allá por 1990, frente a una estación de trabajo CAD para desarrollar un interruptor y una estación de control. Obviamente fui infectado por un nuevo 'virus', y fue lo suficientemente bueno.

Abstract:[Here you write a little summary]

¿Quién no ha usado un disco flexible como ruteador de http://www.fli4l.de. La mayoría de los que lo han usado saben de lo problemático que es cuando una distribución así está siendo usada en el modo de llamada en demanda en un sistema en red existente con un servidor de correo interno. Cuando el ruteador establece una conexión al servidor de correo, este debe estar activo para poder enviar y recibir correo.
Este artículo describe una de las opciones para poder resolver este problema.

ArticleIllustration:[One image that will end up at the top of the article]

Automail mit fli4l

ArticleBody:[The main part of the article]

Pequeña descripción del entorno

Nuestra ilustración muestra el concepto de la red a la cual nos referimos y que usaremos como ejemplo para este artículo. WS1 a WS3 representan las estaciones de trabajo conectadas a la Internet a través del ruteador. El service-host es responsable del correo interno y externo. El envío de correo está siendo manejado por el MTA. Los correos se recibirán con fetchmail y se realizará el procesamiento y ordenamiento con procmail. Las cuentas de correo en el servidor huésped son accedidas por las estaciones de trabajo vía POP3 o IMAP.

El problema

Si una de las estaciones de trabajo está estableciendo una conexión a la Internet, el servidor huésped no obtendrá noticia de esto. Debe ser posible indicarle al servidor huésped a través de un trabajo en cron para que pueda enviar o recibir correo electrónico en un momento específico. Algo más elegante sería poderle informar al servidor huésped cuando la conexión está siendo establecida, activando con esto el envío del mensaje de correo.

Dado que el ruteador está siendo ejecutado desde un disco flexible, no existe ningún archivo de comandos o programa alguno para poder controlar el servidor del correo.

La idea

Mientras se le informa al servidor huésped acerca de la conexión, será posible enviar una petición para iniciar el proceso para que el correo pueda ser enviado o recibido.

La solución

Para fli4l existe un programa llamado wget de alrededor de 100Kb, cabe perfectamente en un disco flexible. Con wget podemos establecer una conexión al servidor huésped mientras se está llamando. Esto es posible gracias a que inetd está abriendo un puerto en el servidor huésped que espera por una conexión del ruteador. Con el archivo de comandos para la conexión, se pueden iniciar procesos adicionales para el envio y recepción de correo electrónico.

El archivo de comandos está escrito en Perl y puedes obtenerlo desde aquí (mailstart.pl.gz).

Ajustes al ruteador

El proceso de conexión activa el archivo de comandos .../opt/etc/ppp/ip-up. Este es el lugar indicado para establecer una conexión con nuestro servidor huésped. Agreguemos la línea:

wget -t 1 --spider
MAILSERVER:PORT/xyz & > /dev/null

con eso lo conseguiremos.

Explicación a los comandos de wget

Ajustes al servidor de correo

Con la ayuda del superdemonio inetd, el programa mailstart [1] necesita ser activado. Para que esto suceda, tenemos que modificar algunos archivos:

/etc/inetd.conf

/etc/services

En este archivo asignamos el puerto por el cual wget tendrá acceso:

mailstart  4000/tcp # Mailstart

con eso lo lograremos.

/etc/inetd.conf

En este archivo, definiremos cuál programa será iniciado. inetd monitoreará su ejecución y generará bitácoras en /var/log/syslog.

La línea:

mailstart  stream  tcp	nowait	root  /usr/sbin/tcpd /root/bin/mailstart

va a dar por terminado este paso. El primer nombre debe ser el mismo que se usó en el archivo /etc/services.

Ajustes a mailstart.pl

El programa puede ser ajustado a través de variables para cada servidor en particular.

$protokoll

Con la variable $protokoll podemos definir si las llamadas serán registradas. Estableciendo esta variable a 1 registraremos las llamadas en /var/log/mailstart.log. Si la variable es definida a 0 no se creará ningún registro.

Default: 1 crear registro

$protokoll_ziel

Con esta variable determinaremos el lugar al que se enviará el registro.

Default: /var/log/mailstart.log

$mailholen

Aquí pondremos el nombre del programa que obtendrá el correo. Para iniciar el programa el usuario debe ser root o el nombre de usuario que fue usado en /etc/inetd.conf. Si alguien más desea hacer uso del programa, el comando usado debe ser: su USER -c \"COMMAND PARAMETER\", en caso de que el comando contenga varias letras, deben ser entrecomilladas y deben usarse caracteres de escape \.

Default (en una sola línea):
 
su postmaster -c \"fetchmail -t
40 -a -L /var/log/fetchmail/fetchmail.log -f
/home/postmaster/.fetchmailrc\"

$mailsenden

Esta es la ubicación del programa usado para el envío de correo. Para iniciar el prgrama deber ser root o el nombre del usuario que usaste en /etc/inetd.conf. Si alguien más desea hacer uso del programa, el comando usado debe ser: su USER -c \"BEFEHL PARAMETER\", en caso de que el comando contenga varias letras, deben ser entrecomilladas y deben usarse caracteres de escape \.

Default: sendmail -q

A propósito, parte del programa está descrita con una breve documentación que provee una descripción. Puedes verla usando perdoc mailstart.

Prueba

Antes de probar el súper servidor, necesitas reiniciarlo, /etc/init.d/inetd restart lo hará. Ahora puedes probar contelnet localhost mailstart, si el servidor responde verás algo similar a esto:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HTTP/1.1 220 OK
Date: Sun, 20 Jul 2003 10:45:46 GMT
Server: mailstart/perl (sbsbavaria)
Last-Modified: Sun, 20 Jul 2003 10:45:46 GMT
Content-Type: text/txt
Content-Length: 11
1234567890
Connection closed by foreign host.

Bueno, eso es todo. Espero que hayas obtenido lo necesario con mi descripción. Si no es este el caso, entonces tenemos un problema. - Tú, porque no lo hiciste funcionar.
- Yo, porque no pude hacer una descripción decente.:-).

Transferencias

Vínculos y referencias