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/spam.md. Product capabilities: skill.md. Docs MCP: /docs/mcp. Site MCP: /mcp.

Spam

Set up and run the Reloop spam scanning backend (Rspamd) locally in Docker.

Rspamd spam scanner — scores inbound mail for the inbound MX receiver via HTTP /checkv2.

Run bun setup or bun docker:up from the monorepo root. Spam starts with the Compose stack because inbound depends on it.

Overview

PropertyValue
Directoryapps/backend/spam
Docker servicereloop-spam (container reloop-spam)
Scan ports11332, 11333
Web UI11334
StackRspamd · Redis

Quick start

bun docker:up

Or rebuild after config changes:

docker compose -f local/docker-compose.yml up -d --build reloop-spam

Controller / scan endpoint: http://localhost:11333.

Configuration

Local overrides live in apps/backend/spam/local.d/ (mounted into the container).

Spam Redis (set on the spam container — native Rspamd RSPAMD_* env):

VariableDefault
RSPAMD_REDIS_SERVERSreloop-redis:6379
RSPAMD_REDIS_PASSWORDreloop123

Inbound wires to this service with:

VariableDefault
KUMOMTA_RSPAMD_URLhttp://reloop-spam:11333/checkv2

Commands

CommandDescription
bun docker:upStart core stack including spam
docker compose -f local/docker-compose.yml up -d --build reloop-spamRebuild and start spam only
docker logs -f reloop-spamStream logs
docker compose -f local/docker-compose.yml stop reloop-spamStop container

Architecture

Inbound (KumoMTA) → HTTP POST /checkv2 → Spam (Rspamd) → score / action / symbols
LayerDetail
Scan APIAccepts raw message bodies on /checkv2 (port 11333)
HeadersInbound injects X-Spam-* from the response for inbox
StateUses Redis (reloop-redis) for learning / fuzzy storage
Separate deployNot baked into the inbound image — own Dockerfile and CI (be-spam)

Next

Was this page helpful?

Edit this page