Como remover as mensagens da fila Postfix enviadas para um domínio específico

6

Eu tenho um servidor com vários domínios. Como posso limpar todas as mensagens da fila do Postfix para um domínio específico?

    
por Tarek 19.10.2014 / 20:22

6 respostas

9

Este comando exclui todos os e-mails enviados para um endereço de destinatário que termina com @example.com

sudo mailq | tail -n +2 | awk 'BEGIN { RS = "" } /@example\.com$/ { print $1 }' | tr -d '*!' | sudo postsuper -d - 
    
por 19.10.2014 / 21:16
6

Eu tentei esta solução no Ubuntu 12.04, e não funciona desta maneira:

sudo mailq | tail +2 | awk 'BEGIN { RS = "" } / @example\.com$/ { print $1 }' | tr -d '*!' | sudo postsuper -d -

Eu preciso mudar para o seguinte:

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /@example\.com/ { print $1 }' | tr -d '*!' | postsuper -d -
    
por 26.07.2015 / 20:47
1

Veja pfdel.pl , uma ferramenta obrigatória para gerenciar a fila. É preciso um regexp e remova os e-mails que estão esperando na fila correspondente ao seu domínio.

    
por 19.10.2014 / 20:51
1

Solução Grep

mailq | grep example.com -B1 | grep -oE "^[A-Z0-9]{10,11}" | sudo postsuper -d -

assume que o ID tem entre 10 e 11 dígitos (baseado em inodes)

    
por 29.11.2017 / 15:17
0

Quando você deseja excluir mensagens de ou para endereços de e-mail em um domínio específico, este comando funciona para mim:

mailq | \
  tail -n +2 | \
  awk 'BEGIN { RS = "" } / @example\.com$/ { print $1 }' | \
  tr -d '*!' | \
  postsuper -d -

Também funciona para excluir e-mails de ou para e-mails específicos endereços fornecendo, por exemplo, mail@example\.com$/ em vez de @example\.com$/ .

Extraído de um comentário sobre howtoforge.com . Veja lá para soluções relacionadas e o comando em uma linha. (Eu usei continuação linha bash para legibilidade).

Um comando muito semelhante que permite fazer a exclusão dependendo se o endereço aparece como remetente, destinatário etc. é encontrado em man postsuper , onde diz sobre -d :

For example, to delete all mail with exactly one recipient [email protected]:

mailq | \
  tail -n +2 | \
  grep -v '^ *(' | \
  awk 'BEGIN { RS = "" } { if ($8 == "[email protected]" && $9 == "") print $1 }' | \
  tr -d '*!' | \
  postsuper -d -

(As variáveis significam: $ 7 = remetente, $ 8 = destinatário1, $ 9 = destinatário2. Alterei a cotação para usar tail -n +2 , pois o tail +2 não funciona mais, pelo menos em alguns sistemas modernos.)

    
por 30.08.2018 / 10:00
-2

Eu modifiquei um pouco:

mailq | grep -B1 | grep -oE "^ [A-Z0-9] {12}" | xargs -I% postsuper -d%

    
por 12.04.2018 / 17:20