GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

ISPConfig 2.x:So fügen Sie Ihrer ISPConfig-Installation eine "Move to SPAM"-Option hinzu

ISPConfig 2.x:So fügen Sie eine "Move to SPAM"-Option zu Ihrer ISPConfig-Installation

Version 1.0b
Autor:Jens Groh

Übersicht:

Dieses Dokument beschreibt die Schritte, die erforderlich sind, um Ihrer ISPConfig 2.x-Installation eine dritte Spam-Filterstrategie hinzuzufügen. Sie und Ihre Benutzer können wählen, ob sie Spam verwerfen, zulassen oder in den entsprechenden IMAP-Junk-Mail-Ordner verschieben möchten.

Dieses Howto wurde durch den Forenthread von 'grant' (https://www.howtoforge.com/forums/showthread.php?t=15704) inspiriert, der den Austausch der Drop-Strategie mit dem Bewegen beschrieb. Indem Sie die folgenden Schritte befolgen, ersetzen Sie die Drop-Methode nicht, sondern erhalten eine dritte.

Voraussetzungen:

In diesem Howto gehe ich davon aus, dass Sie die folgende oder eine ähnliche Konfiguration verwenden:

  • ISPConfig (v2.2.23 oder höher)
  • Mindestens eine Domain mit eingerichtetem und ausgeführtem Postfach
  • IMAP verwendet das Maildir-Format (funktioniert nicht mit mbox!)

Schritt 1 - Formulare ändern

Der erste Schritt besteht darin, sich mit dem Admin in Ihr ISPConfig-Panel einzuloggen Konto. Geben Sie dann die Verwaltung ein Tab und öffnen Sie den FormularDesigner mit Formular bearbeiten . Suchen Sie nach isp - ISP-Benutzer und klicken Sie auf Bearbeiten .
Sie sollten jetzt die vollständige Formularbeschreibung dieses bestimmten Formulars sehen. Achten Sie auf spam_strategy und klicken Sie auf Bearbeiten erneut.
Ändern Sie nun die Werteliste dieses Formularelements, indem Sie eine Zeile für unsere Option zum zukünftigen Verschieben einfügen, sodass Folgendes angezeigt wird:

accept,accept;
move,move;
discard,discard;
und speichern Sie dieses Formular. Ihre E-Mail-Benutzeroptionen in Ihrer Domain sollten jetzt diese neue Option in der Dropdown-Box Spam-Strategie anzeigen - obwohl sie noch keine Funktion hat. Nun zum Konsolenteil:Bearbeiten wir einige ISPConfig-Dateien, um der neuen Option Leben einzuhauchen.

Schritt 2 - ISPConfig-Quelldateien bearbeiten

Jetzt müssen wir eine Reihe von Dateien bearbeiten. Ich schreibe sie einfach auf und erkläre sie später:

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

(etwa Zeile 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__);
        // ADD: create IMAP subfolders
        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", __LINE__);
        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__);
 
        // ADD: create IMAP subfolders
        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");
 
 	// ADD: create IMAP subfolders
 	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__);

(etwa Zeile 300)
   $mod->tpl->define( array(table    => "spamassassin.rc.master"));
 
   if(!isset($user["spam_strategy"])) $user["spam_strategy"] = "accept";

   if($user["spam_strategy"] == "accept"){
     $spam_comment = "#";
     $spam_command = ".Junk/";
   } else {
     $spam_comment = "";
     if($user["spam_strategy"] == "discard"){
       $spam_command = "/dev/null";
     } else {
       $spam_command = ".Junk/";
     }
   }

(um Zeile 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));

Dies fügt Kernfunktionalität hinzu. Die Änderung fügt Benutzern standardmäßige Maildir-Postfächer wie Papierkorb, Gesendet, Junk und Entwürfe hinzu jedes Mal, wenn ein E-Mail-Benutzer erstellt wird, damit wir Spam in den entsprechenden Junk-Ordner verschieben können.

Suchen und fügen Sie die Bewegungszeichenfolge in den nächsten Dateien wie gezeigt hinzu:

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

