# 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:
```
mailq | tail -n +2 | awk 'BEGIN { RS = "" } /@yahoo\.it$/ { print $1 }' | tr -d '*!' | postsuper -d -
```
#### Mail an bestimmten Empfänger löschen
Als Einzeiler:
```
mailq | 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
usr
/sbin
/postqueue
-p
>;
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
);
```