How to delete e-mails from Postfix Queue

 #!/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 = "/usr/sbin/postqueue -p";

my $POSTSUPER = "/usr/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;



 ./pfdel.sh mailid

Comments

Popular posts from this blog

cpanel exam CPSP Answers

How to install zimbra collaboration suite 8.8.11 on CentOS 7

awstats installation