GNU/Linux >> Linux Esercitazione >  >> Panels >> Panels

ISPConfig 2.x:come aggiungere un'opzione "Sposta in SPAM" all'installazione di ISPConfig

ISPConfig 2.x:come aggiungere un'opzione "Sposta in SPAM" al tuo ISPConfigInstallazione

Versione 1.0b
Autore:Jens Groh

Panoramica:

Questo documento descrive i passaggi necessari per aggiungere una terza strategia di filtro antispam all'installazione di ISPConfig 2.x. Consentirà a te e ai tuoi utenti di selezionare se desiderano eliminare lo spam, consentire lo spam o spostarlo nella cartella della posta indesiderata IMAP corrispondente.

Questo howto è stato ispirato dal thread del forum di 'grant'(https://www.howtoforge.com/forums/showthread.php?t=15704) che ha descritto lo scambio della strategia di rilascio con il movimento. Seguendo i passaggi seguenti non sostituirai il metodo di rilascio ma ne guadagnerai un terzo.

Prerequisiti:

In questo howto presumo che tu stia utilizzando la configurazione seguente o simile:

  • ISPConfig (v2.2.23 o successiva)
  • Almeno un dominio con una casella di posta configurata e funzionante
  • IMAP utilizza il formato Maildir (non funzionerà con mbox!)

Passaggio 1:modifica dei moduli

Il primo passo è accedere al tuo pannello ISPConfig con l'Amministratore account. Quindi entra in Amministrazione scheda e apri il FormDesigner con Modifica modulo . Cerca isp - Utente ISP e fai clic su modifica .
Ora dovresti vedere la descrizione completa del modulo di quel particolare modulo. Fai attenzione a strategia_spam e premi modifica di nuovo.
Ora cambia l'Elenco valori di quell'elemento del modulo inserendo una linea per la nostra opzione di spostamento futuro in modo che mostri:

accept,accept;
move,move;
discard,discard;
e salva quel modulo. Le opzioni dell'utente di posta nel tuo dominio dovrebbero ora mostrare quella nuova opzione nella casella a discesa della strategia antispam, anche se non ha ancora funzionato. Ora per la parte della console:modifichiamo alcuni file ISPConfig, per dare vita alla nuova opzione.

Fase 2 - Modifica dei file di origine ISPConfig

Ora dobbiamo modificare un sacco di file. Li scriverò e spiegherò più tardi:

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

(attorno alla riga 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__);

(attorno alla riga 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/";
     }
   }

(attorno alla riga 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));

Questo aggiunge funzionalità di base. La modifica aggiunge le cassette postali Maildirmail standard degli utenti come Cestino, Inviati, Posta indesiderata e Bozze ogni volta che viene creato un utente di posta, così possiamo spostare lo spam nella cartella della posta indesiderata corrispondente.

Trova e aggiungi la stringa di spostamento nei file successivi come mostrato:

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

(attorno alla riga 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

(attorno alla riga 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

(esempio per en.lng, intorno alla riga 33)
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";

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

(esempio per en.lng, intorno alla riga 268 e alla riga 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

(esempio per en.lng, intorno alla riga 268 e alla riga 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";

Le ultime tre modifiche che devi apportare al file di lingua o alla tua interfaccia mostreranno semplicemente sposta invece del termine corrispondente nella tua lingua. I tre frammenti di esempio provengono dai file en.lng in quelle directory, modifica altre lingue allo stesso modo (inserisci move voci tra gli altri).

Passaggio 3:crea modelli personalizzati

Ora cambia in /root/ispconfig/isp/conf directory e creare una copia personalizzata di spamassassin.rc.master :

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

Ora modifica il modello personalizzato per riflettere le modifiche necessarie:

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

Passaggio 4 (facoltativo) - Implementa la pulizia del tuo cestino e delle cartelle spam

Questo è già stato affrontato da MuisjeNL nel seguente HowTo:Pulizia automatica dei rifiuti e/o delle cartelle spazzatura con ISPConfig (con Roundcube +Tmpreaper / Tmpwatch)

Passaggio 5 (opzionale) - Implementa un po' di facilità d'uso e crea messaggi di stato

Questo è in forte sviluppo poiché al momento stiamo usando del codice perl piuttosto hackerato. Proverò a ripulirlo o a trasferirlo in un piccolo script.

Conclusione

Quindi ora puoi aggiungere un utente di posta (o cambiarne uno esistente) per usare il nuovo mossa metodo. L'ho testato con un utente che riceveva circa 100-200 spam al giorno e ho cambiato la sua strategia per spostarsi . Con un roundcube simile a un webmailer o collegandomi alla casella di posta tramite IMAP ho ottenuto risultati quasi immediati poiché i primi messaggi sono stati inseriti nella cartella della posta indesiderata anziché nella sua casella di posta.

Assicurati di controllarlo prima di eseguirlo effettivamente sui server di produzione.
Questo tutorial non offre alcuna garanzia. Sii saggio, provalo!

Poiché questo è il primo HowTo su HowtoForge per me (e non sono madrelingua), spero che non avrai problemi ad adattarlo alle tue esigenze. Divertiti con un ottimo software:ISPConfig !

Jens Groh per SANlutions Ltd.


Panels
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Come spostare /usr e /var su un'altra partizione o disco

  3. Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

  4. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  5. I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?

Come aggiornare OpenSUSE 12.2 a 12.3 (desktop e server)

Come modificare i punti di montaggio?

Come viene aggiornato /etc/motd?

Kubuntu mostra un errore all'accesso (file:///usr/share/sddm//themes/breeze/main.qml:no Such File Or Directory)?

"impossibile creare la directory della cache /home//.composer/cache/repo/https—packagist.org/, oppure la directory non è scrivibile. Procedere senza cache”?

Come identificare la versione di Plesk?