GNU/Linux >> Tutoriels Linux >  >> Panels >> Panels

ISPConfig 2.x :Comment ajouter une option "Déplacer vers le SPAM" à votre installation ISPConfig

ISPConfig 2.x :Comment ajouter une option "Déplacer vers le SPAM" à votre ISPConfigInstallation

Version 1.0b
Auteur :Jens Groh

Aperçu :

Ce document décrit les étapes nécessaires pour ajouter une troisième stratégie de filtrage anti-spam à votre installation ISPConfig 2.x. Il vous permettra, ainsi qu'à vos utilisateurs, de choisir s'ils souhaitent supprimer le spam, autoriser le spam ou le déplacer vers le dossier de courrier indésirable IMAP correspondant.

Ce guide a été inspiré par le fil du forum de 'grant'(https://www.howtoforge.com/forums/showthread.php?t=15704) qui décrit l'échange de la stratégie de drop avec le déplacement. En suivant les étapes ci-dessous, vous ne remplacerez pas la méthode drop mais en gagnerez une troisième.

Prérequis :

Dans ce guide, je suppose que vous utilisez la configuration suivante ou une configuration similaire :

  • ISPConfig (v2.2.23 ou ultérieure)
  • Au moins un domaine avec une boîte aux lettres configurée et en cours d'exécution
  • IMAP utilise le format Maildir (cela ne fonctionnera pas avec mbox !)

Étape 1 - Modification des formulaires

La première étape consiste à vous connecter à votre panneau ISPConfig avec l'administrateur Compte. Entrez ensuite dans l'Administration et ouvrez le FormDesigner avec Modifier le formulaire . Rechercher ISP - Utilisateur ISP et cliquez sur modifier .
Vous devriez maintenant voir la description complète de ce formulaire particulier.Recherchez spam_strategy et appuyez sur modifier à nouveau.
Modifiez maintenant la Liste de valeurs de cet élément de formulaire en insérant une ligne pour notre future option de déplacement afin qu'elle affiche :

accepter, accepter ; déplacer, déplacer ; rejeter, rejeter ;
et enregistrez ce formulaire. Vos options d'utilisateur de messagerie dans votre domaine devraient maintenant afficher cette nouvelle option dans la liste déroulante de la stratégie anti-spam - même si elle n'a pas encore fonctionné. Passons maintenant à la partie console :éditons quelques fichiers ISPConfig, pour donner vie à la nouvelle option.

Étape 2 - Modification des fichiers source ISPConfig

Maintenant, nous devons éditer un tas de fichiers. Je vais juste les écrire et expliquer plus tard :

vi/root/ispconfig/scripts/lib/classes/ispconfig_procmail.lib.php

(autour de la ligne 109):
 if(!is_dir($web_path."/user/".$user_username."/Maildir"))$mod->log->caselog("maildirmake".$web_path."/ user/".$user_username."/Maildir &> /dev/null", "maildirmake".$web_path."/user/".$user_username."/Maildir &> /dev/null", __LINE__); // AJOUT :créer des sous-dossiers IMAP if(!is_dir($web_path."/user/".$user_username."/Maildir/.Drafts"))$mod->log->caselog("maildirmake".$web_path." /user/".$user_username."/Maildir/.Drafts &> /dev/null","maildirmake ".$web_path."/user/".$user_username."/Maildir/.Drafts &>/dev/null ", __DOUBLER__); if(!is_dir($web_path."/user/".$user_username."/Maildir/.Junk"))$mod->log->caselog("maildirmake".$web_path."/user/".$user_username ."/Maildir/.Junk &> /dev/null","maildirmake ".$web_path."/user/".$user_username."/Maildir/.Junk &>/dev/null", __LINE__); if(!is_dir($web_path."/user/".$user_username."/Maildir/.Sent"))$mod->log->caselog("maildirmake".$web_path."/user/".$user_username ."/Maildir/.Sent &> /dev/null","maildirmake ".$web_path."/user/".$user_username."/Maildir/.Sent &>/dev/null", __LINE__); if(!is_dir($web_path."/user/".$user_username."/Maildir/.Trash"))$mod->log->caselog("maildirmake".$web_path."/user/".$user_username ."/Maildir/.Trash &> /dev/null","maildirmake ".$web_path."/user/".$user_username."/Maildir/.Trash &>/dev/null", __LINE__); if(!is_dir($web_path."/user/".$user_username."/Maildir"))$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username."/Maildir" ,0700), "create ".$web_path."/user/".$user_username."/Maildir", $this->FILE,__LINE__); // AJOUT :créer des sous-dossiers IMAP if(!is_dir($web_path."/user/".$user_username."/Maildir/.Drafts"))$mod->log->phpcaselog(mkdir($web_path."/user /".$user_username."/Maildir/.Drafts",0700), "create ".$web_path."/user/".$user_username."/Maildir/.Drafts",$this->FILE, __LINE__); if(!is_dir($web_path."/user/".$user_username."/Maildir/.Junk"))$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username." /Maildir/.Junk",0700), "create ".$web_path."/user/".$user_username."/Maildir/.Junk",$this->FILE, __LINE__); if(!is_dir($web_path."/user/".$user_username."/Maildir/.Sent"))$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username." /Maildir/.Sent",0700), "create ".$web_path."/user/".$user_username."/Maildir/.Sent",$this->FILE, __LINE__); if(!is_dir($web_path."/user/".$user_username."/Maildir/.Trash"))$mod->log->phpcaselog(mkdir($web_path."/user/".$user_username." /Maildir/.Trash",0700), "create ".$web_path."/user/".$user_username."/Maildir/.Trash",$this->FILE, __LINE__); exec("chown -R ".$user_username.":web".$web_doc_id."".$web_path."/user/".$user_username."/Maildir"); exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir"); // AJOUTER :créer des sous-dossiers IMAP exec("chown -R ".$user_username.":web".$web_doc_id."".$web_path."/user/".$user_username."/Maildir/.Drafts"); exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Drafts"); exec("chown -R ".$user_username.":web".$web_doc_id."".$web_path."/user/".$user_username."/Maildir/.Junk"); exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Junk"); exec("chown -R ".$user_username.":web".$web_doc_id."".$web_path."/user/".$user_username."/Maildir/.Sent"); exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Sent"); exec("chown -R ".$user_username.":web".$web_doc_id."".$web_path."/user/".$user_username."/Maildir/.Trash"); exec("chmod 700 ".$web_path."/user/".$user_username."/Maildir/.Trash"); if($user["user_admin"]){ exec("rm -f $web_path/Maildir &> /dev/null"); $mod->log->phpcaselog(@symlink($web_path."/user/".$user_username."/Maildir",$web_path."/Maildir"), "symlink ".$web_path."/Maildir", $this->FILE,__LINE__);

(autour de la ligne 300)
 $mod->tpl->define( array(table => "spamassassin.rc.master")); if(!isset($user["spam_strategy"])) $user["spam_strategy"] ="accepter" ; if($user["spam_strategy"] =="accepter"){ $spam_comment ="#" ; $spam_command =".Junk/" ; } else { $spam_comment ="" ; if($user["spam_strategy"] =="discard"){ $spam_command ="/dev/null" ; } else { $spam_command =".Junk/" ; } }

(vers la ligne 330)
 if(is_file('/home/admispconfig/ispconfig/tools/spamassassin/usr/local/bin/spamassassin')){@@ -302,6 +333,7 @ @ // Variablen zuweisen $mod->tpl->assign( array(PREFS_FILE =>$web_path."/user/".$user_username."/.user_prefs", SPAM_COMMENT => $spam_comment, SPAM_COMMAND => $spam_command, SPAMASSASSIN_PATH => $spamassassin_path, USERNAME =>$user_username));

Cela ajoute des fonctionnalités de base. La modification ajoute les boîtes aux lettres Maildir standard des utilisateurs telles que Corbeille, Envoyés, Indésirables et Brouillons chaque fois qu'un mailuseest créé, nous pouvons donc déplacer le spam dans le dossier de courrier indésirable correspondant.

Recherchez et ajoutez la chaîne de déplacement dans les fichiers suivants, comme indiqué :

vi/home/admispconfig/ispconfig/lib/classes/ispconfig_isp_user.lib.php

(autour de la ligne 102)
 $doc->deck[1]->elements[11]->visible =0 ; } $doc->deck[2]->elements[2]->values["accept"] =$go_api->lng("txt_accept"); $doc->deck[2]->elements[2]->values["move"] =$go_api->lng("txt_move"); $doc->deck[2]->elements[2]->values["discard"] =$go_api->lng("txt_discard"); } 

