Rspamd : Configuration avancée, Redis sur socket et Nginx Reverse Proxy
Si tu cherches à configurer un serveur de messagerie robuste, tu auras sûrement remarqué que de nombreux guides en ligne sur Rspamd sont incomplets ou tiennent pour acquis des étapes critiques.
Le résultat ? Des logs pleins d’erreurs Connection refused, des modules qui ne communiquent pas et une interface web exposée à des risques de sécurité.
Dans cet article, on voit comment configurer un environnement Rspamd blindé, performant et optimisé, en résolvant les problèmes les plus courants liés à Redis et à l’entraînement antispam.
1. Le grand piège de Redis : port TCP vs Unix Socket
L’une des erreurs les plus courantes (cannot upload script to 127.0.0.1:6379: Connection refused) survient quand Rspamd tente de se connecter à la base Redis sur le port réseau par défaut, alors que ton serveur Redis est configuré pour écouter sur un Unix socket local (beaucoup plus rapide et sûr). Pour résoudre, il faut indiquer à Rspamd d’utiliser le socket.
Crée ou modifie le fichier de configuration global de Redis pour Rspamd :
nano /etc/rspamd/local.d/redis.conf
Et insère cette directive :
servers = "/var/run/redis/redis.sock";
Attention aux permissions : assure-toi que l’utilisateur _rspamd a la permission de lire et écrire sur le socket. Ajoute-le au groupe Redis avec : usermod -aG redis _rspamd.
2. Entraîner le filtre bayésien (et résoudre les conflits)
Pour apprendre à Rspamd à reconnaître le spam, on utilise l’utilitaire en ligne de commande rspamc en le pointant vers un dossier plein d’emails-poubelle :
sudo -u _rspamd rspamc learn_spam /chemin/de/ton/dossier/spam/*
Toutefois, tu peux remarquer que l’entraînement échoue malgré tout. C’est parce que le module classificateur a souvent une configuration « hardcoded » qui ignore les paramètres globaux. Pour forcer le classificateur Bayes à utiliser notre socket Redis, modifie le fichier dédié :
nano /etc/rspamd/local.d/classifier-bayes.conf
servers = "/var/run/redis/redis.sock";
3. Activer les modules avancés : Neural, History et Greylist
Une fois les fondations en place, c’est le moment d’allumer le « char d’assaut ». Rspamd a des modules puissants qui restent souvent désactivés ou en erreur à cause de configurations Redis incorrectes. Configure-les en créant les fichiers correspondants dans /etc/rspamd/local.d/, en t’assurant qu’ils pointent tous vers le socket.
History (history_redis.conf)
servers = "/var/run/redis/redis.sock";
nrows = 2000;
key_prefix = "rs_history";
compress = true;
Neural (neural.conf)
servers = "/var/run/redis/redis.sock";
rules {
"default" {
train {
max_trains = 1000;
max_usages = 10;
max_iterations = 25;
learning_spawned = true;
}
symbol_spam = "NEURAL_SPAM";
symbol_ham = "NEURAL_HAM";
ann_expire = 100d;
}
}
Greylist (greylist.conf)
servers = "/var/run/redis/redis.sock";
enabled = true;
timeout = 1min;
expire = 30d;
unseen_expire = 1d;
4. Blinder la WebUI avec Nginx (Reverse Proxy)
N’expose JAMAIS le port 11334 de Rspamd directement sur Internet. La bonne pratique prévoit de faire écouter Rspamd uniquement en local et d’utiliser Nginx pour gérer le trafic externe et le certificat SSL.
D’abord, nettoie la configuration du controller (/etc/rspamd/local.d/worker-controller.inc) en retirant les éventuelles directives destinées au Milter et en définissant le mot de passe :
bind_socket = "127.0.0.1:11334";
password = "$2$tuo_hash_generato_con_rspamadm_pw";
secure_ip = "127.0.0.1";
secure_ip = "::1";
Enfin, crée le server block sur Nginx pour faire office de reverse proxy :
server {
listen 4443 ssl http2;
server_name mcp.tuodominio.com;
ssl_certificate /etc/letsencrypt/live/mcp.tuodominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mcp.tuodominio.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:11334/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300;
}
}
Redémarre Rspamd (systemctl restart rspamd) et Nginx. Tu as maintenant un système de filtrage antispam de niveau entreprise, avec une interface sûre et une base Redis qui traite les données à pleine vitesse via socket.