diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql index 259035db1e44ac4bce78cd6ca8ee84d1c4c2a679..efd0f4082b720d85f96d612a105ba8a799694522 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -20,3 +20,6 @@ UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'co -- default php-fpm to ondemand mode ALTER TABLE `web_domain` ALTER pm SET DEFAULT 'ondemand'; +ALTER TABLE `mail_user` + ADD `purge_trash_days` INT NOT NULL DEFAULT '0' AFTER `move_junk`, + ADD `purge_junk_days` INT NOT NULL DEFAULT '0' AFTER `purge_trash_days`; diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 3908cf382b4e7f3a38782739f7316d4ed0fa4b2f..4965358bc65a695b11a7f4719774dfec2c229297 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -1047,6 +1047,8 @@ CREATE TABLE `mail_user` ( `autoresponder_subject` varchar(255) NOT NULL default 'Out of office reply', `autoresponder_text` mediumtext NULL, `move_junk` enum('n','y') NOT NULL default 'n', + `purge_trash_days` INT NOT NULL DEFAULT '0', + `purge_junk_days` INT NOT NULL DEFAULT '0', `custom_mailfilter` mediumtext, `postfix` enum('n','y') NOT NULL default 'y', `greylisting` enum('n','y' ) NOT NULL DEFAULT 'n', diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index 0efc7f3d6b58a08b8137dd51b96a6b12ebdc4a44..83142f8a854d26e2a57753d43defde1d4703a2a6 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -406,6 +406,20 @@ if ($global_config['mail']['mailbox_show_mail_filter_tab'] === 'y') { 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'purge_trash_days' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( + ), + 'default' => '0', + ), + 'purge_junk_days' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( + ), + 'default' => '0', + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/mail/lib/lang/ar_mail_user.lng b/interface/web/mail/lib/lang/ar_mail_user.lng index c68becf335a5e2796d12f2c2589da6022d9900a5..a67a83c07a9da4bb362e27096e0e4d298e301428 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -62,4 +62,8 @@ $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 000377077b5a9bb1865f1fb29e426c4934fb2481..3b9a27390e7685d03c895faaa8ebb68f14ea15ca 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index ed6e35ef617d5c3c04fdc38c1a5029aef873c359..2aca5c373657f9f58c60ddb7afea125ea704b197 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -62,4 +62,8 @@ $wb['monthly_backup_txt'] = 'Mensal'; $wb['email_error_isascii'] = 'Por favor, não use caracteres especiais para a senha. Isto poderá causar problemas no cliente de e-mail.'; $wb['cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; $wb['sender_cc_note_txt'] = '(separar múltiplos endereços de e-mails com vÃrgulas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 096572b5e003ea8bb1f60998b94de06c6b6b1486..e380b55d2d67a05e9229f7e094c67282031fe589 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index c697e4cffc851800484cd6bec1806483845b8dde..1946d4150ff2dd06c383c212015b72195e0484b1 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'TýdennÃ'; $wb['monthly_backup_txt'] = 'MÄ›sÃÄnÃ'; $wb['sender_cc_note_txt'] = '(PÅ™i posÃlánà kopià na vÃce e-mailových adres, oddÄ›lte Äárkami.) '; $wb['password_click_to_set_txt'] = 'Pro nastavenà klikni zde'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index b60a756b09fe913f1b16a339791ce0222e17029c..7c1f02cd4fa1aae6678d79aff1e08b81e3505a06 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -62,4 +62,8 @@ $wb['sender_cc_txt'] = 'Kopie ausgehender Emails senden an (BCC)'; $wb['sender_cc_error_isemail'] = '-Kopie ausgehender Emails senden an- Feld enthält keine gültige Emailadresse'; $wb['sender_cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/dk_mail_user.lng b/interface/web/mail/lib/lang/dk_mail_user.lng index fb846da19950a1d91eb746a783188fec4c084188..8c0957d3535e2c29940bec48e2955b7c8b71a0b2 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -62,4 +62,8 @@ $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index a097470ad7a0b921a0ac92cf7c253f6a800fbd23..f735d6e7b304fc57fe805c786df3c464359d4f31 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index 4174081b53973e16de703a77fcfc4816c139814b..82cab6d70c1466df818f3f3bfb51cad47b0ae29c 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -62,4 +62,8 @@ $wb['monthly_backup_txt'] = 'Monthly'; $wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index 93c2095e1c75f5bc208a7288ef46ba35b973896b..418fd2dbfa525f62d8788683dd7ee32143a72191 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -62,4 +62,8 @@ $wb['sender_cc_txt'] = 'Enviar copia saliente a'; $wb['server_id_txt'] = 'id_del_servidor'; $wb['weekly_backup_txt'] = 'Semanalmente'; $wb['password_click_to_set_txt'] = 'Click to set'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index 8f94f0158f55ef5c7a056e45220f53e3e26201ff..a764e9569380ec55a712f8121c37583fce5f2d10 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -62,4 +62,8 @@ $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; $wb['password_click_to_set_txt'] = 'Click to set'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index bb54c2e0c0f65e2da328f75dde4c2e46ac27a810..732f3d8cb7543e45fcd539d11ca59512bfab1498 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -62,4 +62,8 @@ $wb['weekly_backup_txt'] = 'Hebdomadaire'; $wb['monthly_backup_txt'] = 'Mensuel'; $wb['sender_cc_note_txt'] = '(Séparer les adresses e-mail multiples par des virgules)'; $wb['password_click_to_set_txt'] = 'Cliquez pour définir'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 8dcfe7a6fa6bf6fea6a2d11290a24123cf10152b..7406e2d656e03afb202d67e6bc57d7c27b0452bc 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -62,4 +62,8 @@ $wb['repeat_password_txt'] = 'Repeat Password'; $wb['password_mismatch_txt'] = 'The passwords do not match.'; $wb['password_match_txt'] = 'The passwords do match.'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 43720fbd84891039a0fac5cd6a65f9abd7f457dc..db8edf775e64aa28dc1d7e0db670f7c747c7e9e5 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index ba17e373c7d8ca57d9a6c8307fea3c60ff4274e4..670550062cbd800b4870bb00f15a3374a87defd4 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index e6820a03290f57818937c685258922d9488475c3..dad3f696544edfd16244ce3f33e020f2df75d12f 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -62,4 +62,8 @@ $wb['daily_backup_txt'] = 'Daily'; $wb['weekly_backup_txt'] = 'Weekly'; $wb['monthly_backup_txt'] = 'Monthly'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 3cd498f27054aabf3dae0b07397145e449b2281d..803a278d5bd30b45c2bd73bd6b2346bbcdb9cdf3 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 65d89a32afa938b07d3fc066e6152f2c299b63d7..39cd0bd0f0592230761381428bff30b8205fd16b 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -61,4 +61,8 @@ $wb['autoresponder_start_date_is_required'] = 'Een startdatun is vereist voor he $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan'; $wb['sender_cc_error_isemail'] = 'Het \\"Stuur uitgaande kopie aan\\" veld bevat geen geldig e-mail adres'; $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index d090fadb2a18e90e114f9c06b6a2749b7389c55d..8a35e7742e6262c9891a7fea584fccda5aafed49 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index aa0e9a0a050a76380d1396ad48a299d0eec2c3b3..56a1f16d304908a46d40e2809134bdcebf6c167e 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index 3f0f8ec479943f3432c6039170a0931e4a051d86..ccdcc49fdfa48852abec8a6b8dfecbf739bbf737 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index 526c976ed594e96e801f5f207754937c54ba729f..fcfadd9db9ff61f946eeb0f61f6993f13bb184ac 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Дата начала должн $wb['sender_cc_txt'] = 'Отправка иÑходÑщей копии на'; $wb['sender_cc_error_isemail'] = 'Поле -Отправка иÑходÑщей копии на- не Ñодержит дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты'; $wb['sender_cc_note_txt'] = '(Разделите неÑколько адреÑов Ñлектронной почты запÑтыми)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index a427c5060667499768e461edcbbf127a131f9c9c..c081446557ee5bf329c75c447c895a9b89569922 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index 92c6dea5781ef9ba8c34f3a25ff4997e3d4274c8..eb70b8eba9899713e3fb8a51c65aa1b28424dac3 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -62,4 +62,8 @@ $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autor $wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['sender_cc_error_isemail'] = 'The -Send outgoing copy to- field does not contain a valid email address'; $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$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'; ?> diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 99e98603963a0c70843cb364bce11c5dd985a26b..c7dec33b996a3e3d5ca815e5ca4c27a00db850e3 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -62,4 +62,8 @@ $wb['monthly_backup_txt'] = 'Aylık'; $wb['email_error_isascii'] = 'E-posta istemcinizde sorun yaÅŸamamak için lütfen parolanızda dile özel unikod karakterler kullanmayın.'; $wb['cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; $wb['sender_cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; +$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'; ?> diff --git a/interface/web/mail/templates/mail_user_mailfilter_edit.htm b/interface/web/mail/templates/mail_user_mailfilter_edit.htm index fc40398d5dc4f5ed1d93f840647b2912941f0e01..4c7058292ea5d3ce31c95acc3f93898d280bf832 100644 --- a/interface/web/mail/templates/mail_user_mailfilter_edit.htm +++ b/interface/web/mail/templates/mail_user_mailfilter_edit.htm @@ -1,16 +1,39 @@ - <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> - +<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> - {tmpl_var name='filter_records'} +<div class="form-group"> + <label for="purge_trash_days" class="col-sm-3 control-label">{tmpl_var name='purge_trash_days_txt'}</label> + <div class="col-sm-9"> + <div class="input-group"> + <tmpl_if name="show_config_info"> + <input type="text" name="purge_trash_days" id="purge_trash_days" value="{tmpl_var name='purge_trash_days'}" class="form-control" data-toggle="tooltip" title="{tmpl_var name='tooltip_purge_trash_days_txt'}"> + <tmpl_else> + <input type="text" name="purge_trash_days" id="purge_trash_days" value="{tmpl_var name='purge_trash_days'}" class="form-control"> + </tmpl_if> + </div> + </div> +</div> - <input type="hidden" name="id" value="{tmpl_var name='id'}"> +<div class="form-group"> + <label for="purge_junk_days" class="col-sm-3 control-label">{tmpl_var name='purge_junk_days_txt'}</label> + <div class="col-sm-9"> + <div class="input-group"> + <tmpl_if name="show_config_info"> + <input type="text" name="purge_junk_days" id="purge_junk_days" value="{tmpl_var name='purge_junk_days'}" class="form-control" data-toggle="tooltip" title="{tmpl_var name='tooltip_purge_junk_days_txt'}"> + <tmpl_else> + <input type="text" name="purge_junk_days" id="purge_junk_days" value="{tmpl_var name='purge_junk_days'}" class="form-control"> + </tmpl_if> + </div> + </div> +</div> + +{tmpl_var name='filter_records'} - <div class="clear"><div class="right"> - <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> - <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> +<input type="hidden" name="id" value="{tmpl_var name='id'}"> + +<div class="clear"><div class="right"> + <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php">{tmpl_var name='btn_save_txt'}</button> + <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="mail/mail_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> +</div></div> diff --git a/server/lib/classes/cron.d/500-clean_mailboxes.inc.php b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php new file mode 100755 index 0000000000000000000000000000000000000000..8617d0d76d0d578aa8b5de522cc5177c4aae544c --- /dev/null +++ b/server/lib/classes/cron.d/500-clean_mailboxes.inc.php @@ -0,0 +1,95 @@ +<?php + +/* +Copyright (c) 2020, Florian Schaal, schaal @it UG +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +class cronjob_clean_mailboxes extends cronjob { + + // should run before quota notify and backup + // quota notify and backup is both '0 0 * * *' + + // job schedule + protected $_schedule = '00 22 * * *'; + + /* this function is optional if it contains no custom code */ + public function onPrepare() { + global $app; + + parent::onPrepare(); + } + + /* this function is optional if it contains no custom code */ + public function onBeforeRun() { + global $app; + + return parent::onBeforeRun(); + } + + public function onRunJob() { + global $app, $conf; + + $trash_names=array('Trash', 'Papierkorb', 'Deleted Items', 'Deleted Messages', 'INBOX.Trash', 'INBOX.Papierkorb', 'INBOX.Deleted Messages'); + $junk_names=array('Junk', 'Junk Email', 'SPAM', 'INBOX.SPAM'); + + $purge_cmd = 'doveadm expunge -u ? mailbox ? sentbefore '; + + $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); + + if(is_array($records) && !empty($records)) { + foreach($records as $email) { + if($email['purge_trash_days'] > 0) { + foreach($trash_names as $trash) { + if(is_dir($email['maildir'].'/Maildir/.'.$trash)) { + $app->system->exec_safe($purge_cmd.intval($email['purge_trash_days']).'d', $email['email'], $trash); + } + } + } + if($email['purge_junk_days'] > 0) { + foreach($junk_names as $junk) { + if(is_dir($email['maildir'].'/Maildir/.'.$junk)) { + $app->system->exec_safe($purge_cmd.intval($email['purge_junk_days']).'d', $email['email'], $junk); + } + } + } + } + } + + parent::onRunJob(); + } + + /* this function is optional if it contains no custom code */ + public function onAfterRun() { + global $app; + + parent::onAfterRun(); + } + +} + +?>