diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index b42aa6b78a22c61a87f5a933544482568a8df2f1..1d15474cf4c9c22e0fad41b61c42fb2ef935d394 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -3922,10 +3922,6 @@ class installer_base {
 			$root_cron_jobs[] = "0 0 * * * ".$install_dir."/server/scripts/create_daily_nginx_access_logs.sh &> /dev/null";
 		}
 
-		if ($conf['services']['mail'] == 1) {
-			$root_cron_jobs[] = "30 23 * * * ".$install_dir."/server/scripts/handle_mailbox_soft_deleted.sh &> /dev/null";
-		}
-
 		foreach($root_cron_jobs as $cron_job) {
 			if(!in_array($cron_job."\n", $existing_root_cron_jobs)) {
 				$existing_root_cron_jobs[] = $cron_job."\n";
diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index 2b5e94361bd1f1b5aecffc89a2d76801915bb844..31f045a6f9d30a9ff46640b7d0fa6878e33dbeec 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -6,3 +6,6 @@ UPDATE `dns_ssl_ca` SET `ca_issue` = 'sectigo.com' WHERE `ca_issue` = 'comodo.co
 UPDATE `dns_ssl_ca` SET `ca_issue` = 'sectigo.com' WHERE `ca_issue` = 'comodoca.com';
 UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo (formerly Comodo CA)' WHERE `ca_issue` = 'sectigo.com';
 -- not updating the dns_rr table to change all CAA records that have comodo.com / comodoca.com - we should not touch users records imo - TP
+-- #6445 Update the mailbox_soft_delete config option to it's new structure.
+-- UPDATE server SET config=REGEXP_REPLACE(config, 'mailbox_soft_delete=n', 'mailbox_soft_delete=0') WHERE config LIKE '%mailbox_soft_delete=n%'
+-- UPDATE server SET config=REGEXP_REPLACE(config, 'mailbox_soft_delete=y', 'mailbox_soft_delete=7') WHERE config LIKE '%mailbox_soft_delete=y%'
\ No newline at end of file
diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index bc0c3d9b4871080573324dab43abc39d65a4646e..a038e833beb1a20c9324eb20f9401ed7598343e9 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -56,7 +56,7 @@ relayhost_user=
 relayhost_password=
 mailbox_size_limit=0
 message_size_limit=0
-mailbox_soft_delete=n
+mailbox_soft_delete=0
 mailbox_quota_stats=y
 realtime_blackhole_list=zen.spamhaus.org
 overquota_notify_threshold=90
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 7cc710ad539b56dccbe03220946729f07d77348a..d272b0807767f4a6a079f713db608f83f6dc4876 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -736,9 +736,17 @@ $form["tabs"]['mail'] = array(
 		),
 		'mailbox_soft_delete' => array (
 			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
+			'formtype' => 'SELECT',
 			'default' => 'n',
-			'value' => array(0 => 'n', 1 => 'y')
+			'value' => array(
+				0 => 'soft_delete_directly_txt',
+				-1 => 'soft_delete_keep_indefinitely_txt',
+				1 => 'soft_delete_keep_1_txt',
+				7 => 'soft_delete_keep_7_txt',
+				30 => 'soft_delete_keep_30_txt',
+				90 => 'soft_delete_keep_90_txt',
+				365 => 'soft_delete_keep_365_txt',
+			)
 		),
 		'mailbox_quota_stats' => array (
 			'datatype' => 'VARCHAR',
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index acfe895e5fdd28ae7cadccd4eec64bc929df8ed3..eff86620795d24ff04e842bd42ee78165c30d665 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index fe0008b8cda85b5c5d9e39d8f1f636c4701e4622..94f805fae944bf054f4a148684ea939d2b7c5956 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index cb7781fd57c3e412ffcec0a34ee2cfffd3753781..aa83f0dbba57a9855a053666c270eef21fbf2794 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng
index 5f796ae7084dce8e022cf2475681451000d8625d..39feb97f352053aa23246ef85c3a3c73cc2804e8 100644
--- a/interface/web/admin/lib/lang/ca_server_config.lng
+++ b/interface/web/admin/lib/lang/ca_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/cn_server_config.lng b/interface/web/admin/lib/lang/cn_server_config.lng
index 5d5d6eeb25da23cf7c7f64cb297f023bccc978aa..bc728bb6321a3cb127f80fdece5e8a8667649eb1 100644
--- a/interface/web/admin/lib/lang/cn_server_config.lng
+++ b/interface/web/admin/lib/lang/cn_server_config.lng
@@ -351,4 +351,10 @@ $wb['jailkit_hardlinks_allow_txt'] = '允许狱中硬链接';
 $wb['jailkit_hardlinks_no_txt'] = '不,删除硬链接文件';
 $wb['jailkit_hardlinks_yes_txt'] = '是的,如果可能,使用硬链接';
 $wb['mailbox_soft_delete_txt'] = '邮箱软删除';
-$wb['mailbox_soft_delete_info_txt'] = '默认情况下,7天后清理。';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index ebc80b3aa3f2ae861516e6b7fcd826d420272bb4..96ea04fb968747580c78bb3f2766ca69e5a55f25 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 5319bc8ee3ae2a67024fa36d2c1bd5fde49f7827..92297bb355a70aa94a68b2a9241e0aa5a0c673d4 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -344,7 +344,6 @@ $wb['jailkit_hardlinks_allow_txt'] = 'Erlaube hardlinks innerhalb des Jails';
 $wb['jailkit_hardlinks_no_txt'] = 'Nein, entferne hardgelinkte Dateien';
 $wb['jailkit_hardlinks_yes_txt'] = 'Ja, benutze hardlinks wenn möglich';
 $wb['mailbox_soft_delete_txt'] = 'Postfach Soft-Löschung';
-$wb['mailbox_soft_delete_info_txt'] = 'wird standardmäßig nach 7 Tagen gelöscht.';
 $wb['bind_zonefiles_masterprefix_txt'] = 'BIND master zonefiles prefix';
 $wb['bind_zonefiles_slaveprefix_txt'] = 'BIND slave zonefiles prefix';
 $wb['bind_keyfiles_dir_txt'] = 'BIND keyfiles directory';
@@ -352,3 +351,10 @@ $wb['bind_keyfiles_dir_error_empty'] = 'BIND keyfiles directory is empty.';
 $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master prefix.';
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng
index 8f7b0499a63206f780b0431a101d1c23404e1b0c..05f540220260ae3bde82ce298b6b0cb9b437757b 100644
--- a/interface/web/admin/lib/lang/dk_server_config.lng
+++ b/interface/web/admin/lib/lang/dk_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index ee25798b24a0919d466430875817bad11c7f4007..ecedc2524339e3c1124ce486f99721886d1d641e 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index a572ce5d5c88e4701fa054a1a71568632a1f21a8..af7beb9a4d7807156439f0bfc4e8dc4e07ea3213 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -357,4 +357,10 @@ $wb['jailkit_hardlinks_allow_txt'] = 'Allow hardlinks within the jail';
 $wb['jailkit_hardlinks_no_txt'] = 'No, remove hardlinked files';
 $wb['jailkit_hardlinks_yes_txt'] = 'Yes, use hardlinks if possible';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 66a96af33f6f0f1352111df924b62371f0d41c8e..8961010f73f6e017e6e1d343fcb3fb983ae87dd5 100644
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index e968b228ace747336f697eb36487f225b31947ef..68f12468a0cbd0baf4fdf5a216398e44eccf9097 100644
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index d662adbaf9fe9e2c46a06a209db7a688060eaaee..fb5d1e2f973a7d2b47e7de305e5a7d3d7c6ad5c5 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index 42b14a059daf572dcd002e88166648459e26692a..b40c7fd49e7aca7fff377496c32f39691b618d29 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 5574f534fb7967cf352410da0d30b533c9d0b97c..526b800cbdc42aada4a7e7e774416398dab0d7e4 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index e547b714fe3e95cae754520c73c1a2cf2d4592d5..daaa08c24aecbe198a6ad6ea259b68de4ef728f8 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index b0e2f33e23c128e861678b01887dd1cc424c44e8..9e7064fe14f12a9ac2333d3cbe97221fdb3d4893 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -350,4 +350,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 24c91559271806526c132d6a44d69f8cf1484547..fa9abcaaf1d4c39dd0f27422d824b901d5061c46 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index 1875a5c7bccd09dc9faa0a407a9d998bc182f1ae..a8a8d473661b92d002f2e298aa782bfb1017b729 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index 3b0f44fba624be28233ac4b7b109311ccaf115e8..83460000a22b282fc965e3674ff6be5169b8222a 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 53943f4263cc73bce834156cb8e101ec987b721c..f856344b0a9c248f1a781089b694a7c061bffd53 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index abdc6d583056d969d0c198a54c861e1d956b72f4..d69c33ed6525ad2cf23aac355418884a1c74629d 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index f0db8c095d388c60b6b08b8ca0bc6da50ba0c059..2fdb42393e3579634a528bd77258b7a9e26e26c9 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index 77d5737825197958b12a7a9bf1db7d1286270196..24df537a561ef9fe99ad633533757dc837c43f3b 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index d69b80f859f50c0c801e22caea087ca070d8618f..965ef097199729c5278731d7955662f7fa08bdcd 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -351,4 +351,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 066d4515cb405970f101ced539911b6dffeb7848..fcc26b10fdcb803070c202014078d16ff68639fb 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -348,4 +348,10 @@ $wb['bind_zonefiles_masterprefix_error_regex'] = 'Invalid BIND zonefiles master
 $wb['bind_zonefiles_slaveprefix_error_regex'] = 'Invalid BIND zonefiles slave prefix.';
 $wb['bind_keyfiles_dir_error_regex'] = 'Invalid BIND keyfiles directory.';
 $wb['mailbox_soft_delete_txt'] = 'Mailbox soft delete';
-$wb['mailbox_soft_delete_info_txt'] = 'by default cleaned up after 7 days.';
+$wb['soft_delete_directly_txt'] = 'Delete instantly';
+$wb['soft_delete_keep_indefinitely_txt'] = 'Rename but don\'t delete (manual cleanup)';
+$wb['soft_delete_keep_1_txt'] = 'Purge after 1 day';
+$wb['soft_delete_keep_7_txt'] = 'Purge after 7 days';
+$wb['soft_delete_keep_30_txt'] = 'Purge after 30 days';
+$wb['soft_delete_keep_90_txt'] = 'Purge after 90 days';
+$wb['soft_delete_keep_365_txt'] = 'Purge after 365 days';
diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm
index 84683191c804141cc6024a207dd92d3e1cb47af4..485f94b740eaa51ba66ab8020619b0c2ee5fb8b8 100644
--- a/interface/web/admin/templates/server_config_mail_edit.htm
+++ b/interface/web/admin/templates/server_config_mail_edit.htm
@@ -143,7 +143,9 @@
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='mailbox_soft_delete_txt'}</label>
                 <div class="col-sm-9">
-                    {tmpl_var name='mailbox_soft_delete'}&nbsp;{tmpl_var name='mailbox_soft_delete_info_txt'}
+                    <select name="mailbox_soft_delete" id="mailbox_soft_delete" class="form-control">
+                        {tmpl_var name='mailbox_soft_delete'}
+                    </select></a>
                 </div>
             </div>
             <div class="form-group">
diff --git a/server/lib/classes/cron.d/500-clean_mailboxes.inc.php b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php
index 4a879dd7d71da648b677147a88bc97b2a7ca2391..a1a053fcca482405372d8dcc646a50229f854feb 100755
--- a/server/lib/classes/cron.d/500-clean_mailboxes.inc.php
+++ b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php
@@ -53,15 +53,30 @@ class cronjob_clean_mailboxes extends cronjob {
 	public function onRunJob() {
 		global $app, $conf;
 
-		$trash_names=array('Trash', 'Papierkorb', 'Deleted Items', 'Deleted Messages', 'Corbeille');
-		$junk_names=array('Junk', 'Junk Email', 'SPAM');
+		$this->purge_junk_thrash();
+		$this->purge_soft_deleted_maildir();
+		$this->purge_mdbox_removed();
+
+		parent::onRunJob();
+	}
+
+	private function purge_junk_thrash() {
+		global $app, $conf;
+
+		$trash_names = array('Trash', 'Papierkorb', 'Deleted Items', 'Deleted Messages', 'Corbeille');
+		$junk_names = array('Junk', 'Junk Email', 'SPAM');
 
 		$expunge_cmd = 'doveadm expunge -u ? mailbox ? sentbefore ';
 		$purge_cmd = 'doveadm purge -u ?';
 		$recalc_cmd = 'doveadm quota recalc -u ?';
 
 		$server_id = intval($conf['server_id']);
-		$records = $app->db->queryAllRecords("SELECT email, maildir, purge_trash_days, purge_junk_days, imap_prefix FROM mail_user WHERE maildir_format = 'maildir' AND disableimap = 'n' AND server_id = ? AND (purge_trash_days > 0 OR purge_junk_days > 0)", $server_id);
+		$records = $app->db->queryAllRecords("
+						SELECT email, maildir, purge_trash_days, purge_junk_days, imap_prefix
+						FROM mail_user
+						WHERE maildir_format = 'maildir' AND disableimap = 'n' AND server_id = ?
+							AND (purge_trash_days > 0 OR purge_junk_days > 0)",
+						$server_id);
 		
 		if(is_array($records) && !empty($records)) {
 			foreach($records as $email) {
@@ -93,8 +108,52 @@ class cronjob_clean_mailboxes extends cronjob {
 				$app->system->exec_safe($recalc_cmd, $email['email']);
 			}
 		}
+	}
 
-		parent::onRunJob();
+	// Purge soft deleted mailboxes.
+	private function purge_soft_deleted_maildir() {
+		global $app, $conf;
+		$mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail');
+
+		// Convert old values in mailbox_soft_delete field
+		if(isset($mail_config['mailbox_soft_delete']) && $mail_config['mailbox_soft_delete'] == 'n') $mail_config['mailbox_soft_delete'] = 0;
+		if(isset($mail_config['mailbox_soft_delete']) && $mail_config['mailbox_soft_delete'] == 'y') $mail_config['mailbox_soft_delete'] = 7;
+		$mail_config['mailbox_soft_delete'] = intval($mail_config['mailbox_soft_delete']);
+
+
+		if ($mail_config['mailbox_soft_delete'] > 0) {
+			if(isset($mail_config['homedir_path']) || strlen($mail_config['homedir_path']) > 4) {
+				$matched_dirs = glob($mail_config['homedir_path'] . "/*/[a-z0-9.-]*-deleted-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");
+
+				if (!empty($matched_dirs)) {
+					$delay_days = $mail_config['mailbox_soft_delete'];
+					foreach($matched_dirs as $dir) {
+						$owner = posix_getpwuid(fileowner($dir));
+						if (is_dir($dir) && is_array($owner) && $owner['name'] == 'vmail') {
+							$mtime = filemtime($dir);
+							if ($mtime < strtotime("-$delay_days days")) {
+								// do remove
+								$app->system->exec_safe('sudo -u vmail rm -rf ?', $dir);
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	// Remove messages with refcount=0 from mdbox files.
+	private function purge_mdbox_removed() {
+		global $app, $conf;
+
+		$sql = "SELECT email FROM mail_user WHERE maildir_format = 'mdbox' AND server_id = ?";
+		$records = $app->db->queryAllRecords($sql, $server_id);
+
+		if(is_array($records)) {
+			foreach($records as $rec) {
+				$app->system->exec_safe("su -c ?", 'doveadm purge -u "' . $rec["email"] . '"');
+			}
+		}
 	}
 
 	/* this function is optional if it contains no custom code */
diff --git a/server/lib/classes/cron.d/600-purge_mailboxes.inc.php b/server/lib/classes/cron.d/600-purge_mailboxes.inc.php
deleted file mode 100644
index 451eb56642751e9ce25b025406855fa70513dcf9..0000000000000000000000000000000000000000
--- a/server/lib/classes/cron.d/600-purge_mailboxes.inc.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-
-/*
-Copyright (c) 2015, Dominik Müller, Profi Webdesign
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class cronjob_purge_mailboxes extends cronjob {
-
-	// should run before quota notify and backup
-	// quota notify and backup is both '0 0 * * *' 
-	
-	// job schedule
-	protected $_schedule = '30 23 * * *';
-
-	/* this function is optional if it contains no custom code */
-	public function onPrepare() {
-		global $app;
-
-		parent::onPrepare();
-	}
-
-	/* this function is optional if it contains no custom code */
-	public function onBeforeRun() {
-		global $app;
-
-		return parent::onBeforeRun();
-	}
-
-	public function onRunJob() {
-		global $app, $conf;
-
-		$sql = "SELECT email FROM mail_user WHERE maildir_format = 'mdbox' AND server_id = ?";
-		$records = $app->db->queryAllRecords($sql, $server_id);
-		
-		if(is_array($records)) {
-			foreach($records as $rec){
-				$app->system->exec_safe("su -c ?", 'doveadm purge -u "' . $rec["email"] . '"');
-			}
-		}
-
-		parent::onRunJob();
-	}
-
-	/* this function is optional if it contains no custom code */
-	public function onAfterRun() {
-		global $app;
-
-		parent::onAfterRun();
-	}
-
-}
-
-?>
diff --git a/server/scripts/handle_mailbox_soft_deleted.sh b/server/scripts/handle_mailbox_soft_deleted.sh
deleted file mode 100644
index 7c7f280839d31233adabfd39832ed089e5fc66d3..0000000000000000000000000000000000000000
--- a/server/scripts/handle_mailbox_soft_deleted.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-
-# Archive directories for deleted mailboxes.
-delay_days=7
-
-# Test if there is something to do... to avoid 'No such file or directory' from find later.
-ls /var/vmail/*/[a-z0-9.-]*-deleted-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] >/dev/null 2>&1
-if [ $? != 0 ]; then
-        exit 0;
-fi
-
-function remove_soft_deleted_mailbox {
-        dir=$1
-
-        echo "Purging $dir"
-        rm -r "$dir"
-}
-
-function compress_soft_deleted_mailbox {
-        dir=$1
-
-        backupfile="${dir}.tar.bz2"
-
-        # Test if backup file already exists
-        if [ -f $backupfile ]; then
-                # Skip
-                echo "ERROR: Backupfile($backupfile) exists!" >&2
-                continue
-        fi
-
-        echo "Compressing for $dir"
-        tar cvfj "$backupfile" --remove-files "$dir" 2> >( grep -v "tar: Removing leading" >&2)
-}
-
-# List deleted mailboxs to archive
-# -mtime +7 ===> Only mailboxes deleted more then 7 days ago
-# Test that the last dir component matches e.g. xxx-deleted-20220101094242 (14 digits)
-# command: xxx-`date "+%Y%m%d%H%M%S"`
-find /var/vmail/*/[a-z0-9.-]*-deleted-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]  -maxdepth 0 -type d -mtime +$delay_days | while read line; do
-        # example $line: "/var/vmail/example.com/info-20220101094242"
-
-        dir=$line
-
-        # Uncomment the desired cleanup method below, or be creative and create your own.
-
-        remove_soft_deleted_mailbox $dir
-        #compress_soft_deleted_mailbox $dir
-
-done