vi/home/admispconfig/ispconfig/web/mailuser/mail/table/user.table.php

(vers la ligne 135)
 'regex' => "", 'errmsg' => "", 'value' => array( "accept" => $app->lng("txt_accept"), "move" =>$app->lng("txt_move"), "discard" =>$app->lng("txt_discard"))); $table['spam_hits'] =array('datatype' => "VARCHAR",

vi/home/admispconfig/ispconfig/web/mailuser/lib/lang/ .lng

(exemple pour en.lng, autour de la ligne 33)
 $wb["txt_accept"] ="accept" ; $wb["txt_move"] ="déplacer" ; $wb["txt_discard"] ="jeter" ;

vi/home/admispconfig/ispconfig/web/isp_manager/lib/lang/ .lng

(exemple pour en.lng, autour des lignes 268 et 452)
 $wb["Spamfilter"] ='Spamfilter'; $wb["Antivirus"] ='Antivirus'; $wb["accepter"] ='accepter' ; $wb["déplacer"] ='déplacer' ; $wb["discard"] ='discard'; $wb["Spam Strategie"] ='Stratégie anti-spam' ; $wb["Spam Hits"] ='Spam Hits';(...) $wb["Keine Vorlage verwenden"] ="Paramètres individuels"; $wb["Keine Vorlage vorhanden"] ="Aucun plan d'hébergement disponible" ; $wb["txt_accept"] ="accepter" ; $wb["txt_move"] ="déplacer" ; $wb["txt_discard"] ="jeter" ; $wb["Eigenschaften"] ="Propriétés" ; $wb["ISP Datenbank"] ="Base de données ISP" ;

vi/home/admispconfig/ispconfig/web/isp_kunde/lib/lang/ .lng

(exemple pour en.lng, autour des lignes 268 et 449)
 $wb["Spamfilter"] ='Spamfilter'; $wb["Antivirus"] ='Antivirus'; $wb["accepter"] ='accepter' ; $wb["déplacer"] ='déplacer' ; $wb["discard"] ='discard'; $wb["Spam Strategie"] ='Stratégie anti-spam' ; $wb["Spam Hits"] ='Spam Hits';(...) $wb["Keine Vorlage verwenden"] ="Paramètres individuels"; $wb["Keine Vorlage vorhanden"] ="Aucun plan d'hébergement disponible" ; $wb["txt_accept"] ="accepter" ; $wb["txt_move"] ="déplacer" ; $wb["txt_discard"] ="jeter" ; $wb["Eigenschaften"] ="Propriétés" ; $wb["ISP Datenbank"] ="Base de données ISP" ;

Les trois derniers changements que vous devez faire par fichier de langue ou votre interface affichera simplement déplacer au lieu du terme correspondant dans votre langue. Les trois extraits d'exemple proviennent des fichiers en.lng de ces répertoires, modifiez les autres langues de la même manière (insérez le déplacer entrées entre les autres).

Étape 3 - Créer des modèles personnalisés

Passez maintenant à /root/ispconfig/isp/conf répertoire et créez une copie personnalisée de spamassassin.rc.master :

cd /root/ispconfig/isp/conf
cp -pr spamassassin.rc.master ./customized_templates/cd customized_templates

Modifiez maintenant le modèle personnalisé pour refléter les modifications nécessaires :

# Tous les e-mails marqués comme spam (par exemple, avec un score supérieur au seuil défini)# sont déplacés vers "/dev/null".{SPAM_COMMENT} : 0 : {SPAM_COMMENT}* ^X-Spam-Status :Oui {SPAM_COMMENT}{SPAM_COMMAND}

Étape 4 (facultative) - Mettre en œuvre le nettoyage de vos dossiers corbeille et spam

Cela a déjà été adressé par MuisjeNL dans le HowTo suivant :nettoyage automatique des dossiers de corbeille et/ou de courrier indésirable avec ISPConfig (avec Roundcube + Tmpreaper / Tmpwatch)

Étape 5 (facultatif) - Implémenter une certaine convivialité et créer des statusmails

Ceci est en cours de développement car nous utilisons actuellement un perlcode assez piraté. Je vais essayer de nettoyer ça ou de le transférer dans un joli petit script.

Conclusion

Vous pouvez donc maintenant ajouter un utilisateur de messagerie (ou en modifier un existant) pour utiliser le nouveau mouvement méthode. Je l'ai testé avec un utilisateur recevant environ 100 à 200 spams par jour et j'ai changé sa stratégie pour se déplacer . Avec un cube rond de type webmailer ou en me connectant à la boîte aux lettres via IMAP, j'ai presque eu des résultats immédiats car les premiers e-mails sont tombés dans le dossier de courrier indésirable plutôt que dans sa boîte de réception.

Assurez-vous de vérifier cela avant de l'exécuter sur les serveurs de production.
Ces tutoriels sont livrés sans aucune garantie. Soyez sage, testez-le !

Comme c'est le premier HowTo sur HowtoForge pour moi (et je ne suis pas un locuteur natif), j'espère que vous n'aurez aucun problème à l'adapter à vos besoins. Amusez-vous avec un super logiciel :ISPConfig !

Jens Groh pour SANlutions Ltd.


Panels
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Debian – Déplacer /var, /home vers une partition séparée ?

  3. Comment changer les points de montage ?

  4. Comment /etc/motd est-il mis à jour ?

  5. Kubuntu affiche une erreur lors de la connexion (file:///usr/share/sddm//themes/breeze/main.qml:no Such File Or Directory) ?

Quelle est la portabilité de /dev/stdin, /dev/stdout et /dev/stderr ?

Comment identifier la version de Plesk ?

Comment systemd-tmpfiles nettoie /tmp/ ou /var/tmp (remplacement de tmpwatch) dans CentOS / RHEL 7

Comment savoir à partir de quel dossier un processus est en cours d'exécution ?

echo ou print /dev/stdin /dev/stdout /dev/stderr

Comment changer /tmp par défaut en /home/user/tmp