Thursday, September 29, 2011

Perl - Net::SMTP::TLS - Mandar correos via SMTP con TLS


Hola Mundo! 

Gracias a la necesidad de mandar notificaciónes de Nagios utilizando un servidor SMTP remoto busque la manera de crear un script que me permita tal tarea, y adivine quien me ayudo? PERL!

Gracias a Perl y el modulo Net::SMTP::TLS pude crear un script que me permitio mandar correos a un servidor SMTP remoto que requiera TLS y autentificación (Por ejemplo Gmail como en este caso).

Antes de darles algunos ejemplos del script para que lo adapten a sus necesidades les voy a mostrar como instalar el modulo Net::SMTP::TLS, lo primero es entrar al "cpan shell":

# perl -MCPAN -e shell

cpan shell -- CPAN exploration and modules installation (v1.9456)
Enter 'h' for help.
cpan[1]>

Luego instalamos el modulo:

cpan[1]> install Net::SMTP::TLS


Empezará a descargar el modulo, automáticamente lo instalará y estaremos listos para usarlo.

Abrimos un editor de textos y nos guiamos de este script de ejemplo:

====================================================

#!/usr/bin/perl -w


use Net::SMTP::TLS;


$destinatario=$ARGV[1];
$mensaje=$ARGV[2];


my $smtp = new Net::SMTP::TLS('smtp.gmail.com',
Hello        =>       'smtp.gmail.com',
Port         =>       587,
User        =>       'usuario@gmail.com',
Password=>       'Contraseña18');


$smtp->mail('usuario@gmail.com');
$smtp->to("$destinatario");
$smtp->data;
$smtp->datasend("To: $destinatario\n");
$smtp->datasend("From: usuario@gmail.com');
$smtp->datasend("\n");

$mailer->datasend("Subject: Este es el asunto\n");
$mailer->datasend("\n");
$mailer->datasend("$mensaje\n");
$mailer->dataend();
$mailer->quit;

======================================================


En el ejemplo anterior se puede ver como se carga el modulo Net::SMTP::TLS, y declaran dos variables, las cuales seran igual al primer y el segundo argumento, luego el script se autentificará con los datos pre-establecidos y mandara el correo.

Guardamos nuestro script, le damos permisos de ejecución "chmod +x script.pl", y lo utilizamos de la siguiente manera:

./script.pl probando@gmail.com "Este es un mensaje enviado desde Perl"

Y listo, luego les cuento como utilizar este script en las notificaciones de Nagios.

Saludos!


2 comentarios:

Javi said...

me da errores! :S

Ramphis Che said...

Que error te da?

Post a Comment