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

:!: Once you list queued messages with postqueue -p and determine a reg-ex pattern of files you want to delete, you can use the following script to do the deletions.

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)!\n";
 
@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.1389290322.txt.gz · Last modified: 2014/01/09 10:58 by gcooper