THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
No Format |
---|
#!/usr/bin/perl -I/usr/local/lib # # run sa-learn on is_spam and not_spam to update spamassassin # # brj 01/27/04 use strict; use Cwd; require "splitmail.pl"; my $spamfile = "/var/mail/is_spam"; my $hamfile = "/var/mail/not_spam"; my $tmpdir = "/var/tmp/split"; #my $learn_spam = "sa-learn --spam -C /etc/mail/spamassassin --showdots --dir $tmpdir"; #my $learn_ham = "sa-learn --ham -C /etc/mail/spamassassin --showdots --dir $tmpdir"; my $learn_spam = "sa-learn --spam -C /etc/mail/spamassassin --dir $tmpdir"; my $learn_ham = "sa-learn --ham -C /etc/mail/spamassassin --dir $tmpdir"; my $startdir = cwd(); sub init { if ( ! -d $tmpdir ) { mkdir $tmpdir; } else { if ( chdir($tmpdir) ) { unlink <*>; } chdir($startdir); } } sub learn { my $infile = shift; my $command = shift; if ( -r $infile ) { splitmail($infile,$tmpdir); system("$command"); if ( chdir($tmpdir) ) { unlink <*>; } chdir($startdir); } } sub cleanup { unlink $spamfile, $hamfile; rmdir $tmpdir; } init(); learn( $spamfile, $learn_spam ); learn( $hamfile, $learn_ham ); cleanup(); |
...
Alternately, you can use this wrapper for sa-learn and call it from a .qmail file for on-the-fly split-and-addlearn-via-forward.
/usr/bin/learn_spam:
No Format |
---|
#!/usr/bin/perl # # run sa-learn on STDIN ... easy to use with .qmail files: # # .qmail-spamtrap: # | bayes_fixup.pl | learn_spam --spam --username=alias | cat - > /dev/null # .qmail-qqqhamreport: # | bayes_fixup.pl | learn_spam --ham --username=alias | cat - > /dev/null # # 3/16/2005 -- cgg007 at yahoo.com # use strict; sub learn { my $message = shift; my $pipe = shift; open LEARN, $pipe; print LEARN $message; close LEARN; } my $learn_cmd = "| bayes_fixup.pl | sa-learn " . join(" ",@ARGV); my $count = 0; my $message = ''; while (<STDIN>) { /^From/ and do { if ($count) { learn($message,$learn_cmd) if $count; $message = ''; } $count++; }; $message .= $_; } learn($message,$learn_cmd); |
...
...