added remove_emailadresses_from_queue.pl
This commit is contained in:
parent
f8ce7115a1
commit
8897fd4bfd
|
@ -0,0 +1,61 @@
|
|||
#!/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;
|
Loading…
Reference in New Issue