Module 1 · Lesson 3 of 25

Architecture at a glance

Part of KumoMTA: High-Volume Sending Engine — Introduction to KumoMTA.

KumoMTA is a single Rust binary with Lua scripting for all runtime configuration. The same binary handles SMTP listeners, queues, delivery, logging, and HTTP introspection.

Process model:

                  ┌─ Listener (SMTP)
                  ├─ Listener (HTTP API)
[ kumod ] ──┐    │
            ├──► ├─ Queue (per scheduled queue: tenant × destination)
            │    │
            │    ├─ Egress sources (IP pools)
            │    └─ Logging hooks → JSON / ClickHouse / S3
            │
            └─ Lua VM (config + per-event policy)

Key concepts you'll meet:

Term Meaning
Tenant Logical sender (often a customer of an ESP)
Egress source A bound source IP for outbound connections
Egress pool A group of sources to rotate across
Scheduled queue Per-tenant × per-destination queue
Throttle Rate limit (msgs/sec or connections) per key
Hook Lua callback for events: smtp_server_message_received, smtp_client_message_delivered, etc.

Everything plugs together via Lua. There's no XML, no INI, no main.cf. Read init.lua and you know what the MTA does.

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