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 — accepts external mail, scans with spam (Rspamd), forwards to inbox via NATS.

Run bun setup or bun docker:up from the monorepo root. Inbound needs free port 25.

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_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