Título: [Perl] Error al enviar Mail Publicado por: DeMoNcRaZy en 27 Junio 2015, 22:07 pm Buenas,
Estoy intentando mandar un mail a través de Perl pero me salta un error como si me faltase dicho módulo instalado. Tengo esto: Código
Y me da este error: Código: Can't locate Mail/Sendmail.pm in @INC (you may need to install the Mail::Sendmail module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at probe.pl line 1. He intentado probar de otras formas pero me da error parecido. ¿Esto es que necesito instalar un módulo no? Código: (you may need to install the Mail::Sendmail module) A ser así, ¿cómo podría instalarlo? (Linux Mint) Gracias. Saludos! Título: Re: [Perl] Error al enviar Mail Publicado por: explorer en 27 Junio 2015, 23:15 pm Puedes arrancar el Synaptic y buscar por el paquete libmail-sendmail-perl
O desde la línea de comandos, siendo root, ejecutar apt-get install libmail-sendmail-perl Título: Re: [Perl] Error al enviar Mail Publicado por: DeMoNcRaZy en 27 Junio 2015, 23:27 pm Gracias por la respuesta,
Acabo de instalar dicho paquete, pero ahora me dice lo siguiente: Código: Error al enviar mail: connect to localhost failed (Conexión rehusada) Supuestamente habrá que modificar el stmp no? ¿Dónde se encuentra dicho archivo? ¿Y el stmp de gmail? Gracias. Saludos! Título: Re: [Perl] Error al enviar Mail Publicado por: Eleкtro en 27 Junio 2015, 23:39 pm Supuestamente habrá que modificar el stmp no? Lee el F.A.Q y/o la referencia y descripción del módulo antes de descargar y probar nada. Cita de: http://search.cpan.org/~mivkovic/Mail-Sendmail-0.79/Sendmail.pm LIMITATIONS No suport for the SMTP AUTH extension. The SMTP server has to be set manually in Sendmail.pm or in your script, unless you have a mail server on localhost. http://search.cpan.org/~mivkovic/Mail-Sendmail-0.79/Sendmail.pm ¿Y el stmp de gmail? puerto SMTP = 587 SSL activado también puedes usar este módulo que ya parece hacer esa tarea de forma automatizada: http://search.cpan.org/~peco/Email-Send-SMTP-Gmail-0.1.1/lib/Email/Send/SMTP/Gmail.pm Saludos! Título: Re: [Perl] Error al enviar Mail Publicado por: DeMoNcRaZy en 28 Junio 2015, 00:08 am Estoy probando como bien dice hay:
Código
Y el resultado: Código: Testing Mail::Sendmail version 0.79_16 Y el archivo Sendmail.pm no me deja escribir en él. También probé así: Código
Y me da este resultado: Código: Error al enviar mail: connect to localhost failed (Conexión rehusada) Título: Re: [Perl] Error al enviar Mail Publicado por: explorer en 28 Junio 2015, 01:17 am Para modificar el archivo Sendmail.pm (algo muy raro) debes cambiar los permisos de escritura o ser administrador del sistema (root), ya que seguro que el archivo se ha instalado con permisos de escritura restringida al stuff.
Si no te deja conectarte al servidor localhost (tu ordenador) es, quizás, porque no tienes instalado ningún servidor SMTP. Y aunque lo instales, debes recordar que debes configurarlo para enseñarle qué transporte debe realizar del correo local. Yo también uso Linux Mint. Tengo instalado el postfix como gestor de transporte de correo (MTA) (se instala por defecto). Para configurarlo, te vale con editar el archivo /etc/postfix/main.cf o ejecutas el asistente dpkg-reconfigure postfix. Como los correos enviados desde una línea residencial suelen ser filtrados por los principales servidores de correo, lo ideal es configurar el MTA para que envíe el correo a nuestro servidor de correo normal. En el postfix indicamos que queremos usar un smarthost externo, indicamos nuestro servidor de correo, nombre de usuario y contraseña, y listo. Para comprobar que todo va bien, ejecutas el comando mail -s "Prueba" yusetist@tucorreo.com < /dev/null Y ver si llega. A partir de ahí ya podemos usar nuestros programas usando localhost como MTA. De todas formas, para enviar correo a Gmail no debería haber ningún problema. El problema puede estar en usar Gmail para el envío correo. Como ves, Gmail te pide usar el comando STARTTLS, para iniciar un autenticación codificada. Lo mejor, entonces, es usar un módulo específico, como Email::Send::SMTP::Gmail (https://metacpan.org/pod/Email::Send::SMTP::Gmail). Título: Re: [Perl] Error al enviar Mail Publicado por: DeMoNcRaZy en 28 Junio 2015, 12:10 pm Buenas,
Gracias por la respuesta. Este es el archivo: Código: smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination ¿De hay qué tendría que modificar exactamente? Acá: Código
¿Tendría que hacer uso de postfix o ya usando la funcion $mail de Mail::Sendmail es suficiente? Gracias. Saludos! Título: Re: [Perl] Error al enviar Mail Publicado por: explorer en 28 Junio 2015, 20:11 pm No soy bueno configurando el Postfix. Lo mio es el Exim4 :(
Te aconsejo que arranques el asistente. De mi archivo, veo que las líneas interesantes son estas: Código: smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination Como mi servidor de correo necesita autenticación, están puestas además las opciones "smtp_sasl_*" para indicar en qué archivo se guardan las credenciales. En /etc/postfix/sasl/sasl_passwd hay una línea así: Código: correo.joaquinferrero.com explor@joaquinferrero.com:Nan&&telovewebon Con esto, ya puedo escribir un programa así de sencillo: Código Y Mail::Sendmail usará el MTA local para enviarme el correo a mi buzón externo. Si, en cambio, no quiero usar el servidor local, puedo usar algún otro servidor externo, de forma directa: Código Pero... no nos estamos identificando en el servidor destino (y tampoco lo permite hacer este módulo), así que para él somos un correo que llega de procedencia desconocida, y estaremos sujetos a sus reglas. En mi caso, me ha rechazado la recepción del correo y me ha metido en una lista gris, por ser sospechoso de ser correo basura. No puedo volver a intentarlo hasta pasados unos minutos. 2015-06-28 19:59:32 1Z9Grc-0007Vb-7Y H=(Arcanus) [37.101.173.131] F=<explorer@jferrero.noip.geek> temporarily rejected after DATA: message from explorer@jferrero.noip.geek over [37.101.173.131] will be GreyListed as it scores 7.2 spam points Es mejor usar otros módulos más modernos para el envío de correo, ya que permiten la autenticación, y así podemos enviar correo usando nuestro servidor de correo personal. Mail::Sendmail está sin actualizar desde el 2003, mientras que Mail::Sender (https://metacpan.org/pod/Mail::Sender) se actualizó hace un año, y tiene más opciones de envío. Título: Re: [Perl] Error al enviar Mail Publicado por: DeMoNcRaZy en 29 Junio 2015, 01:31 am Buenas,
Acabo de configurar dicho archivo: Código: mtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination Y tengo esto: Código
Lo ejecuto y todo correcto me manda el if (Mail enviado), pero reviso mi correo y no me llegó nada. Tal vez puede ser por mala configuración del archivo o por que está des-actualizado con bien mencionas. ------------------------------------------------------------------------------------------------------------------- Para usar Mail::Sender me descargo Exim4 en el gestor de paquetes? Y luego que archivo tendría que configurar con lo que me has descrito en el anterior mensaje. Probaré a usarlo ya que está actualizado como según has mencionado y será mejor y evitaremos más problemas ocasionales. Gracias por las respuestas. Saludos! Título: Re: [Perl] Error al enviar Mail Publicado por: explorer en 1 Julio 2015, 11:45 am Sí, has configurado el archivo, pero no el de las credenciales (usuario y contraseña) para poder usar el servidor smtp.gmail.com.
Si no quieres complicarte la vida, agrega la opción smtp => 'smtp.gmail.com', (o el nombre de otro servidor de correo) y así Mail::Sendmail usará ese en lugar de tu MTA local. Mira mi último ejemplo. |