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); } }