Quick Answer

KumoMTA is an open-source, high-performance MTA written in Rust, designed for sending millions of emails per hour. It's built by the team behind PowerMTA and targets organizations sending 1M+ emails/day who want PowerMTA-level features without the licensing cost. Best for: ESPs, large senders, self-hosted infrastructure at scale.

KumoMTA: What It Is and Who It's For

By Braedon·Mailflow Authority·Email Infrastructure·Updated 2026-03-31

What Is KumoMTA

KumoMTA is an open-source mail transfer agent written in Rust, designed for high-volume email sending. It was created by engineers who previously worked on PowerMTA, bringing enterprise-grade email infrastructure to the open-source world.

The "Kumo" name comes from the Japanese word for cloud, reflecting its design for modern cloud infrastructure. Unlike traditional MTAs that grew from the Unix mail system era, KumoMTA was built from scratch for the challenges of sending millions of marketing and transactional emails.

Who Should Use KumoMTA

Good fit:

  • Organizations sending 500K+ emails/day
  • ESPs and email marketing platforms building their own infrastructure
  • Companies replacing expensive PowerMTA licenses
  • Teams that need per-tenant or per-campaign queue isolation
  • Anyone building a multi-tenant email platform

Not ideal for:

  • Small senders under 100K emails/day (Postfix via Mailcow is simpler)
  • Those who need proven enterprise support contracts (PowerMTA)
  • Simple transactional email needs (consider Postmark or SendGrid)
  • Teams without Linux sysadmin experience

Practitioner note: I recommend KumoMTA for clients who've outgrown Postfix but can't justify PowerMTA licensing (see our MTA comparison). The sweet spot is 500K to 5M emails/day. Below that, Postfix works fine. Above that, you might want PowerMTA's enterprise support.

Key Features

Lua-Based Configuration

Unlike Postfix's flat configuration files, KumoMTA uses Lua scripts for configuration. This means you can write actual logic:

-- Traffic shaping based on domain
kumo.on('smtp_server_ehlo', function(domain)
  if domain:find('gmail.com') then
    return {
      max_connection_rate = '10/minute',
      max_deliveries_per_connection = 20
    }
  end
end)

Per-Tenant Queue Isolation

If you're building a multi-tenant platform, each customer gets isolated queues:

kumo.on('get_queue_config', function(domain, tenant)
  return {
    queue_name = tenant .. '-' .. domain,
    -- Each tenant's traffic is independent
  }
end)

This prevents one tenant's reputation problems from affecting others.

Traffic Shaping

KumoMTA shapes traffic per-destination automatically:

  • Connection limits: How many simultaneous connections per domain
  • Rate limits: Messages per minute/hour/day
  • Throttling: Automatic backoff when receiving 4xx responses
  • Warmup: Gradual volume increase for new IPs

HTTP API

Everything is API-accessible:

# Inject a message
curl -X POST http://localhost:8000/api/inject \
  -H "Content-Type: application/json" \
  -d '{"from": "[email protected]", "to": ["[email protected]"], "body": "..."}'

# Check queue status
curl http://localhost:8000/api/queues

# Pause a queue
curl -X POST http://localhost:8000/api/queues/pause -d '{"queue": "marketing"}'

Event Webhooks

Get real-time delivery notifications:

kumo.on('delivery_complete', function(msg, result)
  -- POST to your webhook endpoint
  http.post('https://your-app.com/webhooks/email', {
    message_id = msg:id(),
    status = result.status,
    response = result.response
  })
end)

KumoMTA vs Other MTAs

FeatureKumoMTAPostfixPowerMTAHalon
LicenseOpen sourceOpen sourceCommercialCommercial
VolumeMillions/hourMillions/day*Millions/hourMillions/hour
ConfigurationLua scriptsFlat filesFlat filesLua scripts
Multi-tenantBuilt-inManualBuilt-inBuilt-in
Traffic shapingBuilt-inManualBuilt-inBuilt-in
APIHTTP RESTNoneHTTP/CLIHTTP REST
SupportCommunity/paidCommunityEnterpriseEnterprise

*With extensive tuning

Installation

KumoMTA runs on Linux (Ubuntu 20.04+, Rocky Linux 8+). Basic installation:

