lib/PublicInbox/Filter/Base.pm | 5 +++-- lib/PublicInbox/Filter/RubyLang.pm | 4 ++-- lib/PublicInbox/WatchMaildir.pm | 3 ++- diff --git a/lib/PublicInbox/Filter/Base.pm b/lib/PublicInbox/Filter/Base.pm index 5d070132a4101c78408018283eb8734247806974..638b627af5d4370221a07b1c167a5883f62d235d 100644 --- a/lib/PublicInbox/Filter/Base.pm +++ b/lib/PublicInbox/Filter/Base.pm @@ -66,9 +66,10 @@ 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 cb69e38a68aa01891287edd8b53448e53cd36259..a43d67a9352e4ea6ab71aad954b3fe44933d55e3 100644 --- a/lib/PublicInbox/Filter/RubyLang.pm +++ b/lib/PublicInbox/Filter/RubyLang.pm @@ -30,7 +30,7 @@ $self; } 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 @@ } } }); 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 7ee29da54ebd5cf27f16ba32b2654fed87831df8..10dc618416a377387652f1ebab198be4bb91f60b 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -126,7 +126,8 @@ eval { 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'); }