diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index 1aaf51cd2affca613f26d33ba4d70a24488b07da..abe2a8a1a1fdb9b5f1228716878d458ec77e7dc7 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -46,4 +46,7 @@ ALTER TABLE `web_domain` DROP COLUMN `enable_spdy`;
 ALTER TABLE `web_domain` ADD `folder_directive_snippets` TEXT NULL AFTER `https_port`;
 
 ALTER TABLE `web_domain` CHANGE `apache_directives` `apache_directives` mediumtext NULL DEFAULT NULL;
-ALTER TABLE `web_domain` CHANGE `nginx_directives` `nginx_directives` mediumtext NULL DEFAULT NULL;
\ No newline at end of file
+ALTER TABLE `web_domain` CHANGE `nginx_directives` `nginx_directives` mediumtext NULL DEFAULT NULL;
+
+-- add move to junk before/after option, default to after
+ALTER TABLE `mail_user` MODIFY `move_junk` enum('y','a','n') NOT NULL DEFAULT 'a';
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 3f6f04ace7cd807be8b6dd4ae087470479ea802a..bacf075baa8fb6380294b46e4fbdb742a4cbd6ac 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1046,7 +1046,7 @@ CREATE TABLE `mail_user` (
   `autoresponder_end_date` datetime NULL default NULL,
   `autoresponder_subject` varchar(255) NOT NULL default 'Out of office reply',
   `autoresponder_text` mediumtext NULL,
-  `move_junk` enum('n','y') NOT NULL default 'n',
+  `move_junk` enum('y','a','n') NOT NULL default 'a',
   `purge_trash_days` INT NOT NULL DEFAULT '0',
   `purge_junk_days` INT NOT NULL DEFAULT '0',
   `custom_mailfilter` mediumtext,
diff --git a/install/tpl/debian6_dovecot.conf.master b/install/tpl/debian6_dovecot.conf.master
index a112712690d663db76537911af3f9e04e9ced29e..cf9e85f3b3f35ae4ac86623805cd606e90b46764 100644
--- a/install/tpl/debian6_dovecot.conf.master
+++ b/install/tpl/debian6_dovecot.conf.master
@@ -60,7 +60,8 @@ plugin {
   # no longer needed, as 'sieve' is in userdb extra fields:
   sieve=/var/vmail/%d/%n/.sieve
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master
index a1810ab509b91974bacec775f03b80dbc6ee719f..ead02a68c7ca133b9efca2099dc628c251845dc7 100644
--- a/install/tpl/debian6_dovecot2.conf.master
+++ b/install/tpl/debian6_dovecot2.conf.master
@@ -29,7 +29,8 @@ plugin {
   # no longer needed, as 'sieve' is in userdb extra fields:
   sieve=/var/vmail/%d/%n/.sieve
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/install/tpl/debian_dovecot.conf.master b/install/tpl/debian_dovecot.conf.master
index f91959a1f5fd3958cef2ebbc24fbdf7478f4fe7c..2bba3fa985b9838ba9271387338e3da8ed337356 100644
--- a/install/tpl/debian_dovecot.conf.master
+++ b/install/tpl/debian_dovecot.conf.master
@@ -1145,7 +1145,8 @@ plugin {
   # and they're not deleted automatically (use a cronjob or something).
   #lazy_expunge = .EXPUNGED/ .DELETED/ .DELETED/.EXPUNGED/
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/install/tpl/debian_dovecot2.conf.master b/install/tpl/debian_dovecot2.conf.master
index 88d6a1b9248fb07d04984a667644b7552d0d16ae..c71f683e96dee0a99ecf743bf49a3e7527b183ff 100644
--- a/install/tpl/debian_dovecot2.conf.master
+++ b/install/tpl/debian_dovecot2.conf.master
@@ -28,7 +28,8 @@ plugin {
   # no longer needed, as 'sieve' is in userdb extra fields:
   sieve=/var/vmail/%d/%n/.sieve
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/install/tpl/fedora_dovecot.conf.master b/install/tpl/fedora_dovecot.conf.master
index e6879549864e944d94620856be7e12e266ed0381..405a723a553d95184a8f7fb771a067de8bb9b0d0 100644
--- a/install/tpl/fedora_dovecot.conf.master
+++ b/install/tpl/fedora_dovecot.conf.master
@@ -1306,7 +1306,8 @@ plugin {
   # ManageSieve this is where the uploaded scripts are stored.
   sieve_dir=~/sieve
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/install/tpl/fedora_dovecot2.conf.master b/install/tpl/fedora_dovecot2.conf.master
index 9ec150ce493d6ccc1ca4d771a13ecc77a9b70ccd..312654732c56a83f9fd02c6f37b63ef7fdcfdf55 100644
--- a/install/tpl/fedora_dovecot2.conf.master
+++ b/install/tpl/fedora_dovecot2.conf.master
@@ -26,7 +26,8 @@ plugin {
   # no longer needed, as 'sieve' is in userdb extra fields:
   sieve=/var/vmail/%d/%n/.sieve
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/install/tpl/opensuse_dovecot.conf.master b/install/tpl/opensuse_dovecot.conf.master
index 1eacf4c3a31c1e35562a19477d641b2ef442a2c4..a6ed0ab71f449b833e172afe96824eb881626050 100644
--- a/install/tpl/opensuse_dovecot.conf.master
+++ b/install/tpl/opensuse_dovecot.conf.master
@@ -1280,7 +1280,8 @@ plugin {
   # ManageSieve this is where the uploaded scripts are stored.
   sieve_dir=~/sieve
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/install/tpl/opensuse_dovecot2.conf.master b/install/tpl/opensuse_dovecot2.conf.master
index 070590181b4e129e6b7871f947ecefb19a1def8a..da716c6dfcb86aad07628ac126e50376ece07e66 100644
--- a/install/tpl/opensuse_dovecot2.conf.master
+++ b/install/tpl/opensuse_dovecot2.conf.master
@@ -25,7 +25,8 @@ plugin {
   # no longer needed, as 'sieve' is in userdb extra fields:
   sieve=/var/vmail/%d/%n/.sieve
 
-  sieve_after=/var/vmail/%d/%n/.ispconfig.sieve
+  sieve_before=/var/vmail/%d/%n/.ispconfig-before.sieve
+  sieve_after=/var/vmail/%d/%n/.ispconfig-after.sieve
   sieve_max_script_size = 2M
   sieve_max_actions = 100
   sieve_max_redirects = 25
diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php
index cca5d702d3ba03e6600aa93ac39cff6de80b9847..5214d14037ac98987929feaa713527abd87e2991 100644
--- a/interface/web/admin/server_config_edit.php
+++ b/interface/web/admin/server_config_edit.php
@@ -192,10 +192,11 @@ class page_action extends tform_actions {
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
 							$mail_user['autoresponder'] = 'y';
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
-						} elseif($mail_user['move_junk'] == 'y') {
+						} elseif($mail_user['move_junk'] != 'n') {
+							$save = $mail_user['move_junk'];
 							$mail_user['move_junk'] = 'n';
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
-							$mail_user['move_junk'] = 'y';
+							$mail_user['move_junk'] = $save;
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
 						} else {
 							$app->db->datalogUpdate('mail_user', $mail_user, 'mailuser_id', $mail_user["mailuser_id"], true);
diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index 8fb6c4a69227b51a66c7d41cd1b57c0aab9b5a51..0bef9d979faf663c2b9397ca152836ac7c0b21c2 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -402,9 +402,9 @@ if ($global_config['mail']['mailbox_show_mail_filter_tab'] === 'y') {
 			//#################################
 			'move_junk' => array (
 				'datatype' => 'VARCHAR',
-				'formtype' => 'CHECKBOX',
-				'default' => 'n',
-				'value'  => array(0 => 'n', 1 => 'y')
+				'formtype' => 'SELECT',
+				'default' => 'a',
+				'value' => array('y' => 'move_junk_y_txt', 'a' => 'move_junk_a_txt', 'n' => 'move_junk_n_txt'),
 			),
 			'purge_trash_days' => array (
 				'datatype' => 'VARCHAR',
diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng
index 9d4828b55753a597f85fa138386cd7f4ebad0500..702725959da7193ee0fd7708cf4c8d240828ccf0 100644
--- a/interface/web/mail/lib/lang/ar_mail_user.lng
+++ b/interface/web/mail/lib/lang/ar_mail_user.lng
@@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'Disable POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'There is already an alias or forwrd with this email address.';
 $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1';
 $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Realname';
 $wb['name_optional_txt'] = '(Optional)';
 $wb['autoresponder_active'] = 'Enable the autoresponder';
diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng
index 1b9595da42dc26f845a41b36f24cfa9c73bcd29a..49be467e91ed55ce67b048a6691f669c17fdce6b 100644
--- a/interface/web/mail/lib/lang/bg_mail_user.lng
+++ b/interface/web/mail/lib/lang/bg_mail_user.lng
@@ -31,6 +31,9 @@ $wb['autoresponder_start_date_ispast'] = 'Датата на старта нем
 $wb['autoresponder_end_date_txt'] = 'Край на';
 $wb['autoresponder_end_date_isgreater'] = 'датата на края неможе да бъде преди датата за старт.';
 $wb['move_junk_txt'] = 'Премести СПАМ пощата в Директорията Боклуци';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Реално име ';
 $wb['name_optional_txt'] = '(По желание)';
 $wb['autoresponder_active'] = 'Разреши автоматичен отговор';
diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng
index 2abe1931f688ef7c5dd53cc1518f8eab7015bf6e..8f02122ade8d84e1fec447bd46a34df286638de8 100644
--- a/interface/web/mail/lib/lang/br_mail_user.lng
+++ b/interface/web/mail/lib/lang/br_mail_user.lng
@@ -36,6 +36,9 @@ $wb['disablepop3_txt'] = 'Desabilitar POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'Já existe um alias ou encaminhamento para este endereço de e-mail.';
 $wb['quota_error_value'] = 'Valor da cota é inválido. Valores permitidos são: 0 para ilimitado ou números > 1.';
 $wb['move_junk_txt'] = 'Mover e-mails marcados como spam para o diretório junk.';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Nome';
 $wb['name_optional_txt'] = '(Opcional)';
 $wb['autoresponder_active'] = 'Habilitar auto-resposta';
diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng
index 08c9bc78ecbf568bdc4c6d7757f14606172da1a4..259c357671fb364be9457208d3aef8ff31959f81 100644
--- a/interface/web/mail/lib/lang/ca_mail_user.lng
+++ b/interface/web/mail/lib/lang/ca_mail_user.lng
@@ -30,6 +30,9 @@ $wb['autoresponder_end_date_txt'] = 'Terminer le';
 $wb['autoresponder_end_date_isgreater'] = 'La date de fin doit être saisie et doit être ultérieure à la date de début.';
 $wb['quota_error_value'] = 'Valeur de quota invalide. Les valeurs de quota autorisées sont : 0 pour illimité ou nombres > 1';
 $wb['move_junk_txt'] = 'Déplacer le spam vers le dossier Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Nom véritable';
 $wb['name_optional_txt'] = '(Optionnel)';
 $wb['autoresponder_active'] = 'Activer le répondeur automatique';
diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng
index fb09f0c0a029e5b5ca34b39bb3cde771cb8a5da6..72ebc26a4bd0cd3317f20367e07bada135649f66 100644
--- a/interface/web/mail/lib/lang/cz_mail_user.lng
+++ b/interface/web/mail/lib/lang/cz_mail_user.lng
@@ -30,6 +30,9 @@ $wb['disablepop3_txt'] = 'Zakázat POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'Alias nebo přesměrování s touto adresou již existuje.';
 $wb['quota_error_value'] = 'Chybná hodnota kvóty. Povolené hodnoty jsou: 0 pro neomezeno nebo čísla > 1';
 $wb['move_junk_txt'] = 'Přesunout e-maily detekované jako spam do adresáře Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Skutečné jméno';
 $wb['name_optional_txt'] = '(volitelné)';
 $wb['autoresponder_active'] = 'Povolit automatický odpovídač';
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index e653fbe288762de39f0c0b7b62fdadf6ed67a272..79834d9a5cc201e5d4d23f8c31a50a895ed48185 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -34,6 +34,9 @@ $wb['autoresponder_start_date_ispast'] = 'Startdatum kann nicht in der Vergangen
 $wb['autoresponder_end_date_txt'] = 'Endet am';
 $wb['autoresponder_end_date_isgreater'] = 'Enddatum muss angegeben werden und muss später als das Startdatum sein.';
 $wb['move_junk_txt'] = 'Spam E-Mails in das Junk Verzeichnis verschieben';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Name';
 $wb['name_optional_txt'] = '(optional)';
 $wb['autoresponder_active'] = 'Autoresponder aktivieren';
diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng
index 34bf0763590ce3f528e9ed6afdb6d896324fe921..cf29a97137af1c5d6cb7c2e31bef7aa425ad4f05 100644
--- a/interface/web/mail/lib/lang/dk_mail_user.lng
+++ b/interface/web/mail/lib/lang/dk_mail_user.lng
@@ -33,6 +33,9 @@ $wb['disablepop3_txt'] = 'Deaktiver POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'Der er allerede et alias eller forward for denne e-mail adresse.';
 $wb['quota_error_value'] = 'Ugyldig kvote værdi. Tilladte værdier er: 0 for ubegrænset eller tal > 1';
 $wb['move_junk_txt'] = 'Flyt Spam E-mails til Junk mappe.';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Navn';
 $wb['name_optional_txt'] = '(Valgfri)';
 $wb['autoresponder_active'] = 'Aktiver autosvarer';
diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng
index 76c266d59121a8a1cbec2057576209f2af62f536..0f424c00995b5fbd534b7b197cfd636cb12b70bd 100644
--- a/interface/web/mail/lib/lang/el_mail_user.lng
+++ b/interface/web/mail/lib/lang/el_mail_user.lng
@@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'Απενεργοποίηση POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'Υπάρχει ήδη ένα ψευδωνύμο ή μία προώθηση με αυτή τη διεύθυνση email.';
 $wb['quota_error_value'] = 'Μη έγκυρη τιμή ορίου χώρου. Επιτρεπόμενες τιμές είναι: 0 για απεριόριστο ή αριθμοί > 1';
 $wb['move_junk_txt'] = 'Μετακίνηση των Spam Emails στο φάκελο Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Πραγματικό Όνομα';
 $wb['name_optional_txt'] = '(Προαιρετικό)';
 $wb['autoresponder_active'] = 'Ενεργοποίηση αυτόματης απάντησης';
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index 69ac0a00a995ee1fcdf6cdc943a2ae656c359965..7b98e593c8c2c97c0c1178af23440eb40d3c5d70 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -35,7 +35,10 @@ $wb["disableimap_txt"] = 'Disable IMAP';
 $wb["disablepop3_txt"] = 'Disable POP3';
 $wb["duplicate_alias_or_forward_txt"] = 'There is already an alias or forward with this email address.';
 $wb["quota_error_value"] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1';
-$wb["move_junk_txt"] = 'Move Spam Emails to Junk directory.';
+$wb["move_junk_txt"] = 'Move Spam Emails to Junk folder.';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb["name_txt"] = 'Name';
 $wb["name_optional_txt"] = '(Optional)';
 $wb['autoresponder_active'] = 'Enable the autoresponder';
diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng
index be329c304aea80d0a0b36022f52716c71dd7081c..676dd45c22d9771d6cb1a533d732fe869691306c 100644
--- a/interface/web/mail/lib/lang/es_mail_user.lng
+++ b/interface/web/mail/lib/lang/es_mail_user.lng
@@ -40,6 +40,9 @@ $wb['login_txt'] = 'Iniciar Sesión';
 $wb['maildir_txt'] = 'Dirección de correo';
 $wb['monthly_backup_txt'] = 'Mensualmente';
 $wb['move_junk_txt'] = 'Mover correo basura (spam) a la carpeta Basura (Junk).';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_optional_txt'] = '(Opcional)';
 $wb['name_txt'] = 'Nombre';
 $wb['no_backup_txt'] = 'Sin copia de seguridad';
diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng
index 45ea1d9b8b8b61719e8d2c4a81fe05ae64f03547..97bddeddc77ffaad3f1021985f66116628b6177a 100644
--- a/interface/web/mail/lib/lang/fi_mail_user.lng
+++ b/interface/web/mail/lib/lang/fi_mail_user.lng
@@ -31,6 +31,9 @@ $wb['autoresponder_start_date_ispast'] = 'Aloituspäivä ei voi olla menneisyyde
 $wb['autoresponder_end_date_txt'] = 'Lopetuspäivä';
 $wb['autoresponder_end_date_isgreater'] = 'Lopetuspäivän pitää olla myöhempi kuin aloituspäivä.';
 $wb['move_junk_txt'] = 'Siirrä roskapostit Junk-kansioon';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Oikea nimi';
 $wb['name_optional_txt'] = '(Valinnainen)';
 $wb['autoresponder_active'] = 'Ota lomavastaaja käyttöön';
diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng
index 8df58233a3b06112246faaef12e297bd4632954e..4871865ae8f31e2180b7ce6f9a0acdcbd18bc345 100644
--- a/interface/web/mail/lib/lang/fr_mail_user.lng
+++ b/interface/web/mail/lib/lang/fr_mail_user.lng
@@ -30,6 +30,9 @@ $wb['autoresponder_end_date_txt'] = 'Terminer le';
 $wb['autoresponder_end_date_isgreater'] = 'La date de fin doit être saisie et doit être ultérieure à la date de début.';
 $wb['quota_error_value'] = 'Valeur de quota invalide. Les valeurs de quota autorisées sont : 0 pour illimité ou nombres > 1';
 $wb['move_junk_txt'] = 'Déplacer le spam vers le dossier Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Nom véritable';
 $wb['name_optional_txt'] = '(Optionnel)';
 $wb['autoresponder_active'] = 'Activer le répondeur automatique';
diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng
index 170aaa6b61e5f8c1565c8974deb430c3526feccf..34c41a827e9345efcffd8f775fcbb0845ee9dcf5 100644
--- a/interface/web/mail/lib/lang/hr_mail_user.lng
+++ b/interface/web/mail/lib/lang/hr_mail_user.lng
@@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'Disable POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'There is already an alias or forward with this email address.';
 $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1';
 $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Realname';
 $wb['name_optional_txt'] = '(Optional)';
 $wb['autoresponder_active'] = 'Enable the autoresponder';
diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng
index 65962cd21c27eca9138d460d27e8fdb495692281..58a4416cb2cff92bb948add632f969c6a49d366d 100644
--- a/interface/web/mail/lib/lang/hu_mail_user.lng
+++ b/interface/web/mail/lib/lang/hu_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.';
 $wb['autoresponder_end_date_txt'] = 'End by';
 $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.';
 $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Név';
 $wb['name_optional_txt'] = '(Opcionális)';
 $wb['autoresponder_active'] = 'Automatikus válasz engedélyezése';
diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng
index 3bedbd9b9362c3a21cfbd7f0a239c268a493920c..87be369635e68c032a4ee36fdd9dc290e127c0bc 100644
--- a/interface/web/mail/lib/lang/id_mail_user.lng
+++ b/interface/web/mail/lib/lang/id_mail_user.lng
@@ -32,6 +32,9 @@ $wb['disablepop3_txt'] = 'Nonaktifkan POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'Sudah ada alias atau forward untuk alamat email ini.';
 $wb['quota_error_value'] = 'Nilai kuota tidak valid. Nilai yang diperbolehkan adalah: 0 untuk tak terbatas atau angka > 1';
 $wb['move_junk_txt'] = 'Pindahkan Email Spam ke direktori Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Nama Lengkap';
 $wb['name_optional_txt'] = '(Opsional)';
 $wb['autoresponder_active'] = 'Aktifkan Penjawab Otomatis';
diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng
index a1a0f8cfd5d0b8d6e9667afec7b51121f77da6e0..6dffeddb916024b4c140dd03cbd59e86c7712c04 100644
--- a/interface/web/mail/lib/lang/it_mail_user.lng
+++ b/interface/web/mail/lib/lang/it_mail_user.lng
@@ -31,6 +31,9 @@ $wb['autoresponder_start_date_ispast'] = 'La data di avvio no può essere anterg
 $wb['autoresponder_end_date_txt'] = 'Termina il';
 $wb['autoresponder_end_date_isgreater'] = 'La data termine deve essere impostata e successiva al giorno di inizio.';
 $wb['move_junk_txt'] = 'Sposta Email di Spam nella cartella di spam Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Nome vero';
 $wb['name_optional_txt'] = '(Opzionale)';
 $wb['autoresponder_active'] = 'Abilita autorisponditore';
diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng
index b58b9d13dde21f0e92a85c820c85595b4c064351..1b36502b7472772031a31d09d074bfdfe462a4a0 100644
--- a/interface/web/mail/lib/lang/ja_mail_user.lng
+++ b/interface/web/mail/lib/lang/ja_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.';
 $wb['autoresponder_end_date_txt'] = 'End by';
 $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.';
 $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Realname';
 $wb['name_optional_txt'] = '(Optional)';
 $wb['autoresponder_active'] = 'Enable the autoresponder';
diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng
index 9a644a129b1cc0e4f1d1ed6b349f9c55dc2c6e1b..37e8c8638b43c4ffbf4347825f945cb87dd3b1f0 100644
--- a/interface/web/mail/lib/lang/nl_mail_user.lng
+++ b/interface/web/mail/lib/lang/nl_mail_user.lng
@@ -31,6 +31,9 @@ $wb['disablepop3_txt'] = 'Uitschakelen POP3';
 $wb['duplicate_alias_or_forward_txt'] = 'Er is al een alias of forward met dir e-mailadres.';
 $wb['quota_error_value'] = 'Ongeldige quota waarde. Toegestane waarden zijn: 0 = ongelimiteerd of nummerieke waarde > 1';
 $wb['move_junk_txt'] = 'Verplaats SPAM e-mails naar junk folder';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Echte naam';
 $wb['name_optional_txt'] = '(Optioneel)';
 $wb['autoresponder_active'] = 'Inschakelen autobeantwoorden';
diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng
index 593f83531ef599e8397fd753a1cd8c7441d57033..889700cddda31bde7b2d912feebe7ddfda0337c1 100644
--- a/interface/web/mail/lib/lang/pl_mail_user.lng
+++ b/interface/web/mail/lib/lang/pl_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Data uruchomienia nie może być w prz
 $wb['autoresponder_end_date_txt'] = 'Zakończ do';
 $wb['autoresponder_end_date_isgreater'] = 'Data zakończenia musi być późniejsza od daty rozpoczęcia';
 $wb['move_junk_txt'] = 'PrzenoÅ› SPAM do folderu Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Nazwa rzeczywista';
 $wb['name_optional_txt'] = '(Opcjonalnie)';
 $wb['autoresponder_active'] = 'Uruchom autorespondera';
diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng
index 0b7ffe3d374e86a8ebff455e0dea4a8fd17d608a..6c715d52e2c3e446e115a6310cd4eee62f26ea06 100644
--- a/interface/web/mail/lib/lang/pt_mail_user.lng
+++ b/interface/web/mail/lib/lang/pt_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'A data de ínicio não pode estar no p
 $wb['autoresponder_end_date_txt'] = 'Termino:';
 $wb['autoresponder_end_date_isgreater'] = 'A data de início deve ser menor que a data de termino.';
 $wb['move_junk_txt'] = 'Mover Spam para a pasta JUNK';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Realname';
 $wb['name_optional_txt'] = '(Optional)';
 $wb['autoresponder_active'] = 'Enable the autoresponder';
diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng
index 97dfdafd88758015cdb4f261c8c533f68521d380..ee1b6b980c72d08039daa22804a4492be6fff8d6 100644
--- a/interface/web/mail/lib/lang/ro_mail_user.lng
+++ b/interface/web/mail/lib/lang/ro_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later tha
 $wb['duplicate_alias_or_forward_txt'] = 'There is already an alias or forwrd with this email address.';
 $wb['quota_error_value'] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1';
 $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Realname';
 $wb['name_optional_txt'] = '(Optional)';
 $wb['autoresponder_active'] = 'Enable the autoresponder';
diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng
index 07bab6fd4fb66739f4ee1fb8bd2af53a51765731..6935ecd8e2b1ab3a44819835e338cc8a1bf76c0b 100644
--- a/interface/web/mail/lib/lang/ru_mail_user.lng
+++ b/interface/web/mail/lib/lang/ru_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Дата запуска не може
 $wb['autoresponder_end_date_txt'] = 'Останавливать';
 $wb['autoresponder_end_date_isgreater'] = 'Дата окончания должна быть позже даты запуска.';
 $wb['move_junk_txt'] = 'Перемещать спам в каталог Junk';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Реальное имя';
 $wb['name_optional_txt'] = '(Опционально)';
 $wb['autoresponder_active'] = 'Включить автоответчик';
diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng
index da0282e118d620a9b6c40b433cddc3783e9b11a3..22c5b0fe45131dfd3416d24433f94687f40f97f4 100644
--- a/interface/web/mail/lib/lang/se_mail_user.lng
+++ b/interface/web/mail/lib/lang/se_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Startdatum kan inte vara i det förflu
 $wb['autoresponder_end_date_txt'] = 'Sluta den';
 $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.';
 $wb['move_junk_txt'] = 'FLytta spamepost till spammappen';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Riktigt namn';
 $wb['name_optional_txt'] = '(Frivilligt)';
 $wb['autoresponder_active'] = 'Aktivera autosvaret';
diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng
index d9a68404aece6d691dd71ac166ebe606ded32b34..258e8f6128e9ddbf4892cfb5e76cb27e0efea2ae 100644
--- a/interface/web/mail/lib/lang/sk_mail_user.lng
+++ b/interface/web/mail/lib/lang/sk_mail_user.lng
@@ -32,6 +32,9 @@ $wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.';
 $wb['autoresponder_end_date_txt'] = 'End by';
 $wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.';
 $wb['move_junk_txt'] = 'Move Spam Emails to Junk directory';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Realname';
 $wb['name_optional_txt'] = '(Optional)';
 $wb['autoresponder_active'] = 'Enable the autoresponder';
diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng
index 9e964e5e8a9532c4b963e5cdb16d4e50c63e6bb7..a1ed0128f315432580648594bc7e6f60f96fb60f 100644
--- a/interface/web/mail/lib/lang/tr_mail_user.lng
+++ b/interface/web/mail/lib/lang/tr_mail_user.lng
@@ -36,6 +36,9 @@ $wb['disablepop3_txt'] = 'POP3 Kullanılmasın';
 $wb['duplicate_alias_or_forward_txt'] = 'Bu e-posta adresi zaten takma ya da yönlendirilmiş.';
 $wb['quota_error_value'] = 'Kota değeri geçersiz. Değer sınırsız için 0 ya da 1 değerinden büyük olmalı';
 $wb['move_junk_txt'] = 'Önemsiz İletiler Junk Klasörüne Taşınsın';
+$wb["move_junk_y_txt"] = 'Move first, before custom filters.';
+$wb["move_junk_a_txt"] = 'Move last, after custom filters.';
+$wb["move_junk_n_txt"] = 'Do not move Spam Emails to Junk folder.';
 $wb['name_txt'] = 'Ad';
 $wb['name_optional_txt'] = '(İsteğe bağlı)';
 $wb['autoresponder_active'] = 'Otoyanıtlayıcı kullanılsın';
diff --git a/interface/web/mail/templates/mail_user_mailfilter_edit.htm b/interface/web/mail/templates/mail_user_mailfilter_edit.htm
index 4c7058292ea5d3ce31c95acc3f93898d280bf832..8d14eb4ee6fb73f5b515972c07c6a778278bcc8d 100644
--- a/interface/web/mail/templates/mail_user_mailfilter_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailfilter_edit.htm
@@ -1,6 +1,9 @@
 <div class="form-group">
 	<label class="col-sm-3 control-label">{tmpl_var name='move_junk_txt'}</label>
-	<div class="col-sm-9">{tmpl_var name='move_junk'}</div>
+	<div class="col-sm-9"><select name="move_junk" id="move_junk" class="form-control">
+	    {tmpl_var name='move_junk'}
+	</select></div>
+
 </div>
 
 <div class="form-group">
diff --git a/remoting_client/API-docs/mail_user_add.html b/remoting_client/API-docs/mail_user_add.html
index a893e24e3f72724372f32a968b5a66d8840604ee..dab28350577e0a3197dd54019d1608ddaf8590f8 100644
--- a/remoting_client/API-docs/mail_user_add.html
+++ b/remoting_client/API-docs/mail_user_add.html
@@ -38,7 +38,7 @@
 <p class="margin"> autoresponder_end_date&nbsp;&nbsp;(<span class="paratype">datetime</span>)</p>
 <p class="margin"> autoresponder_text&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> autoresponder_subject&nbsp;&nbsp;(<span class="paratype">varchar(255)</span>)</p>
-<p class="margin"> move_junk&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<p class="margin"> move_junk&nbsp;&nbsp;(<span class="paratype">enum('y','a','n')</span>)</p>
 <p class="margin"> custom_mailfilter&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> postfix&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="margin"> access&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
diff --git a/remoting_client/API-docs/mail_user_update.html b/remoting_client/API-docs/mail_user_update.html
index 8cb900fb40ccd88d3e5c45a9c7c01faf2e405a23..d30b9323934e31125d50495a4d0b4ca6299fc7c6 100644
--- a/remoting_client/API-docs/mail_user_update.html
+++ b/remoting_client/API-docs/mail_user_update.html
@@ -36,7 +36,7 @@
 <p class="margin"> autoresponder_start_date&nbsp;&nbsp;(<span class="paratype">datetime</span>)</p>
 <p class="margin"> autoresponder_end_date&nbsp;&nbsp;(<span class="paratype">datetime</span>)</p>
 <p class="margin"> autoresponder_text&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
-<p class="margin"> move_junk&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
+<p class="margin"> move_junk&nbsp;&nbsp;(<span class="paratype">enum('y','a','n')</span>)</p>
 <p class="margin"> custom_mailfilter&nbsp;&nbsp;(<span class="paratype">mediumtext</span>)</p>
 <p class="margin"> postfix&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
 <p class="margin"> access&nbsp;&nbsp;(<span class="paratype">enum('n','y')</span>)</p>
diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master
index f72cd11d1f68539269e262e727db68bfb79fd1f9..6b83c263941f5519adb6666774fd42699156cb0a 100644
--- a/server/conf/sieve_filter.master
+++ b/server/conf/sieve_filter.master
@@ -23,6 +23,15 @@ if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes",
 
 keep;
 
+<tmpl_if name="move_junk" op="==" value="a">
+# Move spam to spam folder
+if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") {
+  fileinto "Junk";
+  # Stop here so that we do not reply on spams
+  stop;
+}
+</tmpl_if>
+
 <tmpl_if name="autoresponder" op="==" value="y">
 #################################################################
 # Autoreply
diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master
index edd4060b9f8012ad874a6e0aafcdac30187cba59..3a8695b1a6de1531b8a3391a85e93edd049e5590 100644
--- a/server/conf/sieve_filter_1.2.master
+++ b/server/conf/sieve_filter_1.2.master
@@ -23,6 +23,15 @@ redirect "<tmpl_var name='address'>";
 
 keep;
 
+<tmpl_if name="move_junk" op="==" value="a">
+# Move spam to spam folder
+if anyof (header :contains "X-Spam-Flag" "YES", header :contains "X-Spam" "Yes", header :contains "subject" "*** SPAM ***", header :contains "subject" "***SPAM***") {
+  fileinto "Junk";
+  # Stop here so that we do not reply on spams
+  stop;
+}
+</tmpl_if>
+
 <tmpl_if name="autoresponder" op="==" value="y">
 #################################################################
 # Autoreply
diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php
index 9c9939655c7dd3cdc802ee1a44521d385eb86845..05ee88e777e5c5b387847663cfe80246b2b213f6 100644
--- a/server/plugins-available/maildeliver_plugin.inc.php
+++ b/server/plugins-available/maildeliver_plugin.inc.php
@@ -100,14 +100,18 @@ class maildeliver_plugin {
 			$sieve_file = $data["new"]["maildir"].'/.sieve';
 			$sieve_file_svbin = $data["new"]["maildir"].'/.sieve.svbin';
 			$old_sieve_file_isp = $data["new"]["maildir"].'/sieve/ispconfig.sieve';
-			$sieve_file_isp = $data["new"]["maildir"].'/.ispconfig.sieve';
-			$sieve_file_isp_svbin = $data["new"]["maildir"].'/.ispconfig.svbin';
+			$sieve_file_isp_before = $data["new"]["maildir"].'/.ispconfig-before.sieve';
+			$sieve_file_isp_before_svbin = $data["new"]["maildir"].'/.ispconfig-before.svbin';
+			$sieve_file_isp_after = $data["new"]["maildir"].'/.ispconfig-after.sieve';
+			$sieve_file_isp_after_svbin = $data["new"]["maildir"].'/.ispconfig-after.svbin';
 			if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp)  or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN);
 			// cleanup .sieve file if it is now a broken link
 			if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file)  or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN);
 			if(is_file($sieve_file_svbin)) unlink($sieve_file_svbin)  or $app->log("Unable to delete file: $sieve_file_svbin", LOGLEVEL_WARN);
-			if(is_file($sieve_file_isp)) unlink($sieve_file_isp)  or $app->log("Unable to delete file: $sieve_file_isp", LOGLEVEL_WARN);
-			if(is_file($sieve_file_isp_svbin)) unlink($sieve_file_isp_svbin)  or $app->log("Unable to delete file: $sieve_file_isp_svbin", LOGLEVEL_WARN);
+			if(is_file($sieve_file_isp_before)) unlink($sieve_file_isp_before)  or $app->log("Unable to delete file: $sieve_file_isp_before", LOGLEVEL_WARN);
+			if(is_file($sieve_file_isp_before_svbin)) unlink($sieve_file_isp_before_svbin)  or $app->log("Unable to delete file: $sieve_file_isp_before_svbin", LOGLEVEL_WARN);
+			if(is_file($sieve_file_isp_after)) unlink($sieve_file_isp_after)  or $app->log("Unable to delete file: $sieve_file_isp_after", LOGLEVEL_WARN);
+			if(is_file($sieve_file_isp_after_svbin)) unlink($sieve_file_isp_after_svbin)  or $app->log("Unable to delete file: $sieve_file_isp_after_svbin", LOGLEVEL_WARN);
 			$app->load('tpl');
 
 			//* Select sieve filter file for dovecot version
@@ -224,15 +228,24 @@ class maildeliver_plugin {
 				$app->system->mkdirpath($data["new"]["maildir"].'/sieve/', 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
 			}
 
-			file_put_contents($sieve_file_isp, $tpl->grab()) or $app->log("Unable to write sieve filter file", LOGLEVEL_WARN);
-			if ( is_file($sieve_file_isp) ) {
-				$app->system->chown($sieve_file_isp,$mail_config['mailuser_name'],false);
-				$app->system->chgrp($sieve_file_isp,$mail_config['mailuser_group'],false);
-
-				$app->system->exec_safe("sievec ?", "$sieve_file_isp");
-				if ( is_file($sieve_file_isp_svbin) ) {
-					$app->system->chown($sieve_file_isp_svbin,$mail_config['mailuser_name'],false);
-					$app->system->chgrp($sieve_file_isp_svbin,$mail_config['mailuser_group'],false);
+			if ($data["new"]["move_junk"] == "y") {
+				$sieve_file_isp = $sieve_file_isp_before;
+				$sieve_file_isp_svbin = $sieve_file_isp_before_svbin;
+			} elseif ($data["new"]["move_junk"] == "a") {
+				$sieve_file_isp = $sieve_file_isp_after;
+				$sieve_file_isp_svbin = $sieve_file_isp_after_svbin;
+			}
+			if (isset($sieve_file_isp)) {
+				file_put_contents($sieve_file_isp, $tpl->grab()) or $app->log("Unable to write sieve filter file", LOGLEVEL_WARN);
+				if ( is_file($sieve_file_isp) ) {
+					$app->system->chown($sieve_file_isp,$mail_config['mailuser_name'],false);
+					$app->system->chgrp($sieve_file_isp,$mail_config['mailuser_group'],false);
+
+					$app->system->exec_safe("sievec ?", "$sieve_file_isp");
+					if ( is_file($sieve_file_isp_svbin) ) {
+						$app->system->chown($sieve_file_isp_svbin,$mail_config['mailuser_name'],false);
+						$app->system->chgrp($sieve_file_isp_svbin,$mail_config['mailuser_group'],false);
+					}
 				}
 			}
 
@@ -247,14 +260,18 @@ class maildeliver_plugin {
 		$sieve_file = $data["old"]["maildir"].'/.sieve';
 		$sieve_file_svbin = $data["old"]["maildir"].'/.sieve.svbin';
 		$old_sieve_file_isp = $data["old"]["maildir"].'/sieve/ispconfig.sieve';
-		$sieve_file_isp = $data["old"]["maildir"].'/.ispconfig.sieve';
-		$sieve_file_isp_svbin = $data["old"]["maildir"].'/.ispconfig.svbin';
+		$sieve_file_isp_before = $data["old"]["maildir"].'/.ispconfig-before.sieve';
+		$sieve_file_isp_before_svbin = $data["old"]["maildir"].'/.ispconfig-before.svbin';
+		$sieve_file_isp_after = $data["old"]["maildir"].'/.ispconfig-after.sieve';
+		$sieve_file_isp_after_svbin = $data["old"]["maildir"].'/.ispconfig-after.svbin';
 		if(is_file($old_sieve_file_isp)) unlink($old_sieve_file_isp)  or $app->log("Unable to delete file: $old_sieve_file_isp", LOGLEVEL_WARN);
 		// cleanup .sieve file if it is now a broken link
 		if(is_link($sieve_file) && !file_exists($sieve_file)) unlink($sieve_file)  or $app->log("Unable to delete file: $sieve_file", LOGLEVEL_WARN);
 		if(is_file($sieve_file_svbin)) unlink($sieve_file_svbin)  or $app->log("Unable to delete file: $sieve_file_svbin", LOGLEVEL_WARN);
-		if(is_file($sieve_file_isp)) unlink($sieve_file_isp)  or $app->log("Unable to delete file: $sieve_file_isp", LOGLEVEL_WARN);
-		if(is_file($sieve_file_isp_svbin)) unlink($sieve_file_isp_svbin)  or $app->log("Unable to delete file: $sieve_file_isp_svbin", LOGLEVEL_WARN);
+		if(is_file($sieve_file_isp_before)) unlink($sieve_file_isp_before)  or $app->log("Unable to delete file: $sieve_file_isp_before", LOGLEVEL_WARN);
+		if(is_file($sieve_file_isp_before_svbin)) unlink($sieve_file_isp_before_svbin)  or $app->log("Unable to delete file: $sieve_file_isp_before_svbin", LOGLEVEL_WARN);
+		if(is_file($sieve_file_isp_after)) unlink($sieve_file_isp_after)  or $app->log("Unable to delete file: $sieve_file_isp_after", LOGLEVEL_WARN);
+		if(is_file($sieve_file_isp_after_svbin)) unlink($sieve_file_isp_after_svbin)  or $app->log("Unable to delete file: $sieve_file_isp_after_svbin", LOGLEVEL_WARN);
 	}
 
 
diff --git a/server/plugins-available/maildrop_plugin.inc.php b/server/plugins-available/maildrop_plugin.inc.php
index 2fefa26cfc95cfc697dc456278f136258543628b..93bd29f338e0be6a7bb7b0104f90c66c2d004b2e 100644
--- a/server/plugins-available/maildrop_plugin.inc.php
+++ b/server/plugins-available/maildrop_plugin.inc.php
@@ -204,7 +204,7 @@ class maildrop_plugin {
 					$app->log("Added CC address ".$data["new"]["cc"].' to mailfilter file.', LOGLEVEL_DEBUG);
 				}
 
-				if($data["new"]["move_junk"] == 'y') {
+				if($data["new"]["move_junk"] != 'n') {
 					if(file_exists($conf["rootpath"].'/conf-custom/mailfilter_move_junk.master')) {
 						$mailfilter_content .= file_get_contents($conf["rootpath"].'/conf-custom/mailfilter_move_junk.master')."\n";
 					} else {