Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Comunidade d...
Tela cheia Sugerir um artigo

Shell-Script: Remover e-mails com MX inexistente e status deferred em servidores Postfix

23 de Abril de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 902 vezes

Estes 2 scripts tem a função de auxiliar nos passos para remover e-mails com MX inexistente e status deferred em servidores Postfix.

Pré-requisitos para instalação:

1. Crie o arquivo /root/limpa.pl com o conteúdo abaixo:

#http://tonyvirelli.com/2010/03/05/clearing-out-postfix-deferred-mail-queue/
# gravar com nome /root/limpa.pl
#!/usr/bin/perl
$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";
@data = qx;
for (@data) {
if (/^(\w+)(\*|\!)?\s/) {
$queue_id = $1;
}
if($queue_id) {
if (/$REGEXP/i) {
$Q{$queue_id} = 1;
$queue_id = "";
}
}
}
#open(POSTSUPER,"|cat") || die "couldn't open postsuper" ;
open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ;
foreach (keys %Q) {
print POSTSUPER "$_\n";
};
close(POSTSUPER);

2. Criar o arquivo /root/executalimpeza.sh com o conteúdo abaixo:

########################################################
# levantar e limpar domínios em deferred
# created by mfcandido@fazenda.sp.gov.br
#!/bin/bash
########
rm -f /tmp/limpadeferred.txt
rm -f /tmp/naolimpadeferred.txt
rm -f /tmp/statuspostfix.txt
echo `date` > /tmp/limpadeferred.txt
echo `date` > /tmp/naolimpadeferred.txt
echo `date` > /tmp/statuspostfix.txt
# Verificando domínios Deferred no POSTFIX
DOMINIOS=`qshape deferred | awk '{print $1}' | grep -Ev '^(T|TOTAL)$' | fmt -u`
for i in $DOMINIOS ;
do
dig -t MX $i | egrep 'MX' | grep -v ";"
if [[ $? -eq 0 ]];
then
echo "@$i possui MX" >> /tmp/naolimpadeferred.txt
else
echo "@$i não possui MX" >> /tmp/limpadeferred.txt
#/root/limpa.pl @$i
fi
done
######
#Verificando status das filas de email no POSTFIX
QUEUES="incoming active deferred hold corrupt"
for i in $QUEUES; do
COUNT=`qshape $i | grep TOTAL | awk '{print $2}'` >> /tmp/statuspostfix.txt
echo " " >> /tmp/statuspostfix.txt
printf "$i:$COUNT " >> /tmp/statuspostfix.txt
done
#
echo " "
echo permanecera no postfix
cat /tmp/naolimpadeferred.txt
echo " "
echo serah removido do postfix
cat /tmp/limpadeferred.txt
echo " "
echo status atual do postfix
cat /tmp/statuspostfix.txt
########################################################

Execução dos procedimentos:

1. Como root execute os comandos abaixo:

cd /root
chmod 700 /root/executalimpeza.sh
chmod 700 /root/limpa.pl
./root/executalimpeza.sh

2. Ao final da execução verifique os domínios em status de deferred removidos (MX não existentes):

cat /tmp/limpadeferred.txt

3. Ao final da execução verifique os domínios em status de deferred não removidos (MX existente):

cat /tmp/naolimpadeferred.txt

4. Verifique o status do Postfix:

cat /tmp/statuspostfix.txt

Referência: http://tonyvirelli.com/2010/03/05/clearing-out-postfix-deferred-mail-queue/


Fonte: http://www.vivaolinux.com.br/script/Remover-emails-com-MX-inexistente-e-status-deferred-em-servidores-Postfix

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.