greylist.pl
changeset 9 417562509dbe
parent 8 7da62b48653f
child 10 02accfddd669
--- a/greylist.pl	Tue Jan 02 10:49:47 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-# © 2006,2007 Heiko Schlittermann <hs@schlittermann.de>
-# $Id$
-# $URL$
-
-use strict;
-use warnings;
-use BerkeleyDB;
-
-my %DEFAULT = (
-	delay => 600,
-	db => "seen.db",
-);
-
-sub unseen($;$$);
-
-sub getDBDir();
-sub findExim(;$);
-sub getDefault() { %DEFAULT };
-
-# Usage:
-# 	${perl{unseen}{$sender_host_address}}
-# 	${perl{unseen}{$sender_host_address}{600}}
-# 	${perl{unseen}{$sender_host_address}{600}{seen.db}}
-# 	${perl{unseen}{$sender_host_address}{600}{/some/dir/seen.db}}
-#
-# record structure: key:   item\0 
-#                   value: timestamp(creation) timestamp(usage)\0
-# (This way we're compatible with ${lookup{...}dbm{...}})
-sub unseen($;$$) {
-	my ($item, $delay, $db) = @_;
-		$item .= "\0";
-		$delay = $DEFAULT{delay} unless defined $delay;
-		$db = $DEFAULT{db} unless defined $db;
-
-	my $now = time();
-	my $umask;
-	my $rc;
-
-	$db = getDBDir() . "/$db" unless $db =~ /^\//;
-
-	$umask = umask 0077 if !-f $db;
-
-	my %h; tie %h, "BerkeleyDB::Hash", 
-		-Filename => $db,
-		-Flags => DB_CREATE
-	or die;
-
-	umask $umask if defined $umask;
-
-	if (not exists $h{$item}) {
-		$h{$item} = "$now $now\0";
-		$rc = "yes";
-	} else {
-		my $created = (split " ", $h{$item})[0];
-		if ($now - $created < $delay) { $rc = "yes" }
-		else { 
-			$rc = "no";
-			$h{$item} = "$created $now\0";
-		}
-	}
-	untie %h;
-	return $rc;
-}
-
-# Get the directory where we could store the database file(s)
-# If we're running under exim it's easy, otherwise we've to find exim
-# and then ask...
-sub getDBDir() {
-	my $spooldir;
-	eval { $spooldir = Exim::expand_string('$spool_directory') };
-	if (not defined $spooldir) {
-		my $exim = findExim();
-		chomp($spooldir = `$exim -be '\$spool_directory'`);
-		die "Can't find spooldir" if not defined $spooldir;
-	}
-	return "$spooldir/db";
-}
-
-sub findExim(;$) {
-	my $path = shift || $ENV{PATH};
-	my $exim;
-	foreach (split /:/, $ENV{PATH}) {
-		-x ($exim = "$_/exim") and return $exim;
-		-x ($exim = "$_/exim4") and return $exim;
-	}
-	return undef;
-}
-
-1;
-
-# vim:aw: