postfix利用寄件者刪除mail queue

是歐萊禮postfix技術手冊(白鴿書)中的perl程式, 只改了一些變數名稱與一各地方印刷錯誤(但是忘記錯誤在哪裡了)

貼上來是因為, 某時候會忽然需要用到, 放網站上方便點=.=

#############################################

#!/usr/bin/perl

## delmail
## delete postfix mail queue by sender address

## usage:: delmail <email_address>

use strict;

my $LISTQ = "/usr/sbin/postqueue -p";
my $POSTSUPER = "/usr/sbin/postsuper";

my $mail_addr = "";
my $qid = "";
my $uid = $>;

if ( @ARGV != 1) {
die "Usage: delmail <Email\@Address>\n";
} else {
$mail_addr = $ARGV[0];
}

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

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

my $entry = <QUEUE>;
$/ = "";

while ($entry = <QUEUE> ) {
if ($entry =~ / $mail_addr$/m) {
($qid) = split(/\s+/, $entry, 2);
$qid =~ s/[\*\!]//;
print  $qid."\n";
next unless ($qid);
if (system($POSTSUPER, "-d", $qid) != 0) {
die "Error occur while Excuting $POSTSUPER, error code".($?/256)."\n";
}
}
}
close(QUEUE);

if (! $qid) {
die "No messages from <$mail_addr> found in mail queue.\n";
}

exit 0;
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s