Email learning series
Email envelopes and headers: why there is more than one sender
By Pedro Paiva
A welcome message can display hello@example.org while delivery failures go to bounces@example.org. This is normal: an email has delivery instructions outside the content the reader sees.
Two layers of addressing
The SMTP envelope consists of the return address sent with MAIL FROM and recipients sent with RCPT TO. The message itself has headers and a body. Headers are content carried inside that envelope; changing To does not independently change the SMTP delivery destination.
Compare these two views of one fictional message:
SMTP envelope Message inside DATA
MAIL FROM:<bounces@example.org> From: Welcome <hello@example.org>
RCPT TO:<reader@example.net> To: reader@example.net
RCPT TO:<audit@example.net> Reply-To: support@example.org
Subject: Welcome
Your account is ready.
reader and audit receive delivery attempts because both are envelope recipients. The visible sender is hello, the ordinary reply destination is support, and a delivery failure normally goes to bounces. The audit address is deliberately absent from visible recipient headers in this Bcc-style example.
The headers To and Cc describe intended visible recipients. A mail client commonly constructs envelope recipients from its composer fields, which makes the layers look interchangeable. At the protocol level, they remain separate.
Replies are messages; failures use the return path
From identifies the message’s author. Reply-To, when present, supplies the address suggested for replies; otherwise a normal reply uses From. Reply-all behavior also considers recipient headers, and client rules vary. This does not guarantee where every client or human will send a reply.
When final delivery happens, the delivery system records the envelope reverse-path in a Return-Path header. For our example, a received copy might start with:
Return-Path: <bounces@example.org>
From: Welcome <hello@example.org>
Reply-To: support@example.org
An application adding its own Return-Path header cannot authoritatively set the SMTP envelope. Configure the provider’s actual return-path feature or SMTP MAIL FROM. Relays and final delivery systems have rules for handling preexisting Return-Path fields; inspect the received message, not just the pre-submission copy.
A failure notification is itself an email. SMTP uses a null reverse-path, MAIL FROM:<>, for delivery-status notifications so another failure doesn’t produce an endless chain of failure notifications. A final received DSN can therefore show Return-Path: <>. The null path is not the same thing as an empty visible From header.
What Bcc does and doesn’t hide
A common implementation removes the Bcc header and includes those addresses only in the envelope. RFC 5322 also permits variants, including separately generated copies and an empty Bcc field. Do not assume every recipient gets identical message bytes.
Bcc keeps addresses out of other recipients’ normal recipient headers. It doesn’t hide them from the sending service, transport logs, or the blind recipient who replies to everyone. Nor does a visible To prove the mailbox accepted the message.
To investigate a routing problem, ask three separate questions: what envelope was submitted, what headers reached the mailbox, and what action did the receiving system take? A screenshot of the sender name answers only part of the second question.
Saved only in this browser until you clear it. Reading progress isn’t sent to us.
References
- RFC 5321, sections 3.3, 4.4 and 6.1 — envelopes, Return-Path and failure handling.
- RFC 5322, section 3.6 — originator, recipient, reply and Bcc fields.
- RFC 3464 — delivery-status notifications.