This patch changes the deny_late option so the greylisting plugin will wait
to check and update it's database until later. The problem I noticed was
that greylisting was filling up it's database with hosts that were later
denied by dnsbl. Similarly if the host is allowed by dns_whitelist_soft
then the greylisting plugin will now ignore it
--
Matthew Harrell Welcome to All Things Unix,
Bit Twiddlers, Inc. where if it's not Unix,
[EMAIL PROTECTED] it's CRAP!
--- greylisting.bck 2007-08-17 12:28:10.000000000 -0400
+++ greylisting 2007-08-23 10:00:24.000000000 -0400
@@ -159,11 +159,17 @@
sub mail_handler {
my ($self, $transaction, $sender) = @_;
- my ($status, $msg) = $self->denysoft_greylist($transaction, $sender, undef);
- if ($status == DENYSOFT) {
- my $config = $self->{_greylist_config};
- return DENYSOFT, $msg unless $config->{deny_late};
- $transaction->notes('denysoft_greylist', $msg)
+ my $config = $self->{_greylist_config};
+
+ if ( $config->{deny_late} ) {
+ $transaction->notes('denysoft_greylist', $sender)
+
+ } else {
+ my ($status, $msg) = $self->denysoft_greylist($transaction, $sender, undef);
+
+ if ($status == DENYSOFT) {
+ return DENYSOFT, $msg;
+ }
}
return DECLINED;
}
@@ -186,14 +192,20 @@
sub hook_data {
my ($self, $transaction) = @_;
- my $note = $transaction->notes('denysoft_greylist');
- return DECLINED unless $note;
+ my $sender = $transaction->notes('denysoft_greylist');
+ return DECLINED unless $sender;
# Decline if ALL recipients are whitelisted
if (($transaction->notes('whitelistrcpt')||0) == scalar($transaction->recipients)) {
# $self->log(LOGWARN,"all recipients whitelisted - skipping");
return DECLINED;
}
- return DENYSOFT, $note;
+
+ my ($status, $msg) = $self->denysoft_greylist($transaction, $sender, undef);
+
+ if ($status == DENYSOFT) {
+ return DENYSOFT, $msg;
+ }
+ return DECLINED;
}
sub denysoft_greylist {