sm re-auth pending (#925); /tmp/cr.env is the documented interim. Redmine: https://projects.knownelement.com/issues/925
perf/nuisance — edge nuisance-block (my.knownelement.com)
Runbook for the founder-directed hostile-source block (#796, #787 Option B). Ops knowledge lives here (runs beside code); the durable audit trail is Redmine #796 + Discourse t/298.
How it works
- Enforcement is Cloudron-native: the blocklist setting
(
firewall_blocklist) drives ipsetcloudron_blocklist, referenced by the INPUT-sideCLOUDRONchain and FORWARD-sideDOCKER-USER. Cloudron re-applies it at boot — no custom firewall persistence to maintain. - Detection is dual:
nuisance-sweep.sh(workstation, daily 09:00 automation): scans Haraka spamhaus-DENY sources, adds new ones (>=3 denials/24h, cap 64/run) via the blocklist API, prints every change for the daily report.nuisance-detect.sh+nuisance-detect.timer(host, 07:15 daily, no secrets): writes ranked candidates to/home/yellowtent/platformdata/nuisance/candidates.txt— cross-check that detection runs even if the LLM automation misses a day.
View current blocks
- Panel: my.knownelement.com → Network → IP block list
- API:
GET https://my.knownelement.com/api/v1/network/blocklist - Kernel:
ipset list cloudron_blocklist(members = what is actually dropped)
Unblock something
- Add the IP/CIDR to
allowlist.txt(repo) — the sweep will never re-add it. - Remove it from the live setting: GET the blocklist, delete the line, POST
the remainder (POST /api/v1/network/blocklist, body
{"blocklist": "<full text>"}). Takes effect immediately. - Update
blocklist.txt(repo) and note why in Redmine #796. - Verify:
ipset test cloudron_blocklist <ip>must FAIL after removal.
Files
| file | role |
|---|---|
nuisance-sweep.sh |
daily auto-block sweep (workstation, automation-driven) |
nuisance-detect.sh |
host-side candidate scan (no secrets) |
nuisance-detect.{service,timer} |
systemd arming for the detector |
blocklist.txt |
git SoR mirror of the live blocklist |
allowlist.txt |
never-block overrides (always wins) |
Known limits (v1)
- IPv4 only. IPv6 sources are logged by Haraka but not blocked.
- The sweep only ever blocks IPs our own mail server already DENIED on Spamhaus evidence — a listed-but-legit sender is unaffected in practice (it could not deliver anyway). If a shared IP needs unblocking, follow the procedure above.