Rspamd est configuré en mode proxy worker avec Self-Scan (ref) par le fichier /etc/rspamd/local.d/worker-proxy.inc :

bind_socket = "/var/run/rspamd/milter.sock mode=0660 owner=_rspamd group=milter";

upstream "local" {
  default = yes; # Self-scan upstreams are always default
  self_scan = yes; # Enable self-scan
}
count = 4; # Spawn more processes in self-scan mode

Postfix est adapté à cette configuration en ajoutant dans /etc/postfix/main.cf les lignes suivantes :

smtpd_milters = unix:/var/run/rspamd/milter.sock
milter_default_action = accept

Le milter_default_action implique qu'un email non vérifié sera passé. On peut, pour plus de sécurité, utiliser le mode tempfail qui renverra un message temporaire d'erreur au client SMTP. Cependant, si le problème n'est pas résolu rapidement, les messages peuvent s'accumuler dans la file de traitement. Pour l'instant nous utilisons donc accept et verrons si adaptation nécessaire à l'usage.

Le fichier /etc/rspamd/local.d/worker-controller.inc nous permet de configurer un webUI :

bind_socket = "/var/run/rspamd/controller.sock mode=0660 owner=_rspamd group=rspamadm";
password = "HASH"

Le HASH est obtenu via rspamadm pw (ref).

Enfin, pour le webUI, Nginx doit aussi être adapté via la conf sites-available/https :

    # Rspamd
    location /rspamd/ {
        rewrite /rspamd(/.*) $1 break;
        proxy_pass http://unix:/var/run/rspamd/controller.sock;

        proxy_set_header Host      $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        auth_basic "Statistiques Rspamd";
        auth_basic_user_file /etc/nginx/passwd/wiki-admin;

        include snippets/csp-inline.conf;
    }

Le WebUI est donc protéger avec les mêmes login/pass que le wiki/admin, puis un mot de passe ultra sécurisé mis au keyringer.

Note utile : milter a déjà mis en erreur postfix pour des problèmes d'accès à milter.sock. La suppression des .sock de /var/run/rspamd et le restart propre de rspamd puis de postfix ont résolu le problème.