#!/usr/bin/perl -w
-# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
+# Copyright (C) 2013-2015 all contributors <meta@public-inbox.org>
# License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt)
+#
+# Mail delivery agent for public-inbox, run from your MTA upon mail delivery
use strict;
use warnings;
my $usage = 'public-inbox-mda < rfc2822_message';
$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);
PublicInbox::MDA->author_info($msg);
END {
- search_index_sync($main_repo) if ($? == 0);
+ index_sync($main_repo) if ($? == 0);
};
local $ENV{GIT_AUTHOR_NAME} = $name;
return ($@ || $? || !defined($$out) || $$out eq '') ? 0 : 1;
}
-sub search_index_sync {
+sub index_sync {
my ($git_dir) = @_;
+
+ # potentially user-visible, ignore errors:
+ system('git', "--git-dir=$git_dir", 'update-server-info');
+
eval {
require PublicInbox::SearchIdx;
PublicInbox::SearchIdx->new($git_dir, 2)->index_sync;