From 2ebadd76247dd1d985ad099edd6ca61fd0a8ea97 Mon Sep 17 00:00:00 2001 From: jwarnier <jwarnier@ispconfig3> Date: Sat, 18 Sep 2010 00:30:15 +0000 Subject: [PATCH] improve maildirmake and remove yet other execs --- server/lib/classes/system.inc.php | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php index c194881336..c383423f16 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -1188,18 +1188,31 @@ class system{ 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); -- GitLab