Created
July 2, 2014 18:47
-
-
Save alambike/fcf0e42130be4175e7aa to your computer and use it in GitHub Desktop.
deletes message from postfix queue containing specified address (accepts '@Domain' as valid address)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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. | |
my $regex = ($email_addr =~ /^\@\w+/)? qr/$email_addr$/m : qr/ $email_addr$/m; | |
print "regex: $regex\n"; | |
while ( $entry = <QUEUE> ) { | |
if ( $entry =~ $regex ) { | |
($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; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment