mirror of
https://git.proxmox.com/git/proxmox-spamassassin
synced 2025-05-01 05:16:33 +00:00
95 lines
1.9 KiB
Perl
95 lines
1.9 KiB
Perl
=head1 testplugin.pm
|
|
|
|
To try this out, write these lines to /etc/mail/spamassassin/plugintest.cf:
|
|
|
|
loadplugin myTestPlugin
|
|
header MY_TEST_PLUGIN eval:check_test_plugin()
|
|
|
|
=cut
|
|
|
|
package myTestPlugin;
|
|
|
|
use Mail::SpamAssassin::Plugin;
|
|
use Mail::SpamAssassin::Logger;
|
|
use strict;
|
|
use bytes;
|
|
|
|
our @ISA = qw(Mail::SpamAssassin::Plugin);
|
|
|
|
# constructor: register the eval rule
|
|
sub new {
|
|
my $class = shift;
|
|
my $mailsaobject = shift;
|
|
|
|
# some boilerplate...
|
|
$class = ref($class) || $class;
|
|
my $self = $class->SUPER::new($mailsaobject);
|
|
bless ($self, $class);
|
|
|
|
# the important bit!
|
|
$self->register_eval_rule ("check_test_plugin");
|
|
$self->register_eval_rule ("check_return_2");
|
|
$self->register_eval_rule ("sleep_based_on_header");
|
|
|
|
print "registered myTestPlugin: $self\n";
|
|
return $self;
|
|
}
|
|
|
|
# and the eval rule itself
|
|
sub check_test_plugin {
|
|
my ($self, $permsgstatus) = @_;
|
|
print "myTestPlugin eval test called: $self\n";
|
|
|
|
print "test: plugins loaded: ".
|
|
join(" ", sort $self->{main}->get_loaded_plugins_list()).
|
|
"\n";
|
|
|
|
my $file = $ENV{'SPAMD_PLUGIN_COUNTER_FILE'};
|
|
if ($file) {
|
|
open (IN, "<$file") or warn;
|
|
my $count = <IN>; $count += 0;
|
|
close IN;
|
|
|
|
dbg("test: called myTestPlugin, round $count");
|
|
|
|
open (OUT, ">$file") or warn;
|
|
print OUT ++$count;
|
|
close OUT or warn;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub sleep_based_on_header {
|
|
my ($self, $permsgstatus) = @_;
|
|
my $secs = $permsgstatus->{msg}->get_header("Sleep-Time");
|
|
chop $secs;
|
|
|
|
if ($secs) {
|
|
warn "sleeping for $secs seconds...";
|
|
sleep ($secs+0);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub check_return_2 {
|
|
return 2;
|
|
}
|
|
|
|
sub extract_metadata {
|
|
my ($self, $opts) = @_;
|
|
my $msg = $opts->{msg};
|
|
print "myTestPlugin extract_metadata: $self\n";
|
|
$msg->put_metadata("Plugin-Meta-Test", "bar");
|
|
return 1;
|
|
}
|
|
|
|
sub per_msg_finish {
|
|
my ($self, $permsgstatus) = @_;
|
|
print "myTestPlugin finishing: $self\n";
|
|
return 1;
|
|
}
|
|
|
|
1;
|