rspamd: configure redis backend

The sqlite backed is deprecated, and the redis backend is the default
since rspamd 2.0.

Not having redis started results in such errors:
rspamd_redis_init: cannot init redis backend for BAYES_SPAM

To migrate the sqlite database, run

rspamadm statconvert --spam-db /var/lib/rspamd/bayes.spam.sqlite --ham-db /var/lib/rspamd/bayes.ham.sqlite -h 127.0.0.1:6379 --symbol-ham BAYES_HAM --symbol-spam BAYES_SPAM

The current module implements the recommended configuration that this
utility prints out.
This commit is contained in:
Symphorien Gibol 2020-04-03 12:00:00 +00:00 committed by lewo
parent ac0f5c118f
commit 9e772d166c
2 changed files with 55 additions and 2 deletions

View file

@ -480,6 +480,46 @@ in
'';
};
redis = {
address = mkOption {
type = types.str;
# read the default from nixos' redis module
default = let
cf = config.services.redis.bind;
cfdefault = if cf == null then "127.0.0.1" else cf;
ips = lib.strings.splitString " " cfdefault;
ip = lib.lists.head (ips ++ [ "127.0.0.1" ]);
isIpv6 = ip: lib.lists.elem ":" (lib.stringToCharacters ip);
in
if (ip == "0.0.0.0" || ip == "::")
then "127.0.0.1"
else if isIpv6 ip then "[${ip}]" else ip;
description = ''
Address that rspamd should use to contact redis. The default value
is read from <literal>config.services.redis.bind</literal>.
'';
};
port = mkOption {
type = types.port;
default = config.services.redis.port;
description = ''
Port that rspamd should use to contact redis. The default value is
read from <literal>config.services.redis.port<literal>.
'';
};
password = mkOption {
type = types.nullOr types.str;
default = config.services.redis.requirePass;
description = ''
Password that rspamd should use to contact redis, or null if not
required. The default value is read from
<literal>config.services.redis.requirePass<literal>.
'';
};
};
rewriteMessageId = mkOption {
type = types.bool;
default = false;