segunda-feira, 2 de fevereiro de 2009

Deletando mensagens da fila do Postfix usando palavras chave

Há muito tempo uso um script (nomeado postdel), que é muito útil para deletar e-mails da fila do Postfix usando palavras chave, o que agiliza incrivelmente essa operação, se comparado ao padrão de deletar por queueID da mensagem.

Como vi hoje alguém na lista do Postfix perguntando por algo similar, resolvi compartilhar aqui o script (que é de autoria de André Galvani).

 #!/usr/bin/perl
#
# Apaga mensagens na fila do Postfix
#
# Andre Galvani
# 2004/02/17

$regexp = $ARGV[0] || help();

@postqueue = `/usr/sbin/postqueue -p`;

for (@postqueue) {
if (/^(\w+)(\*|\!)?\s/) {
$queue_id = $1;
}
if($queue_id) {
if (/$regexp/i) {
$queue{$queue_id} = 1;
$queue_id = "";
}
}
}

open(POSTSUPER,"|/usr/sbin/postsuper -d -") || die "couldn't open postsuper" ;
foreach (keys %queue) {
print POSTSUPER "$_\n";
}
close(POSTSUPER);

sub help {
print "\n Use: $0 \n\n";
print " Exemplo:\n";
print " $0 sp.*\@msn.com.br\n\n";
print " Obs.: Pode ser usado com regexp syntax.\n\n";
print "\n";
exit;
}


Boa diversão pra todos :-)