Inbound
Set up and run the Reloop inbound MX receiver locally in Docker.
Inbound KumoMTA MX receiver — accepts external mail, scans with spam (Rspamd), 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_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?
- Need help? Contact Support.
- Chat with Reloop developers on Discord.
- Check out our changelog.
- Questions? Contact Sales.
- LLM? Read llms.txt.