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

Reply via email to