diff options
author | Eric Wong <e@80x24.org> | 2017-01-02 13:16:15 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2017-01-02 13:22:32 +0000 |
commit | 6d534038285ddd760709ba76ea007f9108200097 (patch) | |
tree | 924e8c4453839d450dbd6e6f3839b858daccd120 | |
parent | afb39aad9feb36e32f319e3ec9707c5593832546 (diff) | |
download | public-inbox-6d534038285ddd760709ba76ea007f9108200097.tar.gz |
If a message is spam in one mailbox, it is spam in all others a particular user/group will care about.
-rw-r--r-- | Documentation/public-inbox-config.pod | 3 | ||||
-rw-r--r-- | lib/PublicInbox/WatchMaildir.pm | 22 |
2 files changed, 15 insertions, 10 deletions
diff --git a/Documentation/public-inbox-config.pod b/Documentation/public-inbox-config.pod index cfd6c93d..78f12ba2 100644 --- a/Documentation/public-inbox-config.pod +++ b/Documentation/public-inbox-config.pod @@ -105,7 +105,8 @@ Default: none This may be set to C<spamc> to enable the use of SpamAssassin L<spamc(1)> for filtering spam before it is imported into git history. Other spam filtering backends may be supported in -the future. This only affects L<public-inbox-watch(1)>. +the future. This requires L<public-inbox-watch(1)>, but affects +all configured public-inboxes in PI_CONFIG. Default: none diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index c8ea3ed3..b7c2d17a 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -80,6 +80,7 @@ sub new { mdmap => \%mdmap, mdir => \@mdir, mdre => $mdre, + config => $config, importers => {}, }, $class; } @@ -99,15 +100,18 @@ sub _remove_spam { $path =~ /:2,[A-R]*S[T-Z]*\z/i or return; my $mime = _path_to_mime($path) or return; _force_mid($mime); - foreach my $inbox (values %{$self->{mdmap}}) { - next unless ref $inbox; - my $im = _importer_for($self, $inbox); - $im->remove($mime); - if (my $scrub = _scrubber_for($inbox)) { - my $scrubbed = $scrub->scrub($mime) or next; - $im->remove($scrubbed); - } - } + $self->{config}->each_inbox(sub { + my ($ibx) = @_; + eval { + my $im = _importer_for($self, $ibx); + $im->remove($mime); + if (my $scrub = _scrubber_for($ibx)) { + my $scrubbed = $scrub->scrub($mime) or return; + $im->remove($scrubbed); + } + }; + warn "error removing spam at $path from $ibx->{name}\n" if $@; + }) } # used to hash the relevant portions of a message when there are conflicts |