You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2008/08/14 18:31:01 UTC
svn commit: r685954 - in /spamassassin/trunk:
lib/Mail/SpamAssassin/Plugin/DKIM.pm rules/v312.pre
Author: jm
Date: Thu Aug 14 09:31:00 2008
New Revision: 685954
URL: http://svn.apache.org/viewvc?rev=685954&view=rev
Log:
bug 5889: enable the DKIM rules by default in 3.3.0, by emulating SPF's behaviour when the Mail::DKIM module is not installed (it logs an error at debug-level only)
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm
spamassassin/trunk/rules/v312.pre
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm?rev=685954&r1=685953&r2=685954&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DKIM.pm Thu Aug 14 09:31:00 2008
@@ -74,9 +74,6 @@
use bytes;
use re 'taint';
-# Have to do this so that RPM doesn't find these as required perl modules.
-BEGIN { require Mail::DKIM; require Mail::DKIM::Verifier; }
-
use vars qw(@ISA);
@ISA = qw(Mail::SpamAssassin::Plugin);
@@ -288,9 +285,37 @@
# ---------------------------------------------------------------------------
+sub _dkim_load_modules {
+ my ($self) = @_;
+
+ return $self->{tried_loading} if defined $self->{tried_loading};
+ $self->{tried_loading} = 0;
+
+ my $timemethod = $self->{main}->time_method("dkim_load_modules");
+ my $eval_stat;
+ eval {
+ # Have to do this so that RPM doesn't find these as required perl modules.
+ { require Mail::DKIM; require Mail::DKIM::Verifier; }
+ } or do {
+ $eval_stat = $@ ne '' ? $@ : "errno=$!"; chomp $eval_stat;
+ };
+
+ if (!defined($eval_stat)) {
+ dbg("dkim: using Mail::DKIM for DKIM checks");
+ $self->{tried_loading} = 1;
+ } else {
+ dbg("dkim: cannot load Mail::DKIM module, DKIM checks disabled: $eval_stat");
+ }
+}
+
+# ---------------------------------------------------------------------------
+
sub _check_dkim_signature {
my ($self, $scan) = @_;
+ return unless $self->_dkim_load_modules();
+ my $timemethod = $self->{main}->time_method("check_dkim_signature");
+
$scan->{dkim_checked_signature} = 1;
$scan->{dkim_signed} = 0;
$scan->{dkim_valid} = 0;
@@ -299,8 +324,6 @@
$scan->{dkim_author_address} =
$scan->get('from:addr') if !defined $scan->{dkim_author_address};
- my $timemethod = $self->{main}->time_method("check_dkim_signature");
-
# my $verifier = Mail::DKIM::Verifier->new(); # per new docs
my $verifier = Mail::DKIM::Verifier->new_object(); # old style???
if (!$verifier) {
@@ -434,6 +457,8 @@
$scan->{dkim_author_address} =
$scan->get('from:addr') if !defined $scan->{dkim_author_address};
+ return unless $self->_dkim_load_modules();
+
# must check the message first to obtain signer, domain, and verif. status
$self->_check_dkim_signature($scan) unless $scan->{dkim_checked_signature};
my $verifier = $scan->{dkim_object};
@@ -501,6 +526,7 @@
my ($self, $scan) = @_;
$scan->{whitelist_checked} = 1;
+ return unless $self->_dkim_load_modules();
return unless $scan->is_dns_available();
my $author = $scan->{dkim_author_address};
Modified: spamassassin/trunk/rules/v312.pre
URL: http://svn.apache.org/viewvc/spamassassin/trunk/rules/v312.pre?rev=685954&r1=685953&r2=685954&view=diff
==============================================================================
--- spamassassin/trunk/rules/v312.pre (original)
+++ spamassassin/trunk/rules/v312.pre Thu Aug 14 09:31:00 2008
@@ -25,5 +25,5 @@
# Note that if C<Mail::DKIM> version 0.20 or later is installed, this
# renders the DomainKeys plugin redundant.
#
-#loadplugin Mail::SpamAssassin::Plugin::DKIM
+loadplugin Mail::SpamAssassin::Plugin::DKIM