| Courier-Filter documentation | Contained in the Courier-Filter distribution. |
Courier::Filter::Module::SpamAssassin - SpamAssassin message filter module for the Courier::Filter framework
use Courier::Filter::Module::SpamAssassin;
my $module = Courier::Filter::Module::SpamAssassin->new(
prefs_file => '/etc/courier/filters/courier-filter-spamassassin.cf',
sa_options => {
# any Mail::SpamAssassin options
},
logger => $logger,
inverse => 0,
trusting => 0,
testing => 0,
debugging => 0
);
my $filter = Courier::Filter->new(
...
modules => [ $module ],
...
);
This class is a filter module class for use with Courier::Filter. It matches a message if its SpamAssassin spam score exceeds the configured threshold.
The following constructor is provided:
Creates a new SpamAssassin filter module.
%options is a list of key/value pairs representing any of the following options:
The path of a SpamAssassin preferences file. If this option is specified, its
value is passed to the Mail::SpamAssassin constructor's userprefs_filename
option | Mail::SpamAssassin/userprefs_filename. If undef, SpamAssassin
is instructed not to read any preferences besides its default configuration
files. Defaults to undef.
A hash-ref specifying options for the Mail::SpamAssassin object used by this filter module. See new in Mail::SpamAssassin for the supported options.
All options of the Courier::Filter::Module constructor are also supported. Please see new in Courier::Filter::Module for their descriptions.
See "Instance methods" in Courier::Filter::Module for a description of the provided instance methods.
Courier::Filter::Module, Courier::Filter::Overview.
For AVAILABILITY, SUPPORT, COPYRIGHT, and LICENSE information, see Courier::Filter::Overview.
Julian Mehnle <julian@mehnle.net>
| Courier-Filter documentation | Contained in the Courier-Filter distribution. |
# # Courier::Filter::Module::SpamAssassin class # # (C) 2005-2008 Julian Mehnle <julian@mehnle.net> # $Id: SpamAssassin.pm 211 2008-03-23 01:25:20Z julian $ # ###############################################################################
package Courier::Filter::Module::SpamAssassin; use warnings; use strict; use base 'Courier::Filter::Module'; use Mail::SpamAssassin; use constant TRUE => (0 == 0); use constant FALSE => not TRUE;
# Implementation: ###############################################################################
sub new { my ($class, %options) = @_; my $use_user_prefs = defined($options{prefs_file}); $options{sa_options}->{userprefs_filename} = $options{prefs_file}; my $spamassassin = Mail::SpamAssassin->new( $options{sa_options} ); $spamassassin->compile_now($use_user_prefs); my $self = $class->SUPER::new( %options, spamassassin => $spamassassin ); return $self; }
sub match { my ($self, $message) = @_; my $spamassassin = $self->{spamassassin}; my $sa_message = $spamassassin->parse($message->text); my $status = $spamassassin->check($sa_message); my $is_spam = $status->is_spam; my $score = $status->get_score; my $tests_hit = $status->get_names_of_tests_hit; $status->finish(); $sa_message->finish(); return 'SpamAssassin: Message looks like spam (score: ' . $score . '; ' . $tests_hit . ')' if $is_spam; return undef; # otherwise. }
TRUE;