From b6108193aa434a0502261e4057a897344e465f94 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 28 Oct 2009 13:51:18 -0400 Subject: [PATCH] Added: FS#873 - Option to redirect spam into a .Junk directory --- interface/web/mail/lib/lang/en_mail_user.lng | 1 + install/sql/ispconfig3.sql | 1 + interface/web/mail/form/mail_user.tform.php | 7 ++++++- interface/web/mail/templates/mail_user_mailfilter_edit.htm | 6 ++++++ server/conf/mailfilter_move_junk.master | 19 +++++++++++++++++++ server/plugins-available/maildrop_plugin.inc.php | 12 ++++++++++-- 6 files changed, 43 insertions(+), 3 deletions(-) diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 0938451..0b20115 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -522,6 +522,7 @@ `homedir` varchar(255) NOT NULL, `autoresponder` enum('n','y') NOT NULL default 'n', `autoresponder_text` mediumtext NULL, + `move_junk` enum('n','y') NOT NULL default 'n', `custom_mailfilter` mediumtext, `postfix` enum('n','y') NOT NULL, `access` enum('n','y') NOT NULL, diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 5ed0146..a96d80c 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -202,7 +202,12 @@ ################################## # Begin Datatable fields ################################## - + 'move_junk' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), ################################## # ENDE Datatable fields ################################## diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 5566be9..ccb9651 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -29,4 +29,5 @@ $wb["disablepop3_txt"] = 'Disable POP3'; $wb["duplicate_alias_or_forward_txt"] = 'There is already an alias or forwrd with this email address.'; $wb["quota_error_value"] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1'; +$wb["move_junk_txt"] = 'Move Spam Emails to Junk directory'; ?> diff --git a/interface/web/mail/templates/mail_user_mailfilter_edit.htm b/interface/web/mail/templates/mail_user_mailfilter_edit.htm index 404e623..9484dc6 100644 --- a/interface/web/mail/templates/mail_user_mailfilter_edit.htm +++ b/interface/web/mail/templates/mail_user_mailfilter_edit.htm @@ -5,6 +5,12 @@ <div class="pnl_formsarea"> <fieldset class="inlineLabels"> + <div class="ctrlHolder"> + <p class="label">{tmpl_var name='move_junk_txt'}</p> + <div class="multiField"> + {tmpl_var name='move_junk'} + </div> + </div> </fieldset> {tmpl_var name='filter_records'} diff --git a/server/conf/mailfilter_move_junk.master b/server/conf/mailfilter_move_junk.master new file mode 100644 index 0000000..ef346c9 --- /dev/null +++ b/server/conf/mailfilter_move_junk.master @@ -0,0 +1,19 @@ + +SPAMDIR="Junk" +SPAMDIRFULL="$DEFAULT/.Junk" + +if ( /^X-Spam-Flag: YES$/ ) +{ + exception { + + `test -e $SPAMDIRFULL` + if ( $RETURNCODE != 0 ) + { + `maildirmake -f $SPAMDIR $DEFAULT` + `chown vmail:vmail -R $SPAMDIRFULL` + `chmod 0700 $SPAMDIRFULL` + `echo INBOX.$SPAMDIR >> $DEFAULT/courierimapsubscribed` + } + to "$SPAMDIRFULL/" + } +} \ No newline at end of file diff --git a/server/plugins-available/maildrop_plugin.inc.php b/server/plugins-available/maildrop_plugin.inc.php index b748c0f..7b990c6 100644 --- a/server/plugins-available/maildrop_plugin.inc.php +++ b/server/plugins-available/maildrop_plugin.inc.php @@ -155,7 +155,8 @@ } // Write the custom mailfilter script, if mailfilter recipe has changed - if($data["old"]["custom_mailfilter"] != $data["new"]["custom_mailfilter"]) { + if($data["old"]["custom_mailfilter"] != $data["new"]["custom_mailfilter"] or + $data["old"]["move_junk"] != $data["new"]["move_junk"]) { $app->log("Mailfilter config has been changed",LOGLEVEL_DEBUG); if(trim($data["new"]["custom_mailfilter"]) != '') { // Delete the old filter recipe @@ -170,7 +171,14 @@ $email_parts = explode("@",$data["old"]["email"]); } $config_file_path = $this->mailfilter_config_dir.'/'.$email_parts[1].'/'.$email_parts[0].'/.mailfilter'; - file_put_contents($config_file_path,$data["new"]["custom_mailfilter"]); + + $mailfilter_content = ''; + if($data["new"]["move_junk"] == 'y') { + $mailfilter_content .= file_get_contents($conf["rootpath"].'/conf/mailfilter_move_junk.master')."\n"; + } + $mailfilter_content .= $data["new"]["custom_mailfilter"]; + + file_put_contents($config_file_path,$mailfilter_content); $app->log("Writing new custom Mailfiter".$config_file_path,LOGLEVEL_DEBUG); exec("chmod 770 $config_file_path"); exec("chown vmail $config_file_path"); -- Gitblit v1.9.1