Knowledge base

Change a sending address when messages are already queued

Changing a VirtualMTA
Changing an address on the fly — and a window in which both answers are true

This is documented behavior, not a side effect. The boundary runs by connection: those opened after the reload will take the new definition; those already established will finish on the old one.

So the change is not instant. Its window is the lifetime of the longest open connection. It is bounded (the idle timeout closes connections), but it is not short.

For anything that reasons about “which address sent what,” this window is a period in which both answers are true. A message queued after the edit could have gone out from the old address if its connection was opened earlier.

The main trap is measuring reputation by the plan rather than by accounting. Within the window messages go out from the old address, while the plan already attributes them to the new one. Any per-address metric taken at that moment attributes traffic to the wrong address.
What the Hub does. It performs the change: it reassembles the configuration and applies it — that is steps 1–2. What it does not do is account for the overlap window or verify afterwards that the intended settings are actually in effect on the node. Both checks are cheap: the message’s address is in accounting, and the effective settings are returned by a node command.
Recommended values

The recipe has no values — it has steps. But there is still a choice before it: change the sending address or create a new one.

What you do What happens to the queue When to do it
change the definition messages stay and go out from the new address the address is returned to the hosting provider, and messages must not be lost
create a new one and switch submission the old queue finishes from the old one a clean boundary between addresses in accounting is needed
delete the definition the queue refuses — see the removal recipe the sending address is no longer needed at all
The per-connection boundary and the sufficiency of a reload come from the manual (§ 9.5.1). The analysis of the alternatives is ours.
Example configuration
# the address is returned to the hosting provider: edit the line and reload
<virtual-mta shop-example-com>
    smtp-source-host 203.0.113.77 shop.example.com</virtual-mta>
Messages in this sending address’s queue will not go anywhere — they will go out from the new address. The new address’s reverse record has to be put in order before the reload: the greeting name stayed the same.
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 ends3 mistakes▶

Considering the change instant

§ 9.5.1

What it costsOpen connections live out their lives on the old definition. A deliverability measurement for the new address taken right after the apply mixes two addresses into one number.
How to spot itIn the first hours after the change, the new address’s metrics look suspiciously like the old one’s.
How to do it rightTake the address from accounting, not from the plan, or wait out the window — until this sending address’s connections close.

Changing the address without preparing the reverse record

our experience

What it costsThe greeting name stayed the same, while the new address’s reverse record points elsewhere or is missing. The recipient sees the mismatch from the very first connection.
How to spot itRight after the change, the share of temporary refusals at strict receivers grows.
How to do it rightPrepare the reverse record before the reload. If there is none and will not be, change the name too, with the second word of the same line.

Removing the address line instead of replacing it

§ 9.2

What it costsThe sending address is not left without an address but takes the node’s common set. Messages go out — from the wrong address and without any error.
How to spot itAfter the edit, accounting shows the neighboring stream’s address for this sending address.
How to do it rightReplace the line, do not delete it. An empty sending address in PowerMTA means “same as the node,” not “none.”
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.
Inheritance
A recipe has no inheritance — it is a sequence of actions. But inheritance plays a part in its outcome: if the address line is removed from the block rather than replaced, the sending address will not be left without an address but will silently take the node’s common set.
How to check on the node
After the reload — what is in effect on the node, and whether old connections remain:
pmta show vmta-settings shop-example-com
The Source Host IP column must show the new address. The overlap window is visible through pmta show queues: until this sending address’s connection counter drops to zero, some messages are still going out from the old one.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Configuration lifecycle · Sending address rotation