#!/usr/local/bin/perl

#
# usage: cd /var/log/exim; cat main.YYYYMM* | tlstype
# pi@opsec.eu, Sun May  6 19:03:44 CEST 2012
#

use warnings;
use strict;

my($t);
my($key);
my(@t);
my($inc);
my($out);
my($xinc);
my($xout);
my(%xinc);
my(%xout);

while(<STDIN>) {
    chop;
    $t=$_;
    @t=split(/ /,$t);

    # incoming
    if ( defined($t[3]) && $t[3] eq '<=' ) {
	$inc++;
	foreach $t (@t) {
	    if ( $t =~ /^X=/ ) {
		$xinc++;
		$xinc{$t}++;
		next;
	    }
	}
    }
    # outgoing
    elsif ( defined($t[3]) && $t[3] eq '=>' ) {
	$out++;
	foreach $t (@t) {
	    if ( $t =~ /^X=/ ) {
		$xout++;
		$xout{$t}++;
		next;
	    }
	}
    }
}

foreach $key (sort { $xinc{$b} <=> $xinc{$a} } keys %xinc) {
    printf "%7d %s\n", $xinc{$key}, $key;
}
printf "%7d tls incoming\n", $xinc;
printf "%7d total incoming\n\n", $inc;

foreach $key (sort { $xout{$b} <=> $xout{$a} } keys %xout) {
    printf "%7d %s\n", $xout{$key}, $key;
}
printf "%7d tls outgoing\n", $xout;
printf "%7d total outgoing\n", $out;

