Knowledge base

PMTA knowledge base›Block <domain>›Directive§ 3.3.10.11

bcc-upon-delivery

<domain>

The address every delivered message is copied to
in the configuration this is a linebcc-upon-deliveryinside the block <domain>
A copy of what actually got through

The value is one address. Every message delivered to this receiver is also sent to it as a blind copy.

An empty string (“”) erases the value inherited from a wider block.

It differs from the neighboring bcc in two things. That one takes a copy at reception from the source, this one at delivery to the receiver. And the scope is different: there the source, here the receiver.

The practical difference: a copy at delivery is taken only from what got through. Bounced and stuck messages do not get into it.

The main trap is volume. The copy goes out as ordinary sending: with its own queue, its own connections, its own accounting record. The line doubles the mail for this receiver — and in the * block it doubles all of the node’s mail.

The second half: the copy carries away the full content of messages together with the recipients’ addresses. An archive mailbox at a third-party provider means the content of your mailing travels to it.

What the Hub does. It does not write it: it keeps the message archive itself — the sends, their content and recipients are in the database.

For warm-up the line would be doubly harmful: every message would double the consumption of the address’s daily quota, and the quota is what warm-up is built around.

Recommended values

What to set. The value is an address; the question is whether it is needed:

Value When
do not write it the archive is kept on the platform side — the usual case
your own mailbox address a requirement to keep a copy of exactly what was delivered
“” cancel an address inherited from a wide block

The mailbox must be your own: the copy carries away message content and recipients’ addresses.

The syntax, erasure with an empty string and taking the copy at delivery come from the manual, § 3.3.10.11. The comparison with the copy at reception — § 3.3.7.3. The volume estimate is ours.
Example configuration
# the copy is taken only from delivered messages of this receiver
<domain partner.example>
    bcc-upon-delivery archive@example.com</domain>
Bounced and stuck messages will not get into the copy — unlike the copy at reception, which is taken from everything submitted.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
▲

Common mistakes and problems

what people get wrong and how it ends2 mistakes▶

Setting the copy in the general receivers block

our experience

What it costsCopies are collected from all of the node’s delivered mail. The volume doubles entirely, and things that do not belong there end up in the archive.
How to spot itThe queues show the archive mailbox’s domain with a volume comparable to the whole mailing.
How to do it rightMove the line into the block of the receiver whose mail needs archiving.

Expecting undelivered messages in the archive too

§ 3.3.10.11

What it costsThe copy is taken at delivery. Bounced and stuck messages do not get into it — and they are exactly the ones most often needed in an investigation.
How to spot itThe archive lacks the messages complaints ask about.
How to do it rightFor a complete archive take the copy at reception — with the neighboring line in the source block.
Compatibility
PowerMTA 6.0
described in the manual of this version · platform: any
The vendor does not state the first version for every directive — there is no note here. The name also appears in the 5.0 edition of the manual.
Reference data
Syntax
bcc-upon-delivery <email-address>
Values
an email address; an empty string erases the inherited value
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<domain>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
The directive lives in <domain> and obeys the merging of receiver blocks: a narrower block overrides a wider one. An address from the * block will collect copies of all of the node’s delivered mail; it can be cancelled in a narrow block only with an empty string.
How to check on the node
The line is visible in the configuration, the effect — in the queues:
grep -n 'bcc-upon-delivery\|^ *bcc ' /etc/pmta/config /etc/pmta/virtualhost.txt
pmta show queues --maxitems=20
The archive mailbox’s domain will appear in the queue list as a separate line, and the volume in it will be comparable to the delivered volume. This is the fastest way to notice a forgotten copy.
In the Hub
Cost of a mistake
dangerous: effects outlast a rollback
Scenarios
Sender isolation