Traditionally you use the “sendmail -q” command to flush mail queue under Sendmail MTA. Under Postfix MTA, just enter the following command to flush the mail queue:
# postfix flush
OR
# postfix -f
To see mail queue, enter:
# mailq
To remove all mail from the queue, enter:
# postsuper -d ALL
To remove all mails in the deferred queue, enter:
# postsuper -d ALL deferred
postfix-delete.pl script
Following script deletes all mail from the mailq which matches the regular expression specified as the first argument (Credit: ??? – I found it on old good newsgroup)
-
#!/usr/bin/perl
-
@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” ;
-
foreach (keys %Q) {
-
print POSTSUPER “$_\n”;
-
};
-
close(POSTSUPER);
For example, delete all queued messages from or to the domain called fackspamdomain.com, enter:
./postfix-delete.pl fackspamdomain.com
Delete all queued messages that contain the word “xyz” in the e-mail address:
./postfix-delete.pl xyz
Updated for accuracy.
Créditos : http://www.cyberciti.biz/tips/howto-postfix-flush-mail-queue.html
Deixe um comentário