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
| Property | Value |
|---|---|
| Directory | apps/backend/inbound |
| Docker service | inbound (container reloop-inbound) |
| SMTP port | 25 |
| HTTP port | 8030 (health check) |
| Stack | KumoMTA · Lua · spam |
Quick start
bun docker:up
Health check: http://localhost:8030/health.
Configuration
Key variables in local/docker-compose.yml:
| Variable | Default |
|---|---|
INBOUND_HOSTNAME | inbound.reloop.sh |
NATS_URL | reloop-nats:4222 |
KUMOMTA_MIN_FREE_SPACE | 1% |
KUMOMTA_MIN_FREE_INODES | 0 |
KUMOMTA_RSPAMD_URL | http://reloop-spam:11333/checkv2 |
KUMOMTA_CHECK_RECIPIENT_URL | http://host.docker.internal:8011/api/domain |
Commands
| Command | Description |
|---|---|
bun docker:up | Start full Docker stack (includes inbound) |
docker compose -f local/docker-compose.yml up -d inbound | Start inbound only |
docker logs -f reloop-inbound | Stream logs |
curl http://localhost:8030/health | Health check |
Architecture
External Sender → Port 25 → Recipient Check → Spam (Rspamd) → NATS → Inbox
↘ discard (no SMTP egress)
| Layer | Detail |
|---|---|
| MX reception | Accepts inbound mail on port 25 |
| Validation | domain service verifies recipients |
| Spam scan | spam backend scores mail via /checkv2 |
| Forwarding | Accepted messages published to NATS for inbox, then assigned to the null queue |
| Receive-only | No SMTP AUTH, no HTTP inject, no outbound delivery; submission is smtp only |
Next
Was this page helpful?