GNU/Linux >> Znalost Linux >  >> Panels >> Panels

ISPConfig 2.x:Jak přidat do instalace ISPConfig možnost „Přesunout do SPAMu“

ISPConfig 2.x:Jak přidat možnost „Přesunout do SPAMu“ do ISPConfigInstallation

Verze 1.0b
Autor:Jens Groh

Přehled:

Tento dokument popisuje kroky potřebné k přidání třetí strategie filtrování nevyžádané pošty do vaší instalace ISPConfig 2.x. To vám a vašim uživatelům umožní vybrat, zda chtějí spam zahodit, povolit spam nebo jej přesunout do odpovídajícího IMAP složky nevyžádané pošty.

Tento návod byl inspirován vláknem fóra od 'grant' (https://www.howtoforge.com/forums/showthread.php?t=15704), který popsal výměnu strategie dropu za přesun. Podle následujících kroků nenahradíte metodu drop, ale získáte třetí.

Předpoklady:

V tomto návodu budu předpokládat, že používáte následující nebo podobnou konfiguraci:

  • ISPConfig (v2.2.23 nebo novější)
  • Alespoň jedna doména s nastavenou a spuštěnou poštovní schránkou
  • IMAP používá formát Maildir (toto nebude fungovat s mbox!)

Krok 1 – Změna formulářů

Prvním krokem je přihlášení do panelu ISPConfig pomocí Admin účet. Poté zadejte Administrace a otevřete FormDesigner pomocí Upravit formulář . Vyhledejte isp – uživatel ISP a klikněte na upravit .
Nyní byste měli vidět úplný popis formuláře pro tento konkrétní formulář. Podívejte se na spam_strategy a stiskněte upravit znovu.
Nyní změňte Seznam hodnot tohoto prvku formuláře vložením řádku pro naši možnost budoucího přesunu, aby se zobrazilo:

accept,accept;
move,move;
discard,discard;
a uložte tento formulář. Možnosti uživatele pošty ve vaší doméně by nyní měly ukazovat tuto novou možnost v rozevíracím poli strategie spamu – i když zatím nemá žádnou funkci. Nyní ke konzolové části:Pojďme upravit některé soubory ISPConfig, abychom nové možnosti vdechli život.

Krok 2 – Úprava zdrojových souborů ISPConfig

Nyní musíme upravit spoustu souborů. Jen je napíšu a vysvětlím později:

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

(kolem řádku 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__);

(kolem řádku 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/";
     }
   }

(kolem řádku 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));

To přidává základní funkce. Tato změna přidává uživatelům standardní poštovní schránky jako Koš, Odeslaná, Nevyžádaná a Koncepty pokaždé, když se vytvoří mailuseris, takže můžeme přesunout spam do příslušné složky nevyžádané pošty.

Najděte a přidejte řetězec přesunu do dalších souborů, jak je znázorněno:

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

(kolem řádku 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

(kolem řádku 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

(příklad pro en.lng, kolem řádku 33)
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";

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

(příklad pro en.lng, kolem řádku 268 a řádku 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

(příklad pro en.lng, kolem řádku 268 a řádku 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";

Poslední tři změny, které musíte provést pro jazykový soubor nebo vaše rozhraní, se zobrazí pouze přesunout místo odpovídajícího výrazu ve vašem jazyce. Tři ukázkové úryvky jsou ze souborů en.lng v těchto adresářích, ostatní jazyky upravte stejným způsobem (vložte přesunout záznamy mezi ostatními).

Krok 3 – Vytvoření přizpůsobených šablon

Nyní přejděte na /root/ispconfig/isp/conf adresář a vytvořte vlastní kopii spamassassin.rc.master :

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

Nyní upravte vlastní šablonu tak, aby odrážela potřebné změny:

# 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}

Krok 4 (volitelný) – Implementujte čištění vašeho koše a složek se spamem

Toto již řešilo MuisjeNL v následujícím HowTo:Automatické čištění koše a/nebo nevyžádaných složek pomocí ISPConfig (s Roundcube + Tmpreaper / Tmpwatch)

Krok 5 (volitelný) – Implementujte určitou uživatelskou přívětivost a vytvořte stavové e-maily

Toto je pod intenzivním vývojem, protože v tuto chvíli používáme nějaký pěkně hacknutý perlkód. Pokusím se to vyčistit nebo to přenést do docela malého skriptu.

Závěr

Nyní tedy můžete přidat uživatele pošty (nebo změnit stávajícího), aby mohl použít novýpřesun metoda. Testoval jsem to s uživatelem, který dostává kolem 100–200 spamů denně, a změnil jsem jeho strategii na přesunout . S kruhovou krychlí podobnou webmaileru nebo připojením k poštovní schránce přes IMAP jsem měl téměř okamžité výsledky, protože první e-maily padly do složky nevyžádané pošty, nikoli do jeho doručené pošty.

Ujistěte se, že jste to zaškrtli, než to skutečně spustíte na produkčních serverech.
Tento návod je dodáván bez jakékoli záruky. Buďte moudří, vyzkoušejte to!

Protože je to pro mě první HowTo na HowtoForge (a nejsem žádný rodilý mluvčí), doufám, že nebudete mít problémy s jeho přizpůsobením vašim potřebám. Bavte se se skvělým softwarem:ISPConfig !

Jens Groh za SANlutions Ltd.


Panels
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Bash =~ Regex A Https://regex101.com/?

  3. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  1. Kubuntu zobrazuje chybu při přihlášení (file:///usr/share/sddm//themes/breeze/main.qml:žádný takový soubor nebo adresář)?

  2. „Nelze vytvořit adresář mezipaměti /home//.composer/cache/repo/https—packagist.org/, nebo adresář není zapisovatelný. Pokračovat bez mezipaměti“?

  3. Jak systemd-tmpfiles vyčistí /tmp/ nebo /var/tmp (náhrada tmpwatch) v CentOS / RHEL 7

  1. Jak přesunout /usr a /var do jiného oddílu nebo disku

  2. Nainstalujte binární soubory do /bin, /sbin, /usr/bin a /usr/sbin, interakce s --prefix a DESTDIR

  3. unix:///var/run/supervisor.sock žádný takový soubor