#!/bin/bash

if [ $# -lt 1 ]
    then
    echo "Usage: $0 [email@from] [today - x days] [email@to]"
    exit 200
fi

FROM="$1"
DAYS="$2"
TO="$3"

LOGS=/var/log/mail.log

if ! [ -z "$DAYS" -o "x$DAYS" == "x0" ]; then
	ZLOGS=`find /var/log/ -name "mail.log-*.gz" -mtime -$DAYS |sort`
	ZNLOGS=`find /var/log/ -name "mail.log.*.gz" -mtime -$DAYS |sort -r`
	LOGS="$ZNLOGS $ZLOGS $LOGS"
fi

echo -n "[ Log file-ok: "
echo -n $LOGS
echo " ]"

sentmails=`zgrep postfix $LOGS |grep "from=<.*${FROM}[^>]*>" |grep qmgr |sed -e "s/^.*qmgr\[[0-9]*\]\: \([0-9A-F]*\)\:.*/\1/"`

echo "[ ID-k: "`echo -n "$sentmails"|wc -l`" ]"
echo ""


for sentmail in $sentmails; do

	history=`zgrep -h postfix $LOGS |grep "$sentmail:"`

    if ( echo "$history" |grep "to=<.*${TO}[^>]*>" >/dev/null ); then

		client=`echo "$history" |grep "client=" |sed -e "s/.*client\=//"`

		msgid=`echo "$history" |grep "message-id=" |sed -e "s/.*message-id\=<\(.*\)>.*/\1/"`

		if [ "$client" != "localhost[127.0.0.1]" -a -n "$msgid" ]; then

			tolist=`echo "$history" |grep "to=<" | sed -e "s/.*to=<\([^>]*\)>.*/\1/" |uniq |tr "\n" ","`
			starttime=`echo "$history" |grep "queue active" | awk '{print $1, $2, $3}'`

	    	echo "*****************************************************************************"
		    echo "*** $FROM -> $tolist"
		    echo "*** $msgid"
			echo ""

			echo "$starttime Feladva"
			echo "$starttime ID: $sentmail"

			pair=`zgrep -h postfix $LOGS | grep "$msgid" |grep -v "$sentmail" | sed -e "s/^.*postfix[^[:space:]]*\: \([0-9A-F]*\)\:.*/\1/"`

			all_sent=`echo "$history" |grep "status=sent" |tr " " "\$"`

			for sent in $all_sent; do
				sent=`echo "$sent" | tr "\$" " "`
				relaytime=`echo "$sent" | awk '{print $1, $2, $3}'`
				deliveredto=`echo "$sent" | sed -e "s/.*to=<\([^>]*\)>.*/\1/"`

				if (echo "$sent" | grep "relay=127.0.0.1\[127.0.0.1\]:10024" >/dev/null); then

					echo "$relaytime Spamfilter start"

					if [ -n "$pair" ]; then
						pair_history=`zgrep -h postfix $LOGS |grep "$pair:"`
	
						pair_starttime=`echo "$pair_history" |grep "queue active" | awk '{print $1, $2, $3}'`

						echo "$pair_starttime Spamfilter kesz"
						echo "$pair_starttime ID: $pair"

						pair_all_sent=`echo "$pair_history" |grep "status=sent" | tr " " "\$"`

						for pair_sent in $pair_all_sent; do
							pair_sent=`echo "$pair_sent" | tr "\$" " "`
							pair_relaytime=`echo "$pair_sent" | awk '{print $1, $2, $3}'`
							pair_deliveredto=`echo "$pair_sent" | sed -e "s/.*to=<\([^>]*\)>.*/\1/"`
							pair_endtime=`echo "$pair_sent" |grep "delivered" | awk '{print $1, $2, $3}'`
							if [ -n "$pair_endtime" ]; then
								echo "$pair_endtime Kezbesitve: $pair_deliveredto"
							else
								echo "$pair_relaytime Tovabbitva SMTP-vel: $pair_deliveredto"
							fi
						done
					fi

				else
					endtime=`echo "$sent" |grep "delivered" | awk '{print $1, $2, $3}'`
					if [ -n "$endtime" ]; then
						echo "$endtime Kezbesitve: $deliveredto"
					else
						echo "$relaytime Tovabbitva SMTP-vel: $deliveredto"
					fi
				fi
			done
		fi
		echo ""
	fi

done
