Deployment Files
This section explains how to adapt the KumoMTA deployment files used by a working PING8 integration into your own self-hosted environment.
Use these pages as an operator guide, not as a place to paste production secrets. Keep all real tokens, hostnames, and IP addresses in your own secure deployment system.
File map
| File pattern | Install on | Typical location | Purpose |
|---|---|---|---|
env.example | KumoMTA host | /etc/default/kumomta | Runtime secrets and host-specific values loaded by the service manager. |
nginx.conf | KumoMTA host | /etc/nginx/conf.d/mta.yourdomain.com.conf | TLS termination, bearer auth, injection proxying, metrics proxying, and default deny behavior. |
init.lua | KumoMTA host | /opt/kumomta/etc/policy/init.lua | KumoMTA policy: HTTP listener, spool, egress pool, KumoProxy routing, queues, and webhook events. |
| KumoProxy service | KumoProxy host | systemd service or equivalent | SOCKS5 egress process that owns the public sending IP path. |
Reference topology
PING8 app
https://app.yourdomain.com
|
| HTTPS POST /api/inject/v1
v
KumoMTA reverse proxy
https://mta.yourdomain.com
|
| HTTP on loopback
v
KumoMTA HTTP listener
127.0.0.1:8000
|
| SOCKS5
v
KumoProxy egress
proxy.yourdomain.com:5000
|
| SMTP TCP/25
v
Recipient mailbox providersThis shape keeps public TLS and authentication in Nginx, keeps KumoMTA's HTTP listener private to localhost, and lets KumoProxy control the outbound SMTP source IP that recipient providers see.
Secret separation
Use two different secrets:
| Secret | Used by | Direction | Purpose |
|---|---|---|---|
<PING8_INJECTION_TOKEN> | PING8 and Nginx | PING8 -> KumoMTA | Allows PING8 to inject messages through /api/inject/v1. |
<PING8_WEBHOOK_TOKEN> | KumoMTA and PING8 | KumoMTA -> PING8 | Allows KumoMTA delivery events to be accepted by PING8. |
Never reuse the injection token as the webhook token. Rotating one should not require rotating the other.
Rollout order
- Prepare DNS for
mta.yourdomain.comandproxy.yourdomain.com. - Install KumoMTA on the MTA host.
- Install KumoProxy on the egress host if you need separate egress.
- Create the environment file with placeholder values replaced.
- Install
init.luaand validate KumoMTA starts. - Install Nginx, issue TLS, and lock down
/api/inject/v1and/metrics. - Configure PING8 with sending disabled.
- Run the PING8 connection test.
- Send one owned test message.
- Confirm webhook lifecycle events appear in PING8.
- Increase volume gradually using a warmup plan.