#!/usr/bin/perl -w
# David Bremner
# bremner@unb.ca
# $Id: exirejectsumm.pl,v 1.3 2004/05/21 12:06:32 bremner Exp $

# This file is placed in the public domain.

my $summary_only=0;

if ($ARGV[0]=~/-s/){
  $summary_only=1;
  shift;
}

$^L="\n";

while(<>){
  chomp();
  next if(!m/\d\d\d\d-\d\d-\d\d/);
  next if (!m/.*rejected RCPT/);
  if (m|F=<([^>]+)>.*: ([^:]+)$|){
    $reason=$2;
    $from=$1;

    ($user,$domain)=split(/@/,$from);

    if (!defined($sender_domain{$domain})){
      $sender_domain{$domain}=1;
      $dom_permanent{$domain}=0;
      $dom_temporary{$domain}=0;

    }

    if (!defined($sender{$from})){
      $sender{$from}=1;
      $permanent{$from}=0;
      $temporary{$from}=0;
    }

    if ($reason =~ /^Sender verify failed/){
      $permanent{$from}++;
      $dom_permanent{$domain}++
    } else {
      $dom_temporary{$domain}++;
      $temporary{$domain}++;
    }

  }
}


print "Exim rejected domains\n";

foreach $from (sort (keys %sender_domain)){
  $temp= $dom_temporary{$from};
  $perm= $dom_permanent{$from};
  write;
}

if (!$summary_only){
  print "\nExim rejected addresses";
  $-=0; # force header

  foreach $from (sort (keys %sender)){
    $temp= $temporary{$from};
    $perm= $permanent{$from};
    write;
  }
}

format STDOUT_TOP =
Address                          Temporary    Permanent
-------------------------------------------------------
.
format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<@>>>>>>>>    @>>>>>>>>
$from,              $temp,  $perm
.


