Adding mailbox fails. No Such File
Adding a new mailbox fails. maildirmake errors in log file.
Example: Add mail domain foo.com Add mailbox bar
ISPconfig first creates: /var/vmail/foo.com but then creates: /var/vmail/bar
/var/vmail/foo.com then disappears, haven't investigated the cause of this. (cron clean up maybe?)
My fix is below, it seems to be working fine for me, please shoot some bullets through it if there are any.
replace the function user_insert in mail_plugin_inc.php with:
function user_insert(event_name,
data) {
global $app, $conf;
// get the config
$app->uses("getconf");
$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);
unset($tmp_basepath_parts[count($tmp_basepath_parts)-1]);
$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 maildirmake quota bug, see debian bug #214911
$app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
}
}