Knowledge base

Warm-up built into the engine

Cold VirtualMTA
A new address builds history on someone else’s traffic

At its core is redirection, not a separate mailing. The sending address names a partner and a daily quota; the first messages of the day to each receiver go to the partner, the rest go as usual.

Three numbers to keep in mind. The quota is counted per receiver, per day, per warmed-up sending address. 1000/day with ten large receivers is ten thousand messages from the cold address a day, not a thousand.

The counters reset at midnight and survive a restart. And so does the used-up quota itself: a node restart will not give the cold address a second day of traffic in a row.

The cold partner is an ordinary sending address, and it delivers messages by its own settings. So it must have its own: address, name, signing key, its own limits.

The vendor’s caveat comes as the first line of the section and decides whether the mechanism fits at all: it is needed when there is at least one warmed-up address. For a fleet of only new addresses the vendor recommends limits, not this.

The main trap. The cold address does not inherit the settings of the one that hands it messages. Limits, signing keys, the name in the greeting — all of this has to be set on it again. Warming up with unsigned messages and a mismatched PTR will do the reputation more harm than the warm-up itself does good.
What the Hub does. It does not use it: warm-up in the Hub is driven by a plan — its own schedule, a message library, a reserve address pool, a stop on the spam share. The engine’s mechanism hands off part of the live traffic and thereby makes warm-up its hostage: no campaign that day, no warm-up either. We keep it as an alternative for those who warm up outside the Hub; a sensible hybrid form is the Hub deciding the daily number and the engine carrying out the split.
Recommended values

The mechanism has no values of its own: cold-virtual-mta names the partner, max-cold-virtual-mta-msg sets the number. Both halves are required — a quota without a partner does nothing.

What Where Default
who the partner is cold-virtual-mta in the warmed-up sending address none
how many messages max-cold-virtual-mta-msg in its receiver block 0/d, that is, disabled
how the cold one sends its own sending address block nothing is inherited

Set it as a ladder, not as a single number: a constant hundred messages a day from day one is not warm-up.

The “per receiver per day” rule, the reset at midnight, counters surviving restarts and the caveat about a warmed-up address come from the manual (§ 11.6). The ladder is our recommendation.
Example configuration
# the warmed-up one hands off the first messages of the day, the cold one sends by its own settings
<virtual-mta vmta1>
    smtp-source-host 1.2.3.4 vmta1.example.com
    cold-virtual-mta vmta2    <domain *>
        max-cold-virtual-mta-msg 1000/day
    </domain>
</virtual-mta>

<virtual-mta vmta2>
    smtp-source-host 5.6.7.8 vmta2.example.com
    <domain *>
        max-msg-rate 100/h
    </domain>
</virtual-mta>
An example from the manual. The cold address has its own source and its own rate — there is no inheritance. And 1000/day here means a thousand for each receiver: across ten large receiving servers that is ten thousand messages a day.
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▶

Enabling the mechanism without a single warmed-up address

§ 11.6

What it costsThere is nothing to hand off: all traffic already goes from new addresses. The mechanism merely shuffles it among them, and reputation is built for none of them.
How to spot itThe setup is done, yet the bounce rate is equally high for all addresses.
How to do it rightUse the sending address limits — that is exactly what the vendor advises in the first line of the section.

Not configuring the cold partner

§ 3.3.10.57

What it costsIt inherits nothing: no signing keys, no name in the greeting, no limits. Messages leave unsigned and with a mismatched PTR — exactly the way a new address should not look.
How to spot itMessages from the cold address have no signature header; recipients complain about authentication.
How to do it rightGive the partner the full set — source, name, keys, its own limits. It is an independent sending address, not a mode of another one.

Forgetting about MX rollup

§ 11.6

What it costsWith rollup active, the quota is taken from the rolled-up queue, not from individual domains. The manual warns separately: when a rollup list is present, less traffic than configured may go through cold addresses, even for domains that are not rolled up.
How to spot itThe cold address’s daily volume is noticeably below the calculated one, and the gap is not explained by the number of receivers.
How to do it rightCount the quota by rolled-up queues rather than by domains — or check whether the rollup list is needed on this node at all.
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
The mechanism itself has no inheritance — the directives that switch it on are inherited. cold-virtual-mta can be written in a pool, and then every member gets the partner; a member’s own line overrides the pool one. But the cold address inherits nothing from the one that hands it messages: it is a separate sending address with its own settings.
How to check on the node
The node shows no separate counter — look in accounting, at the field of the address that actually sent the message:
pmtaacctfind --output csv[vmta,rcpt,timeLogged] /var/log/pmta/acct-*.csv
The cold address should appear on the first messages of the day to each receiver and disappear once the quota is used up. If it does not appear at all, check two things: that messages are submitted over SMTP (the selection happens on receipt) and that both halves of the setup are in place.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Sending address rotation · Address warm-up