Heures de remise des mails dans les journaux de Qmail

Lors d'envois en masse, il peut être nécessaire de savoir vers quelle(s) addresse(s) notre email a été remis, et à quelle heure. Voilà un petit script qui permet de faire ça (attention, ce script considère qu'il s'agit d'une instance de qmail peut utilisée, sans envois en parallèle vers des adresses identiques)

#!/usr/bin/env perl -w use strict; use warnings; my @addr = qw( adresse1@foo.fr adresse2@bar.com adresse3@baz.org ); my %del = (); open(FILE, "qmail_log.txt") or die "Couldn't open qmail_log.txt"; my @lines = <FILE>; close FILE; ADDR: foreach my $dst (@addr){ L1: foreach my $l (@lines){ if ($l =~ m/starting delivery (\d+): msg \d+ to remote $dst/){ my $delivery = $1; L2: foreach my $l2 (@lines){ if ($l2 =~ m/^(2016-09-2[01] \d+:\d+:\d+)\.\d+ delivery $delivery: success/){ $del{$dst} = $1; next ADDR; } } } } } foreach (@addr){ my $time = $del{$_} || 'non remis'; print '| ' . $_ . ' | ' . $time . " |\n"; }