Rspamd
Rspamd est plus qu’un simple antispam : il s’occupera aussi d’ajouter les signatures DKIM et ARC à vos mails sortants et pourra faire la liaison avec un antivirus. C’est un tout-en-un vraiment sympa 🙂
Installation
Je vous laisse aller voir ça sur le [site de rspamd](https://rspamd.com/doc/quickstart.html).
Création et utilisation de clés DKIM et ARC
Création
NB : par défaut, Rspamd va chercher les clés dans le dossier `/var/lib/rspamd/dkim/`. Cependant, je préfère les mettre dans le dossier `/etc/dkim` : on pense plus souvent à sauvegarder `/etc` que `/var/lib/rspamd/`.
rspamadm dkim_keygen -k /etc/dkim/example.com.dkim.key -b 2048 -s 'dkim' -d example.com > /etc/dkim/example.com.dkim.txt
- -k ⇒ fichier qui contiendra la clé
- -b ⇒ nombre de bits de la clé (défaut : 1024)
- -s ⇒ nom du sélecteur (voir plus bas)
- -d ⇒ le domaine à signer
À noter, la redirection de la sortie de la commande vers `/etc/dkim/example.com.dkim.txt` : ce fichier contient l’enregistrement DNS que vous devrez créer pour votre domaine pour déclarer la clé DKIM utilisée.
Cela ressemble à :
dkim._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzgAF2ozDnleUGRbtwmbTEg1zmmoSLhOjsT96q0P+JOrTPnGX/oIWwx2MkTRW46gSU7Ya1ByG9EKfEQo3V+Zfr5xeY+O0ksl8nrHUk56haW7kqVAEhyo4NPqhhTRUheAIMgLbyYlFNOqpQDCdmfyn6fvObK6caqtNXAWy3vWTeMacBgx1JGfrYE1NFyNqKcfHcbtXXfSGNo6phVz9K" "1Tll3wvZhdW3hBwgq49cZ5yp0IsrlLOfqMOnHcS83YHlNMRVVGvPko8+ucMhKktbAoDdEMMWupxyWGs1M1xKW0RQxFyYi5oZhSTW53VpyzldrlWXInerDRW2hn1amA2dlWwewIDAQAB" ) ;
Le sélecteur est une clé qui servira, on le voit, dans le nom de l’enregistrement DNS. Il sera indiqué dans l’en-tête de signature DKIM des mails, et donc utilisé par les antispams pour aller chercher le bon enregistrement DNS qui déclare la clé utilisée. Par défaut, pour DKIM, rspamd utilise le sélecteur `dkim` et je ne vois pas de raison d’en changer (en plus ça ferait des modifications de configuration supplémentaires).
Le sélecteur est aussi utilisé par défaut par rspamd pour choisir la clé à utiliser pour signer les mails.
Pour les clés ARC, c’est tout pareil, mais on change le sélecteur pour `arc`. Vous pouvez utiliser le même dossier `/etc/dkim`, c’est ce que je fais.
Utilisation par Rspamd
Si vous avez utilisé `/var/lib/rspamd/dkim/` (et `/var/lib/rspamd/arc` pour ARC) comme chemins à la place de `/etc/dkim`, vous n’avez rien à faire : rspamd cherche les clés des domaines avec le chemin `/var/lib/rspamd/dkim/$domain.$selector.key` (et `/var/lib/rspamd/arc/$domain.$selector.key` pour ARC).
Si comme moi vous utilisez `/etc/dkim` pour ranger vos clés, il va falloir surcharger la configuration de rspamd.
Créez les fichiers `/etc/rspamd/local.d/dkim_signing.conf` et `/etc/rspamd/local.d/arc.conf` et mettez-y ceci :
path = "/etc/dkim/$domain.$selector.key"
Relancez rspamd, et c’est normalement tout bon 🙂
Ajouter les en-têtes donnant le spam score dans les mails
Certains spams passent, des mails légitimes ne passent pas… pour comprendre ça, on peut aller dans les logs pour y retrouver les infos qui vont bien, ou alors on ajoute directement ces informations dans les en-têtes des mails 🙂
Dans le fichier `/etc/rspamd/local.d/milter_headers.conf`, mettez :
extended_spam_headers = true;
Relancez rspamd, et c’est normalement tout bon 🙂
Comprendre les symboles Rspamd
Dans les en-têtes ajoutés dans les mails via la configuration juste au-dessus, il y a les symboles rspamd. Ce sont différentes catégories de vérification antispam, avec un score. C’est la somme de ces scores qui donne le spam score qui va déclencher l’acceptation du mail, son classement en spam ou carrément son refus.
Cependant ces symboles n’ont pas forcément une signification évidente. Voici une liste de symboles expliqués (cette liste n’est pas exhaustive) :
- ARC_REJECT : la signature [ARC](https://en.wikipedia.org/wiki/Authenticated_Received_Chain) est-elle valide ?
- ARC_SIGNED : existe-t-il une signature [ARC](https://en.wikipedia.org/wiki/Authenticated_Received_Chain) ?
- ASN : score de l’IP par rapport à son [ASN](https://fr.wikipedia.org/wiki/Autonomous_System) auquel il appartient. Rspamd fait des statistiques au niveau des adresses IP, sous-réseaux, ASN et pays
- BAYES_SPAM : [analyse bayésienne](https://fr.wikipedia.org/wiki/Lutte_anti-spam#Filtrage_bay%C3%A9sien) du mail
- CTYPE_MIXED_BOGUS : mails `multipart/mixed` sans partie non-textuelle
- DKIM_SIGNED : le message possède une signature DKIM (sans préjuger de sa validité)
- DKIM_TRACE : un truc avec [DKIM](https://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail), c’est sûr, mais je sais pas quoi exactement
- DMARC_POLICY_SOFTFAIL : la vérification [DMARC](https://fr.wikipedia.org/wiki/DMARC) a échoué
- FORGED_RECIPIENTS : les destinataires ne sont pas les mêmes que la commande mail `RCPT TO`
- FORGED_RECIPIENTS_MAILLIST : les destinataires ne sont pas les mêmes que la commande mail `RCPT TO` mais le message vient d’une liste de diffusion
- FORGED_SENDER : l’en-tête `Sender` est forgé (différence entre l’en-tête `From` et `MAIL FROM`)
- FORGED_SENDER_MAILLIST : l’en-tête `Sender` est forgé (différence entre l’en-tête `From` et `MAIL FROM`) mais le message vient d’une liste de diffusion
- FROM_NEQ_ENVFROM : l’adresse `From` est différente de celle de l’enveloppe
- FROM_NO_DN : l’en-tête `From` n’a pas de *display name*
- HAS_LIST_UNSUB : possède l’en-tête `List-Unsubscribe`
- HAS_REPLYTO : est-ce que le mail a bien un header `Reply-To` ?
- LOCAL_WL_IP : vérification de la liste blanche locale
- MAILLIST : le mail semble venir d’une liste de diffusion
- MID_RHS_MATCH_FROM : est-ce qu’on retrouve l’adresse `From` dans le `Message-ID` ?
- MIME_GOOD : `Content-Type` connu
- MIME_TRACE : un truc qui a à voir avec les types MIME, mais je sais pas quoi exactement
- PRECEDENCE_BULK : envoi de mail en masse
- RCPT_COUNT_ONE : un seul destinataire
- RCVD_COUNT_THREE : le mail a entre 3 et 5 en-tête `Received` (a transité par 3/4/5 serveurs différents)
- RCVD_IN_DNSWL_FAIL : fail du test https://www.dnswl.org (une liste blanche d’adresses IP)
- RCVD_TLS_LAST : le dernier serveur (*last hop*) utilise un transport sécurisé
- R_DKIM_ALLOW : DKIM correct
- RECEIVED_SPAMHAUS_FAIL : a priori, blacklisté chez Spamhaus une RBL
- R_EMPTY_IMAGE : le message contient des parties texte vides et une image
- REPLYTO_DN_EQ_FROM_DN : le *display name* de l’en-tête `Reply-To` est-il le même que celui du `From` ?
- REPLYTO_DOM_NEQ_FROM_DOM : le domaine `Reply-To` ne correspond pas à celui de `From`
- R_SPF_ALLOW : respect de l’enregistrement [SPF](https://fr.wikipedia.org/wiki/Lutte_anti-spam#SPF_(%C2%AB_Sender_Policy_Framework_%C2%BB))
- TO_DN_NONE : Aucun des destinataires n’a de *display names*
- TO_DOM_EQ_FROM_DOM : le domaine `To` est le même que celui de `From`