sexta-feira, 25 de julho de 2008

Dica: Apagando a fila do Qmail

Nesse post irei mostrar como eu faço pra apagar a fila do Qmail. Esse Qmail roda num linux (centos). Vamos supor que a conta de e-mail spam@dominio.com.br está enviando uma porrada de emails e ta fudendo a fila.

Primeiro temos que parar os seviços send e smtpd do Qmail:

svc -d /service/smtpd
svc -d /service/send

O serviço smtpd é meio chatinho para parar, dai use pkill -u qmaill e pkill -u qmailr (matar os processos dos usuários internos do Qmail)

Verifique se os serviços estão parados com svstat /service/* (os serviços estarão como DOWN).

Cuidado: Não avance nas outras etapas se os seviços smtpd e send não estejam DOWN.

Com os serviços parados iremos capturar os IDs dos e-mails que estão na fila e queremos apagar:

cd /var/qmail/bin

./qmail-qread | grep spam@dominio.com.br | awk -F '#' '{ print $2 }' | awk '{ print $1 }' > /root/spam

Nesse caso foi capturado os IDs dos emails que spam@dominio.com.br estava enviando. Foi criado o arquivo /root/spam

Agora vamos para o diretório /var/qmail/queue para capturar os caminhos dos arquivos que são gerados dentro do qmail. Os arquivos tem o mesmo nome dos IDs capturados anteriormente.

cd /var/qmail/queue

for i in $(cat /root/spam ); do find . -name $i >> /root/spam2 ; done

Foi criado um outro arquivo /root/spam2 com todos os caminhos, nesse arquivo teria entradas desse tipo:

./remote/0/104259
./info/0/104259
./mess/0/104259
./remote/0/105294
./info/0/105294
./bounce/105294

Veja que os nomes dos arquivos são iguais aos IDs. Dê um cat em /root/spam (arquivo com os IDs)

Para apagar usei esse comando:

cd /var/qmail/queue

for i in $(cat /root/spam2); do rm -rf $i; done

Agora é so levantar os serviços:

svc -u /service/send
svc -u /service/smtpd


Um comentário:

Pocoyo disse...

Amigão, Excelente Dica.

parabéns..

Amigos nunca deixem uma regra de entrada no firewall de vocÊ com nat para rede interna.

Boa Prática é manter o Server de E-mail na DMZ.