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);

#****************************************







Responder a