Grep Exim Email Transaction with Bash
While email transport having problem, the first we look for is the email log file, to check incoming and outgoing email transaction, to see was the email sent to the recipient or whether did the sender’s email it delivered to our email server.
I like exim log file provide the transport when an email is coming in or out from the server. I have written a simple script to grep sender/recipient email address and analysis the email transaction.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/usr/local/bin/bash E_WRONGARGS=85 # Non-numerical argument (bad argument format). # Using Case or case "$1" in "" ) echo "Usage: `basename $0` <keyword> <logfile>"; exit $E_WRONGARGS;; * ) lines=$1;; esac # Using If Eles for simple validation if [ ! -f "$2" ] then echo "Log File not Exist"; exit; fi LOGFILE=$2 LOGKEYWORD=$1 email_ids=($(grep $LOGKEYWORD $LOGFILE | awk '{print $3}' | uniq)) for email_id in ${email_ids[@]} do grep $email_id $LOGFILE echo -e echo -e done exit 0 |
I’ve not receiving email from linkedin newsletter lately, lets try to check email log in my server yesterday.
1 2 3 4 5 6 7 8 9 10 11 12 |
./exim-log linkedin /var/log/exim/mainlog 2009-07-01 23:39:40 1M8cGq-000FKz-Il <= *.linkedin.com H=(xxxxx) [xxx.xxx.xxx.xxx] 2009-07-01 23:39:40 1M8cGq-000FKz-Il => /mail/spam-2009-05-25 T=address_file 2009-07-01 23:39:40 1M8cGq-000FKz-Il Completed |
Oppsss… Email was classified as Spam! Ok, something is wrong with my exim spam filter.