Learn/fr

From SME Server
Jump to navigation Jump to search


Version

Contrib 10:
Contrib 9:
smeserver-learn
The latest version of smeserver-learn is available in the SME repository, click on the version number(s) for more information.


Mainteneur

JP Pialasse

Contributeurs initiaux

Jooris Emmanuel for Firewall-services, Daniel B. from Firewall Services, Brian Read , Tim Litwiller , Michael McCarn and Jesper Knudsen

Description

Script (fondé sur LearnAsSpam) qui permet aux utilisateurs d'interagir avec spamassasin simplement en déplaçant le message dans un répertoire spécifique de leur boîte courriel (fonctionne uniquement en IMAP).

  • Apprendre le message en tant que Spam
  • Apprendre le message en tant que Ham
  • Ajoute en liste blanche l'expéditeur pour que ses messages ne soient plus reconnus en tant que Spam.


  Attention :
ce script ne fonctionne que pour des clients de messagerie connectés au Serveur SME uniquement en IMAP.


Lexique

  • SPAM : courriel non désiré ou encore «pourriel».
  • HAM : courriel, message électronique qui n'est pas un SPAM.
  • faux positif : HAM qui est détecté comme un SPAM.
  • faux négatif : SPAM qui passe au travers des mailles du filet.

Installation

yum --enablerepo=smecontribs install smeserver-learn

Activer le filtre Bayesien. Voir le paragraphe Bayesian Autolearning de la page Email pour une installation complète. La configuration minimum serait :

db configuration setprop spamassassin UseBayes 1
config setprop spamassassin BayesAutoLearnThresholdSpam 6.00
config setprop spamassassin BayesAutoLearnThresholdNonspam 0.10
expand-template /etc/mail/spamassassin/local.cf
sa-learn --sync --dbpath /var/spool/spamd/.spamassassin -u spamd
chown spamd.spamd /var/spool/spamd/.spamassassin/bayes_*
chown spamd.spamd /var/spool/spamd/.spamassassin/bayes.mutex
chmod 640 /var/spool/spamd/.spamassassin/bayes_* 
config setprop spamassassin status enabled
config setprop spamassassin RejectLevel 12
config setprop spamassassin TagLevel 4
config setprop spamassassin Sensitivity custom
signal-event email-update

N’oubliez pas de configurer les clés de la base de données en fonction de vos besoins et de régénérer le fichier de configuration.

Documentation

smeserver-learn stocke toutes les clefs dont il a besoin dans la base de données configuration (le signe > indique une sous-clef) :

