3bcdf986552ca8ff0e53207f083de5edee5351d3
Benjamin Renard Initial commit

Benjamin Renard authored 8 years ago

1) #!/bin/bash
2) 
3) MAILID=$1
4) [ -z "$MAILID" ] && echo "Usage : $0 [mailid]" && exit 1
5) 
6) DEBUG=0
7) [ "$2" == "-d" ] && DEBUG=1
8) 
9) MAX_LOG=9
10) 
11) HOSTNAME=$( hostname -f )
12) 
13) function search_user () {
14) 	MAILID=$1
15) 	MAILLOG=$2
16) 	[ ! -f "$MAILLOG" ] && MAILLOG=$MAILLOG.gz
17) 	[ -f "$MAILLOG" ] && zgrep $MAILID $MAILLOG|grep 'sasl_username='|sed 's/^.*sasl_username=//'
18) }
19) 
20) function search_user_from_mailid() {
21) 	MAILID=$1
22) 	[ $DEBUG -eq 1 ] && echo "Search username from Mail ID $MAILID ..."
23) 	res=$( search_user $MAILID /var/log/mail.log )
24) 	if [ -n "$res" ]
25) 	then
26) 		echo "$res"
27) 		exit 0
28) 	else
29) 		[ $DEBUG -eq 1 ] && echo "Not found from log file /var/log/mail.log. Try with archive (Max : $MAX_LOG)"
30) 		for i in $( seq 1 $MAX_LOG )
31) 		do
32) 			res=$( search_user $MAILID /var/log/mail.log.$i )
33) 			if [ -n "$res" ]
34) 			then
35) 				echo "$res"
36) 				exit 0
37) 			else
38) 				[ $DEBUG -eq 1 ] && echo "Not found from log file /var/log/mail.log.$i"
39) 			fi
40) 		done
41) 		[ $DEBUG -eq 1 ] && echo "Not found in archive (Max : $MAX_LOG)"
42) 	fi
43) }
44) 
45) if [ $( mailq|egrep -c ^$MAILID ) -ne 0 ]
46) then
47) 	[ $DEBUG -eq 1 ] && echo "Mail $MAILID still in mailq. Try to detect original mail ID ..."
48) 	ORIGMAILID=$( postcat -q "$MAILID" |grep "by $HOSTNAME"|tail -n 1|sed 's/^.*by .* with.* id \([A-Z0-9]*\).*$/\1/' )
49) 	if [ -n "$ORIGMAILID" ]
50) 	then
51) 		if [ "$ORIGMAILID" != "$MAILID" ]
52) 		then
53) 			[ $DEBUG -eq 1 ] && echo "Original mail ID : $ORIGMAILID"
54) 			search_user_from_mailid "$ORIGMAILID"
55) 			[ $DEBUG -eq 1 ] && echo "User not found from original mail ID"
56) 			exit 1
57) 		else
58) 			[ $DEBUG -eq 1 ] && echo "Mail ID and original mail ID are equals"
59) 		fi
60) 	else
61) 		[ $DEBUG -eq 1 ] && echo "Fail to detect original mail ID. Continue with mail ID in parameter"
62) 	fi
63) fi
64) 
65) search_user_from_mailid "$MAILID"
66) [ -n "$ORIGMAILID" ] && echo "User not found" && exit 1
67) 
68) [ $DEBUG -eq 1 ] && echo "User not found. Try to detect original mail ID with message ID in log"
69) 
Benjamin Renard Fix bug in debug mode

Benjamin Renard authored 8 years ago

70) MSGID=$( mailid_to_messageid "$MAILID" )
Benjamin Renard Initial commit

Benjamin Renard authored 8 years ago

71) 
72) if [ -z "$MSGID" ]
73) then
74) 	[ $DEBUG -eq 1 ] && echo "Message ID not found from log."
75) 	exit 1
76) fi
77) 
78) [ $DEBUG -eq 1 ] && echo "Message ID found : $MSGID. Try to detect original mail ID with this message ID"
79) 
Benjamin Renard Fix bug in debug mode

Benjamin Renard authored 8 years ago

80) ORIGMAILID=$( messageid_to_original_mailid "$MSGID" )