/[Apache-SVN]/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm
ViewVC logotype

Diff of /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm	2005/04/10 09:09:23	160763
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SPF.pm	2005/04/10 09:20:16	160764
@@ -56,9 +56,11 @@ sub new {
   my $conf = $mailsaobject->{conf};
 
   $self->register_eval_rule ("check_for_spf_pass");
+  $self->register_eval_rule ("check_for_spf_neutral");
   $self->register_eval_rule ("check_for_spf_fail");
   $self->register_eval_rule ("check_for_spf_softfail");
   $self->register_eval_rule ("check_for_spf_helo_pass");
+  $self->register_eval_rule ("check_for_spf_helo_neutral");
   $self->register_eval_rule ("check_for_spf_helo_fail");
   $self->register_eval_rule ("check_for_spf_helo_softfail");
   $self->register_eval_rule ("check_for_spf_whitelist_from");
@@ -124,6 +126,15 @@ sub check_for_spf_pass {
   $scanner->{spf_pass};
 }
 
+sub check_for_spf_neutral {
+  my ($self, $scanner) = @_;
+  $self->_check_spf ($scanner, 0) unless $scanner->{spf_checked};
+  if ($scanner->{spf_failure_comment}) {
+    $scanner->test_log ($scanner->{spf_failure_comment});
+  }
+  $scanner->{spf_neutral};
+}
+
 sub check_for_spf_fail {
   my ($self, $scanner) = @_;
   $self->_check_spf ($scanner, 0) unless $scanner->{spf_checked};
@@ -148,6 +159,15 @@ sub check_for_spf_helo_pass {
   $scanner->{spf_helo_pass};
 }
 
+sub check_for_spf_helo_neutral {
+  my ($self, $scanner) = @_;
+  $self->_check_spf ($scanner, 1) unless $scanner->{spf_helo_checked};
+  if ($scanner->{spf_helo_failure_comment}) {
+    $scanner->test_log ($scanner->{spf_helo_failure_comment});
+  }
+  $scanner->{spf_helo_neutral};
+}
+
 sub check_for_spf_helo_fail {
   my ($self, $scanner) = @_;
   $self->_check_spf ($scanner, 1) unless $scanner->{spf_helo_checked};
@@ -192,6 +212,7 @@ sub _check_spf {
     # SPF HELO-checking variant.  This isn't really SPF at all ;)
     $scanner->{spf_helo_checked} = 1;
     $scanner->{spf_helo_pass} = 0;
+    $scanner->{spf_helo_neutral} = 0;
     $scanner->{spf_helo_fail} = 0;
     $scanner->{spf_helo_softfail} = 0;
     $scanner->{spf_helo_failure_comment} = undef;
@@ -199,6 +220,7 @@ sub _check_spf {
     # "real" SPF; checking the envelope-from (where we can)
     $scanner->{spf_checked} = 1;
     $scanner->{spf_pass} = 0;
+    $scanner->{spf_neutral} = 0;
     $scanner->{spf_fail} = 0;
     $scanner->{spf_softfail} = 0;
     $scanner->{spf_failure_comment} = undef;
@@ -297,18 +319,20 @@ sub _check_spf {
 
   if ($ishelo) {
     if ($result eq 'pass') { $scanner->{spf_helo_pass} = 1; }
+    elsif ($result eq 'neutral') { $scanner->{spf_helo_neutral} = 1; }
     elsif ($result eq 'fail') { $scanner->{spf_helo_fail} = 1; }
     elsif ($result eq 'softfail') { $scanner->{spf_helo_softfail} = 1; }
 
-    if ($result eq 'fail' || $result eq 'softfail') {
+    if ($result eq 'neutral' || $result eq 'fail' || $result eq 'softfail') {
       $scanner->{spf_helo_failure_comment} = "SPF failed: $comment";
     }
   } else {
     if ($result eq 'pass') { $scanner->{spf_pass} = 1; }
+    elsif ($result eq 'neutral') { $scanner->{spf_neutral} = 1; }
     elsif ($result eq 'fail') { $scanner->{spf_fail} = 1; }
     elsif ($result eq 'softfail') { $scanner->{spf_softfail} = 1; }
 
-    if ($result eq 'fail' || $result eq 'softfail') {
+    if ($result eq 'neutral' || $result eq 'fail' || $result eq 'softfail') {
       $scanner->{spf_failure_comment} = "SPF failed: $comment";
     }
   }

 

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26