Module 3 · Lesson 6 of 25

Defining listeners

Part of KumoMTA: High-Volume Sending Engine — Listeners, ESMTP, AUTH & TLS.

KumoMTA exposes one or more SMTP listeners. Each can have its own ports, TLS, AUTH, and accept rules.

kumo.on('init', function()
  -- Inbound relay (from your application)
  kumo.start_esmtp_listener {
    listen = '0.0.0.0:587',
    relay_hosts = { '127.0.0.1', '10.0.0.0/8' },
    tls_certificate = '/etc/ssl/kumo/fullchain.pem',
    tls_private_key  = '/etc/ssl/kumo/privkey.pem',
  }

  -- Submission with AUTH from public clients
  kumo.start_esmtp_listener {
    listen = '0.0.0.0:465',
    tls_certificate = '/etc/ssl/kumo/fullchain.pem',
    tls_private_key  = '/etc/ssl/kumo/privkey.pem',
    -- Implicit TLS:
    invocation = 'implicit_tls',
  }
end)

relay_hosts is the trusted-network shortcut. Hosts in this list can send to any recipient without AUTH. For public-facing submission, leave it empty and require AUTH.

Multiple listeners are normal — usually one for application traffic (no auth, IP-restricted) and one for external submission (auth required).

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