# Mail aus Mailqueue löschen Als Admin kennt man das. Mal ein durchdrehendes Script, mal ein Spamopfer… Gelegentlich ist es nötig Mails schnell aus der Postfix-Queue zu löschen. #### Alle Mails aus der Queue löschen Das könnte wichtig werden, wenn die Queue eigentlich nur mit double-bounces verstopft ist. Achtung, dieses Kommando räumt die Queue richtig auf. ``` postsuper -d ALL ```
#### Alle Mails mit bestimmten Inhalt löschen Wenn z.B. ein Kontaktformular eines Forum missbraucht wurde und in allen (ungewünschten) Mails der gleiche Text vorkommt. ``` grep -rl "Ein netter Gruss von" * | cut -d"/" -f2 | postsuper -d - ```
#### Mail mit bestimmten Sender oder Empfänger löschen Dies löscht Mails mit einem bestimmten Sender oder Empfänger: ``` postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /@yahoo\.it$/ { print $1 }' | tr -d '*!' | postsuper -d - ```
#### Mail an bestimmten Empfänger löschen Als Einzeiler: ``` postqueue -p | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ($8 == "benutzer@deinserver.de")print $1 }' | tr -d '*!' | postsuper -d - ``` Oder über ein Perl-Script mit einem regulären Ausdruck: ``` #!/usr/bin/perl   $REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";   @data = qx; for (@data) { if (/^(\w+)(\*|\!)?\s/) { $queue_id = $1; } if($queue_id) { if (/$REGEXP/i) { $Q{$queue_id} = 1; $queue_id = ""; } } }   #open(POSTSUPER,"|cat") || die "couldn't open postsuper" ; open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ;   foreach (keys %Q) { print POSTSUPER "$_\n"; }; close(POSTSUPER); ```