Marius Cramer
2014-10-24 2d5fcd53c19a65b9c968a1db2e9af643537379c3
server/plugins-available/mail_plugin.inc.php
@@ -100,7 +100,7 @@
            $email_parts = explode('@',$data['new']['email']);
            $webdomain = $app->db->queryOneRecord("SELECT domain_id, server_id, system_user, parent_domain_id FROM web_domain WHERE domain = '".$app->db->quote($email_parts[1])."'");
            if ($webdomain) {
               while ($webdomain['parent_domain_id'] != 0) {
               while (($webdomain['system_user'] == null) && ($webdomain['parent_domain_id'] != 0)) {
                  $webdomain = $app->db->queryOneRecord("SELECT domain_id, server_id, system_user, parent_domain_id FROM web_domain WHERE domain_id = '".$webdomain['parent_domain_id']."'");
               }
               $app->log($data['new']['server_id'].' == '.$webdomain['server_id'],LOGLEVEL_DEBUG);
@@ -138,10 +138,11 @@
         $maildomain_path .= '/Maildir';
      }
      //* When the mail user dir exists but it is not a valid maildir, remove it
      //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder
      if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) {
         exec("su -c 'rm -rf ".escapeshellcmd($data['new']['maildir'])."' vmail");
         $app->log('Removed invalid maildir and rebuild it: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN);
         if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
         exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail");
         $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN);
      }
      //* Create the maildir, if it doesn not exist, set permissions, set quota.
@@ -302,10 +303,11 @@
         $maildomain_path .= '/Maildir';
      }
      //* When the mail user dir exists but it is not a valid maildir, remove it
      //* When the mail user dir exists but it is not a valid maildir, move it to corrupted maildir folder
      if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) {
         exec("su -c 'rm -rf ".escapeshellcmd($data['new']['maildir'])."' vmail");
         $app->log('Removed invalid maildir and rebuild it: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN);
         if(!is_dir($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'])) $app->system->mkdirpath($mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id'], 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
         exec("su -c 'mv -f ".escapeshellcmd($data['new']['maildir'])." ".$mail_config['homedir_path'].'/corrupted/'.$data['new']['mailuser_id']."' vmail");
         $app->log('Moved invalid maildir to corrupted Maildirs folder: '.escapeshellcmd($data['new']['maildir']), LOGLEVEL_WARN);
      }
      //* Create the maildir, if it doesn not exist, set permissions, set quota.