Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - explorer

#51
Scripting / Re: [Perl] Error al enviar Mail
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.

#52
Scripting / Re: [Perl] Error al enviar Mail
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:
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = jferrero.noip.geek
mydestination = Arcanus, localhost.localdomain, localhost, jferrero.noip.geek
relayhost = correo.joaquinferrero.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
default_transport = smtp
relay_transport = smtp
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options =

De ahí sacamos que mi "smarthost" es el indicado por la entrada "relayhost". Ahí es donde se conectará para enviar el correo que se genere en mi máquina, que está indicada en la entrada "myhostname".

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í:
correo.joaquinferrero.com explor@joaquinferrero.com:Nan&&telovewebon
donde se indican las credenciales (usuario:contraseña) para cada servidor externo.

Con esto, ya puedo escribir un programa así de sencillo:
Código (perl) [Seleccionar]
#!/usr/bin/perl
use Mail::Sendmail;

my %mail = (
    From    => 'explorer@jferrero.noip.geek',
    To      => 'explor@joaquinferrero.com',
    Message => "Este es un mensaje muy cortito",
);

sendmail(%mail) or die $Mail::Sendmail::error;
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 (perl) [Seleccionar]
#!/usr/bin/perl
use Mail::Sendmail;

my %mail = (
    smtp    => 'correo.joaquinferrero.com',

    From    => 'explorer@jferrero.noip.geek',
    To      => 'explor@joaquinferrero.com',
    Message => "Un mensaje muy cortito",
);

sendmail(%mail) or die $Mail::Sendmail::error;

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 se actualizó hace un año, y tiene más opciones de envío.

#53
Scripting / Re: [Perl] Error al enviar Mail
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.
#54
Además de lo anterior, decir que en el foro de perlenespanol.com hay un subforo de Formación. Dentro de él hay un tema fijo llamado Aprender Perl, con enlaces a más recursos.

En vídeo, también hay un tutorial, pero no hay que olvidarse de leer el hilo, porque tiene algunas fallas.

Y, por supuesto, el foro está abierto para cualquier consulta.
#55
Scripting / Re: [Perl] Error al enviar Mail
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
#56
Sí que se pueden usar exp. reg. para buscar lo que quieres. Te pongo un ejemplo escrito en Perl, ya que en Python no sé cómo se pueden usar las exp. reg. extendidas:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$html = <<'HTML';
<html>
<head>
</head>
<body>
<p>Un párrafo con número: 42</p>
</body>
</html>
HTML

$html =~ /(\d+)(?(?{ $^N >= 25 and $^N <= 50 })(?{print "sí\n"})|(?{print "no\n"}))/;

Como ves, el truco consiste en capturar una cifra, y compararla con los límites que queremos, y el resultado imprimirlo inmediatamente.

Escrito de forma más clara:
Código (perl) [Seleccionar]
#!/usr/bin/perl  
$html = <<'HTML';
<html>
<head>
</head>
<body>
<p>Un párrafo con número: 42</p>
</body>
</html>
HTML

$html =~
       /
       (\d+)                                           # capturar números
       (?(?{
                       $^N >= 25 and $^N <= 50         # ¿está dentro de los límites?
               })
               (?{
                       print "sí\n"                    # sí
               })
               |  
               (?{
                       print "no\n"                    # no
               })
       )  
       /x;
#57
Scripting / Re: ayuda con python urgente!!
20 Junio 2015, 23:05 PM
No necesitas un doble bucle. Con uno te vale, ya que el índice que recorre las filas es el mismo que las columnas (con eso, accedemos a la diagonal).

Código (python) [Seleccionar]
if mat[i][i] == 0:

#58
Es mejor que no uses extensiones conocidas, aunque el formato sea el mismo. Solo con esa ya hay mucha gente que ni se molesta en averiguar qué es lo que hay dentro.

Un ejemplo que he visto en una aplicación así: los archivos extra (como tus MOD) subían con extensión .zipx , y realmente era un zip comprimido con una contraseña, pero, además, estaba invertido (el primer byte del archivo era el último, el segundo, el penúltimo, etc.).

Hay más trucos, como hacerle un XOR a todos los bytes, sumar un valor fijo a cada grupo de bytes, etc., etc. Hay muchos métodos para esconder la información.

Lo malo es... si hacen ingeniería inversa de tu programa y averiguan el procedimiento que usas.

En cuanto a la forma de hacerlo, pues puedes usar el mismo lenguaje en que desarrollas los MOD, pero depende de si puedes integrar el procedimiento de comprensión.

Ejemplo: tuvimos un caso en que era necesario enviar informes a los clientes. Ese informe iba comprimido, ya que era texto y tenía que ser muy rápido. Pero en el lado del cliente no podíamos instalar la biblioteca de descomprensión. La solución fue comprimir los archivos con un sencillo método RLE personalizado para comprimir palabras, no bytes. Y el procedimiento para descomprimir en el lado del cliente fue igual de simple.
#59
Buenas.

Solo unas líneas para contaros que este año se celebrará la próxima YAPC::EU en Granada. Será la primera vez que este evento europeo se celebre en España.

Ya está abierta la inscripción.

En estos momentos ya son más de 200 los registrados, de 33 países y 59 grupos de usuarios, de los cuales más de 100 son los confirmados.

De momento, más de 50 charlas aprobadas.

Mod: Links corregidos.
#60
Scripting / Perl v5.22
1 Junio 2015, 22:54 PM
Perl 5.22.0 representa, aproximadamente, 12 meses de desarrollo desde Perl 5.20.0 y contiene aproximadamente 590 000 líneas de cambios a lo largo de 2400 archivos por parte de 94 autores.

Nuevas características

  • Perl sabe qué métodos se han definido en una clase, y puede llamarlos más rápido
  • Crea alias a partir de referencias en ambos lados de una asignación o en una variable de control
  • Existen nuevos operadores de bit, para diferenciar los casos de números y cadenas de caracteres
  • El operador de entrada de líneas, el diamante doble, <<>>, reduce los casos mágicos cuando gestionamos ARGV (archivos abiertos de forma implícita desde la línea de comandos)
  • La forma de open() entubado ahora funciona en Windows
  • Valores de punto flotante en hexadecimal. (Pero, ¿qué demonios es esto?)
  • close() ahora pone sus errores en $! y saca una advertencia cuando falla de forma implícita
Mejoras en la expresiones regulares

  • Márgenes \b especiales en exp. reg., incluyendo agrupaciones de grafemas, márgenes de palabras en Unicode, y márgenes en sentencias
  • La nueva opción /n (no captura) en exp. reg. convierte a todos los grupos de paréntesis como de no captura
  • El módulo re ahora tiene un modo estricto
  • Solo puede usar un /x, porque /xx significará otra cosa, en el futuro
Y soporte de Unicode 7.0.

El módulo CGI se ha quitado. Si se desea, se puede instalar desde CPAN, pero lo recomendado hoy en día es usar otras tecnologías.

Plataformas que vuelven a funcionar: IRIX y Tru64. z/OS ejecutando el código de página 1047 de EBCDIC.

Plataformas obsoletas: NeXTSTEP/OPENSTEP