From: Leah Neukirchen Date: Tue, 12 Jun 2018 15:36:52 +0000 (+0200) Subject: public-inbox-mda: use status codes where applicable X-Git-Tag: v1.2.0~500 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=599bf0b3c198ab207e3c7baacafa513fd0d6393d;p=public-inbox.git public-inbox-mda: use status codes where applicable Many MTA understand these and map them to sensible SMTP error messages. Inability to find an inbox results in "5.1.1 user unknown". Misformatted messages are rejected with "5.6.0 data format error". Unsupported inbox versions are reported as "5.3.5 local configuration error". All of these are interpreted as permanent failures. --- diff --git a/script/public-inbox-mda b/script/public-inbox-mda index 766d58a6..1f1252a7 100755 --- a/script/public-inbox-mda +++ b/script/public-inbox-mda @@ -38,8 +38,8 @@ my $config = PublicInbox::Config->new; my $recipient = $ENV{ORIGINAL_RECIPIENT}; defined $recipient or die "ORIGINAL_RECIPIENT not defined in ENV\n"; my $dst = $config->lookup($recipient); # first check -defined $dst or do_exit(1); -my $main_repo = $dst->{mainrepo} or do_exit(1); +defined $dst or do_exit(67); # EX_NOUSER 5.1.1 user unknown +my $main_repo = $dst->{mainrepo} or do_exit(67); # pre-check, MDA has stricter rules than an importer might; do_exit(0) unless PublicInbox::MDA->precheck($simple, $dst->{address}); @@ -73,7 +73,7 @@ if (ref($ret) && $ret->isa('Email::MIME')) { # filter altered message } elsif ($ret == PublicInbox::Filter::Base::IGNORE) { do_exit(0); # chuck it to emergency } elsif ($ret == PublicInbox::Filter::Base::REJECT) { - $! = $ret; + $! = 65; # EX_DATAERR 5.6.0 data format error die $filter->err, "\n"; } # else { accept @@ -88,6 +88,7 @@ if ($v == 2) { my $git = $dst->git; $im = PublicInbox::Import->new($git, $dst->{name}, $recipient, $dst); } else { + $! = 78; # EX_CONFIG 5.3.5 local configuration error die "Unsupported inbox version: $v\n"; } if (defined $im->add($mime)) {