For the complete documentation index, see llms-docs.txt or the site index llms.txt. Full docs corpus: llms-full-docs.txt. Prefer the markdown version of this page at /docs/setup/backend/inbound.md. Product capabilities: skill.md. Docs MCP: /docs/mcp. Site MCP: /mcp.

Inbound

Set up and run the Reloop inbound MX receiver locally in Docker.

Inbound KumoMTA MX receiver. It accepts external mail, scans with spam (Rspamd), and forwards to inbox via NATS.

Overview

PropertyValue
Directoryapps/backend/inbound
Docker serviceinbound (container reloop-inbound)
SMTP port25
HTTP port8030 (health check)
StackKumoMTA · Lua · spam

Quick start

bun docker:up

Health check: http://localhost:8030/health.

Configuration

Key variables in local/docker-compose.yml:

VariableDefault
INBOUND_HOSTNAMEinbound.reloop.sh
NATS_URLreloop-nats:4222
KUMOMTA_MIN_FREE_SPACE1%
KUMOMTA_MIN_FREE_INODES0
KUMOMTA_RSPAMD_URLhttp://reloop-spam:11333/checkv2
KUMOMTA_CHECK_RECIPIENT_URLhttp://host.docker.internal:8011/api/domain

Commands

CommandDescription
bun docker:upStart full Docker stack (includes inbound)
docker compose -f local/docker-compose.yml up -d inboundStart inbound only
docker logs -f reloop-inboundStream logs
curl http://localhost:8030/healthHealth check

Architecture

External Sender → Port 25 → Recipient Check → Spam (Rspamd) → NATS → Inbox
                                                         ↘ discard (no SMTP egress)
LayerDetail
MX receptionAccepts inbound mail on port 25
Validationdomain service verifies recipients
Spam scanspam backend scores mail via /checkv2
ForwardingAccepted messages published to NATS for inbox, then assigned to the null queue
Receive-onlyNo SMTP AUTH, no HTTP inject, no outbound delivery; submission is smtp only

Next

Was this page helpful?

Edit this page