Gente:
Tenia que automatizar el pedido de los mails a un servidor de correo
etrn de mi proveedor y no encontre ningun script dando vueltas.
Cuando hable con ellos me contaron que habia varios clientes con el
mismo problema, asi que aca esta la solucion que arme. Si les sirve, bien
y si da lugar a una discusion, mejor aun.
Alejandro.
#***********************************************************************
************
De aca en adelante lean solo a los que le interese el problema y una
posible solucion que funciona... al menos aparentemente ;-)
#***********************************************************************
************
El problema:
Para bajar los mails a mi servidor despues de que se corta la conexi�n
hay que hacer un telnet al servidor, puerto 25 y ejecutar los siguientes
comandos (a mano)
$>helo nombre
$>etrn midominio.com.ar
$>quit
Estos comandos hay que ejecutarlos, cuanto menos, cada vez que se
restaura la conexi�n...
La solucion entonces es ejecutarlos en forma automatica. Como? Con un
script como este (en perl ...)
Hace falta instalar el modulo Net::Telnet
Hay que setear las variables $dominio, $hostname, $cadena1 y $cadena2.
La variable $deb es para cuando algo no funciona correctamente, hace que
imprima los mensajes para saber en que parte del programa esta el
problema.
Espero que les sirva ...
#****************************************
#!/usr/bin/perl -w
use Net::Telnet;
my $deb = 0;
my $dominio = 'mi.dominio.com.ar';
my $hostname = 'smtp.proveedor.com.ar';
my $port = 25;
# aca va/n la/s ultima/s palabra/s del mensaje de bienvenida
$cadena1 = "ready";
# aca va/n la/s ultima/s palabra/s del mensaje de respuesta al comando
etrn
$cadena2 = "delivery to domain <$dominio>";
$deb && print "Abriendo conexion ...\n";
$t=Net::Telnet->new(Timeout=>10,
Prompt => '/%/',
Host => $hostname,
Port => $port);
$t->waitfor(String => $cadena1,Timeout => 30);
$deb && print "Enviando comandos ...\n";
$t->print("helo $dominio");
$t->print("etrn $dominio");
$t->waitfor(String => $cadena2);
$deb && print "Cerrando ...\n";
$t->print("quit");
$t->close;
$deb && print "Programa terminado ...\n\n";
exit(0);
#****************************************