<domain>
The mechanism was invented for one task: to put a new sending address into service without running a separate campaign from it. A warmed-up address hands the day’s first N messages to its “cold” partner, which sends them itself — and gradually builds a history with the recipient domain.
Who is paired with whom is set separately. The partner is named with the cold-virtual-mta directive in the warmed-up address’s block. Here only the quantity is set: how many messages to hand over to it. Zero means the mechanism is off, and that is the default.
The count is kept for each recipient domain separately. The manual says so directly: 1000/day means a thousand messages to Yahoo, a thousand to Hotmail and so on — not a thousand in total. On a fleet sending to a dozen large recipient domains, this is a tenfold difference between expectations and what will actually happen.
Selection happens when a message is received, and only over SMTP. The decision whether a message leaves from the cold address or the regular one is made at submission, not before delivery. Messages submitted through the API are not included in the selection.
As a ramp, not a single number. The directive accepts a sequence: 1/day,2/day,3/day,4/day — on the first day the cold address gets one message, on the second two, and so on. There is no limit on the list length; the last value repeats every day after that. This is exactly how it should be set: a constant number from day one is not a warm-up.
What to count from. Count per large recipient domain, not for the whole volume: the value is multiplied by the number of recipient domains. It is sensible to start with a handful to a few dozen messages a day per recipient domain and double every few days, watching the bounce rate of the cold address itself.
Several cold addresses. cold-virtual-mta can be repeated — then they are used in rotation, and the limit applies to each of them separately. Two cold addresses at 100/day mean two hundred messages per recipient domain, not a hundred shared by the two.
# the warmed-up address hands the day's first messages to its partner <virtual-mta vmta1> smtp-source-host 1.2.3.4 vmta1.example.com cold-virtual-mta vmta-cold <domain *> max-cold-virtual-mta-msg 1/day,2/day,5/day,10/day </domain> </virtual-mta> # the cold address has its own settings and inherits nothing <virtual-mta vmta-cold> smtp-source-host 5.6.7.8 cold.example.com <domain *> max-msg-rate 10/h </domain> </virtual-mta>
what people get wrong and how it ends3 mistakes▶
§ 3.3.10
§ 3.3.20
our experience
2 relations
cold-virtual-mta<virtual-mta>The second half of the setup: here the partner, there the number of messages. Neither works on its own. § 3.3.10.57Introducing a new address with part of someone else's trafficThe daily quota per receiver — the second half of the setup; without it the partner is not selected. § 11.6.1
pmtaacctfind --output csv[vmta,rcpt,timeLogged] /var/log/pmta/acct-*.csv
3 articles
◇Warm-up built into the engineA warmed-up address hands the first N messages of the day for each receiver to its cold partner; the partner sends them itself and builds history.◇The sending address — what it is made ofA named set of everything that is a property of the address: which IP the message leaves from, how the node introduces itself, what it signs with and how fast it sends.◇A group of sending addresses with traffic sharesA named group of sending addresses; without shares messages are distributed in rotation, with shares in the given proportion, in steps of a tenth of a percent.