Removendo e-mails da fila do queue
Publicado por Gustavo Pardellas Feijó 25/04/2008
[ Hits: 14.709 ]
Homepage: http://www.gldc.com.br
Download remove_by_email-1.0.sh
Algumas vezes algum script gera um erro e começa a disparar e-mails, o que acaba "entupindo" o diretório queue do seu servidor de e-mails.
Este script foi desenvolvido para remover as mensagens da fila, tomando como base o endereço que se quer remover.
Foi testado com o postfix e o sendmail, bastando alterar a variável referente ao diretório queue do seu servidor.
Comentários e melhorias são bem vindos.
#!/bin/bash
## remove_by_email.sh
## remove emails da fila queue.
## recebe como parametro um endereco
## de e-mail para remover.
## Desenvolvido por Gustavo Feijo
## chmod@gfeijo.eti.br
## Diretorio queue do servidor de e-mail
QUEUE_DIR=/var/spool/postfix
ENDERECO=$2
if [ $UID != 0 ]
then
echo -e "Desculpe, voce precisa ser root!!"
exit 1
fi
if [ ! $1 ]
then
echo -e "Por favor, especifique um endereco para remover:\n Usage: $0 [ --from | --to ] 'usuario@provedor.com.br'\n"
exit 2
fi
echo -e "Procurando por mensagens a remover..."
case $1 in
--from)
QUEUE_FILES=( ${QUEUE_FILES[@]} `/usr/bin/mailq | grep ${ENDERECO} | awk '{print $1}'` )
;;
--to)
QUEUE_FILES_TO=( ${QUEUE_FILES_TO[@]} `/usr/bin/mailq | grep ^[0-9A-F] | awk '{print $1}'` )
for i in ${QUEUE_FILES_TO[@]};
do
tmp=`/usr/bin/find ${QUEUE_DIR} -type f -name ${i} -exec grep "recipient=${ENDERECO}" {} \;`
if [ ! -z $tmp ]
then
QUEUE_FILES=( ${QUEUE_FILES[@]} `echo ${i}` )
fi
done
;;
*)
echo "Parametro invalido \"$1\""
echo -e "Usage: $0 [ --from | --to ] 'usuario@provedor.com.br'\n"
exit 3
;;
esac
QT_MSG=${#QUEUE_FILES[*]}
if [ -z $QUEUE_FILES ]
then
echo -e "Nenhuma mensagem encontrada.\n"
exit 1
else
echo -e "Removendo ${QT_MSG} mensagens.\nPor favor aguarde..."
faltam=${QT_MSG}
fi
for LOCATOR in ${QUEUE_FILES[@]};
do
`/usr/bin/find ${QUEUE_DIR} -type f -name ${LOCATOR} -delete`;
let "faltam = ${faltam} - 1"
echo -ne "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"
echo -ne "Faltam: "
printf "%10d" "${faltam}"
done
echo ''
exit 0
Convertendo man pages em arquivos pdf
Lista de Selecao de arquivos no Dialog
Menu no terminal usando Shell Script
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (14)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









