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 peu 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"; }