Module 11 · Lesson 22 of 25

Sharding by tenant

Part of KumoMTA: High-Volume Sending Engine — HA Architecture & Sharding.

KumoMTA scales horizontally by running multiple independent nodes. There's no built-in cluster — you shard at the upstream by hashing on tenant or campaign.

Typical layout:

[ Application / API ]
        │
   shard router (HAProxy with consistent hash on header)
        │
   ┌────┼────┬────┬────┐
[node1] [node2] [node3] [node4]
   │      │      │      │
  IPs    IPs    IPs    IPs

Why hash by tenant: all of a tenant's queues live on one node → consistent throttling and warming behavior. If a tenant grows large, move them to a dedicated pair.

HAProxy snippet:

backend kumo_pool
  balance hdr(X-Kumo-Tenant)
  hash-type consistent
  server node1 10.0.0.11:587 check
  server node2 10.0.0.12:587 check
  server node3 10.0.0.13:587 check

Application sets X-Kumo-Tenant header at SMTP time (via XCLIENT or custom AUTH metadata).

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