ietf-822
[Top] [All Lists]

Re: The Bcc Issue

2004-08-13 08:19:04

The issue of who handles Bcc: header lines has again been raised, and
I am seeking opinions as widely as I can. The requirement is
straightforward: non-Bcc recipients of a message should not see the
addresses of any Bcc recipients, that is, their copies of the message
should not contain Bcc: header lines.

The dispute is over who achieves this end by removing Bcc: lines when
they should not be present. Is it the MUA or the MTA? 

It's the MUA.  MTAs should not be altering message headers other than
to add Received fields and a Return-Path field on delivery.  

I believe the confusion results from the common practice of asking 
"sendmail -t" (be it the original sendmail program or some clone) to 
perform some of the MUA's functions - in particular, generating 
envelope recipient lists from the to/cc/bcc message header fields.
In this case "sendmail" is still performing an MUA function, even
though we think of it as an MTA.  (it might be the case that sendmail 
is older than the MHS model and the formal MTA/MUA split)

So when an MUA asks a "sendmail -t" interface to parse header fields
generate a recipient list, and submit the message, that sendmail-like 
program should be removing Bcc fields from the copy of a message sent to
any recipient that isn't in the Bcc list.  It MAY remove the Bcc field
from all copies and still comply with the specifications, but this is
Bad.  

OTOH, when an MUA uses SMTP (or the SUBMISSION protocol) to submit a
message for delivery, it's the MUA's responsibility to generate multiple
envelopes for any message containing Bcc's - one envelope for the Bcc
recipients (which may include the Bcc header field) and one envelope
for the non-Bcc'ed recipients (which MUST NOT include the Bcc field).
The SMTP or SUBMISSION server should not be removing or interpreting
the Bcc fields in this case.

The MUA is never required to include a Bcc field in the messages sent
to Bcc recipients - but it's the Right Thing to do.

-Keith


<Prev in Thread] Current Thread [Next in Thread>