You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
postfixadmin/ADDITIONS/delete-mailq-by-domain.pl

78 lines
1.4 KiB
Perl

#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
$ENV{'PATH'} = "/sbin:/bin:/usr/sbin:/usr/bin";
my ($domain);
my $list = 0;
(help()) if (!$ARGV[0]);
GetOptions ('l' => \$list, 'd=s' => \$domain) or (help());
(list_queue()) if ($list == 1);
(delete_queue()) if ($domain);
sub delete_queue {
my $ids = `postqueue -p`;
my @ids = split /\n/, $ids;
for my $id (@ids) {
next if $id =~ /^[\s\(-]/;
chomp $id;
next unless $id;
$id =~ s/(.*?)\**\s.*/$1/;
#print "$id\n";
my $match = `postcat -q $id | grep '$domain'`;
next unless $match;
#print "Deleting ID: $id\n";
my $saida = `postsuper -d $id`;
print $saida;
}
}
sub list_queue {
my %hash_mail = ();
my @queue = `postqueue -p`;
my($queue,$key,$total);
foreach $queue(@queue) {
chomp $queue;
if ( $queue =~ /^\s+.*\@(.*)/ ) {
$hash_mail{$1}++;
}
}
print"\nTOTAL\tTO\n";
print"-----
----------------------------------------------------------------\n";
foreach $key (reverse sort { $hash_mail{$a} <=> $hash_mail{$b}} keys
%hash_mail) {
$total += $hash_mail{$key};
print"$hash_mail{$key} - $key\n";
}
print"\n$total -> TOTAL QUEUE\n";
}
sub help {
print "Usage $0 -l To list a row of E-mail
Usage $0 -d domain.com To delete the mensgens the Domain\n";
}