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 -
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?
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 -
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.
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)
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.)
Eu modifiquei um pouco:
mailq | grep -B1 | grep -oE "^ [A-Z0-9] {12}" | xargs -I% postsuper -d%
Tags postfix linux email-server