X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FWatchMaildir.pm;h=f63140c8ed32724a20554cb9bbb014cefdfd709b;hb=9bd675d33ad1e49bd2ebe12a1d216216e61380de;hp=84080ba958f0dfd629743834761a87f82f6cbc9e;hpb=a89d459a1e21181fdf185ee6b3b55a6afcc87b44;p=public-inbox.git diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index 84080ba9..f63140c8 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2016-2018 all contributors +# Copyright (C) 2016-2019 all contributors # License: AGPL-3.0+ # # ref: https://cr.yp.to/proto/maildir.html @@ -7,9 +7,6 @@ package PublicInbox::WatchMaildir; use strict; use warnings; use PublicInbox::MIME; -use PublicInbox::Git; -use PublicInbox::Import; -use PublicInbox::MDA; use PublicInbox::Spawn qw(spawn); use PublicInbox::InboxWritable; use File::Temp qw//; @@ -27,7 +24,9 @@ sub new { # indefinitely... foreach my $pfx (qw(publicinboxwatch publicinboxlearn)) { my $k = "$pfx.watchspam"; - if (my $dir = $config->{$k}) { + defined(my $dirs = $config->{$k}) or next; + $dirs = [ $dirs ] if !ref($dirs); + for my $dir (@$dirs) { if (is_maildir($dir)) { # skip "new", no MUA has seen it, yet. my $cur = "$dir/cur"; @@ -121,7 +120,7 @@ sub _remove_spam { eval { my $im = _importer_for($self, $ibx); $im->remove($mime, 'spam'); - if (my $scrub = $ibx->filter) { + if (my $scrub = $ibx->filter($im)) { my $scrubbed = $scrub->scrub($mime, 1); $scrubbed or return; $scrubbed == REJECT() and return; @@ -150,6 +149,12 @@ sub _try_path { if (!ref($inboxes) && $inboxes eq 'watchspam') { return _remove_spam($self, $path); } + + my $warn_cb = $SIG{__WARN__} || sub { print STDERR @_ }; + local $SIG{__WARN__} = sub { + $warn_cb->("path: $path\n"); + $warn_cb->(@_); + }; foreach my $ibx (@$inboxes) { my $mime = _path_to_mime($path) or next; my $im = _importer_for($self, $ibx); @@ -159,7 +164,8 @@ sub _try_path { my $v = $mime->header_obj->header_raw($wm->[0]); next unless ($v && $v =~ $wm->[1]); } - if (my $scrub = $ibx->filter) { + + if (my $scrub = $ibx->filter($im)) { my $ret = $scrub->scrub($mime) or next; $ret == REJECT() and next; $mime = $ret;