Tanstaafl wrote:
> VanguardLH wrote:
>
>> Looking at the source of the message does NOT show a Bcc header but then
>> it shouldn't *if* Thunderbird is showing the actual content of the
>> message that got sent. The Bcc header should never be included in a
>> message; else, it obviates the entire purpose of the Bcc field if the
>> recipient can see it by looking in the headers.
>
> Someone is very confused. Hopefully it isn't me.
>
> Note: I'm not sure about how PGP signed messages re affected by this, but...
>
> First, Thunderbird doesn't 'send' email messages. It submits them to an
> MTA for sending. It is the MTA that actually sends the email.
The SMTP protocol doesn't care if it's a MUA or MTA doing the sending
(which you want to differentiate by injecting the term "submit"). The
sending SMTP server is the MUA to the MTA to which it connects. How are
the SMTP commands issued by your e-mail client to submit (or send)
different than the SMTP commands used by your sending SMTP server?
Because the same SMTP protocol is used regardless of whether an e-mail
client or e-mail server, MUA, UA, and MTA are often confusing since an
MTU behaves as an MTA but merely differentiates it as the client versus
a server. Thusly, the RFCs have moved to "SMTP client" and "SMPT
server" to denote the client-server relationship which may be e-mail
client to e-mail server or e-mail server to another e-mail server.
> AIUI, Thunderbird doesn't add the recipient headers, it simply sends the
> message with the recipients as specified.
The To and CC fields, if not blank, are added as headers in the message
literal sent by the e-mail client or the SMTP server during the DATA
command to the receiving SMTP server. The client should not include the
Bcc list as a Bcc header in the message literal.
The SMTP server uses the separate RCPT TO commands to define the
recipients, not the values of the To, Cc, and Bcc (if present) in the
message literal sent by the DATA command.
Simple Mail Transfer Protocol
http://www.rfc-editor.org/rfc/rfc5321.txt
2.3.1. Mail Objects
SMTP transports a mail object. A mail object contains an envelope
and content.
The SMTP envelope is sent as a series of SMTP protocol units
(described in Section 3). It consists of an originator address (to
which error reports should be directed), one or more recipient
addresses, and optional protocol extension material.
It's the envelope from the SMTP client that tells the SMTP server who
are the recipients. The "content" is sent using the DATA command.
> It is the MTA (in my case, postfix) that decides which headers are
> actually added to the message, and which aren't. It adds the To and CC
> headers when it sends the message, and omits the BCC recipients from the
> headers.
Your server is prepending MORE headers onto the message. Your server
should not be modifying the content submitted by the DATA command which
has the To, Cc, From and other client-side specified headers unless it
is going beyond just SMTP, like ensuring the From header's value matches
the e-mail address of the account from which a message originated (i.e.,
the sender cannot lie from where they sent a message). If your server
was "adding headers", where would it get the To, Cc, From, and other
headers that it "added"? Those do not have to match the list of RCPT TO
commands issued by the SMTP client unless the server's admin wanted to
enforce some policies over the use of their service.
> The reason the BCC headers exist in the Sent copy of the message is
> because the message is not SENT to the Sent folder, it is simply COPIED.
Perhaps true for the Local Folders's Sent folder. The Sent folder shown
in the IMAP account's should be the same copy as up on the server.
> In other words, the actual sending of the email is one SMTP transaction,
> and the 'Save to Sent' operation is a 'SAVE' (or 'COPY') transaction.
For POP accounts, true. POP has no concept of folders, just a mailbox.
The folders you see in your client other than the Inbox folder (which is
the mailbox up on the server) are all local folders merely for
organization within that client. For IMAP account, the folders and
their contents you see mirror those up on the server. What you see in
an IMAP folder in your local e-mail client should reflect the same
content in the folder up on the server. Since multiple clients may be
concurrently accessing the same account, they should all be seeing the
same content.
> So, yes, *you* will see the BCC'd recipients on the copy of the email in
> *your* sent folder, but the RECIPIENTS will not see ANY of the (other)
> BCC'd recipients, only the other To and CC'd recipients.
The recipients don't see the Bcc list as a Bcc header because the client
is not supposed to add the Bcc header in the message literal sent via
the DATA command to the SMTP server.
Although the SMTP server relies on the envelope of commands to determine
who are the recipients, it can go further to deduce who were the Bcc'ed
recipients and store that information along with the message so the
sender can see the Bcc list. For example, the server may see 8 RCPT TO
commands sent to it to specify 8 recipients for a message. It can
interrogate the message literal sent in the DATA command to see there
are only 3 recipients specified in the To and Cc headers (assuming the
Bcc is not there for it to inspect). It can match up the 3 recipients
in the To and Cc headers in the message literal against the RCPT TO list
and deduce the other 5 recipients were Bcc'ed. So it is possible the
server could add info to your account to let you see the Bcc list. That
is an action performed by the server, and not because the Bcc header was
in any way transmitted to the server.
> Question: are these headers actually included in the computation of the
> PGP 'signature'?
I've not bothered with PGP since S/MIME and .x509 certs are more than
sufficient for digital signatures and/or encryption of e-mail. Ross
might know more about how PGP works. For S/MIME, everything might be
included for the DATA command's content, and that means any To, Cc,
From, and other client-generated headers it inserts into the message
literal.
Obviously the client can only encrypt all or part of the message literal
created by the client and sent during the DATA command. It is
confusing, though, whether or not headers are included.
Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2
Message Specification
http://tools.ietf.org/html/rfc5751
1.5. Changes from S/MIME v3 to S/MIME 3.1
Header protection through the use of the message/rfc822 media
type has been added.
3.1. Preparing the MIME Entity for Signing, Enveloping, or
Compressing
S/MIME is used to secure MIME entities. A MIME entity can be a
sub-part, sub-parts of a message, or the whole message with all
its sub- parts. A MIME entity that is the whole message
includes only the MIME message headers and MIME body, and does
not include the RFC-822 header. ... If protection of the
RFC-822 header is required, the use of the message/rfc822 media
type is explained later in this section.
...
In order to protect outer, non-content-related message header
fields (for instance, the "Subject", "To", "From", and "Cc"
fields), the sending client MAY wrap a full MIME message in a
message/rfc822 wrapper in order to apply S/MIME security
services to these header fields. It is up to the receiving
client to decide how to present this "inner" header along with
the unprotected "outer" header.
This RFC is dated in 2010. However, if you look at RFC 3851 dated 2004
that this one obsoletes, it also mentioned the same header protection.
It is up to the client to decide what it includes.
I haven't yet used Thunderbird to digital sign or encrypt outgoing
message (using the recipient's public key) or received any back (for the
sender using my public key in a digitally signed message that I've
previously sent them) so I don't have an exhibit to inspect to see what
the header section looks like.
See
http://www.mozilla.org/projects/security/pki/psm/smime_guide.html.
Alas, they chose not to include a datestamp so readers would know how
old is this article. It does not describe which parts of the message
literal gets hashed for a digital signature or for which parts get
included in the generated string for the encoded content. It isn't that
technically detailed a document. Even with an exhibit, I'm not that I
could tell if the encrypted content included the RFC-822 headers or not.
S/MIME is something that, I believe, has to be incorporate to the e-mail
client. PGP is add-on behavior (download GnuPG and use Enigmail; see
https://support.mozilla.org/en-US/kb/digitally-signing-and-encrypting-messages)
so I can see mis-timed behavior in Thunderbird of modifying a message
after the add-on generated the string could screw up PGP.