Knowledge base

Introducing a new address with part of someone else's traffic

critical

Warming of IPs with Cold VirtualMTA
Warm-up without a separate campaign

A recipe from the manual, and it has one rule, but a precise one: the first N messages of the day to each receiver submitted to the warmed-up sending address go to the cold one. The rest stay on the warmed-up one.

The quota is set per receiver, so the warm-up curve is drawn by receiver too: different receiving servers can get different numbers, and all the others a common one in the <domain *> block.

The counters reset at midnight and are saved to disk. A node restart does not give the cold address a second day of traffic in a row — and this is stated explicitly.

The precondition is the first line of the section. The mechanism is for those who have at least one warmed-up address. For a fleet of only new addresses the vendor recommends sending address limits instead.

A side use is migration. A cold address is simply another sending address, and part of the traffic can be moved through it to a new server: in the manual’s example it collects messages into a single queue-to queue and delivers them directly via smtp-hosts.

The main trap is multiplication by receivers. The quota is set for each one, and ten large receiving servers turn 1000/day into ten thousand messages from a new address a day. That is not warm-up but a volume with which a new address earns bounces.
What the Hub does. It does not use it: warm-up is driven by a plan — its own schedule, a message library, a reserve address pool and a stop on the spam share. The engine’s recipe hands off part of the live traffic, and warm-up becomes its hostage: no campaign that day, no warm-up either. A sensible hybrid form, should we decide to build it: the Hub calculates the daily number, the engine carries out the split.
Recommended values

The recipe has no values — it has steps. Only one thing is decided here: how to draw the curve.

How to set the quota What you get When
one number in <domain *> the same for all receivers at the start, while receivers are not yet separated
a comma-separated ladder growth by day, the last value repeats the usual case: warm-up is growth
per-receiver numbers a different curve for different receiving servers when it is known who is stricter

What to count from. From one large receiver, not from the whole volume: the number is multiplied by the number of receiving servers. It is sensible to start with single digits to tens of messages a day per receiver and double every few days, watching the bounce rate of the coldest address.

The “first N per receiver per day” rule, the reset at midnight, counters being saved and the precondition about a warmed-up address come from the manual (§ 11.6). The curve and the orders of magnitude are ours.
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. A thousand messages a day for each receiver — across ten large receiving servers that is ten thousand. For a real start of warm-up the number should be two or three orders of magnitude smaller and grown as a ladder.
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▶

Calculating the quota for the whole volume

§ 11.6

What it costs1000/day with ten large receiving servers is ten thousand messages from a new address a day. The new address gets a volume that is no longer warm-up, and instead of history it earns bounces.
How to spot itThe cold address’s bounce rate grows from day one, even though the calculated volume looked safe.
How to do it rightDivide the intended daily volume by the number of receivers the fleet actually sends to, and set the result as a ladder starting from single digits.

Warming up without a warmed-up address

§ 11.6

What it costsThere is nothing to hand off: all traffic already comes from new addresses. The mechanism shuffles it among them, and none of them builds history.
How to spot itThe setup is done, and the bounce rate is equally high for all addresses.
How to do it rightUse sending address limits — that is what the first line of the manual’s section advises.

Setting a constant number and calling it warm-up

§ 11.6

What it costsA hundred messages a day from day one is not warm-up but a hundred messages right away from an address with no history. The point of warm-up is growth: the receiver should see a carefully increasing flow.
How to spot itThe first days go smoothly, then temporary refusals and landing in the “Spam” folder — the reputation had no time to form.
How to do it rightSet a ladder and double the value every few days, checking the bounce rate of the cold address specifically.
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 never has inheritance — it is a procedure. But inheritance plays a part in its outcome: cold-virtual-mta can be written in a <virtual-mta-pool>, and then every member gets the partner. And the cold address inherits nothing from the warmed-up one: everything it sends with is set in its own block.
How to check on the node
Checked through accounting — the node shows no separate counter:
pmtaacctfind --output csv[vmta,rcpt,timeLogged] /var/log/pmta/acct-*.csv
The cold address’s name should appear on the first messages of the day to each receiver and disappear once the quota is used up. If it is not there at all, check both halves of the setup and that messages are submitted over SMTP: the selection happens on receipt.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Capacity planning · Address warm-up
Priority
critical