Re: loop homework, not an experiment, draft-crocker-email-deliveredto

Viktor Dukhovni <[email protected]> Sat, 7 Aug 2021 13:29:26 -0400
Newsgroups gmane.ietf.smtp
Message-ID <[email protected]>
On Sat, Aug 07, 2021 at 08:44:49AM -0700, Ned Freed wrote:

> > When mail systems do internal forwards using things like .forward or
> > /etc/alias, each forward adds a Delivered-To, which breaks a->b->c->a
> > loops.  Since there's no SMTP involved, there's usually no Received and
> > never an Envelope-To.  Also, as Sam, Viktor, and I have explained, the
> > internal forwards are not necessarily to or from anything that has an
> > externally valid envelope address.
> 
> What happens when there are multiple recipients? Message splitting?

Yes, a single recipient delivery is required for Delivered-To: (and/or
X-Original-To) to be prepended to the message.

The Postfix local(8) delivery agent always delivers to one *input*
recipient (MTA-to-LDA handoff) at a time.   The envelope is not split
internally when expanding an alias with an "owner-" alias, or with an
RHS of ":include:/some/file", and in both cases a new message is
injected into the queue with the resulting expansion, which might then
variously split and perhaps produce new local recipients...

Furthermore, the Postfix MTA is by default (and this is rarely and
should not be changed) configured to hand off one recipient at a time to
local(8).

The lmtp(8), pipe(8) and smtp(8) delivery agents can be configured in
particular master.cf(5) transport definitions to expect single-recipient
envelopes (and qmgr(8) should then be configured for single-recipient
delivery-agent handoff to such a transport).

Bottom line, the Delivered-To: header is added by transports configured
to add it, when such transports are correctly configured for
single-recipient delivery.

-- 
    Viktor.