diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index c3d8c5b210d5df66bb4e02a69368c334b69e6e58..55bb0f294afa12d37b539141a6a957e4ad532fdb 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -1,2 +1,4 @@
-
 ALTER TABLE `mail_user` CHANGE `quota` `quota` BIGINT(20) NOT NULL DEFAULT '0';
+-- 5918 add imap_prefix column to mail_user table
+ALTER TABLE `mail_user` ADD COLUMN `imap_prefix` varchar(255) NULL default NULL AFTER `backup_copies`;
+
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index e9ed67c86a441cca00f6bcd898eaa92b58361725..985720b845e36a7f81dc78f9b09c50e8bd59e826 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1101,6 +1101,7 @@ CREATE TABLE `mail_user` (
   `last_quota_notification` date NULL default NULL,
   `backup_interval` VARCHAR( 255 ) NOT NULL default 'none',
   `backup_copies` INT NOT NULL DEFAULT '1',
+  `imap_prefix` varchar(255) NULL default NULL,
   PRIMARY KEY  (`mailuser_id`),
   KEY `server_id` (`server_id`,`email`),
   KEY `email_access` (`email`,`access`)
diff --git a/install/tpl/debian6_dovecot-sql.conf.master b/install/tpl/debian6_dovecot-sql.conf.master
index d0b5269e13fc8519b1a41d6608c2ae2495421fdb..370c2aa9cbfa106cd811c2791d8abf6fbff12a79 100644
--- a/install/tpl/debian6_dovecot-sql.conf.master
+++ b/install/tpl/debian6_dovecot-sql.conf.master
@@ -5,9 +5,9 @@ connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_se
 default_pass_scheme = CRYPT
 
 # password-query with prefetch
-password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
+password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve, NULLIF(imap_prefix, '') as "userdb_namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
 
-user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
+user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve, NULLIF(imap_prefix, '') as "namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
 
 # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers.
 # Do not enable it on Dovecot 1.x servers
diff --git a/install/tpl/debian_dovecot-sql.conf.master b/install/tpl/debian_dovecot-sql.conf.master
index d0b5269e13fc8519b1a41d6608c2ae2495421fdb..370c2aa9cbfa106cd811c2791d8abf6fbff12a79 100644
--- a/install/tpl/debian_dovecot-sql.conf.master
+++ b/install/tpl/debian_dovecot-sql.conf.master
@@ -5,9 +5,9 @@ connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_se
 default_pass_scheme = CRYPT
 
 # password-query with prefetch
-password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
+password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve, NULLIF(imap_prefix, '') as "userdb_namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
 
-user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
+user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve, NULLIF(imap_prefix, '') as "namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
 
 # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers.
 # Do not enable it on Dovecot 1.x servers
diff --git a/install/tpl/fedora_dovecot-sql.conf.master b/install/tpl/fedora_dovecot-sql.conf.master
index d0b5269e13fc8519b1a41d6608c2ae2495421fdb..370c2aa9cbfa106cd811c2791d8abf6fbff12a79 100644
--- a/install/tpl/fedora_dovecot-sql.conf.master
+++ b/install/tpl/fedora_dovecot-sql.conf.master
@@ -5,9 +5,9 @@ connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_se
 default_pass_scheme = CRYPT
 
 # password-query with prefetch
-password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
+password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve, NULLIF(imap_prefix, '') as "userdb_namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
 
-user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
+user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve, NULLIF(imap_prefix, '') as "namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
 
 # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers.
 # Do not enable it on Dovecot 1.x servers
diff --git a/install/tpl/opensuse_dovecot-sql.conf.master b/install/tpl/opensuse_dovecot-sql.conf.master
index d0b5269e13fc8519b1a41d6608c2ae2495421fdb..370c2aa9cbfa106cd811c2791d8abf6fbff12a79 100644
--- a/install/tpl/opensuse_dovecot-sql.conf.master
+++ b/install/tpl/opensuse_dovecot-sql.conf.master
@@ -5,9 +5,9 @@ connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_se
 default_pass_scheme = CRYPT
 
 # password-query with prefetch
-password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
+password_query = SELECT email as user, password, maildir as userdb_home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as userdb_mail, uid as userdb_uid, gid as userdb_gid, CONCAT('*:storage=', quota, 'B') AS userdb_quota_rule, CONCAT(maildir, '/.sieve') as userdb_sieve, NULLIF(imap_prefix, '') as "userdb_namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}' AND NOT EXISTS (SELECT domain_id FROM mail_domain WHERE domain = '%d' AND active = 'n' AND server_id = {server_id})
 
-user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
+user_query = SELECT email as user, maildir as home, CONCAT( maildir_format, ':', maildir, '/', IF(maildir_format='maildir','Maildir',maildir_format)) as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve, NULLIF(imap_prefix, '') as "namespace/inbox/prefix" FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n' AND server_id = '{server_id}'
 
 # The iterate_query is required for the doveadm command only and works only on dovecot 2 servers.
 # Do not enable it on Dovecot 1.x servers
diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index f513aeb9d3e4763f3f9947f91c9f00cba6e2d53b..d135e4f3de6c44a15c88d8257d2d9cf9dafbc26f 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -216,6 +216,29 @@ $form["tabs"]['mailuser'] = array(
 			'maxlength' => '255',
 			'searchable' => 2
 		),
+	)
+);
+
+if($app->auth->is_admin()) {
+	$form["tabs"]['mailuser']['fields'] += array(
+			'imap_prefix' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'TEXT',
+				'filters'   => array(
+						0 => array( 'event' => 'SAVE',
+						'type' => 'STRIPTAGS'),
+						1 => array( 'event' => 'SAVE',
+						'type' => 'STRIPNL')
+				),
+				'default' => '',
+				'value'  => '',
+				'width'  => '30',
+				'maxlength' => '255',
+			),
+	);
+}
+
+$form["tabs"]['mailuser']['fields'] += array(
 		'maildir' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
@@ -321,7 +344,6 @@ $form["tabs"]['mailuser'] = array(
 		//#################################
 		// END Datatable fields
 		//#################################
-	)
 );
 
 if($global_config['mail']['mail_password_onlyascii'] == 'y') {
diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng
index 36d274c7abdefcf5d7638f2f0abe10ba82cfbdde..a879201cb06b0418347e45bf3f16f9dc8f82e3d2 100644
--- a/interface/web/mail/lib/lang/ar_mail_user.lng
+++ b/interface/web/mail/lib/lang/ar_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng
index d051c9efd92b1d4e8768a1f8d4edd943fc2cfb4a..3084b0d05049809f62b57aa70b7518f8ef6a8f77 100644
--- a/interface/web/mail/lib/lang/bg_mail_user.lng
+++ b/interface/web/mail/lib/lang/bg_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng
index 0862ca5d1dc10e89aad41cbdd72d4496c53525fe..9489390a7e5c029276f08f784dbb02c3306c69ba 100644
--- a/interface/web/mail/lib/lang/ca_mail_user.lng
+++ b/interface/web/mail/lib/lang/ca_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 2c49f352ff12b599aa7229dcd5f30396d9887c5a..db8c85a2dada0c8dfa049b26eeb1e16d281ce5b6 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -74,4 +74,7 @@ $wb['purge_trash_days_txt'] = 'Papierkorb automatisch nach X Tagen leeren';
 $wb['tooltip_purge_trash_days_txt'] = '0 = deaktiviert';
 $wb['purge_junk_days_txt'] = 'Junk-Ordner automatisch nach X Tagen leeren';
 $wb['tooltip_purge_junk_days_txt'] = '0 = deaktiviert';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
+?>
 
diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng
index 47b61bf225ca603fb15bee3dda5257cad4e20d8a..d2e7cfd0082d3cdd9a62e07840e643d965678d02 100644
--- a/interface/web/mail/lib/lang/dk_mail_user.lng
+++ b/interface/web/mail/lib/lang/dk_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng
index 4eb1a3545559fef15bb6b4f2dacb40af21bc6bd6..52b42874dda9467b9c2df27999fd49a736e3779f 100644
--- a/interface/web/mail/lib/lang/el_mail_user.lng
+++ b/interface/web/mail/lib/lang/el_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index 42004fe5fde5718d6b0be19a3d99b655f771fe0d..96975a1a70c1ba0a8e8803be9799d2798100b6d2 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng
index a5299c488d91fc68ba2921004fd3aa0fea43be01..43e1c3c550dd7fa72a75dfbe949219ae59d9c01d 100644
--- a/interface/web/mail/lib/lang/es_mail_user.lng
+++ b/interface/web/mail/lib/lang/es_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng
index 6f9d0639b7842bd90994b8e1464a2b433472c8ea..bbb479d463d7b3f8a29f8f6229650dc37e09d31f 100644
--- a/interface/web/mail/lib/lang/fi_mail_user.lng
+++ b/interface/web/mail/lib/lang/fi_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng
index ddc82352f073fc9757ac8f59d3c88841eeb2805c..74abb9de7f8af479872fdb651e6f854fa24c2100 100644
--- a/interface/web/mail/lib/lang/fr_mail_user.lng
+++ b/interface/web/mail/lib/lang/fr_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng
index 6c22395ecad30867b2d9fbb170d01d162980f0ed..0fa0370ceb90bd4c2f4b2a54327bc029ba8f78b5 100644
--- a/interface/web/mail/lib/lang/hr_mail_user.lng
+++ b/interface/web/mail/lib/lang/hr_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng
index 7d26eab5cf9a2989374f01a6f67ccac6c7c1e739..1661f5b669176d7d98810d5fa0b803dd0b068fe3 100644
--- a/interface/web/mail/lib/lang/hu_mail_user.lng
+++ b/interface/web/mail/lib/lang/hu_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng
index 31a8bcb18e37e030586cca581042ff3639221db5..fa5b74e8ea3a01cf92e0265fefc0fc7d0f2df3c0 100644
--- a/interface/web/mail/lib/lang/id_mail_user.lng
+++ b/interface/web/mail/lib/lang/id_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng
index fbfdfd2ae49cc8bc29bcd3abb981e465f693bb55..dba7214e909392bafb8122c9bc558024b25cd267 100644
--- a/interface/web/mail/lib/lang/it_mail_user.lng
+++ b/interface/web/mail/lib/lang/it_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Svuota automaticamente il Cestino dopo X giorni';
 $wb['tooltip_purge_trash_days_txt'] = '0 = Disabilitato';
 $wb['purge_junk_days_txt'] = 'Svuota cartella Indesiderati automaticamente dopo X giorni';
 $wb['tooltip_purge_junk_days_txt'] = '0 = Disabilitato';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng
index 961dd4166acadf44c060d91f6f7a68c4d694ada2..fc094c352ab40d1e513997e0f7254b09a064829d 100644
--- a/interface/web/mail/lib/lang/ja_mail_user.lng
+++ b/interface/web/mail/lib/lang/ja_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng
index f2263aeea543d2f6615a67d8041785b9a90dcf90..bf57cd61a9ed94fa435c9634b303a7c7cba24031 100644
--- a/interface/web/mail/lib/lang/nl_mail_user.lng
+++ b/interface/web/mail/lib/lang/nl_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng
index 6fe385fb3c1d61494c4b275d63d2abf89e60993c..7ed80ace959d954065e76a8b43707fba238a3516 100644
--- a/interface/web/mail/lib/lang/pl_mail_user.lng
+++ b/interface/web/mail/lib/lang/pl_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng
index c69e9e00cdd9d3b3cf54ecaf3549315eee0c87cd..3bc325a52ed87c9c8a3ea3bb4fc1d4d5ba5429ff 100644
--- a/interface/web/mail/lib/lang/pt_mail_user.lng
+++ b/interface/web/mail/lib/lang/pt_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng
index 9970ea87f473c584bbe6ee6022bf714b8d33e366..a7f2c4164defb092b2b49824ec9ec3409d690b46 100644
--- a/interface/web/mail/lib/lang/ro_mail_user.lng
+++ b/interface/web/mail/lib/lang/ro_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng
index f35ae2f75039b44f70ecd15ba53ab0ad811f1565..f0ab8c0bbaf162ba8a58568264237cdfe3d45d64 100644
--- a/interface/web/mail/lib/lang/ru_mail_user.lng
+++ b/interface/web/mail/lib/lang/ru_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng
index 46f8776755e62a6958d673bb7e4a1bff4e9ea573..40c91caaa834980ed83df7f18bca0c9c816a79ad 100644
--- a/interface/web/mail/lib/lang/se_mail_user.lng
+++ b/interface/web/mail/lib/lang/se_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng
index b9f59ec403731a141a10a27549cd82269e02795e..6af45285434c393c3b7488ef65f283c1159bb279 100644
--- a/interface/web/mail/lib/lang/sk_mail_user.lng
+++ b/interface/web/mail/lib/lang/sk_mail_user.lng
@@ -75,4 +75,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng
index 8a0bd4e27aab8266ae11a73779a687ec7b3139da..c3dfbf1ecf6e3c04127ae2fb553e3bae3d456516 100644
--- a/interface/web/mail/lib/lang/tr_mail_user.lng
+++ b/interface/web/mail/lib/lang/tr_mail_user.lng
@@ -74,4 +74,6 @@ $wb['purge_trash_days_txt'] = 'Purge Trash automatically after X days';
 $wb['tooltip_purge_trash_days_txt'] = '0 = disabled';
 $wb['purge_junk_days_txt'] = 'Purge Junk automatically after X days';
 $wb['tooltip_purge_junk_days_txt'] = '0 = disabled';
+$wb['imap_prefix_txt'] = 'IMAP prefix';
+$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
 ?>
diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm
index 8246e6349ed027e9d811260b70a55f3fed942926..870e40b2f585164f4a40b219f7d36450ea067194 100644
--- a/interface/web/mail/templates/mail_user_mailbox_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm
@@ -69,6 +69,12 @@
                 <label for="sender_name" class="col-sm-3 control-label">{tmpl_var name='sender_cc_txt'}</label>
                 <div class="col-sm-6"><input type="text" name="sender_cc" id="sender_cc" value="{tmpl_var name='sender_cc'}" class="form-control" /></div><div class="col-sm-3 input-sm"> &nbsp; {tmpl_var name='name_optional_txt'} {tmpl_var name='sender_cc_note_txt'}
             </div></div>
+            <tmpl_if name="is_admin"><div class="form-group">
+                <label for="imap_prefix" class="col-sm-3 control-label">{tmpl_var name='imap_prefix_txt'}</label>
+                <div class="col-sm-6">
+                    <input type="text" name="imap_prefix" id="imap_prefix" value="{tmpl_var name='imap_prefix'}" data-toggle="tooltip" title="{tmpl_var name='tooltip_imap_prefix_txt'}" class="form-control" />
+                </div><div class="col-sm-3 input-sm"> &nbsp; {tmpl_var name='name_optional_txt'}</div>
+            </div></tmpl_if>
             <div class="form-group">
                 <label for="policy" class="col-sm-3 control-label">{tmpl_var name='policy_txt'}</label>
                 <div class="col-sm-9"><select name="policy" id="policy" class="form-control">
diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master
index 5635b946aa8c2e3fed747f4543011ecc979c7415..8719717da869a84970a76fcfc667d7d970a21b61 100644
--- a/server/conf/sieve_filter.master
+++ b/server/conf/sieve_filter.master
@@ -8,7 +8,7 @@ require ["body", "copy", "date", "envelope", "fileinto", "imap4flags", "mailbox"
 <tmpl_if name="move_junk" op="==" value="y">
 # Move spam to spam folder
 if anyof (header :is ["X-Spam", "X-Spam-Flag"] "Yes", header :matches "X-Spam-Status" "Yes, *") {
-  fileinto :create "Junk";
+  fileinto :create "<tmpl_var name='imap_prefix'>Junk";
   # Stop here so that we do not reply on spams
   stop;
 }
@@ -34,7 +34,7 @@ require ["body", "copy", "date", "envelope", "fileinto", "imap4flags", "mailbox"
 <tmpl_if name="move_junk" op="==" value="a">
 # Move spam to spam folder
 if anyof (header :is ["X-Spam", "X-Spam-Flag"] "Yes", header :matches "X-Spam-Status" "Yes, *") {
-  fileinto :create "Junk";
+  fileinto :create "<tmpl_var name='imap_prefix'>Junk";
   # Stop here so that we do not reply on spams
   stop;
 }
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 711c735db15b3f67f11ad47bfd1550e476630330..4a879dd7d71da648b677147a88bc97b2a7ca2391 100755
--- a/server/lib/classes/cron.d/500-clean_mailboxes.inc.php
+++ b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php
@@ -53,27 +53,37 @@ class cronjob_clean_mailboxes extends cronjob {
 	public function onRunJob() {
 		global $app, $conf;
 
-		$trash_names=array('Trash', 'Papierkorb', 'Deleted Items', 'Deleted Messages', 'INBOX.Trash', 'INBOX.Papierkorb', 'INBOX.Deleted Messages', 'Corbeille');
-		$junk_names=array('Junk', 'Junk Email', 'SPAM', 'INBOX.SPAM');
+		$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 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) {
+
+				// Mapping function to add a prefix to all folder names.
+				$prefix_folders = function($folder) use($email) {
+					return $email['imap_prefix'] . $folder;
+				};
+
+				// Add a prefix to all folder names.
+				$prefixed_trash_names = array_map($prefix_folders, $trash_names);
+				$prefixed_junk_names = array_map($prefix_folders, $junk_names);
+
 				if($email['purge_trash_days'] > 0) {
-					foreach($trash_names as $trash) {
+					foreach($prefixed_trash_names as $trash) {
 						if(is_dir($email['maildir'].'/Maildir/.'.$trash)) {
 							$app->system->exec_safe($expunge_cmd.intval($email['purge_trash_days']).'d', $email['email'], $trash);
 						}
 					}
 				}
 				if($email['purge_junk_days'] > 0) {
-					foreach($junk_names as $junk) {
+					foreach($prefixed_junk_names as $junk) {
 						if(is_dir($email['maildir'].'/Maildir/.'.$junk)) {
 							$app->system->exec_safe($expunge_cmd.intval($email['purge_junk_days']).'d', $email['email'], $junk);
 						}
diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php
index 168063c1a2a9307cfd81c882ab890c9878507661..4a7a46fa894a8e719176e72b1a2c967efd0aee0a 100644
--- a/server/plugins-available/maildeliver_plugin.inc.php
+++ b/server/plugins-available/maildeliver_plugin.inc.php
@@ -139,6 +139,7 @@ class maildeliver_plugin {
 
 				// Move junk
 				$tpl->setVar('move_junk', $data["new"]["move_junk"]);
+				$tpl->setVar('imap_prefix', $data["new"]["imap_prefix"]);
 
 				// Set autoresponder start date
 				$data["new"]["autoresponder_start_date"] = str_replace(" ", "T", $data["new"]["autoresponder_start_date"]);