KumoMTA and KumoProxy
Deployment Files
Ports and Firewall

Ports and Firewall

Lock down the KumoMTA and KumoProxy path before sending production mail. The goal is to expose only what is required and keep operational endpoints private or authenticated.

Reference hosts

HostExampleRole
PING8 appapp.yourdomain.comControl plane and webhook receiver.
KumoMTAmta.yourdomain.comHTTPS injection, metrics proxy, queueing, delivery policy.
KumoProxyproxy.yourdomain.comSOCKS5 egress and visible outbound SMTP IP.

KumoMTA host ports

DirectionPortSourceDestinationPurposeExposure
Inbound80/tcpPublic internetKumoMTA hostACME HTTP challenge and redirect.Public, limited to Nginx.
Inbound443/tcpPING8 appKumoMTA hostHTTPS injection and metrics via Nginx.Public with bearer auth, or private network only.
Inbound8000/tcpLocalhost onlyKumoMTA processKumoMTA HTTP listener.Loopback only.
Outbound5000/tcpKumoMTA hostKumoProxy hostSOCKS5 egress path.Only to trusted proxy hosts.
Outbound443/tcpKumoMTA hostPING8 appWebhook lifecycle events.Public HTTPS or private network.
Outbound53/udp,tcpKumoMTA hostResolverDNS lookups.Resolver only.

KumoProxy host ports

DirectionPortSourceDestinationPurposeExposure
Inbound5000/tcpKumoMTA host onlyKumoProxy hostSOCKS5 proxy listener.Private or firewall-restricted.
Outbound25/tcpKumoProxy hostRecipient MXSMTP delivery.Public outbound.
Outbound53/udp,tcpKumoProxy hostResolverDNS lookups if needed.Resolver only.
Optional inboundmetrics portMonitoring system onlyKumoProxy hostProxy metrics/status.Private or authenticated.

Firewall principles

  • Allow PING8 to reach only the authenticated Nginx endpoint.
  • Keep KumoMTA port 8000 bound to 127.0.0.1.
  • Allow KumoMTA to reach KumoProxy only on the SOCKS5 port.
  • Allow KumoProxy SOCKS5 only from trusted KumoMTA hosts.
  • Allow outbound SMTP 25/tcp from KumoProxy if it is the egress host.
  • Block public access to proxy metrics unless they are authenticated and intentionally published.

Example allowlist model

KumoMTA host:
  allow inbound 80/tcp from public internet
  allow inbound 443/tcp from PING8 app or trusted networks
  deny inbound 8000/tcp from non-localhost
  allow outbound 5000/tcp to proxy.yourdomain.com
  allow outbound 443/tcp to app.yourdomain.com

KumoProxy host:
  allow inbound 5000/tcp from mta.yourdomain.com only
  allow outbound 25/tcp to recipient MX hosts
  deny public access to any admin or metrics listener

Verification checklist

  1. From an untrusted network, /api/inject/v1 without auth returns 401.
  2. From an untrusted network, unknown KumoMTA paths return 404.
  3. From an untrusted network, KumoProxy port 5000 is not reachable.
  4. From the KumoMTA host, KumoProxy port 5000 is reachable.
  5. From the KumoProxy host, outbound SMTP to a test MX can connect.
  6. From the KumoMTA host, PING8 webhook URL is reachable over HTTPS.

What not to expose

  • KumoMTA loopback listener.
  • KumoProxy SOCKS5 listener to the public internet.
  • Metrics endpoints without authentication or network restriction.
  • DKIM private keys over any web-served path.
  • Secret-bearing environment files through backups or support bundles.