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.753 ]
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/
User manager - o gerenciador de usuários para Slackware Linux
Shell Script para Guia Foca Linux
Configuração do Iptables em modo texto.
Limpe bibliotecas não utilizadas - new release
Nenhum coment�rio foi encontrado.
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Software livre - será que eu estou tão errado assim? (0)
Layout do teclado KDE Palsma 5.27.5 com x11 (1)
O que você está ouvindo agora? [2] (216)