Excluir do mailq onde o assunto corresponde

6

Eu tenho um mailq que está recebendo backup com vários e-mails com a mesma linha de assunto. Gostaria de excluir todos os emails no mailq que correspondem a uma linha de assunto específica para que eles não sejam enviados. Alguma idéia de como fazer isso? Muito urgente como o spam relacionado.

    
por David 17.06.2011 / 11:33

4 respostas

2

O postfix não tem um utilitário como o exigrep, então você precisará usar os arquivos de fila para o assunto e, em seguida, enviar o id da fila para postsuper e excluí-los

    
por 17.06.2011 / 11:49
14

Com uma típica instalação de postfix, o email estará em / var / spool / postfix. Existem várias filas. Você quer parar o postfix para poder usar postsuper com segurança para remover os emails. Este pequeno script irá remover todos os e-mails que correspondem a uma determinada string. No nosso caso, precisávamos encontrar milhares de e-mails que tivessem a mesma linha de assunto.

Nesse caso, todos os e-mails foram adiados porque nosso serviço de reencaminhamento os rejeitou por estarmos acima do limite.

cd /var/spool/postfix/deferred
grep -r -i -l "This was the subject line" ./ | cut -d/ -f3 | postsuper -d -

Algumas notas importantes sobre isso:

  • grep -l retornou o nome do arquivo para correspondências, que é o queueid da mensagem correspondente
  • as mensagens estavam todas em subdiretórios diferentes, então o corte era para tirar o caminho da frente. Certifique-se de testar seu caminho de retorno para garantir que está apenas obtendo o nome da fila
  • postsuper -d - diz ao postsuper para apagar as mensagens que recebeu do stdin.

Espero que isso ajude as pessoas que encontram isso e estão procurando por instruções mais específicas.

    
por 25.10.2012 / 09:21
1

Apenas um comando alternativo para fazer o mesmo proposto pelo gview:

find /var/spool/postfix/deferred/ -exec grep -l 'Subject: this was the subject line' {} \; | xargs -r -n1 basename | xargs -r -n1 postsuper -d
  • find + grep -l: localize os emails deferidos no sistema de arquivos com o assunto especificado
  • xargs + basename: recupere o ID da mensagem do caminho do arquivo de mensagens
  • xargs + postsuper: use o ID da mensagem recuperada para alimentar postsuper -d e exclua o email da fila
por 07.07.2016 / 15:38
-1

Você pode usar:

postqueue -p | grep '[email protected]' | cut -d ' ' -f1 | tr -d '*' | postsuper -d -
    
por 07.12.2017 / 16:09