GNU/Linux >> Belajar Linux >  >> Panels >> Panels

ISPConfig 2.x:Cara Menambahkan Opsi "Pindahkan ke SPAM" ke Instalasi ISPConfig Anda

ISPConfig 2.x:Cara Menambahkan Opsi "Pindahkan ke SPAM" ke Instalasi ISPConfig

Versi 1.0b
Penulis:Jens Groh

Ikhtisar:

Dokumen ini menjelaskan langkah-langkah yang diperlukan untuk menambahkan strategi filter spam ketiga ke instalasi ISPConfig 2.x Anda. Ini akan memungkinkan Anda dan pengguna Anda untuk memilih, apakah mereka ingin menghapus spam, mengizinkan spam, atau memindahkannya ke folder email sampah IMAP yang sesuai.

Howto ini terinspirasi oleh thread forum dari 'grant'(https://www.howtoforge.com/forums/showthread.php?t=15704) yang menjelaskan menukar strategi drop dengan bergerak. Dengan mengikuti langkah-langkah di bawah ini, Anda tidak akan mengganti metode drop tetapi mendapatkan yang ketiga.

Prasyarat:

Dalam cara ini saya akan menganggap Anda menggunakan konfigurasi berikut atau yang serupa:

  • ISPConfig (v2.2.23 atau lebih baru)
  • Setidaknya satu domain dengan kotak surat yang disiapkan dan dijalankan
  • IMAP menggunakan format Maildir (ini tidak akan bekerja dengan mbox!)

Langkah 1 - Mengubah Formulir

Langkah pertama adalah masuk ke Panel ISPConfig Anda dengan Admin Akun. Kemudian masukkan Administrasi tab dan buka FormDesigner dengan Edit Formulir . Cari ISP - Pengguna ISP dan klik edit .
Sekarang Anda akan melihat deskripsi formulir lengkap dari formulir tersebut. Perhatikan strategi_spam dan tekan edit lagi.
Sekarang ubah Daftar nilai elemen formulir itu dengan menyisipkan baris untuk opsi pemindahan masa depan kita sehingga itu menunjukkan:

accept,accept;
move,move;
discard,discard;
dan simpan formulir itu. Opsi pengguna email Anda di domain Anda sekarang harus menunjukkan opsi baru itu di kotak tarik-turun strategi spam - meskipun belum berfungsi. Sekarang untuk bagian konsol:Mari edit beberapa file ISPConfig, untuk menghidupkan opsi baru.

Langkah 2 - Mengedit File Sumber ISPConfig

Sekarang kita harus mengedit banyak file. Saya akan menuliskannya dan menjelaskannya nanti:

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

(sekitar baris 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__);

(sekitar baris 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/";
     }
   }

(sekitar baris 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));

Ini menambahkan fungsionalitas inti. Perubahan menambahkan kotak Maildirmail standar pengguna seperti Sampah, Terkirim, Sampah, dan Konsep setiap kali pengguna email dibuat, sehingga kami dapat memindahkan spam ke folder sampah yang sesuai.

Temukan dan tambahkan string pindah ke seluruh file berikutnya seperti yang ditunjukkan:

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

(sekitar baris 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

(sekitar baris 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

(contoh untuk en.lng, sekitar baris 33)
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";

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

(contoh untuk en.lng, sekitar baris 268 dan baris 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

(contoh untuk en.lng, sekitar baris 268 dan baris 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";

Tiga perubahan terakhir yang harus Anda lakukan per file bahasa atau antarmuka Anda hanya akan menampilkan pindah alih-alih istilah yang sesuai dalam bahasa Anda. Tiga contoh cuplikan berasal dari file en.lng di direktori tersebut, edit bahasa lain dengan cara yang sama (masukkan move entri di antara yang lain).

Langkah 3 - Buat Template yang Disesuaikan

Sekarang ubah ke /root/ispconfig/isp/conf direktori dan buat salinan khusus spamassassin.rc.master :

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

Sekarang edit template khusus untuk mencerminkan perubahan yang diperlukan:

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

Langkah 4 (opsional) - Terapkan Pembersihan folder sampah dan spam Anda

Ini sudah ditangani oleh MuisjeNL dalam Cara berikut:Pembersihan Otomatis Sampah Dan/Atau Folder Sampah Dengan ISPConfig (Dengan Roundcube +Tmpreaper / Tmpwatch)

Langkah 5 (opsional) - Terapkan beberapa keramahan pengguna dan buat statusmail

Ini sedang dalam pengembangan berat karena kami menggunakan beberapa perlcode yang cukup diretas saat ini. Saya akan mencoba dan membersihkannya atau mentransfernya ke skrip yang cukup kecil.

Kesimpulan

Jadi sekarang Anda dapat menambahkan pengguna email (atau mengubah yang sudah ada) untuk menggunakanpemindahan new yang baru metode. Saya mengujinya dengan pengguna mendapatkan sekitar 100-200 email spam sehari dan mengubah strateginya menjadi bergerak . Dengan roundcube seperti webmailer atau dengan menghubungkan ke kotak surat melalui IMAP, saya hampir mendapatkan hasil langsung karena surat pertama jatuh ke folder sampah daripada kotak masuknya.

Pastikan Anda memeriksa ini sebelum benar-benar menjalankannya di server produksi.
Tutorial ini hadir tanpa jaminan apapun. Bijaksanalah, ujilah!

Karena ini adalah HowTo pertama di HowtoForge untuk saya (dan saya bukan penutur asli), saya harap Anda tidak akan mengalami masalah dalam menyesuaikannya dengan kebutuhan Anda. Bersenang-senang dengan Perangkat Lunak yang hebat:ISPConfig !

Jens Groh untuk SANlutions Ltd.


Panels
  1. Cara Upgrade OpenSUSE 12.2 Ke 12.3 (Desktop &Server)

  2. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  3. Bash =~ Regex Dan Https://regex101.com/?

  1. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  2. “tidak dapat Membuat Direktori Cache /home//.composer/cache/repo/https—packagist.org/, Atau Direktori Tidak Dapat Ditulis. Melanjutkan Tanpa Cache”?

  3. Bagaimana systemd-tmpfiles membersihkan /tmp/ atau /var/tmp (pengganti tmpwatch) di CentOS / RHEL 7

  1. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  2. Bagaimana cara mengetahui dari folder mana suatu proses sedang berjalan?

  3. unix:///var/run/supervisor.sock tidak ada file seperti itu