Module 10 · Lesson 20 of 25

What belongs on the suppression list

Part of KumoMTA: High-Volume Sending Engine — Suppression Lists & Compliance.

Suppression isn't just unsubscribes. Six categories:

Category Source Retention
Hard bounces KumoMTA bounce classifier Forever
Unsubscribes List-Unsubscribe handler + web form Forever
Spam complaints (FBL) ARF reports Forever
Manual complaints (support@) Human review Forever
Role accounts (postmaster@, abuse@) Pre-list filter Forever
Region opt-outs (GDPR, CASL) Compliance API Per regulation

Storage: a single suppression service (PostgreSQL or Redis) queried by KumoMTA on every smtp_server_message_received. Reject at SMTP time so senders learn fast.

kumo.on('smtp_server_message_received', function(msg)
  if suppression:contains(msg:recipient()) then
    kumo.reject(550, "5.7.1 Recipient is on suppression list")
  end
end)

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