Knowledge base

The second complaint report format

extended abuse report format
A structured form

The XARF complaint format is JSON instead of classic ARF; the engine accepts it with the xarf type.

The engine fills the main fields itself — the sender, the recipient and the delivery address. If they are empty or more is needed, a JSON field is extracted into the accounting record with the xarf.<path> form, for example xarf.Report.ReportType.

The main trap is not naming the fields in the record. The xarf.<path> form works only if it is named in record-fields for the f record: without that, accounting keeps only the main fields, and the complaint type from the report is lost.
What the Hub does. It does not account for it separately: the node has a complaint processor, but the Hub’s telemetry does not parse this format’s additional columns — only the common fields are taken from a complaint record.
Recommended values

Where the fields come from:

Field Where from
sender, recipient, delivery address filled in automatically
complaint type and subtype xarf.Report.ReportType, xarf.Report.ReportSubType
who sent it xarf.ReporterInfo.ReporterOrgEmail
The xarf type, the filled fields and the xarf.<path> form come from the manual (§ 13.7.2). The table is ours.
Example configuration
<acct-file /var/log/pmta/fbl.csv>
    records feedback-loop
    record-fields f *,xarf.version,xarf.Report.reportType,xarf.report.smtpRcptToAddress</acct-file>
A shortened example from the manual: the version, the complaint type and the recipient address from the JSON are added to the standard set.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
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.
How to check on the node
Check that XARF fields get into accounting:
head -1 /var/log/pmta/fbl.csv
The file header must contain the named xarf.… fields.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Bounce classification