summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorundefine2007-01-12 00:26:40 (GMT)
committercvs2git2012-06-24 12:13:13 (GMT)
commite233faad1155a6b31306cc1928c79c0b442016cd (patch)
tree71bdcd5f53b3e4416a2b54e0d40ad7f828744fe3
parentc4c67689d33535e289c908bdeaaa1a1c14e0cb9f (diff)
downloadpostgrey-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_dump57
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