Delete Messages

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Delete Messages

   KB 20617        Last updated on 2015-07-11  




0.00
(0 votes)

I stole this from vavai in the forums, but this is to delete messages from all queues that contain a certain e-mail address. I used it to delete all messages sent from a compromised account.

You must run the mailq command as Zimbra.

su - zimbra
mailq | more

Change password and locked/closed account only prevent new spam message. It doesn't remove queue message Use the following script to remove spam message from queue :


Save the following block as the command pfdel, set it as executable, then run it as specified in the top of the script.

#!/usr/bin/perl -w
#
# pfdel - deletes message containing specified address from
# Postfix queue. Matches either sender or recipient address.
#
# Usage: pfdel <email_address>
#

use strict;

# Change these paths if necessary.
my $LISTQ = "/opt/zimbra/postfix/sbin/postqueue -p";
my $POSTSUPER = "/opt/zimbra/postfix/sbin/postsuper";

my $email_addr = "";
my $qid = "";
my $euid = $>;

if ( @ARGV !=  1 ) {
    die "Usage: pfdel <email_address>\n";
} else {
    $email_addr = $ARGV[0];
}

if ( $euid != 0 ) {
        die "You must be root to delete queue files.\n";
}


open(QUEUE, "$LISTQ |") ||
  die "Can't get pipe to $LISTQ: $!\n";

my $entry = <QUEUE>;    # skip single header line
$/ = "";        # Rest of queue entries print on
            # multiple lines.
while ( $entry = <QUEUE> ) {
    if ( $entry =~ / $email_addr$/m ) {
        ($qid) = split(/\s+/, $entry, 2);
        $qid =~ s/[\*\!]//;
        next unless ($qid);

        #
        # Execute postsuper -d with the queue id.
        # postsuper provides feedback when it deletes
        # messages. Let its output go through.
        #
        if ( system($POSTSUPER, "-d", $qid) != 0 ) {
            # If postsuper has a problem, bail.
            die "Error executing $POSTSUPER: error " .
               "code " .  ($?/256) . "\n";
        }
    }
}
close(QUEUE);

if (! $qid ) {
    die "No messages with the address <$email_addr> " .
      "found in queue.\n";
}

exit 0;


Verified Against: Zimbra Collaboration 6.0, 5.0 Date Created: 04/16/2014
Article ID: https://wiki.zimbra.com/index.php?title=Delete_Messages Date Modified: 2015-07-11



Try Zimbra

Try Zimbra Collaboration with a 60-day free trial.
Get it now »

Want to get involved?

You can contribute in the Community, Wiki, Code, or development of Zimlets.
Find out more. »

Looking for a Video?

Visit our YouTube channel to get the latest webinars, technology news, product overviews, and so much more.
Go to the YouTube channel »


Jump to: navigation, search