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

Publicado por Marcelo Ferreira (última atualização em 23/04/2010)

[ Hits: 6.608 ]

Download 2010-04-19-scripts_postfix.tar.gz




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</usr/sbin/postqueue -p>;
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/

  




Scripts recomendados

Conversor de logs do squid

Script para desmontar partição/unidade

Inclusão/Exclusão de usuários no CVS.

Criador de playlist

wget com progressbar no kde


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts