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/
$wb["txt_accept"] = "accept"; $wb["txt_move"] = "move"; $wb["txt_discard"] = "discard";
vi/home/admispconfig/ispconfig/web/isp_manager/lib/lang/
$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/
$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.
-
Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?
-
“tidak dapat Membuat Direktori Cache /home//.composer/cache/repo/https—packagist.org/, Atau Direktori Tidak Dapat Ditulis. Melanjutkan Tanpa Cache”?
-
Bagaimana systemd-tmpfiles membersihkan /tmp/ atau /var/tmp (pengganti tmpwatch) di CentOS / RHEL 7