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.618 ]

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

Shell Script para consulta a Wikipedia utilizando linhas de comando

Instalação de programas em Debian-like

InstallTXZ - converte e instala pacotes do Slackware no Debian

ARSPDF - Programa para manipular arquivos PDF

Monitorar o uso do HD


  

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