[LinuxFocus-icon]
LinuxFocus article number 308
http://linuxfocus.org

Stefan Blechschmidt
por Stefan Blechschmidt.
<sb(at)sbsbavaria.de>

Sobre el autor:

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.



Traducido al español por:
Edgar Hernández ZÃşÃ±iga. <edgar(en)linuxfocus.org>

Correo automático en fli4l

Automail mit fli4l

Resumen:

¿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.


_________________ _________________ _________________

 

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



Contactar con el equipo de LinuFocus
© Stefan Blechschmidt.
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Información sobre la traducción:
en --> -- : Stefan Blechschmidt. <sb(at)sbsbavaria.de>
en --> es: Edgar Hernández ZÃşÃ±iga. <edgar(en)linuxfocus.org>

2005-01-14, generated by lfparser_pdf version 2.51