Wietse Venema: > 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.
This is not needed. Postfix should already report one MIME error to the SMTP client, as long as the message has no other "reject" errors. > 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); > } > } > > >