Here's a patch so that plugins/queue/postfix-queue can return
the full set of errors that postfix/cleanup can generate.
Without this, most errors are meaningless.
-Dave
--- plugins/queue/postfix-queue 2006-10-25 15:55:33.000000000 -0700
+++ /usr/share/qpsmtpd/plugins/queue/postfix-queue 2006-10-25
16:36:35.000000000 -0700
@@ -86,7 +86,39 @@
# $self->log(LOGDEBUG,
"queue-flags=".$transaction->notes('postfix-queue-flags'));
my ($status, $qid, $reason) = Qpsmtpd::Postfix->inject_mail($transaction);
- $status and return (DECLINED, "Unable to queue message ($status,
$reason)");
+ if ($status) {
+ # this section needs to be kept in sync with the cleanup_stat_map
+ # array found in Postfix source file src/global/cleanup_strerror.c
+ # which in turn uses constants defined in src/global/cleanup_user.h
+ if ($status & (1<<8)) {
+ # CLEANUP_STAT_DEFER
+ return(DENYSOFT, $reason || "service unavailable (#4.7.1)");
+ } elsif ($status & (1<<7)) {
+ # CLEANUP_STAT_PROXY
+ return(DENYSOFT, $reason || "proxy reject (#4.3.0)");
+ } elsif ($status & (1<<0)) {
+ # CLEANUP_STAT_BAD
+ return(DENYSOFT, $reason || "internal prototcal error (#4.3.0)");
+ } elsif ($status & (1<<6)) {
+ # CLEANUP_STAT_RCPT
+ return Qpsmtpd::DSN->addr_unspecified(DENY, $reason || "no
recipients specified");
+ } elsif ($status & (1<<4)) {
+ # CLEANUP_STAT_HOPS
+ return Qpsmtpd::DSN->too_many_hops(DENY, $reason || "too many
hops");
+ } elsif ($status & (1<<2)) {
+ # CLEANUP_STAT_SIZE
+ return Qpsmtpd::DSN->sys_msg_too_big(DENY, $reason || "message
file too big");
+ } elsif ($status & (1<<3)) {
+ # CLEANUP_STAT_CONT
+ return Qpsmtpd::DSN->media_conv_prohibited(DENY, $reason ||
"message content rejected");
+ } elsif ($status & (1<<1)) {
+ # CLEANUP_STAT_WRITE
+ return (DECLINED, $reason || "queue file write error");
+ } else {
+ # we have no idea why we're here.
+ return (DECLINED, $reason || "unknown error from
postfix/cleanup: $status");
+ }
+ }
my $msg_id = $transaction->header->get('Message-Id') || '';
$msg_id =~ s/[\r\n].*//s; # don't allow newlines in the Message-Id here