--- a/Makefile Tue Jan 02 10:49:47 2007 +0000
+++ b/Makefile Tue Jan 02 15:23:46 2007 +0000
@@ -1,11 +1,11 @@
# $Id$
# $URL$
+exim = exim
+
prefix = /usr/local
sbindir = ${prefix}/sbin
-sysconfdir = ${prefix}/etc
-
-eximconfdir = ${sysconfdir}/exim
+libdir = ${prefix}/share/${exim}
SCRIPTS = exigrey
@@ -20,10 +20,15 @@
install -m 0755 -d $(DESTDIR)${sbindir}
install -m 0755 $(SCRIPTS) $(DESTDIR)${sbindir}/
- install -m 0755 -d $(DESTDIR)$(eximconfdir)/exigrey
- install -m 0644 greylist.pl $(DESTDIR)$(eximconfdir)/exigrey/
+ install -m 0755 -d $(DESTDIR)$(libdir)
+ install -m 0644 exim-exigrey.pl $(DESTDIR)$(libdir)/exigrey.pl
-%: %.pl
- @perl -c $<
- @cp -vf $< $@
- @chmod a-w,+x $@
+%: .%.pl
+ @test -e $@ && { test -w $@ || chmod +w $@; } || true
+ @cat $< >$@
+ @chmod a-w,a+x $@
+
+.%.pl: %.pl
+ @sed -e 's,@LIBDIR@,$(libdir),g' \
+ <$< >$@
+ @perl -c $@
--- a/debian/changelog Tue Jan 02 10:49:47 2007 +0000
+++ b/debian/changelog Tue Jan 02 15:23:46 2007 +0000
@@ -1,3 +1,12 @@
+exigrey (0.2-1) stable; urgency=low
+
+ * files and directories changed
+ bin: /usr/sbin/exigrey
+ lib: /usr/share/exim4/exigrey.pl
+
+ -- Heiko Schlittermann <hs@schlittermann.de> Tue, 02 Jan 2007 16:01:03 +0100
+
+
exigrey (0.1-3) stable; urgency=low
* Initial release
--- a/debian/rules Tue Jan 02 10:49:47 2007 +0000
+++ b/debian/rules Tue Jan 02 15:23:46 2007 +0000
@@ -33,7 +33,7 @@
dh_testdir
# Add here commands to compile the package.
- $(MAKE)
+ $(MAKE) prefix=/usr exim=exim4
#docbook-to-man debian/exigrey.sgml > exigrey.1
touch $@
@@ -57,7 +57,7 @@
# Add here commands to install the package into debian/exigrey.
$(MAKE) \
prefix=/usr \
- eximconfdir=/etc/exim4 \
+ exim=exim4 \
DESTDIR=$(CURDIR)/debian/exigrey \
install
--- a/exigrey.pl Tue Jan 02 10:49:47 2007 +0000
+++ b/exigrey.pl Tue Jan 02 15:23:46 2007 +0000
@@ -24,7 +24,7 @@
use FindBin qw/$Bin/;
use POSIX qw/strftime mktime/;
-do "$Bin/greylist.pl" or die;
+do "@LIBDIR@/exigrey.pl" or die;
my %DEFAULT = getDefault();
$DEFAULT{days} = 7;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exim-exigrey.pl Tue Jan 02 15:23:46 2007 +0000
@@ -0,0 +1,91 @@
+# © 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:
--- 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: