Почта
02.12.2015
Посмотреть очередь писем:
# mailq
Удалить все письма из очереди:
# postsuper -d ALL
Удалить все письма из отложенной очереди:
# postsuper -d ALL deferred
Удалить все письма, которые совпадают с регулярным выражением:
#!/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);
Пример:
./postfix-delete.pl fackspamdomain.com
или
./postfix-delete.pl xyz
Если вам нужно удалить все письма из списка, КРОМЕ тех, где отправитель - test@mail.ru:
#!/bin/bash
mailq | tail -n +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" }
# $7=sender, $8=recipient1, $9=recipient2
{ if ($7 != "test@mail.ru" )
print $1 }
' | tr -d '*!' | postsuper -d -
Пример:
./postfix-delete.sh
#Linux
