ISPConfig 2.x:如何添加“移动到SPAM” - 选项到您的ISPConfig安装

ISPConfig 2.x:如何添加“移至垃圾邮件” - 选择您的ISPConfig安装

版本1.0b
作者:Jens Groh <jens [dot] groh [at] novatech [dot] org>

概述:

本文档介绍了在ISPConfig 2.x安装中添加第三个垃圾邮件过滤器策略所需的步骤。 它将允许您和您的用户选择他们想要丢弃垃圾邮件,允许垃圾邮件或将其移动到相应的IMAP垃圾邮件文件夹。

这个howto受到来自“grant”(https://www.youcl.com/forums/showthread.php?t=15704)的论坛帖子的启发,他们描述了通过移动交换掉掉策略。 按照以下步骤,您将不会替换掉drop方法,而是获得第三个。

先决条件:

在这方面我将假设您正在使用以下或类似的配置:

  • ISPConfig(v2.2.23或更高版本)
  • 至少有一个邮箱设置并运行的域
  • IMAP正在使用Maildir格式(这不适用于mbox!)

第1步 - 更改表单

第一步是使用管理员帐户登录到您的ISPConfig面板。 然后进入管理选项卡,并使用编辑表单打开表单设计器 。 搜索isp - ISP用户 ,然后单击编辑
您现在应该看到该特定表单的完整表单描述。 注意spam_strategy并重新编辑
现在通过为我们的未来移动选项插入一行来更改该表单元素的值列表 ,以便显示:

accept,accept;
move,move;
discard,discard;
并保存该表单。您的域中的邮件用户选项现在应该显示垃圾邮件策略下拉框中的新选项 - 即使它还没有功能。现在对于控制台的一部分:我们来编辑一些ISPConfig文件,以吸引新的选项。

第2步 - 编辑ISPConfig源文件

现在我们必须编辑一堆文件。 我会写下来,稍后解释一下:

vi /root/ispconfig/scripts/lib/classes/ispconfig_procmail.lib.php
(围绕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__);

(绕线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/";
     }
   }

(绕线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));

这增加了核心功能。 每次创建邮件用户时,此更改会为用户添加标准Maildir邮箱,例如“ 垃圾邮件”,“发送”,“垃圾邮件”和“草稿” ,因此我们可以将垃圾邮件移动到相应的垃圾文件夹中。

在下列文件中查找并添加移动字符串,如下所示:

vi /home/admispconfig/ispconfig/lib/classes/ispconfig_isp_user.lib.php
(绕线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
(围绕第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
(en.lng的例子,第33行)
 $wb["txt_accept"] = "accept";
 $wb["txt_move"] = "move";
 $wb["txt_discard"] = "discard";

vi /home/admispconfig/ispconfig/web/isp_manager/lib/lang/
 
   .lng
(en.lng的示例,围绕第268行和第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
(en.lng的示例,第268行和第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";

您每个语言文件或界面必须做的最后三个更改只会显示移动,而不是您的语言中的相应术语。 这三个示例代码段来自这些目录中的en.lng文件,以相同的方式编辑其他语言(在其他目录之间插入移动条目)。

第3步 - 创建自定义模板

现在更改为/ root / ispconfig / isp / conf目录并创建spamassassin.rc.master的自定义副本:

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

现在编辑自定义模板以反映所需的更改:

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

第4步(可选) - 实施清理垃圾邮件和垃圾邮件文件夹

在以下方面已经被MuisjeNL所接受: How to:使用ISPConfig自动清洗垃圾和/或垃圾文件夹(使用Roundcube + Tmpreaper / Tmpwatch)

第5步(可选) - 实现一些用户友好性并创建状态邮件

这是一个沉重的发展,因为我们正在使用一些漂亮的黑客perl代码。 我会尝试清理它,或将其转移到一个漂亮的小脚本。

结论

所以现在您可以添加一个mailuser(或更改现有的)来使用新的移动方法。 我测试了一个用户每天约100-200个垃圾邮件的邮件,并改变了他的策略移动 。 使用像“立方体”这样的网络邮件发送者,或者通过IMAP连接到邮箱,我几乎立即得到结果,因为第一个邮件放入垃圾文件夹而不是他的收件箱。

确保您在生产服务器上实际运行之前检查。
这个教程没有任何garantuee。 明智,测试吧!

由于这是第一个HowTo youcl对我来说(我不是母语的),希望你在适应你的需要时没有任何问题。 玩一个伟大的软件: ISPConfig

蓝光有限公司

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