A vendor service to which the node continuously hands over accounting data, getting analytics in return: a summary, a bounce report, a sender health score and a spam trap report. Seventeen directives in the chapter configure exactly this — a noticeable part of the advanced features section is devoted to the vendor’s paid service.
How it is enabled. You need an access key created in the service’s account portal with permissions to write events and read the account, and a <signals> block in the configuration. The appearance of the block by itself enables the export — enable-signals allows it by default, and to have the block without the export, you have to say so separately.
What is controlled, what leaves. The switch works at three levels: the whole node, an address pool, an individual sending address. Plus selection by sender domain — but it is taken from the message headers (Sender or From), not from the address settings.
How it leaves. Data accumulates on disk and is deleted after the export. There is a free space threshold (min-free-space), below which the accumulated data starts being discarded irreversibly — the reports will have gaps. The connection is one-way: the node only sends and receives nothing from the service. The firewall must allow access to api.sparkpost.com on port 443.
What can be hidden. privacy-policy hashes the local part of recipient addresses before sending — with a one-way hash. This is the only built-in measure: everything else leaves as is.
Engagement tracking is a separate story. The service wants to know about opens and clicks, and the node can insert a pixel into messages and rewrite links by itself (signals-engagement-tracking).
That is by design. The Hub collects the node’s accounting for itself and builds analytics on its own: deliverability by provider, bounces by category, fleet corridors. The vendor’s service would provide a health score and spam traps, which we do not have — but at the cost of recipient addresses leaving our infrastructure and going to a third party.
For a boxed product installed on a client’s own server, this is not a technical problem but a contractual one: their recipients’ data would go to the vendor because of our setting.
There is nothing to set — the block should not exist. If it is ever needed:
| What | What to watch |
|---|---|
| enabling itself | the block enables the export by its mere appearance |
| scope | node, pool or address — select, do not enable everything |
| selection by sender | taken from the message headers, not from the address settings |
| address hashing | privacy-policy is the only built-in measure |
| space threshold | below it, accumulated data is discarded irreversibly |
| applying changes | the manual advises a restart, not a settings reload |
A separate note about the restart. The manual says a reload is sufficient but recommends a restart: otherwise internal processes will not pick up the new settings right away. For a directive that enables data export, “not right away” is a bad property.
# there is no block — and this is a deliberate decision, not an oversight # if it appears, the export will start by itself: <signals> api-key KEY privacy-policy sha1 min-free-space 2G </signals>
what people get wrong and how it ends3 mistakes▶
§ 11.1
§ 11.1.1
§ 11.1
3 relations
enable-signalsGlobalThe very three-level switch that allows the export by default. § 11.1.6.1.1
What the node tells about itself and through which channelsThe seventh surface and the only one that sends data outside: how messages were received on the other side. § 1.4Seeding campaigns with control addressesThe same vendor’s second mechanism: they are enabled separately, but their subaccounts must be consistent. § 11.2.1api-key<signals>The mechanism whose operation this line configures. § 11.1.6.2.1min-free-space<signals>The mechanism whose operation this line configures. § 11.1.6.2.15privacy-policy<signals>The mechanism whose operation this line configures. § 11.1.6.2.16sender-or-from<signals-filter>The mechanism whose scope these rules narrow. § 11.1.6.3.1
grep -n -A6 '^<signals' /etc/pmta/config ss -tnp | grep ':443'
3 articles
◇Exposing metrics over SNMPThe node can expose its metrics over SNMP — a second way of monitoring besides the web monitor.◇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.◇Who is allowed to submit mail and for whom to accept itOut of the box, the node accepts submission only from the machine itself; two different questions — “who can send through us” and “for whose addresses we accept mail” — are answered by different directives.