From acdbd68bfffc965a64b8a82d23e40ff1fde56d49 Mon Sep 17 00:00:00 2001 From: Jesse Norell <jesse@kci.net> Date: Tue, 21 Jul 2020 16:54:02 -0600 Subject: [PATCH] select Move to Junk before/after custom filters --- .../sql/incremental/upd_dev_collection.sql | 5 +- install/sql/ispconfig3.sql | 2 +- install/tpl/debian6_dovecot.conf.master | 3 +- install/tpl/debian6_dovecot2.conf.master | 3 +- install/tpl/debian_dovecot.conf.master | 3 +- install/tpl/debian_dovecot2.conf.master | 3 +- install/tpl/fedora_dovecot.conf.master | 3 +- install/tpl/fedora_dovecot2.conf.master | 3 +- install/tpl/opensuse_dovecot.conf.master | 3 +- install/tpl/opensuse_dovecot2.conf.master | 3 +- interface/web/admin/server_config_edit.php | 5 +- interface/web/mail/form/mail_user.tform.php | 6 +-- interface/web/mail/lib/lang/ar_mail_user.lng | 3 ++ interface/web/mail/lib/lang/bg_mail_user.lng | 3 ++ interface/web/mail/lib/lang/br_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ca_mail_user.lng | 3 ++ interface/web/mail/lib/lang/cz_mail_user.lng | 3 ++ interface/web/mail/lib/lang/de_mail_user.lng | 3 ++ interface/web/mail/lib/lang/dk_mail_user.lng | 3 ++ interface/web/mail/lib/lang/el_mail_user.lng | 3 ++ interface/web/mail/lib/lang/en_mail_user.lng | 5 +- interface/web/mail/lib/lang/es_mail_user.lng | 3 ++ interface/web/mail/lib/lang/fi_mail_user.lng | 3 ++ interface/web/mail/lib/lang/fr_mail_user.lng | 3 ++ interface/web/mail/lib/lang/hr_mail_user.lng | 3 ++ interface/web/mail/lib/lang/hu_mail_user.lng | 3 ++ interface/web/mail/lib/lang/id_mail_user.lng | 3 ++ interface/web/mail/lib/lang/it_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ja_mail_user.lng | 3 ++ interface/web/mail/lib/lang/nl_mail_user.lng | 3 ++ interface/web/mail/lib/lang/pl_mail_user.lng | 3 ++ interface/web/mail/lib/lang/pt_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ro_mail_user.lng | 3 ++ interface/web/mail/lib/lang/ru_mail_user.lng | 3 ++ interface/web/mail/lib/lang/se_mail_user.lng | 3 ++ interface/web/mail/lib/lang/sk_mail_user.lng | 3 ++ interface/web/mail/lib/lang/tr_mail_user.lng | 3 ++ .../templates/mail_user_mailfilter_edit.htm | 5 +- remoting_client/API-docs/mail_user_add.html | 2 +- .../API-docs/mail_user_update.html | 2 +- server/conf/sieve_filter.master | 9 ++++ server/conf/sieve_filter_1.2.master | 9 ++++ .../maildeliver_plugin.inc.php | 51 ++++++++++++------- .../plugins-available/maildrop_plugin.inc.php | 2 +- 44 files changed, 162 insertions(+), 37 deletions(-) diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 1aaf51cd2a..abe2a8a1a1 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 3f6f04ace7..bacf075baa 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 a112712690..cf9e85f3b3 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 a1810ab509..ead02a68c7 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 f91959a1f5..2bba3fa985 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 88d6a1b924..c71f683e96 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 e687954986..405a723a55 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 9ec150ce49..312654732c 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 1eacf4c3a3..a6ed0ab71f 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 070590181b..da716c6dfc 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 cca5d702d3..5214d14037 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 8fb6c4a692..0bef9d979f 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 9d4828b557..702725959d 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 1b9595da42..49be467e91 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 2abe1931f6..8f02122ade 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 08c9bc78ec..259c357671 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 fb09f0c0a0..72ebc26a4b 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 e653fbe288..79834d9a5c 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 34bf076359..cf29a97137 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 76c266d591..0f424c0099 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 69ac0a00a9..7b98e593c8 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 be329c304a..676dd45c22 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 45ea1d9b8b..97bddeddc7 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 8df58233a3..4871865ae8 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 170aaa6b61..34c41a827e 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 65962cd21c..58a4416cb2 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 3bedbd9b93..87be369635 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 a1a0f8cfd5..6dffeddb91 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 b58b9d13dd..1b36502b74 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 9a644a129b..37e8c8638b 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 593f83531e..889700cddd 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 0b7ffe3d37..6c715d52e2 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 97dfdafd88..ee1b6b980c 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 07bab6fd4f..6935ecd8e2 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 da0282e118..22c5b0fe45 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 d9a68404ae..258e8f6128 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 9e964e5e8a..a1ed0128f3 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 4c7058292e..8d14eb4ee6 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 a893e24e3f..dab2835057 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 (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_text (<span class="paratype">mediumtext</span>)</p> <p class="margin"> autoresponder_subject (<span class="paratype">varchar(255)</span>)</p> -<p class="margin"> move_junk (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> move_junk (<span class="paratype">enum('y','a','n')</span>)</p> <p class="margin"> custom_mailfilter (<span class="paratype">mediumtext</span>)</p> <p class="margin"> postfix (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> access (<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 8cb900fb40..d30b932393 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 (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_end_date (<span class="paratype">datetime</span>)</p> <p class="margin"> autoresponder_text (<span class="paratype">mediumtext</span>)</p> -<p class="margin"> move_junk (<span class="paratype">enum('n','y')</span>)</p> +<p class="margin"> move_junk (<span class="paratype">enum('y','a','n')</span>)</p> <p class="margin"> custom_mailfilter (<span class="paratype">mediumtext</span>)</p> <p class="margin"> postfix (<span class="paratype">enum('n','y')</span>)</p> <p class="margin"> access (<span class="paratype">enum('n','y')</span>)</p> diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index f72cd11d1f..6b83c26394 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 edd4060b9f..3a8695b1a6 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 9c9939655c..05ee88e777 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 2fefa26cfc..93bd29f338 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 { -- GitLab