Documentation/public-inbox-mda.txt | 2 +- public-inbox-mda | 10 +++++----- t/cgi.t | 2 +- t/mda.t | 34 ++++++++++++++++++++++++++++------ diff --git a/Documentation/public-inbox-mda.txt b/Documentation/public-inbox-mda.txt index e29b119bc228a97b4745c5558d3739f5d4c375d4..2957093904af88ddd44ab9332fe1691d7f4b0d94 100644 --- a/Documentation/public-inbox-mda.txt +++ b/Documentation/public-inbox-mda.txt @@ -13,7 +13,7 @@ # ENVIRONMENT * RECIPIENT - the recipient email address, from Postfix * PI_CONFIG - config file. default: ~/.public-inbox/config -* PI_FAILBOX - emergency destination. default: ~/public-inbox-fail.mbox +* PI_EMERGENCY - emergency destination. default: ~/.public-inbox/emergency/ # PI_CONFIG FILE diff --git a/public-inbox-mda b/public-inbox-mda index 2335cd3e068437321f58cfd83b396a8d8fa266ad..1f4d339f63eaa1e561586cae84ed9334634d9d90 100755 --- a/public-inbox-mda +++ b/public-inbox-mda @@ -16,14 +16,14 @@ use PublicInbox; use PublicInbox::Filter; use PublicInbox::Config; -# n.b: hopefully we can setup the failbox path without bailing due to +# n.b: hopefully we can setup the emergency path without bailing due to # user error, we really want to setup the emergency destination ASAP # in case there's bugs in our code or user error. -my $failbox = $ENV{PI_FAILBOX} || '~/public-inbox-fail.mbox'; -$failbox = expand_filename($failbox); +my $emergency = $ENV{PI_EMERGENCY} || '~/.public-inbox/emergency/'; +$emergency = expand_filename($emergency); # this reads the message from stdin -my $filter = Email::Filter->new(emergency => $failbox); +my $filter = Email::Filter->new(emergency => $emergency); my $config = PublicInbox::Config->new; my $recipient = $ENV{RECIPIENT}; @@ -64,7 +64,7 @@ $filter->pipe(MDA, '-1', $main_repo); } } } -exit 0; # goes to failbox +exit 0; # goes to emergency # we depend on "report_safe 0" in /etc/spamassassin/*.cf with --headers # not using Email::Filter->pipe here since we want the stdout of diff --git a/t/cgi.t b/t/cgi.t index 3cf230c005dcb4f9bd54f865238ddf97c9b8e0af..b992af311e4fefedd098ffbb5c2af10bda7a226e 100644 --- a/t/cgi.t +++ b/t/cgi.t @@ -40,7 +40,7 @@ } } my $failbox = "$home/fail.mbox"; -local $ENV{PI_FAILBOX} = $failbox; +local $ENV{PI_EMERGENCY} = $failbox; { local $ENV{HOME} = $home; local $ENV{RECIPIENT} = $addr; diff --git a/t/mda.t b/t/mda.t index b403c6b37998ffa56c40fdb3621a1a66c5bdf704..d70288bc785d419039cb0f367f65e071e4e247b1 100644 --- a/t/mda.t +++ b/t/mda.t @@ -45,7 +45,7 @@ } { my $good_rev; - local $ENV{PI_FAILBOX} = $failbox; + local $ENV{PI_EMERGENCY} = $failbox; local $ENV{HOME} = $home; local $ENV{RECIPIENT} = $addr; my $simple = Email::Simple->new(< 0, "PI_FAILBOX is written to"); + ok(-s $failbox > 0, "PI_EMERGENCY is written to"); } fail_bad_header($good_rev, "bad recipient", <<""); @@ -133,7 +133,7 @@ } # spam training { - local $ENV{PI_FAILBOX} = $failbox; + local $ENV{PI_EMERGENCY} = $failbox; local $ENV{HOME} = $home; local $ENV{RECIPIENT} = $addr; local $ENV{PATH} = $main_path; @@ -167,7 +167,7 @@ } # train ham message { - local $ENV{PI_FAILBOX} = $failbox; + local $ENV{PI_EMERGENCY} = $failbox; local $ENV{HOME} = $home; local $ENV{RECIPIENT} = $addr; local $ENV{PATH} = $main_path; @@ -194,6 +194,28 @@ run([$learn, "ham"], \$in); is($?, 0, "learned ham idempotently "); } +# faildir - emergency destination is maildir +{ + my $faildir= "$home/faildir/"; + local $ENV{PI_EMERGENCY} = $faildir; + local $ENV{HOME} = $home; + local $ENV{RECIPIENT} = $addr; + local $ENV{PATH} = $fail_path; + my $in = < +To: You +Cc: $addr +Message-ID: +Subject: faildir subject +Date: Thu, 01 Jan 1970 00:00:00 +0000 + +EOF + run([$mda], \$in); + ok(-d $faildir, "emergency exists"); + my @new = glob("$faildir/new/*"); + is(scalar(@new), 1, "message delivered"); +} + done_testing(); sub fail_bad_header { @@ -207,6 +229,6 @@ local $ENV{GIT_DIR} = $maindir; my $rev = `git rev-list HEAD`; chomp $rev; is($rev, $good_rev, "bad revision not commited ($msg)"); - ok(-s $failbox > 0, "PI_FAILBOX is written to ($msg)"); + ok(-s $failbox > 0, "PI_EMERGENCY is written to ($msg)"); [ $in, $out, $err ]; }