jwarnier
2010-09-17 2ebadd76247dd1d985ad099edd6ca61fd0a8ea97
improve maildirmake and remove yet other execs
1 files modified
29 ■■■■ changed files
server/lib/classes/system.inc.php 29 ●●●● patch | view | raw | blame | history
server/lib/classes/system.inc.php
@@ -1188,18 +1188,31 @@
        
        if($subfolder != '') {
            $dir = escapeshellarg($maildir_path.'/.'.$subfolder);
            $dir_cur = escapeshellarg($maildir_path.'/.'.$subfolder.'/cur');
            $dir_new = escapeshellarg($maildir_path.'/.'.$subfolder.'/new');
            $dir_tmp = escapeshellarg($maildir_path.'/.'.$subfolder.'/tmp');
        } else {
            $dir = escapeshellarg($maildir_path);
            $dir_cur = escapeshellarg($maildir_path.'/cur');
            $dir_new = escapeshellarg($maildir_path.'/new');
            $dir_tmp = escapeshellarg($maildir_path.'/tmp');
        }
        if($user != '' && $user != 'root' && $this->is_user($user)) {
            $user = escapeshellarg($user);
            // I assume that the name of the (vmail group) is the same as the name of the mail user in ISPConfig 3
            $group = $user;
            chown($dir,$user);
            chgrp($dir,$group);
            $chown_mdsub = true;
        }
        
        exec("mkdir -p $dir_cur $dir_new $dir_tmp");
        exec("chmod 0700 $dir $dir_cur $dir_new $dir_tmp");
        $maildirsubs = array('cur','new','tmp');
        foreach ($maildirsubs as $mdsub) {
            mkdir($dir.'/'.$mdsub, 0700, true);
            if ($chown_mdsub) {
                chown($dir.'/'.$mdsub, $user);
                chgrp($dir.'/'.$mdsub, $group);
            }
        }
        chmod($dir, 0700);
        
        if($user != '' && $this->is_user($user) && $user != 'root') {
            $user = escapeshellarg($user);