Skip to content

Commit 6a89034

Browse files
committed
Safe delete for maildomains
1 parent 1d04112 commit 6a89034

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

server/plugins-available/mail_plugin.inc.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -480,8 +480,15 @@ function domain_delete($event_name, $data) {
480480
//* Delete maildomain path
481481
$old_maildomain_path = $mail_config['homedir_path'].'/'.$data['old']['domain'];
482482
if($old_maildomain_path != $mail_config['homedir_path'] && !stristr($old_maildomain_path, '//') && !stristr($old_maildomain_path, '..') && !stristr($old_maildomain_path, '*') && !stristr($old_maildomain_path, '&') && strlen($old_maildomain_path) >= 10 && !empty($data['old']['domain'])) {
483-
$app->system->exec_safe('rm -rf ?', $old_maildomain_path);
484-
$app->log('Deleted the mail domain directory: '.$old_maildomain_path, LOGLEVEL_DEBUG);
483+
if ($mail_config['mailbox_safe_delete'] == 'n') {
484+
$app->system->exec_safe('rm -rf ?', $old_maildomain_path);
485+
$app->log('Deleted the mail domain directory: '.$old_maildomain_path, LOGLEVEL_DEBUG);
486+
} else {
487+
// Move it, adding a date based suffix. A cronjob should purge or archive.
488+
$thrash_maildomain_path = $old_maildomain_path . '-' . date("YmdHis");
489+
$app->system->exec_safe('mv ? ?', $old_maildomain_path, $thrash_maildomain_path);
490+
$app->log('Renamed the mail domain directory: ' . $old_maildomain_path . ' to ' . $thrash_maildomain_path, LOGLEVEL_DEBUG);
491+
}
485492
$maildomain_path_deleted = true;
486493
} else {
487494
$app->log('Possible security violation when deleting the mail domain directory: '.$old_maildomain_path, LOGLEVEL_ERROR);

0 commit comments

Comments
 (0)