From 9422b16c0fa047a22fd7d34cb234d4c5aafc8cf4 Mon Sep 17 00:00:00 2001 From: Robert Spier Date: Sat, 27 Nov 2004 18:40:54 +0000 Subject: [PATCH] Inspired by Justin E@Apache... - log the fact that badmailfrom is rejecting - emacs header - formatting tweak git-svn-id: https://svn.perl.org/qpsmtpd/trunk@352 958fd67b-6ff1-0310-b445-bb7760255be9 --- plugins/check_badmailfrom | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/check_badmailfrom b/plugins/check_badmailfrom index 6a467eb..16ca64f 100644 --- a/plugins/check_badmailfrom +++ b/plugins/check_badmailfrom @@ -1,3 +1,4 @@ +# -*- perl -*- =head1 NAME check_badmailfrom - checks the standard badmailfrom config @@ -12,6 +13,11 @@ recipient address for a message if the envelope sender address is listed in badmailfrom. A line in badmailfrom may be of the form @host, meaning every address at host." +=head1 NOTES + +According to the SMTP protocol, we can't reject until after the RCPT +stage, so store it until later. + =cut sub register { @@ -38,8 +44,7 @@ sub mail_handler { $bad = lc $bad; warn "Bad badmailfrom config: No \@ sign in $bad\n" and next unless $bad =~ m/\@/; $transaction->notes('badmailfrom', "Mail from $bad not accepted here") - if ($bad eq $from) - || (substr($bad,0,1) eq '@' && $bad eq "\@$host"); + if ($bad eq $from) || (substr($bad,0,1) eq '@' && $bad eq "\@$host"); } return (DECLINED); } @@ -47,6 +52,9 @@ sub mail_handler { sub rcpt_handler { my ($self, $transaction, $rcpt) = @_; my $note = $transaction->notes('badmailfrom'); - return (DENY, $note) if $note; + if ($note) { + $self->log(LOGINFO, $note); + return (DENY, $note); + } return (DECLINED); }