Perl: listado rápido de correos en un mbox


Yo uso el spamassassin para todas mis cuentas, además con un umbral muy bajo (2.1). Con este umbral y la base de datos bayesianas ya bien entrenada (después de meses y meses de usarlo) no deja pasar casi ningún spam (no más de dos por día) y no tengo falsos positivos, salvo uno cada pocos meses. Pero tenía que buscar una forma de listar rápidamente los mensajes en el fichero mbox donde dejos los spams (vía procmail) sin necesidad de abrir ningún cliente, así que lo programé rápidamente en Perl. Es una chorradita, pero aquí lo tenéis por si os sirve u os inspira para cosas parecidas más importantes. Y de paso aprendéis Perl, ¡que os hace falta! 🙂

Para ejecutarlo basta hacer ./listar.pl fichero_mbox1 fichero_mbox2…. También es válido redireccionarlo desde ficheros o tuberías. Yo lo uso mucho con el less y el grep, por ejemplo para verificar si me ha llegado algo de Amazon y dió un falso positivo:

$ ./listar.pl mail/spams | grep amazon.co.uk

#! /usr/bin/perl

use strict;

use MIME::Words qw(:all);
# Módulo: MIME::Words
# Debian: libmime-perl

my ($user, $subject, $c);

$c = 0;
while (<>) {
if (/^From /) {
chomp;
$c++;
($user) = /^From +([\w@\.]+)/;
undef $subject;
} elsif (defined($user) && /^Subject: /) {
chomp;
($subject) = /^Subject: +(.*)$/;
$subject = decode_mimewords($subject);
print “$c: $user : $subject\n”;
undef $user;
}
}
#print “Mails: $c\n”;

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=2105 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.