segunda-feira, 22 de novembro de 2010

Recuperar e-mail rejeitado como spam no amavis

Caso ocorra de alguém não receber um e-mail, podemos pesquisar nos logs do maillog para saber se o amavis filtrou o e-mail como spam. Para facilitar essa busca, o script abaixo pode nos ajudar. Ele busca em todos os arquivos /var/log/maillog* a ocorrência da dupla "emailOrigem" "emailDestino" e retorna seus respectivos arquivos spam contidos em /var/virusmails (caso existam). Salve o script abaixo em um arquivo com permissão de execução e execute da seguinte forma:

script EMAIL_ORIGEM EMAIL_DESTINO

#!/bin/bash

###
# Script para recuperar um spam contido em /var/virusmail
#
# param1 remetente do e-mail perdido
# param2 destinatario do e-mail perdido
#
# @author Andre Oshiro Barcelos
# @version 20101122
###

# constantes
MAILLOG="/var/log/maillog"
SPAMDIR="/var/virusmails"

# recebendo variaveis
remetente="$1"
destinatario="$2"

#validando variaveis
if [ ! -n "$remetente" ]; then
echo -n "Informe o remetente: "
read remetente
fi

if [ ! -n "$destinatario" ]; then
echo -n "Informe o destinatario: "
read destinatario
fi

#main
#pesquisando:
# filtrando todos os registros que contem o remetente e
# filtrando todos os registros que contem o destinatario e
# pega a string que precede a palavra 'quarantine: '
aQuarentine=(`cat "$MAILLOG"* | grep 'quarantine' | grep "$remetente" 2> /dev/null | grep "$destinatario" 2> /dev/null | sed 's/.*quarantine: \([[:alnum:]\.+=-]*\),.*/\1/'`)

#se nao foi encontrado
if [ ! -n "$aQuarentine" ]; then
echo "ERRO: a dupla nao foi encontrada em quarentena"
exit 1
fi

echo "A dupla foi encontrada no(s) seguinte(s) spam(s) em quarentena: "
for i in "${aQuarentine[@]}"
do
echo "$SPAMDIR/$i"
done

Nenhum comentário: