Global
The line sets a name server address. If none is set, the engine uses the resolvers configured in the operating system.
The directive is repeated: several lines give several resolvers, and the engine goes through them in rotation, spreading the load.
The requirement for the resolvers themselves is a separate topic: the engine needs a recursive service, and a resolver that answers with referrals silently slows delivery down. It is covered in recursive-resolver-requirement.
Next to it lives edns-udp-length — an extension that raises the response size limit. It concerns the same queries.
For a node that resolves names for every message, this is a poor default: the resolver ends up in the delivery path, and you do not control it.
The second half: a single resolver is a point of failure. Rotation starts with the second line.
The Hub has no monitoring of name resolution of its own either: it shows the resolver state in node monitoring, but does not parse log warnings about non-recursive responses.
What to set. The resolver is part of the delivery path, and it is worth choosing deliberately:
| Value | When |
|---|---|
| do not write it | a single node, light load, a reliable hosting provider |
| two or three lines | the usual case for a fleet: your own resolvers plus a backup |
| a local caching one | large volume and many domains: fewer external queries |
Public resolvers are convenient as backups, but they have per-source limits, and under load they start answering with referrals — the very malfunction that is visible only in the log.
# your own resolver as the primary, a public one as backup name-server 10.1.2.3name-server 8.8.8.8
what people get wrong and how it ends3 mistakes▶
our experience
§ 3.3.1.36
§ 4.2.3
3 relations
edns-udp-lengthGlobalAn extension of the same queries: it raises the response size limit beyond which a response gets truncated. § 3.3.1.46How the node resolves namesThe precache lives in a separate block but uses the same resolvers. inference
precached-domains-file<dns>The cache is refreshed through the same resolvers as regular name resolution. § 3.3.1.36precached-max-domains<dns>The constant load from refreshing the cache falls on these resolvers. § 3.3.1.36The node needs a resolver that does all the work itselfChapter 3 sets which resolvers to use; this entry says what they must be like. inference
grep -n 'name-server\|edns-udp-length' /etc/pmta/config cat /etc/resolv.conf pmta resolve gmail.com
3 articles
◇Third-party components of the enginePowerMTA runs on five third-party libraries — PCRE, OpenSSL, ICU, gumbo-parser and prometheus-cpp; their behavior is determined by the engine build.◇The activation key is a prerequisite for installation, not a step after itWithout an activation key from SparkPost support the engine neither installs nor runs, and the license tier sets the outbound connection ceiling: on Standard everything above 200 is ignored.◇What the node tells about itself and through which channelsSeven observation surfaces: the web monitor, the console in four formats, the log, accounting, accounting search, metrics and export to external analytics.