#!/bin/bash
# ein kleines script zur auswertung wer denn da in den letzten logfiles mit unknown rDNS erwischt wurde oder auch mit falschem DNS einträgen.
# bitte passt es evtl. auf eure bedürfnisse an.
# Verbesserungsvorschläge nehme ich gerne entgegen unter driessen@fblan.de, vor allen Dingen für die Dinge die noch nicht rennen
# viel spaß damit

CURRLOG=/var/log/mail.log
LASTLOG=/var/log/mail/mail.log.1
ARCHLOG=/var/log/mail/mail.log.*.gz
AUSWERTUNG=/var/amavis/unknown.txt
sortIP=/var/amavis/unknown.sortiert
rDNSab=/var/amavis/unknown.rdns
classC=/var/amavis/unknown.ClassC

# erstmal die Dateien leeren bzw. löschen
rm $AUSWERTUNG
rm $sortIP
rm $rDNSab


#echo " wer wurde in den letzten Wochen aus Dialinnetzen registriert und wie oft">$AUSWERTUNG
# grep -v 'Greylisted'|

cat $LASTLOG $CURRLOG | \
	grep -v 'localhost'| \
	egrep "NOQUEUE: reject: RCPT from unknown"| \
	cut -d "[" -f 3 | \
	cut -d "]" -f 1 | \
	sort -b -t. -k1,1n -k2,2n -k3,3n -k4,4n >$AUSWERTUNG

zcat $ARCHLOG  | \
	grep -v 'localhost'| \
	grep -v 'Greylisted'| \
	egrep "NOQUEUE: reject: RCPT from unknown"| \
	cut -d "[" -f 3 | \
	cut -d "]" -f 1 | \
	sort -b -t. -k1,1n -k2,2n -k3,3n -k4,4n >>$AUSWERTUNG

cat $AUSWERTUNG | \
 	sort -b -t. -k1,1n -k2,2n -k3,3n -k4,4n| \
	uniq -c | \
	awk '{print($1, $2)}' >>$sortIP

cat $sortIP| \
	while read line
		do
	   	ipaddress=`echo $line  | cut -d " " -f 2`;
   		anzahl=`echo $line | cut -d " " -f 1`;
   		reverse_dns=`dig +short -x ${ipaddress}| \
			cut -d "/" -f 2 | \
			sed -e 's/.\{1\}$//'`;
   		echo "$anzahl	$ipaddress		$reverse_dns">>$rDNSab;
done;

cat $AUSWERTUNG | \
	cut -d "." -f 1,2,3 | \
	sort -b -t. -k1,1n -k2,2n -k3,3n | \
	uniq -c | \
	awk '{print($1, $2)}' >$classC

#echo " Zusammenfassung nach Class C Netzen" >$rDNSab;

#cat $classC | sort -b -t. -k1,1n -k2,2n -k3,3n |uniq -c | awk '{print($1, $2)}'>>$rDNSab;

