User Tools

Site Tools


internet:mail:postfix_queue_mgmt

This is an old revision of the document!


Postfix Mail Queue Management

View Mail Queues

postqueue -p

View a particular message:

postcat -q <queueID> | head --lines 100

Track Messages

grep "Nov 13 06:13:" /var/log/maillog*

grep "D233911382F9" /var/log/maillog*

Deferred Messages

Flush Mail Queues

  • Default queue_run_delay (interval between send attempts) is 300s or 300 seconds

Attempt to send queued mail now:

postqueue -f

View a deferred message:

postcat -q 022412012A | head -40

or:

postcat /var/spool/postfix/deferred/0/022412012A

Purge Mail Queues

Delete all queued mail:

postsuper -d ALL

Delete Messages

postfix-delete.pl script

The following script deletes all mail from the any queue which matches the regular expression specified as the first argument.

#!/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);

For example, to 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
internet/mail/postfix_queue_mgmt.1389289903.txt.gz · Last modified: 2014/01/09 10:51 by gcooper