Hi, Using mail(1) here, it submits to sendmail(1) without including a From: header. cleanup(8) add that in cleanup_message.c's cleanup_header_done_callback().
quote_822_local(state->temp1, *state->sender ? state->sender : MAIL_ADDR_MAIL_DAEMON); vstring_sprintf(state->temp2, "%sFrom: %s", state->resent, vstring_str(state->temp1)); if (*state->sender && state->fullname && *state->fullname) { vstring_sprintf(state->temp1, "(%s)", state->fullname); token = tok822_parse(vstring_str(state->temp1)); vstring_strcat(state->temp2, " "); Unfortunately, it adds it as a `comment', not a `display-name' in RFC 2822 parlance. https://www.ietf.org/rfc/rfc2822.txt 3.4. Address Specification name-addr = [display-name] angle-addr display-name = phrase angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr CFWS = *([FWS] comment) (([FWS] comment) / FWS) comment = "(" *([FWS] ccontent) [FWS] ")" ... Since the meaning of the information in a comment is unspecified, implementations SHOULD use the full name-addr form of the mailbox, instead of the legacy form, to specify the display name associated with a mailbox. I end up with the first of these instead of the second. From: f...@example.com (Foo Bar) From: Foo Bar <f...@example.com> This matters because the RFC points out that the comment should not be interpreted, but because these headers are still being generated today, deliberate RFC violations are being coded to match, e.g. Go's recently altered its standard library's net/mail to pluck the name from a comment in some cases. Please consider having Postfix obey the RFC when generating From:, and other relevant headers. -- Cheers, Ralph. https://plus.google.com/+RalphCorderoy