- Go Template 35.4%
- Dockerfile 26.4%
- Shell 18.8%
- PHP 9.4%
- C++ 6.3%
- Other 3.7%
This allows Dovecot to notify to rspamd mails that are added / removed of spam folder. refers to collectivit/collectivit#126 |
||
|---|---|---|
| config | ||
| scripts | ||
| .pre-commit-config.yaml | ||
| .workspace.lua | ||
| Dockerfile | ||
| README.md | ||
docker-rspamd
Aperçu
Ce dépôt contient la déclaration d'un container Docker qui exécute le service anti-spam rspamd1.
Un serveur Postfix lui soumet les mails via le protocole milter2 sur le port 11332.
Pour ça, il faut ajouter inet:<hôte rspamd>:11332 aux milters de Postfix (variable
MILTERS du container docker-postfix). Le proxy milter n'est pas authentifié : il ne
doit être accessible que depuis le réseau interne (dans un cluster Kubernetes par
exemple).
Selon le score attribué à un mail (C.F config/local.d/actions.conf) :
- Au delà de 15, le mail est rejeté pendant l'échange SMTP.
- Au delà de 6, l'en-tête
X-Spam: Yesest ajouté au mail. C'est au serveur qui distribue les mails (Dovecot) de le classer dans le dossier spam.
Les en-têtes Authentication-Results, X-Spamd-Bar et X-Spamd-Result sont ajoutés
aux mails pour comprendre le score attribué.
Un serveur Redis (ou compatible, comme Valkey) est nécessaire pour les modules qui stockent des données : classifieur bayésien, entraîné automatiquement avec les mails au score très haut ou très bas, et par les signalements des utilisataires (C.F ci-dessous), greylisting (les mails au score supérieur à 4 sont refusés temporairement la première fois qu'ils sont reçus), limitation de débit...
Les listes noires DNS (Spamhaus, SURBL, URIBL...) refusent les requêtes venant des gros
résolveurs DNS partagés ou publics. rspamd utilise donc le résolveur récursif unbound3
sur 127.0.0.1:53 (C.F config/local.d/options.inc). unbound est installé dans l'image
mais n'est pas démarré par le point d'entrée : il faut lancer un second container avec la
même image et la commande dumb-init -- unbound -d, qui partage le réseau du container
rspamd (dans le même pod Kubernetes par exemple).
Apprentissage
Le contrôleur de rspamd4 écoute sur le port 11334. Il permet notamment d'entraîner le
classifieur bayésien en lui soumettant des mails via POST /learnspam et
POST /learnham, avec le mot de passe CONTROLLER_PASSWORD dans l'en-tête Password.
Dovecot l'utilise pour signaler les mails que les utilisataires déplacent dans ou hors du
dossier Spam (C.F docker-dovecot). Comme le proxy milter, il ne doit être accessible que
depuis le réseau interne.
Variables d'environnement
-
REDIS_HOST (requis) : Nom d'hôte du serveur compatible Redis (Valkey...).
-
REDIS_PORT (requis) : Port du serveur compatible Redis.
-
REDIS_DB (défaut :
1) : Index de la base de données Redis à utiliser. Une base différente de celle des autres services partageant le même serveur Redis permet d'éviter les collisions de clés. -
CONTROLLER_PASSWORD (requis) : Mot de passe du contrôleur, nécessaire pour entraîner le classifieur bayésien.
Ports
-
11332 : le proxy milter, auquel Postfix soumet les mails. Il écoute sur toutes les interfaces (C.F
config/local.d/worker-proxy.inc). -
11334 : le contrôleur, auquel Dovecot signale les spams et les mails légitimes. Il écoute sur toutes les interfaces (C.F
config/local.d/worker-controller.inc.tpl).