Ralf Hildebrandt:
> Today I encountered this on the python.org mailserver:
> 
> Jan  2 14:49:54 albatross postfix/cleanup[5983]: 949B8EE99E: reject 
> mime-error improper use of 8-bit data in message header: To: Alice 
> Bevan?McGregor <al...@....com>, web-...@python.org from localhost[127.0.0.1]; 
> from=<p...@....com> to=<web-...@python.org>
> 
> which resulted in this:
> 
> Jan  2 14:49:54 albatross postfix/smtpd[4866]: proxy-reject:
> END-OF-MESSAGE: 554 permanent error; from=<p...@....com>
> to=<web-...@python.org> proto=ESMTP helo=<sparrow.telecommunity.com>
> 
> In the bounce, pje only got the "554 permanent error" message.

When the MIME processor was added to Postfix, there was no way to get
the error message back to the SMTP client.

I suppose that the following patch brings Postfix MIME error
reporting up to the same level as reject messages from Postfix
header/body_checks.

        Wietse

diff -cr /var/tmp/postfix-2.8-20110102/src/cleanup/cleanup_message.c 
src/cleanup/cleanup_message.c
*** /var/tmp/postfix-2.8-20110102/src/cleanup/cleanup_message.c Tue Jul 27 
16:34:20 2010
--- src/cleanup/cleanup_message.c       Sun Jan  2 17:00:13 2011
***************
*** 880,885 ****
--- 880,886 ----
  {
      CLEANUP_STATE *state = (CLEANUP_STATE *) context;
      const char *origin;
+     const char *error_text;
  
      /*
       * Message header too large errors are handled after the end of the
***************
*** 889,897 ****
        if ((origin = nvtable_find(state->attr, MAIL_ATTR_LOG_ORIGIN)) == 0)
            origin = MAIL_ATTR_ORG_NONE;
  #define TEXT_LEN (len < 100 ? (int) len : 100)
        msg_info("%s: reject: mime-error %s: %.*s from %s; from=<%s> to=<%s>",
!                state->queue_id, mime_state_error(err_code), TEXT_LEN, text,
            origin, state->sender, state->recip ? state->recip : "unknown");
      }
  }
  
--- 890,901 ----
        if ((origin = nvtable_find(state->attr, MAIL_ATTR_LOG_ORIGIN)) == 0)
            origin = MAIL_ATTR_ORG_NONE;
  #define TEXT_LEN (len < 100 ? (int) len : 100)
+       error_text = mime_state_error(err_code);
        msg_info("%s: reject: mime-error %s: %.*s from %s; from=<%s> to=<%s>",
!                state->queue_id, error_text, TEXT_LEN, text,
            origin, state->sender, state->recip ? state->recip : "unknown");
+       if (state->reason == 0)
+           state->reason = dsn_prepend("5.7.1", error_text);
      }
  }
  

Reply via email to