From 64267ddd252ea24e5aeb4bb999a22a1b1f0f2d85 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Wed, 21 Feb 2018 12:58:57 -0800 Subject: [PATCH] add learn subcommand and examples --- bin/debbugs-spam | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/bin/debbugs-spam b/bin/debbugs-spam index b172e97..ba026da 100755 --- a/bin/debbugs-spam +++ b/bin/debbugs-spam @@ -78,11 +78,25 @@ id Mark messages as ham if there is a regex match to subject or message id +=item B + +Learn from messages which are ham/spam + =back =head1 EXAMPLES +Start spamd: + + /usr/sbin/spamd --socketpath=/home/debbugs/spamd_socket \ + --nouser-config --cf='include /home/debbugs/.spamassassin/user_prefs' \ + --cf='allow_user_rules 1' --allow-tell; + +Then score bugs: + + debbugs-spam --spamc-opts '-U' --spamc-opts '/home/debbugs/spamd_socket' \ + score 859123; =cut @@ -130,6 +144,8 @@ my %subcommands = }, 'mark-ham' => {function => \&mark_ham, }, + 'learn' => {fuction => \&learn, + }, 'help' => {function => sub {pod2usage({verbose => 2});}} ); @@ -207,6 +223,40 @@ sub mark_it { } } +sub learn { + my ($options,$opts,$config,$argv) = @_; + for my $bug_num (@{$argv}) { + my $spam = Debbugs::Log::Spam->new(bug_num => $bug_num) or + die "Unable to open bug log spam for $bug_num"; + foreachmsg(sub { + my ($bn,$rec,$mid) = @_; + my $score; + if ($spam->is_spam($mid)) { + $score //= + spam_score($rec,$options->{spamc}, + [@{$options->{spamc_opts}}, + '-L','spam' + ] + ); + print STDERR "learning spam" if $DEBUG; + } elsif ($spam->is_ham($mid)) { + $score //= + spam_score($rec,$options->{spamc}, + [@{$options->{spamc_opts}}, + '-L','ham' + ] + ); + print STDERR "learning ham" if $DEBUG; + } else { + print STDERR "not learning" if $DEBUG; + } + print STDERR " from $mid" if $DEBUG; + }, + $bug_num + ); + } +} + sub score_bug { my ($options,$opts,$config,$argv) = @_; -- 2.39.2