diff options
-rw-r--r-- | lib/PublicInbox/Filter/Base.pm | 5 | ||||
-rw-r--r-- | lib/PublicInbox/Filter/RubyLang.pm | 4 | ||||
-rw-r--r-- | lib/PublicInbox/WatchMaildir.pm | 3 |
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'); } |