Analysing the mail.log
To determine the 'busiest' domains in terms of the number of emails passing through the server:
awk -F[\<\>] '($2 ~ /@/){print $2}' /var/log/mail.log \
| awk -F\@ '{print $2}' \
| sort | uniq -c | sort -n
To see which addresses at a particular domain are being targeted - scans all mail.log files:
zgrep @yourdomain /var/log/mail.log* | awk -F[\<\>] '{print $2}' | sort | uniq -c | sort
To find the message id of emails sent to a particular domain - scans only unzipped mail.log files:
grep @yourdomain /var/log/mail.log* | awk '{print $6}' | sort | uniq | sed 's/://'
Check the status of messages sent to a particular domain:
grep @yourdomain /var/log/mail.log* | grep stat= | sed 's/.*stat=//' | sort | uniq -c
List the message id's of messages that appear more than a certain number of times (200 in this example) in the unzipped mail.log files:
awk '{print $6}' /var/log/mail.log* | sort | uniq -c | awk '($1 > 200)' | sort | sed 's/://'
to remove extraneous lines from the output you can place a condition at the start such as:
'($6 ~ /^k/){print $6}'
In our case, this returned a list as follows:
226 k9SMmVcP014826
233 k9RCIgRw003033
238 k9R2Xubr029996
313 k9OKlqXl025589
530 k9SIl9xq018350
617 k9Q1TTqd015669
The next step is to see what the status is of these messages:
grep k9Q1TTqd015669 /var/log/mail.log | head -1
Or, if they're still in the queue you can read the email content from the spool file:
more /var/spool/mqueue/*k9Q1TTqd015669
And, if it looks like this message is spam you can remove it from the queue permanently:
rm /var/spool/mqueue/*k9Q1TTqd015669
you will probably need root access to delete these files
References
- Sendmail: Anti-Spam Configuration Control
- nixCraft: Sendmail blocking spam email id, ips with access database
Related Articles - Sendmail
- PHP Signing outbound emails with DKIM
- PHP Generating a Key Pair for DKIM
- System DKIM Key Pair Generator
- System Analysing mailq and the mqueue directory
- System Using qtool.pl to manage sendmail queues
- System Analysing the mail.log
- System Expanding IPv6 Addresses for DNSBL Checks