Knowledge base

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

queue-to

<domain>

An alternative queue name that combines domains with shared MX
in the configuration this is a linequeue-toinside the block <domain>
Combine several domains into one queue

Sets an alternative queue name: messages to several domains are placed in one queue and limited as one recipient domain. The line is written in the block of each domain in the group and names the shared name.

Why. Domains served by one gateway are a single recipient for it. Five corporate domains on one Exchange server are five queues with their own limits, while the server behind them sees their sum. Combining makes the limit honest.

The delivery hosts will have to be specified explicitly. A combined queue does not know whose MX to follow, so smtp-hosts is set together with it. There is also an automatic method — rollup by matching MX records (auto-mx-rollup); it does not need a list of domains, but it also comes up with the queue name by itself.

The main trap. Combining interferes with MTA-STS: the recipient’s policy is tied to its domain, while the queue is now shared. The manual warns about this separately. The second most common trap is warm-up: the daily quota is counted after combining, per shared queue, and a schedule written per individual domain stops working as intended.
What the Hub does. It does not write it. The Hub’s configuration is per domain: it groups providers on its own side — in analytics and policy rules — and leaves queues on the node per domain. Combining changes the queue structure and breaks history under the previous names, so a human should decide on it.
Recommended values

Choose a name that does not read as a domain. hotmail.queue, not hotmail.com: that way the queue list immediately shows that it is a group, not a recipient domain.

One name in all blocks of the group. The line is set for each domain separately; a skipped domain will keep its own queue, and the group limit will be lower than the actual load on the gateway.

An empty string removes the inherited value. This is the only way to take one domain out of a group declared by a wildcard block.

The advice about a name that does not read as a domain is ours. From the manual here come the fact that the name does not have to be a domain, the requirement to set delivery hosts and clearing with an empty string.
Example configuration
# three domains of one gateway — one queue and one limit
<virtual-mta hotmail-queue>
    <domain hotmail.queue>
        max-smtp-out 10
        smtp-hosts lookup-mx:hotmail.com
    </domain>
    <domain hotmail.com>
        queue-to "hotmail.queue"    </domain>
    <domain live.com>
        queue-to "hotmail.queue"    </domain>
</virtual-mta>
The hotmail.queue block describes the shared queue itself — its limits and hosts; the domain blocks only direct messages into it. Skip one domain, and it will travel separately.
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▶

Combining domains without setting delivery hosts

§ 11.8

What it costsThe shared queue name does not exist in DNS, and the node does not know where to go. Messages pile up, and there are no connections.
How to spot itThe shared queue grows, with zero delivery attempts for it.
How to do it rightSet smtp-hosts in the shared queue’s block — as a list of hosts or via lookup-mx: with the name of a real domain.

Skipping one domain in the group

§ 11.8

What it costsIt keeps its own queue and its own limit. The gateway gets the sum of two rates, while you believe you have limited it with one.
How to spot itIn the queue list, a separate queue for one of the group’s domains sits next to the shared one.
How to do it rightCheck the list: the line must be in the block of each domain in the group.

Combining domains while an address is under warm-up

our experience

What it costsThe warm-up daily quota is counted per shared queue. Five domains with a quota each turn into one quota for all — the volume drops by a factor equal to the number of domains, while the schedule has not changed.
How to spot itThe daily volume for the address under warm-up dropped right after the configuration edit.
How to do it rightDo not combine domains while the address is warming up, or rewrite the schedule for the shared queue name right away.
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
queue-to <domain>
Values
the shared queue name as a string; it does not have to be a real domain; an empty string removes 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 value merges across <domain> blocks from general to specific: the best-matching block wins, not the last one in the file. A <domain> block can be nested in <virtual-mta> — then the group exists only inside that stream. An empty string (“”) removes the inherited value — this is how one domain is taken out of a group declared more broadly. It is picked up by pmta reload; messages already sitting in the old queues will leave from there — only new ones will get into the shared queue.
How to check on the node
The effective value is printed by the queue settings command; the result is visible in the queue list — there are fewer domains in it:
pmta show settings hotmail.com/vmta1 | grep -i queue-to
pmta show queues | grep -i hotmail
If in the second output a domain is visible both under its own name and under the shared one, some messages remained in the old queue — it will empty by itself. The Hub does not configure combining.
In the Hub
Cost of a mistake
reversible: harms only while it is set
Scenarios
Tune the pace for a provider