#SysAdmin #NetAdmin

PMG – SpamAssassin Custom Rules

P

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.

  1. Se connecter en SSH au serveur PMG
  2. É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
  1. Vérifier qu’il n’y a pas d’erreur de syntaxe avec la commande :
sudo spamassassin --lint
  1. 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
par Nathan
#SysAdmin #NetAdmin