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;