]> Sergey Matveev's repositories - public-inbox.git/commitdiff
mda: support a 'filter=scrub' option for external lists
authorEric Wong <e@80x24.org>
Sat, 3 Oct 2015 10:18:07 +0000 (10:18 +0000)
committerEric Wong <e@80x24.org>
Sat, 3 Oct 2015 10:40:13 +0000 (10:40 +0000)
For list where we are not the primary archival entry point,
defaulting to filter=scrub makes sense since their list
conventions may be more tolerant of HTML and other crap
than we are.

lib/PublicInbox/Config.pm
public-inbox-mda

index 315d788b8f3a508ed8fb53a03cafe2fdc1ad9812..0d73a867059f468c1e936d79d0a9a2102a5e3d61 100644 (file)
@@ -61,7 +61,7 @@ sub lookup {
        defined $pfx or return;
 
        my %rv;
-       foreach my $k (qw(mainrepo address)) {
+       foreach my $k (qw(mainrepo address filter)) {
                my $v = $self->{"$pfx.$k"};
                $rv{$k} = $v if defined $v;
        }
index 1a9469badfecd1c179601d5d7f7cba48b718ccc6..df8ca38c13ff3d93d59765e0dd5751dc45d599ee 100755 (executable)
@@ -38,7 +38,18 @@ if (PublicInbox::MDA->precheck($filter, $dst->{address}) &&
        $filtered = undef;
        $filter->simple($msg);
 
-       if (PublicInbox::Filter->run($msg, $filter)) {
+       my $filter_arg;
+       my $fcfg = $dst->{filter};
+       if (!defined $fcfg || $filter eq 'reject') {
+               $filter_arg = $filter;
+       } elsif ($fcfg eq 'scrub') {
+               $filter_arg = undef; # the default for legacy versions
+       } else {
+               warn "publicinbox.$dst->{listname}.filter=$fcfg invalid\n";
+               warn "must be either 'scrub' or 'reject' (the default)\n";
+       }
+
+       if (PublicInbox::Filter->run($msg, $filter_arg)) {
                # run spamc again on the HTML-free message
                if (do_spamc($msg, \$filtered)) {
                        $msg = Email::MIME->new(\$filtered);