Após diversas regras de segurança em meu servidor de emails, optei por gerar um relatório classificando todos os emails que foram recusados pelo meu servidor. Facilitando identificar se algum email legítimo havia sido bloqueado!
O script pode rodar diariamente às 8:00, e gera um relatório completo de todos os emails recusados no dia anterior.
#!/bin/bash
export LANG="en_US"
maillog=/var/log/maillog
#maillog=`ls /var/log/old/maillog-* | sort -n | tail -1`
date=`date +%Y%m%d --date='yesterday'`
fulldate=`date '+%d %B %Y' --date='yesterday'`
grepdate=`date '+%b %d' --date='yesterday'`
echo Relatório de emails recusados em $fulldate > .relatorio.txt
echo -e '\n\n' >> .relatorio.txt
for mail in `grep $grepdate $maillog | grep reject | \
awk '{ print substr($0, match($0, "to="), length($0)) }' | \
awk '{ print $1 }' | sort -u`
do
echo Emails recusados para: $mail | sed s/to=\<//g | sed s/\>//g >> .relatorio.txt
echo -e '\n' >> .relatorio.txt
grep $grepdate $maillog | grep $mail | grep reject | \
awk '{ print $1, $2, $3, substr($0, match($0, "reject: "), length($0)) }' \
>> .relatorio.txt
echo -e '\n\n' >> .relatorio.txt
done
cat .relatorio.txt | mail -s "Relatório de emails recusados \
`date '+%d/%b' --date='yesterday'`" root
Também pode-se adicionar as seguintes linhas no final do script para um relatório dos emails que foram entregues (facilitando identificar se algum spam passou pela barreira!).
echo Relatório de emails enviados em $fulldate > .relatorio.txt
echo -e '\n\n' >> .relatorio.txt
for mail in `grep $grepdate $maillog | grep deliver | \
awk '{ print $7 }' | sed s/,// | sort -u`
do
echo Emails enviados para: $mail | sed s/to=\<//g | sed s/\>//g >> .relatorio.txt
echo -e '\n' >> .relatorio.txt
for id in `grep $grepdate $maillog | grep deliver | grep $mail | awk '{ print $6 }'`
do
grep $grepdate $maillog | grep $id | egrep -e '(client|from)' | \
awk '{ print $1, $2, $3, substr($0, match($0, $6), length($0)) }' \
>> .relatorio.txt
done
echo -e '\n' >> .relatorio.txt
done
.cat relatorio.txt | mail -s "Relatório de emails enviados \
`date '+%d/%b' --date='yesterday'`" root
ler todo o blog, muito bom