KumoMTA Setup Guide 2026: Ubuntu, Docker, Kubernetes & Production Configuration
KumoMTA's combination of Rust performance, Lua flexibility, and Apache 2.0 licensing makes it the most compelling MTA for engineering teams ready to move beyond legacy solutions. This guide covers production-ready deployment from bare metal to full observability — step by step, with real configuration files you can copy directly.
Prerequisites Checklist
Before starting your KumoMTA installation, verify:
- [ ] Ubuntu 22.04 LTS or RHEL 9+ (fresh install recommended)
- [ ] 4 CPU cores minimum, 8GB RAM (8 cores, 32GB for 500K+ emails/hour)
- [ ] 100GB+ NVMe SSD for message spool
- [ ] Minimum 2 dedicated sending IPs (4+ recommended for warmup rotation)
- [ ] Domain name with full DNS access (MX, TXT, DKIM)
- [ ] Reverse DNS (PTR) configured for each sending IP by your host
- [ ] Firewall: ports 25 (MX), 587 (submission), 465 (SMTPS), 8080 (API), 2000 (metrics)
Step 1: Ubuntu Server Preparation
# System update
sudo apt-get update && sudo apt-get upgrade -y
# Required packages
sudo apt-get install -y curl wget gnupg2 net-tools dnsutils telnet postfix
# Stop and disable Postfix (conflicts with KumoMTA on port 25)
sudo systemctl stop postfix
sudo systemctl disable postfix
# Configure firewall
sudo ufw allow 22/tcp # SSH
sudo ufw allow 25/tcp # SMTP MX
sudo ufw allow 587/tcp # Submission
sudo ufw allow 465/tcp # SMTPS
sudo ufw allow 8080/tcp # HTTP API
sudo ufw allow 2000/tcp # Prometheus metrics
sudo ufw enable
Step 2: Install KumoMTA
Option A: Official Package Repository (Recommended for Bare Metal)
# Add KumoMTA GPG key
curl -L https://packagecloud.io/kumomta/kumomta/gpgkey | sudo apt-key add -
# Add repository
echo "deb https://packagecloud.io/kumomta/kumomta/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/kumomta.list
# Install
sudo apt-get update
sudo apt-get install -y kumomta
# Verify
kumomta --version
Option B: Docker Installation (Recommended for Cloud Deployments)
# Pull official image
docker pull ghcr.io/kumomta/kumomta:latest
# Create directories
mkdir -p ~/kumomta/{etc,spool,logs,keys,tls}
# Run container
docker run -d \
--name=kumomta \
--restart=unless-stopped \
-p 25:2525 \
-p 587:2587 \
-p 465:2465 \
-p 8080:8080 \
-p 2000:2000 \
-v ~/kumomta/etc:/etc/kumomta \
-v ~/kumomta/spool:/var/spool/kumomta \
-v ~/kumomta/logs:/var/log/kumomta \
-v ~/kumomta/keys:/etc/kumomta/keys \
ghcr.io/kumomta/kumomta:latest
Option C: Kubernetes Helm Chart
bash
# Add Helm repository
helm repo add kumomta https://charts.kumomta.com
helm repo update
# Install with production values
helm install kumomta kumomta/kumomta \
--namespace email-infra \
Top comments (0)