diff options
author | undefine | 2007-01-12 00:26:40 (GMT) |
---|---|---|
committer | cvs2git | 2012-06-24 12:13:13 (GMT) |
commit | e233faad1155a6b31306cc1928c79c0b442016cd (patch) | |
tree | 71bdcd5f53b3e4416a2b54e0d40ad7f828744fe3 | |
parent | c4c67689d33535e289c908bdeaaa1a1c14e0cb9f (diff) | |
download | postgrey-e233faad1155a6b31306cc1928c79c0b442016cd.zip postgrey-e233faad1155a6b31306cc1928c79c0b442016cd.tar.gz |
- show "learned" clients from postgrey
- initital from debian
- adapted by Michal 'lipek' Lipka <lipek@lipek.pl>
Changed files:
postgrey_clients_dump -> 1.1
-rw-r--r-- | postgrey_clients_dump | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/postgrey_clients_dump b/postgrey_clients_dump new file mode 100644 index 0000000..5a52250 --- /dev/null +++ b/postgrey_clients_dump @@ -0,0 +1,57 @@ +#!/usr/bin/perl -w + +# written by David Schweikert and adapted to Debian by Adrian von Bidder +# adapted to PLD Linux Distribution Micha³ Lipka +# this script is in the public domain +# +# This script will output all clients that were automatically whitelisted +# by postgrey's --auto-whitelist-clients option. +# Set the default number of mails your to fit your needs (generally it +# should be the same as N i --auto-whitelist-clients=N) + +use BerkeleyDB; +use Socket; + +my $dbdir = '/var/spool/postfix/postgrey/'; +my $mails = 5; + +sub resolv($) { + my $host = shift; + my $iaddr = inet_aton($host); + return gethostbyaddr($iaddr, AF_INET) || $host; +} + +sub dbopen($) +{ + my ($dbdir) = @_; + my %db; + + my $dbenv = BerkeleyDB::Env->new( + -Home => $dbdir, + -Flags => DB_INIT_TXN|DB_INIT_MPOOL|DB_INIT_LOG, + ) or die "ERROR: can't open DB environment: $!\n"; + + tie(%db, 'BerkeleyDB::Btree', + -Filename => "postgrey_clients.db", + -Flags => DB_RDONLY, + -Env => $dbenv, + ) or die "ERROR: can't open database $dbdir/postgrey_clients.db: $!\n"; + + return \%db; +} + +sub main() +{ + # go through the database + my $db = dbopen($dbdir); + while (my ($key, $value) = each %$db) { + my ($c,$l) = split(/,/,$value); + $c >= $mails or next; + my $host = resolv($key); + print "$host [$key] ($c)\n"; + } +} + +main; + +# vim: sw=4 |