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 a travers les 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é) ou également «new» (si activé) 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é».
>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} Learn content of subdir of the read IMAP folder "cur"(disabled) only or also "new" (enabled- where emails are stored before any client connect to download them) . Default is disabled. Not useful here.
>RemoveSPAMTag={enabled,disabled} Remove bad [SPAM] tag from subject after learning and before putting the copy of cleaned the message back in your INBOX. Default is enabled.
>Uniq={enabled,disabled} If enabled, it will search the only corresponding folder named after "dir" property. If it does not exist it will create it. If disabled it will not create any IMAP folder, but will search for all folder containing the content of "dir" property (i.e. *dir* like mon_dir, dir3, mondir34) . Default is enabled.
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} Learn content of subdir of the read IMAP folder "cur"(disabled) only or also "new" (enabled- where emails are stored before any client connect to download them) . Default is disabled. Not useful.
>RemoveSPAMTag={enabled,disabled} Remove bad [SPAM] tag from subject after learning and before putting the copy of cleaned the message back in your INBOX. Default is enabled.
>Uniq={enabled,disabled} If enabled, it will search the only corresponding folder named after "dir" property. If it does not exist it will create it. If disabled it will not create any IMAP folder, but will search for all folder containing the content of "dir" property (i.e. *dir* like mon_dir, dir3, mondir34) . Default is enabled.
Learn Clef de configuration pour le script généralement
>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 List of users without the right to use Learn. Default is empty "" for disabled.
>Include=user,list,separated,by,coma List of user who has the right to use Learn. Override Exclude list. If not empty, only these users will have access to Learn. Default is empty "" for disabled.
>Verbose={enabled,disabled}

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]