* Mike Erdely <[EMAIL PROTECTED]> [061127 11:12]:
> Jim Razmus wrote:
> >I sent Bob a patch to fix some off by ones. You want those patches or
> >you may inadvertently trap a host who has valid DNS records.
>
> Care to share the patch?
>
> >Jim
>
> -ME
>
I'm seriously in need of coffee. Try this instead.
Jim
Index: greyscanner
===================================================================
RCS file: /var/cvsroot/soekris/root/greyscanner,v
retrieving revision 1.1
retrieving revision 1.3
diff -u -r1.1 -r1.3
--- greyscanner 12 Nov 2006 19:44:50 -0000 1.1
+++ greyscanner 22 Nov 2006 20:24:33 -0000 1.3
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# $Id: greyscanner,v 1.1 2006/11/12 19:44:50 jtr2 Exp $
+# $Id: greyscanner,v 1.3 2006/11/22 20:24:33 jtr2 Exp $
# Greytrapping daemon for OpenBSD spamd
# Copyright (c) 2006 Bob Beck <[EMAIL PROTECTED]>. All rights reserved.
@@ -177,17 +177,18 @@
}
}
}
- my @wi = (keys %WHITE);
- my @tr = (keys %TRAPPED);
- my @gr = (keys %GREY);
+ close (SPAMDB);
+ my $wi = keys %WHITE;
+ my $tr = keys %TRAPPED;
+ my $gr = keys %GREY;
syslog ('debug',
- "scanned $#wi whitelisted, $#tr trapped, $#gr unique greys\n");
+ "scanned $wi whitelisted, $tr trapped, $gr unique greys\n");
foreach $grey (keys %GREY) {
my $trapped = 0;
# ignore if it's already done
- next if ($WHITE{$grey} || $TRAPPED{$grey});
+ next if ($TRAPPED{$grey} || $WHITE{$grey});
# check the senders. if any are malformed, give the host the boot.
my @senders = split("\t", $FROM{$grey});
@@ -200,8 +201,7 @@
}
next if $trapped;
- my $count = $#senders;
- $count++;
+ my $count = @senders;
my @rcpts = split("\t", $RCPT{$grey});
# if the host has queued up more than our suspect threshold, look
# at a few things...
@@ -220,12 +220,9 @@
$s =~ s/[EMAIL PROTECTED]@//;
$D{"$s"}++;
}
- my @urcpts = keys %R;
- my @usenders = keys %S;
- my @udoms = keys %D;
- my $rcount = $#urcpts;
- my $scount = $#usenders;
- my $dcount = $#udoms;
+ my $rcount = keys %R;
+ my $scount = keys %S;
+ my $dcount = keys %D;
if ($dcount > $MAX_DOMAINS) {
$reason = "Host sending from " . $dcount .
@@ -306,7 +303,7 @@
my $res = Net::DNS::Resolver->new;
my @domains = (keys %SENDERS);
- while ($#domains > 0) {
+ while (scalar @domains > 0) {
my @active = $sel->handles;
while ($#active < $DNS_SOCK_MAX - 1) {
# queue up a query for this domain.