(etwa Zeile 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

(um Zeile 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

(Beispiel für en.lng, etwa Zeile 33)
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";

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

(Beispiel für en.lng, etwa Zeile 268 und Zeile 452)
 $wb["Spamfilter"] = 'Spamfilter';
 $wb["Antivirus"] = 'Antivirus';
 $wb["accept"] = 'accept';
 $wb["move"] = 'move';
 $wb["discard"] = 'discard';
 $wb["Spam Strategie"] = 'Spam Strategy';
 $wb["Spam Hits"] = 'Spam Hits';
(...)
 $wb["Keine Vorlage verwenden"] = "Individual Settings";
 $wb["Keine Vorlage vorhanden"] = "No Hostingplan Available";
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";
 $wb["Eigenschaften"] = "Properties";
 $wb["ISP Datenbank"] = "ISP Database";

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

(Beispiel für en.lng, etwa Zeile 268 und Zeile 449)
 $wb["Spamfilter"] = 'Spamfilter';
 $wb["Antivirus"] = 'Antivirus';
 $wb["accept"] = 'accept';
 $wb["move"] = 'move';
 $wb["discard"] = 'discard';
 $wb["Spam Strategie"] = 'Spam Strategy';
 $wb["Spam Hits"] = 'Spam Hits';
(...)
 $wb["Keine Vorlage verwenden"] = "Individual Settings";
 $wb["Keine Vorlage vorhanden"] = "No Hostingplan Available";
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";
 $wb["Eigenschaften"] = "Properties";
 $wb["ISP Datenbank"] = "ISP Database";

Die letzten drei Änderungen müssen Sie pro Sprachdatei vornehmen oder Ihr Interface zeigt nur move an anstelle des entsprechenden Begriffs in Ihrer Sprache. Die drei Beispielausschnitte stammen aus den en.lng-Dateien in diesen Verzeichnissen, bearbeiten Sie andere Sprachen auf die gleiche Weise (fügen Sie die Verschiebung ein Einträge zwischen den anderen).

Schritt 3 – Benutzerdefinierte Vorlagen erstellen

Wechseln Sie nun in die /root/ispconfig/isp/conf Verzeichnis und erstellen Sie eine benutzerdefinierte Kopie von spamassassin.rc.master :

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

Bearbeiten Sie nun die benutzerdefinierte Vorlage, um die erforderlichen Änderungen widerzuspiegeln:

# All mail tagged as spam (eg. with a score higher than the set threshold)
# is moved to "/dev/null".
{SPAM_COMMENT}:0:
{SPAM_COMMENT}* ^X-Spam-Status: Yes
{SPAM_COMMENT}{SPAM_COMMAND}

Schritt 4 (optional) – Implementieren Sie die Säuberung Ihrer Papierkorb- und Spamordner

Dies wurde bereits von MuisjeNL angesprochen im folgenden HowTo:Automatisches Säubern von Papierkorb- und/oder Junk-Ordnern mit ISPConfig (mit Roundcube +Tmpreaper / Tmpwatch)

Schritt 5 (optional) - Implementieren Sie etwas Benutzerfreundlichkeit und erstellen Sie Statusmails

Dies befindet sich in intensiver Entwicklung, da wir im Moment ziemlich gehackten Perlcode verwenden. Ich werde versuchen, das zu bereinigen oder in ein hübsches kleines Skript zu übertragen.

Schlussfolgerung

Sie können also jetzt einen Mailuser hinzufügen (oder einen bestehenden ändern), um den neuen move zu verwenden Methode. Ich habe es mit einem Benutzer getestet, der etwa 100-200 Spam-Mails pro Tag erhielt, und seine Strategie auf Bewegung geändert . Mit einem Webmailer-ähnlichen Roundcube oder einer Verbindung zum Postfach über IMAP hatte ich fast sofortige Ergebnisse, da die ersten Mails nicht in seinem Posteingang, sondern im Junk-Ordner landeten.

Stellen Sie sicher, dass Sie dies überprüfen, bevor Sie es tatsächlich auf Produktionsservern ausführen.
Diese Tutorials sind ohne Gewähr. Sei weise, teste es!

Da dies für mich das erste HowTo auf HowtoForge ist (und ich kein Muttersprachler bin), hoffe ich, dass Sie keine Probleme haben, es an Ihre Bedürfnisse anzupassen. Viel Spaß mit einer tollen Software:ISPConfig !

Jens Groh für SANlutions Ltd.


Panels
  1. So aktualisieren Sie OpenSUSE 12.2 auf 12.3 (Desktop &Server)

  2. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

  3. Debian – /var, /home auf separate Partition verschieben?

  4. Wie wird /etc/motd aktualisiert?

  5. „Cache-Verzeichnis /home//.composer/cache/repo/https—packagist.org/ kann nicht erstellt werden, oder Verzeichnis ist nicht beschreibbar. Ohne Cache fortfahren“?

Kubuntu zeigt Fehler beim Login (file:///usr/share/sddm//themes/breeze/main.qml:no Such File or Directory)?

Wie erkenne ich die Plesk-Version?

So verschieben Sie /usr und /var auf eine andere Partition oder Festplatte

Wie finde ich heraus, aus welchem ​​Ordner ein Prozess läuft?

unix:///var/run/supervisor.sock keine solche Datei

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?