jueves, 29 de abril de 2010

Informar a los cpantesters desde una dirección privada

Test::Reporter permite enviar un mensaje al grupo de los cpantesters con el resultado de la instalación de un módulo de Perl, en el sistema. Lo normal es que ese mensaje vaya por medio del módulo Net::SMTP (opción por defecto).

El problema ocurre cuando estamos en un ordenador particular, detrás de una línea ADSL privada o residencial. La mayor parte de las veces no podremos enviar el correo, porque el servidor de destino nos rechazará la conexión, precisamente porque el correo sale de una dirección IP reservada al entorno residencial.

La solución pasa por configurar y modificar CPANPLUS para que el correo se envíe por medio del servidor SMTP de nuestro proveedor de Internet.

Primero, hay que editar el fichero /root/.cpanplus/lib/CPANPLUS/Config/User.pm. Esto lo podemos hacer de forma cómoda desde el propio entorno de CPANPLUS, entrando en cpanp y ejecutando s edit user. Se arrancará el editor por defecto junto con una copia del fichero, donde podremos modificarlo.

Los valores que debemos poner son los siguientes:
  • cpantest => 1
  • cpantest_mx => 'correo.nuestroservidordecorreo.com'
  • email => 'nosotros@nuestrocorreo.com'
  • debug => 1 (si queremos ver los mensajes de actividad en la conexión)
Lo más seguro es que nuestro servidor de correo exija nuestra autenticación, por lo que deberíamos indicar por algún lado, nuestro nombre de usuario y contraseña... pero... no se encuentra ningún lugar dónde hacerlo. O no he sabido buscarlo.

La solución que he encontrado es editar CPANPLUS/Internals/Report.pm, en la función _send_report(), justo después de crearse el objeto my $reporter = Test::Reporter->new(), podemos agregar unas líneas como estas:

$reporter->transport(
'Net::SMTP::TLS',
User => 'usuario',
Password => 'contraseña'
);


De esa manera, el transporte del correo electrónico, desde nuestro ordenador hacia nuestro servidor de correo en Internet, usará el módulo Net::SMTP::TLS, que nos permitirá autenticarnos con un nombre de usuario y contraseña, que también indicamos.

Es posible que no sea necesaria tanta historia, pero al menos, esto funciona.

Actualización: indicado mejor el fichero a modificar.

Actualización: En la nueva versión de CPANPLUS v0.9004, Internals/Report.pm ya está modificado para que admita un nuevo atributo en el fichero de configuración:

cpantest_reporter_args => {
from => 'correo@electronico_del_que_envia.com',
transport => 'Net::SMTP::TLS',
transport_args => [ User => 'usuario', Password => 'contraseña'],
}

por lo que ya no es necesario hacer ninguna otra modificación para el envío de correos.

Actualización: desde el 1 de septiembre de 2010 ya no es necesaria esta operación, pues el proceso ha cambiado (de correo a HTTP) y se ha simplificado la instalación. Más detalles.