Pour améliorer le filtrage fait par PMG, il est possible de créer ses propres règles dans le module de SpamAssassin. C’est particulièrement intéressant si l’on remarque que des spams qui sont toujours construits de la même manière au niveau de l’objet ou du contenu arrivent à passer les autres règles.
Attention ce n’est pas la même chose que modifier le score d’une règle déjà existante, pour ça il faut plutôt se référencer à la page suivante : PMG – Spam Detector Custom Scores
Si besoin pour l’écriture de règle se référer à https://cwiki.apache.org/confluence/display/SPAMASSASSIN/WritingRules
Configuration
Les règles de ne peuvent pas être créées directement depuis l’interface de PMG, il faut passer par l’édition d’un fichier.
- Se connecter en SSH au serveur PMG
- Éditer le fichier custom.cf pour que les modifications soient conservées lors des mises à jour de SpamAssassin :
sudo nano /etc/mail/spamassassin/custom.cf
- Vérifier qu’il n’y a pas d’erreur de syntaxe avec la commande :
sudo spamassassin --lint
- Une fois les règles créées ou modifiées, il faut recharger le service de filtrage dans PMG pour qu’elles soient prises en compte :
sudo systemctl restart pmg-smtp-filter
Pour tester une règle il est possible de saisir la commande :
echo -e "Contenu à tester" | spamassassin -t
Le contenu est ainsi analysé par spamassassin et on à le détail des règles qui lui seront appliqué.
Journal de modification
04/04/2024 : Ajout détection de newsletters
Personnalisation
Détection de phrase de spam dans l’objet :
Règle avec un seul objet
# Subject with spam phrase header LOCAL_SUBJ_SPAM Subject =~ /\bSaisir objet\b/i score LOCAL_SUBJ_SPAM 4.0 describe LOCAL_SUBJ_SPAM Subject with spam phrase
Règle avec deux objets (si besoin de plus à ajouter)
# Subject with spam phrase header __LOCAL_SUBJ_SPAM1 Subject =~ /\bSaisir objet\b/i header __LOCAL_SUBJ_SPAM2 Subject =~ /\bSaisir nouvel objet\b/i meta LOCAL_SUBJ_SPAM ( __LOCAL_SUBJ_SPAM1 || __LOCAL_SUBJ_SPAM2 ) score LOCAL_SUBJ_SPAM 4.0 describe LOCAL_SUBJ_SPAM Subject with spam phrase
Détection de l’encodage UTF-8 dans l’objet :
# Subjects with UTF-8 encoding header LOCAL_SUBJ_UTF8 Subject:raw =~ /=?utf-8?.?/i score LOCAL_SUBJ_UTF8 1.0 describe LOCAL_SUBJ_UTF8 Subject with UTF-8 encoding
Détection DE l’encodage EUC dans l’objet :
# Subjects with EUC encoding header __LOCAL_EUC_CN Subject:raw =~ /=?euc-cn?.?/i header __LOCAL_EUC_JP Subject:raw =~ /=?euc-jp?.?/i header __LOCAL_EUC_KR Subject:raw =~ /=?euc-kr?.?/i header __LOCAL_EUC_TW Subject:raw =~ /=?euc-tw?.?/i meta LOCAL_SUBJ_EUC ( __LOCAL_EUC_CN || __LOCAL_EUC_JP || __LOCAL_EUC_KR || __LOCAL_EUC_TW ) score LOCAL_SUBJ_EUC 1.0 describe LOCAL_SUBJ_EUC Subjects with EUC encoding
Détection des newsletters
# Mailinglist/Newsletter emails header __LOCAL_ML1 exists:List-Unsubscribe header __LOCAL_ML2 exists:List-Post header __LOCAL_ML3 exists:Mailing-List header __LOCAL_ML4 Precedence =~ /\b(list|bulk)\b/i meta LOCAL_ML ( __LOCAL_ML1 || __LOCAL_ML2 || __LOCAL_ML3 || __LOCAL_ML4 ) score LOCAL_ML 1.0 describe LOCAL_ML Mailinglist/Newsletter emails