Mailmunge::Test::SpamAssassin − run SpamAssassin against the current message.
This class runs SpamAssassin against the message and returns the SpamAssassin "Mail::SpamAssassin::PerMsgStatus" object that is the result of the SpamAssassin run.
You must have "Mail::SpamAssassin" installed to use this class.
package
MyFilter;
use Mailmunge::Test::SpamAssassin;
sub filter_begin {
my ($self, $ctx) = @_;
my $test =
Mailmunge::Test::SpamAssassin−>new($self);
my $status = $test−>spam_assassin_status($ctx);
if ($status) {
if ($status−>get_score() >= 5) {
$self−>action_change_header($ctx, 'Subject',
'[SPAM] ' . $ctx−>subject);
}
$status−>finish();
}
# ... rest of filter_begin
}
Constructs a new Mailmunge::Test::SpamAssassin object and stores a copy of $filter in it.
Runs a SpamAssassin check against the current message. $local_tests_only is passed as the "local_tests_only" option to the "Mail::SpamAssassin" constructor. It is optional; if not supplied, it defaults to false.
$config is the path to the SpamAssassin "userprefs_fileanem". If not supplied, Mailmunge uses the first file found out of:
CONFDIR/sa−mailmunge.cf
CONFDIR/spamassassin/sa−mailmunge.cf
CONFDIR/spamassassin/local.cf
CONFDIR/spamassassin.cf
/etc/mail/sa−mailmunge.cf
/etc/mail/spamassassin/sa−mailmunge.cf
/etc/mail/spamassassin/local.cf
/etc/mail/spamassassin.cf
where CONFDIR is the value of "Mailmunge::Constants−>get('Path:CONFDIR')".
"spam_assassin_status" returns a "Mail::SpamAssassin::PerMsgStatus" object on success, or undef is something went wrong. Note that when you have finished using the returned status object, you should call its finish() method to free up resources.
Dianne Skoll <[email protected]>
This code is licensed under the terms of the GNU General Public License, version 2.