永遠のプログラマ☆

高齢者でもプログラマ(4x年)

postfix ログから送受信リスト作成 perl スクリプト☆

こんにちは。

トランプ人気。

ズバッとやってくれそうという期待感。

小泉さんもそうだったような気がする。

 

さて、postfix でバーチャルドメインでメールサーバー構築。

postfix ログを漠然とみてると日が暮れる。

 

そこで久しぶりに
perlプログラミング。
/var/log/maillogを読んで
以下の形式のリストを吐き出す。
処理時刻  from-address to-address status(OK or NG)  error-mesg

my @hfrom;
my $file = '/var/log/maillog';
open my $fh, '<', $file
  or die qq/Can't open file "$file" : $!/;
while (my $line = <$fh>) {
  my $time = substr($line,0,15);
  my ($id,$from) = getmaddr(": from=",$line);
  $hfrom{$id} = $from if ($from ne "<>" && $from ne "");
  my ($id,$to) = getmaddr(": to=",$line);
  my @w3 = split(/status=bounced/,$line);
  my $i3 = @w3;
  if ($i3 > 1) {
    print "$time\t$hfrom{$id}\t$to\tNG\t$w3[1]";
  } else {
    if ($hfrom{$id} ne "") {
      print "$time\t$hfrom{$id}\t$to\tOK\n";
    }
  }
}
close $fh;
exit;
sub getmaddr{
  my ($p, $log) = @_;
  my @w = split(/$p/,$log);
  my $i = @w;
  return ("","") if ($i < 1);
  my @wa = split(/, /,$w[1]);
  my $addr = $wa[0];
  my $id = substr($w[0],-11);
  return ($id,$addr);
}