From 6dfb9311700d09fb019bee74d2b420c6cdea8b8f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 18 Apr 2014 22:18:17 +0000 Subject: [PATCH] mda: rename PI_FAILBOX to PI_EMERGENCY The emergency destination may be Maildir. A Maildir emergency destination is better for volatile data which is written to and deleted-from frequently. --- Documentation/public-inbox-mda.txt | 2 +- public-inbox-mda | 10 ++++----- t/cgi.t | 2 +- t/mda.t | 34 ++++++++++++++++++++++++------ 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/Documentation/public-inbox-mda.txt b/Documentation/public-inbox-mda.txt index e29b119b..29570939 100644 --- a/Documentation/public-inbox-mda.txt +++ b/Documentation/public-inbox-mda.txt @@ -13,7 +13,7 @@ Each system user may have their own public-inbox instances * 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 2335cd3e..1f4d339f 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 @@ if (PublicInbox->precheck($filter, $recipient) && } } } -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 3cf230c0..b992af31 100644 --- a/t/cgi.t +++ b/t/cgi.t @@ -40,7 +40,7 @@ my $cfgpfx = "publicinbox.test"; } 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 b403c6b3..d70288bc 100644 --- a/t/mda.t +++ b/t/mda.t @@ -45,7 +45,7 @@ my $failbox = "$home/fail.mbox"; { 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 @@ Date: deadbeef # 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 @@ EOF # 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 @@ EOF 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 @@ sub fail_bad_header { 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 ]; } -- 2.44.0