# Add the repository
curl -fsSL https://repos.kumomta.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/kumomta.gpg
echo "deb [signed-by=/usr/share/keyrings/kumomta.gpg] https://repos.kumomta.com/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/kumomta.list

# Install
sudo apt update
sudo apt install kumomta

# Start
sudo systemctl enable kumomta
sudo systemctl start kumomta

Practitioner note: KumoMTA's installation is straightforward, but the real work is in the Lua configuration. Plan to spend a day or two getting familiar with the scripting model before deploying to production. The documentation is solid but assumes you understand email infrastructure concepts.

Basic Configuration

Create /opt/kumomta/etc/policy/init.lua:

-- Basic listener
kumo.start_esmtp_listener {
  listen = '0.0.0.0:25',
  relay_hosts = { '127.0.0.1', '10.0.0.0/8' }
}

-- HTTP API
kumo.start_http_listener {
  listen = '0.0.0.0:8000'
}

-- Traffic shaping defaults
kumo.on('get_egress_path_config', function(domain)
  return {
    max_connection_rate = '100/minute',
    max_deliveries_per_connection = 100,
    max_message_rate = '1000/minute'
  }
end)

-- Logging
kumo.on('delivery_complete', function(msg, result)
  kumo.log(result.status .. ': ' .. msg:recipient())
end)

Performance Considerations

KumoMTA is designed for performance:

  • Memory: Uses streaming where possible; doesn't buffer entire messages
  • CPU: Rust's efficiency means lower CPU per message than interpreted languages
  • I/O: Asynchronous I/O handles thousands of concurrent connections
  • Queue: On-disk queuing with memory-mapped files for speed

Typical hardware requirements:

  • 500K/day: 2 CPU, 4GB RAM, SSD storage
  • 5M/day: 8 CPU, 16GB RAM, NVMe storage
  • 50M/day: Multiple servers with load balancing

Migration from Postfix

If you're running Postfix and considering KumoMTA:

  1. Run in parallel first: Set up KumoMTA alongside Postfix
  2. Migrate one stream: Move marketing email first, keep transactional on Postfix
  3. Monitor closely: Compare delivery rates between the two
  4. Full cutover: Once confident, migrate all traffic

The configuration paradigm is completely different, so don't expect to "translate" your Postfix config. You're rebuilding from scratch with new capabilities.

When to Choose Something Else

Choose Postfix if:

  • Volume under 500K/day
  • Simple single-tenant use case
  • Team is already Postfix-expert
  • You need something proven over decades

Choose PowerMTA if:

  • You need enterprise support contracts
  • Compliance requires proven, audited software
  • Team is already PowerMTA-trained

Choose a hosted service if:

  • You don't want to manage infrastructure
  • Volume under 1M/day (cost makes sense)
  • You need deliverability support included

If you're evaluating MTAs for your email infrastructure and need help determining whether KumoMTA, Postfix, or a commercial solution fits your needs, schedule a consultation.

Sources


v1.0 · March 2026

Frequently Asked Questions

Is KumoMTA free?

Yes, KumoMTA is open source under the Apache 2.0 license. You can run it on your own infrastructure without licensing fees. The company behind it (KumoMTA Inc) offers paid support and enterprise features, but the core MTA is completely free.

How does KumoMTA compare to Postfix?

KumoMTA handles much higher volumes with less tuning. It has built-in traffic shaping, per-tenant queuing, and an API-first design. Postfix requires extensive configuration for high-volume marketing; KumoMTA does this out of the box. Use Postfix for under 500K/day, KumoMTA for 1M+.

How does KumoMTA compare to PowerMTA?

KumoMTA was built by former PowerMTA developers with similar goals. PowerMTA has decades of production use and enterprise support. KumoMTA is newer, open source, and has a more modern architecture. PowerMTA is proven; KumoMTA is promising.

What volume should I be at before considering KumoMTA?

KumoMTA makes sense at 500K+ emails/day where Postfix tuning becomes complex, or when you need features like per-tenant queuing, traffic shaping, and real-time analytics. Below 500K/day, Postfix with proper configuration works fine.

Can I use KumoMTA for transactional email?

Yes, KumoMTA handles both transactional and marketing email. Its queue prioritization lets you ensure transactional email gets sent immediately while marketing email is rate-limited. Many users run a single KumoMTA instance for both.

Want this handled for you?

Free 30-minute strategy call. Walk away with a plan either way.