tbrehm
2009-10-28 b6108193aa434a0502261e4057a897344e465f94
Added: FS#873 - Option to redirect spam into a .Junk directory
5 files modified
1 files added
46 ■■■■■ changed files
install/sql/ispconfig3.sql 1 ●●●● patch | view | raw | blame | history
interface/web/mail/form/mail_user.tform.php 7 ●●●● patch | view | raw | blame | history
interface/web/mail/lib/lang/en_mail_user.lng 1 ●●●● patch | view | raw | blame | history
interface/web/mail/templates/mail_user_mailfilter_edit.htm 6 ●●●●● patch | view | raw | blame | history
server/conf/mailfilter_move_junk.master 19 ●●●●● patch | view | raw | blame | history
server/plugins-available/maildrop_plugin.inc.php 12 ●●●● patch | view | raw | blame | history
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,
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
    ##################################
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';
?>
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'}
server/conf/mailfilter_move_junk.master
New file
@@ -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/"
  }
}
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");