Module 7 · Lesson 15 of 25

Feedback Loops (FBL) ingestion

Part of KumoMTA: High-Volume Sending Engine — Bounce Processing & FBL Handling.

When Gmail/Yahoo/etc. flag a complaint, they send an ARF report to a mailbox you register. You must suppress that recipient immediately or your sender reputation craters.

Architecture:

  1. Register FBL with each provider:
    • Microsoft: SNDS portal → JMRP enrollment.
    • Yahoo: requires DKIM, register at sender.yahooinc.com.
    • Gmail: no traditional FBL — use Postmaster Tools complaints metric.
  2. Point the abuse mailbox at a parser (your own, or KumoMTA's built-in ARF parser).
  3. Pipe parsed complaints into your suppression list.

KumoMTA's ARF helper:

local arf = require 'policy-extras.arf'

kumo.on('smtp_server_message_received', function(msg)
  if msg:recipient():user() == 'abuse' then
    local report = arf.parse(msg)
    if report then suppress(report.original_recipient) end
    -- Don't deliver — it was just a report
    msg:set_disposition('drop')
  end
end)

🎯 Complaint rate over 0.3% triggers Gmail filtering. Over 0.5% gets you blocklisted. Treat FBL processing as a Sev-1 path.

Sign in to keep track of what you have read.

Pulse · self-hosted sending

Own the infrastructure your pipeline depends on.

One install script on your own server. Pulse sets up the MTA, mailboxes, certificates and dashboard; you add domains and start sending.

# on a fresh Ubuntu server
$ cd pulse && sudo ./install.sh
→ docker compose up · kumomta · stalwart · caddy
→ dashboard ready on https://pulse.yourdomain.com
$

Also from us:Beat — monitoring that tells you the fixConsulting — $65/hr, no retainer