LearnAsSpam Clef de configuration pour la partie d'apprentissage des messages comme spam.
>status={enabled,disabled} Activation ou non de l'apprentissage des spams.
>tag=$string Tag à mettre devant le message pour avertir l'utilisateur que le message a été appris comme spam.
>dir=$string Nom du répertoire où l'on place les spams qui seront appris.
>SpamLinks=$string Permet de créer des répertoires IMAP virtuels lié au dossier «junkmail». Utile pour les clients IOS qui doivent continuer à utiliser le dossier de courriels indésirables «junkmail» et ne peuvent pas définir un autre dossier. Plusieurs liens peuvent être entrés, séparés par des virgules ",". Par défaut, le champ est vide () pour désactivation. D'autres exemples suivent le tableau.
>DeleteAfterLearn={enabled,disabled} Effacer le message qui a été appris au lieu de le déplacer dans le répertoire «junkmail» de l'utilisateur.
>DelayToMove=$integer Déplace les messages du dossier «junkmail» de l'utilisateur au bout de n jours dans le dossier «dir», avant qu'ils ne soient supprimés (typiquement au bout de 90 jours). Utile pour traiter les spams placés ici par le courrielleur du client et non encore appris. Ne peut être activé que si DeleteAfterLearn est activé pour éviter de boucler. Est par défaut à "0" si désactivé.
>LearnNew={enabled,junkmail,disabled} Apprend le contenu du sous-répertoire de lecture IMAP «cur» (si désactivée) ou également «new» (si activée) où les courriels sont stockés avant qu'un client se connecte pour les télécharger. Avec valeur «junkmail», ce comportement sera utilisée uniquement pour l'inspection dossier IMAP junkmail. Par défaut est «désactivée».
>Uniq={enabled,disabled} Si la sous-clé est activée, Learn va rechercher uniquement dans le dossier correspondant au nom indiqué dans la propriété «dir». S'il n'existe pas, il le créera. Si la fonction est désactivée, Learn ne va pas créer un dossier IMAP, mais recherchera tout dossier contenant la chaîne de caractères de la propriété «dir» (par exemple pour dir=dir : mon_dir, dir3, mondir34). Est activée par défaut.
LearnAsHam Clef de configuration pour la partie d'apprentissage des messages comme Ham.
>status={enabled,disabled} Activation ou non de l'apprentissage des Hams.
>tag=$string Tag à mettre devant le message pour avertir l'utilisateur que le message a été traité.
>dir=$string Nom du répertoire ou rechercher les Hams.
>LearnNew={enabled,disabled} Apprend le contenu du sous-répertoire de lecture IMAP «cur» (si désactivée) ou également «new» (si activée) où les courriels sont stockés avant qu'un client se connecte pour les télécharger. Est «désactivée» par défaut. Pas utile ici.
>RemoveSPAMTag={enabled,disabled} Enlève la mauvaise étiquette du sujet du courriel après l'avoir enregistré et replace une copie du message nettoyé dans le répertoire du Courier entrant. Est activée par défaut.
>Uniq={enabled,disabled} Si la sous-clé est activée, Learn va rechercher uniquement dans le dossier correspondant au nom indiqué dans la propriété «dir». S'il n'existe pas, il le créera. Si la fonction est désactivée, Learn ne va pas créer un dossier IMAP, mais recherchera tout dossier contenant la chaîne de caractères de la propriété «dir» (par exemple pour dir=dir : mon_dir, dir3, mondir34). Est activée par défaut.
LearnInWL Clef de configuration pour la partie d'apprentissage de l'expéditeur du message dans la liste blanche.
>status={enabled,disabled} Activation ou non de l'apprentissage des expéditeurs de message dans la liste blanche.
>tag=$string Tag à mettre devant le message pour avertir l'utilisateur que le message a été traité.
>dir=$string Nom du répertoire où rechercher les messages dont les expéditeurs doivent être placés en liste blanche.
>LearnNew={enabled,disabled} Apprend le contenu du sous-répertoire de lecture IMAP «cur» (si désactivée) ou également «new» (si activée) où les courriels sont stockés avant qu'un client se connecte pour les télécharger. Est «désactivée» par défaut. Pas utile ici.
>RemoveSPAMTag={enabled,disabled} Enlève la mauvaise étiquette du sujet du courriel après l'avoir enregistré et replace une copie du message nettoyé dans le répertoire du Courier entrant. Est activée par défaut.
>Uniq={enabled,disabled} Si la sous-clé est activée, Learn va rechercher uniquement dans le dossier correspondant au nom indiqué dans la propriété «dir». S'il n'existe pas, il le créera. Si la fonction est désactivée, Learn ne va pas créer un dossier IMAP, mais recherchera tout dossier contenant la chaîne de caractères de la propriété «dir» (par exemple pour dir=dir : mon_dir, dir3, mondir34). Est activée par défaut.
Learn Clef de configuration pour tout le script.
>cron={none,hourly,daily,weekly,monthly} Effectuer la recherche jamais, toutes les heures, tous les jours, toutes les semaines, tous les mois.
>Exclude=user,list,separated,by,coma Liste des comptes d'utilisateurs qui n'ont pas le droit d'utiliser Learn. Est vide par défaut. "" pour la désactiver.
>Include=user,list,separated,by,coma Liste des comptes d'utilisateurs qui ont le droit d'utiliser Learn. Est prioritaire sur la liste d'exclusion. Si elle n'est pas vide, seuls ces comptes auront accès à Learn. Est vide par défaut. "" pour la désactiver.
>Verbose={enabled,disabled,active} Par défaut, c'est «enabled», c'est à dire qu'un rapport est envoyé par courriel. L'option «active» n'envoie un message que pour les seuls les utilisateurs avec une activité. L'option «disabled» n'envoie pas de rapport.

Par exemple :

 config setprop LearnAsSpam status enabled
 config setprop LearnInWL status enabled

Pour voir la configuration d'une clé, LearnAsSpam, par exemple :

 db configuration show LearnAsSpam

Si la sous-clé Learn>cron est modifiée, le fichier de configuration /etc/cron.d/Learn est modifié et doit être régénéré par la commande :

signal-event email-update

Ou celle-là :

expand-template /etc/cron.d/Learn

Activation de l'auto-apprentissage Bayesien

Vous aurez aussi à activer l'auto-apprentissage Bayesian comme décrit dans la page Email.

Création automatique des répertoires

Ce n'est plus nécessaire si vous activez la sous-clé «Uniq». Pour mémoire, le script utilisé précédemment est conservé dans l'onglet «discussion» de cette page.

