Knowledge base

persist-threshold

<inline-seeding>

After how many messages of a job to check in with the service
in the configuration this is a linepersist-threshold 5inside the block <inline-seeding>
How often the node asks whom to seed

The node accumulates messages of one job and, having gathered that many, contacts the service — to reconcile the counter and get seed assignments. The default is 5, allowed from 5 to 999.

This is a volume threshold, not a time one. Time is handled by the neighboring line batch-frequency; whichever condition comes first triggers.

Increasing it makes sense for large mailings. The vendor says plainly: the value can safely be raised when jobs are usually large — that means fewer requests for the same number of messages.

The main trap is raising the threshold with small mailings. A job of a hundred messages will never reach a threshold of 500, and reconciliation will go only by time — meaning the mechanism will work slower, not more economically.
What the Hub does. It does not write it: we do not use the vendor’s seeding — it requires a paid subscription to its tool and an account with the feature enabled.

🔎 The task is close to ours. Seed mailboxes — what we were going to use to measure inbox placement — are solved here by the vendor: addresses are inserted into the mailing automatically, and the results are viewed in its own tool. Our analysis showed that doing it ourselves runs into proxies: polling mailboxes from a single address ends with them being blocked.

Recommended values

The value is chosen by the size and duration of mailings:

Value When
5 (default) mailings of varying size
100–500 jobs are usually large, tens of thousands of messages
more than 999 not allowed
The default of 5, the range and the advice to raise it for large jobs come from the manual (§ 11.2.2.2.2).
Example configuration
<inline-seeding>
    api-key 0123456789abcdef012345678901234567890123
    persist-threshold 500</inline-seeding>
With small mailings such a threshold will not be reached, and reconciliation will go only by time.
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 ends2 mistakes▶

Raising the threshold without looking at mailing size

our experience

What it costsThe volume threshold will not be reached, and everything will go by time — slower, not more economically.
How to spot itMailings are small, the threshold is hundreds of messages.
How to do it rightSize the threshold to the usual job size.

Expecting seeding without a subscription to the vendor's tool

§ 11.2

What it costsThe mechanism requires an account with the feature enabled and paid access to the deliverability tool. Without that, a key cannot be created, and so seeding cannot be enabled.
How to spot itThe block is configured, but seeds do not appear in mailings.
How to do it rightCheck the subscription and the key’s rights in the vendor’s account.
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
persist-threshold <value>
Values
an integer from 5 to 999
Default
5 § 11.2.2.2.2
Applying
reload, no restart needed
Queue
will not touch what is already queued
Where to write it
<inline-seeding>
How many times
once in the block
Everything here comes from the manual, with the section.
Inheritance
No inheritance: the line lives inside <inline-seeding>, and there is only one such block on a node. Enabling seeding per stream is configured not here but with the enable-inline-seeding line with three levels.
How to check on the node
The frequency of requests is visible in the engine log:
grep -i "seed" /var/log/pmta/log | tail -20
The gaps between requests should fit either this threshold or the interval of the neighboring line.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Seeding and seed mailboxes