View Single Post
Old 11th January 2009, 03:04
croemmich croemmich is offline
Junior Member
Join Date: Jan 2009
Posts: 5
Thanks: 0
Thanked 4 Times in 2 Posts
Default Maildirmake

I also had the same problem with the maildirmake.

I rewrote the function insert_user in

This code seems to be working correctly on insert, I did also see mention of problems with moving a mailbox, I am investigating that also.

Please note, I do not have any official part of this project, however, if admin's would like to use my code, please feel free.
	function user_insert($event_name,$data) {
		global $app, $conf;
		// get the config
		$mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail');
		$maildomain_path = $data['new']['maildir'];
		$tmp_basepath = $data['new']['maildir'];
		$tmp_basepath_parts = explode('/',$tmp_basepath);
		$base_path = implode('/',$tmp_basepath_parts);
		// Create the mail domain directory, if it does not exist
		if(!empty($base_path) && !is_dir($base_path)) {
			exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']);
			$app->log('Created Directory: '.$base_path,LOGLEVEL_DEBUG);
		// Create the maildir, if it doesn not exist, set permissions, set quota.
		if(!empty($maildomain_path) && !is_dir($maildomain_path)) {
			exec("su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
			exec('chown -R '.$mail_config['mailuser_name'].':'.$mail_config['mailuser_group'].' '.escapeshellcmd($data['new']['maildir']));
			$app->log("Set ownership on ".escapeshellcmd($data['new']['maildir']),LOGLEVEL_DEBUG);
			exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); // Avoid quota bug
			$app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
Reply With Quote