0ee11a065b
The smarthost routes all mail through one rspamd: inbound that survived the edge gets the AI (LiteLLM Haiku) pass and is tagged for Stalwart's Junk filing; outbound from the lab and pods is DKIM-signed. - add rspamd (milter via ClusterIP only), ClamAV and a 3-node sentinel Valkey - tag inbound (`X-Spam`, `X-Spam-Status`, `X-Spamd-Result`), reject only viruses, tempfail when ClamAV fails - score inbound against the hop before the edge relays (`external_relay`) - DKIM-sign and skip GPT only for the smarthost's mynetworks sources - elect the highest-offset Valkey on full restart; RDB, 384mb `volatile-ttl` - read a hashed controller password (`password_hash`) Requires `password_hash` in kv `mail/default/rspamd-controller`. Reviewed-on: #542 Co-authored-by: unkin-agent <unkin-agent@unkin.net> Co-committed-by: unkin-agent <unkin-agent@unkin.net>
20 lines
434 B
Plaintext
20 lines
434 B
Plaintext
outbound {
|
|
priority = high;
|
|
ip_map = "/etc/rspamd/local.d/local_networks.map";
|
|
apply {
|
|
symbols_disabled = ["GPT_CHECK"];
|
|
}
|
|
}
|
|
inbound {
|
|
priority = high;
|
|
ip_map = "/etc/rspamd/local.d/local_networks.map";
|
|
inverse = true;
|
|
apply {
|
|
symbols_disabled = ["DKIM_SIGNED"];
|
|
# Tag only; reject stays defined (unreachable by score) so ClamAV's virus reject still applies.
|
|
actions {
|
|
reject = 1000;
|
|
}
|
|
}
|
|
}
|