Exemples de configuration

Première stratégie de traitement

Je voudrais avoir mon dossier d'apprentissage en tant sous-répertoire du dossier «junkmail». Mes clients Thunderbird sont configurés pour utiliser le dossier «Junk» pour y mettre ce qu'ils pensent être un pourriel, mais mon client iOS veut utiliser un répertoire dénommé «junkmail» et je ne veux pas contrôler plusieurs dossiers. Mon Serveur SME est configuré pour supprimer les courriels placés dans «junkmail» au bout de 30 jours (config getProp spamassassin MessageRetentionTime). Mais je veux que le contenu du dossier «junkmail» soit utilisé pour apprendre. Je me laisse donc un délai de 15 jours avant la suppression pour trouver des faux positifs et les déplacer dans junkmail.not_a_spam ou pour déplacer les pourriels moi-même dans junkmail.junkmail_learn. Je garde la sous-clé «Uniq» activée pour que le dossier IMAP soit créé automatiquement, même si les utilisateurs les suppriment toujours et encore. Je ne veux pas que les pourriels qui n'ont jamais été téléchargés par un client puissent être utilisés en apprentissage, alors je garde LearnNew à désactivé.

config setprop LearnAsSpam status enabled DeleteAfterLearn enabled DelayToMove 15 SpamLinks Junk dir junkmail.junkmail_learn Uniq enabled

Je veux être en mesure de supprimer l'étiquette SPAM des faux-positifs lorsqu'ils sont déplacés vers junkmail.not_a_spam et les récupérer dans ma boîte de réception sans aucune nouvelle étiquette.

config setprop LearnAsHam status enabled dir junkmail.not_a_spam tag "" RemoveSPAMTag enabled Uniq enabled

Enfin, je veux que mon Serveur SME enregistre les pourriels toutes les heures

config setprop Learn cron hourly
signal-event email-update

Deuxième stratégie de traitement

Plus simple : pour la seule clé relative au traitement des pourriels. Dans la messagerie, un nouveau répertoire «Enregistr_pourriels» est créé pour chaque utilisateur dans lequel on va faire transférer les pourriels au bout de n jours. Learn va «apprendre» ces messages puis les détruire. Cela laisse n jours à l'utilisateur pour vérifier que les pourriels qui sont dans le dossier «Pourriels, spams, Indésirables, Junk, ...» selon les messageries, ne sont pas des faux positifs. Voici cette configuration :

status=enabled
dir=Enregistr_pourriels
DelayToMove=n
DeleteAfterLearn=enabled
Uniq=enabled

qui se configure par la commande :

config setprop LearnAsSpam status enabled DeleteAfterLearn enabled DelayToMove n dir Enregistr_pourriels Uniq enabled

Il n'y a rien à faire en dehors de la configuration des sous-clés de cette clé : tout va se faire automatiquement.

Désinstallation

Exécuter seulement :

yum remove smeserver-learn

Source

http://www.sonoracomm.com/index.php?option=com_content&task=view&id=49&Itemid=32

Bugs

S'il vous plait, rapporter les bugs dans la section SME-Contribs du bugzilla et sélectionner le composant smeserver-learn ou utiliser ce lien .

IDProductVersionStatusSummary (3 tasks)
11831SME Contribs10.0UNCONFIRMEDlearn.pl attempts but fails to create default directories for some users.
9387SME Contribs8.2CONFIRMEDNFR: add script to report reported ham and spam, seen junks and not yet seen junk
9110SME Contribs9.2CONFIRMEDNFR: rbl-recheck.sh - a script to find recent emails from servers now listed in RBL

Changelog

Only released version in smecontrib are listed here.

smeserver-learn Changelog: SME 10 (smecontribs)

2021/02/23 Jean-Philipe Pialasse 1.0-16.sme
- make use of systemd [SME: 11281]
- create an update event to configure the contrib without reboot [SME: 11281]
- untag ham to avoid client to move them back to spamdir [SME: 10732]

- move existing spamdir before creating link to replace them [SME: 9524]
2020/12/31 Brian Read 1.0-15.sme
- Remove-deprecated-defined [SME: 11281]
2020/12/20 Brian Read 1.0-14.sme
- Initial Import in SME 10 [SME: 11281]
2016/07/29 Jean-Philipe Pialasse 1.0-13.sme
- fix permission problem on bayes_tok [SME: 9446]
2016/05/14 Jean-Philipe Pialasse 1.0-12.sme
- fix verbose disabled unlink /dev/null [SME: 9512]