about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Filter/Base.pm5
-rw-r--r--lib/PublicInbox/Filter/RubyLang.pm4
-rw-r--r--lib/PublicInbox/WatchMaildir.pm3
3 files changed, 7 insertions, 5 deletions
diff --git a/lib/PublicInbox/Filter/Base.pm b/lib/PublicInbox/Filter/Base.pm
index 5d070132..638b627a 100644
--- a/lib/PublicInbox/Filter/Base.pm
+++ b/lib/PublicInbox/Filter/Base.pm
@@ -66,9 +66,10 @@ sub reject ($$) {
 sub err ($) { $_[0]->{err} }
 
 # by default, scrub is a no-op, see PublicInbox::Filter::Vger::scrub
-# for an example of the override
+# for an example of the override.  The $for_remove arg is set to
+# disable altid setting for spam removal.
 sub scrub {
-        my ($self, $mime) = @_;
+        my ($self, $mime, $for_remove) = @_;
         $self->ACCEPT($mime);
 }
 
diff --git a/lib/PublicInbox/Filter/RubyLang.pm b/lib/PublicInbox/Filter/RubyLang.pm
index cb69e38a..a43d67a9 100644
--- a/lib/PublicInbox/Filter/RubyLang.pm
+++ b/lib/PublicInbox/Filter/RubyLang.pm
@@ -30,7 +30,7 @@ sub new {
 }
 
 sub scrub {
-        my ($self, $mime) = @_;
+        my ($self, $mime, $for_remove) = @_;
         # no msg_iter here, that is only for read-only access
         $mime->walk_parts(sub {
                 my ($part) = $_[0];
@@ -43,7 +43,7 @@ sub scrub {
                 }
         });
         my $altid = $self->{-altid};
-        if ($altid) {
+        if ($altid && !$for_remove) {
                 my $hdr = $mime->header_obj;
                 my $mids = mids($hdr);
                 return $self->REJECT('Message-ID missing') unless (@$mids);
diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm
index 7ee29da5..10dc6184 100644
--- a/lib/PublicInbox/WatchMaildir.pm
+++ b/lib/PublicInbox/WatchMaildir.pm
@@ -126,7 +126,8 @@ sub _remove_spam {
                         my $im = _importer_for($self, $ibx);
                         $im->remove($mime, 'spam');
                         if (my $scrub = $ibx->filter) {
-                                my $scrubbed = $scrub->scrub($mime) or return;
+                                my $scrubbed = $scrub->scrub($mime, 1);
+                                $scrubbed or return;
                                 $scrubbed == REJECT() and return;
                                 $im->remove($scrubbed, 'spam');
                         }