';
+ }
+ row.append(cols);
+ table_id.append(row);
+ }
+ $('#mbox_attr_table').on('click', 'tr a', function (e) {
+ e.preventDefault();
+ $(this).parents('tr').remove();
+ });
+ $('#add_mbox_attr_row').click(function() {
+ add_table_row($('#mbox_attr_table'), "mbox_attr");
+ });
// detect element visibility changes
function onVisible(element, callback) {
diff --git a/data/web/json_api.php b/data/web/json_api.php
index b375bc8e..3c18bc73 100644
--- a/data/web/json_api.php
+++ b/data/web/json_api.php
@@ -1591,6 +1591,12 @@ if (isset($_GET['query'])) {
}
}
break;
+ case "spam-score":
+ $score = mailbox('get', 'spam_score', $object);
+ if ($score)
+ $score = array("score" => preg_replace("/\s+/", "", $score));
+ process_get_return($score);
+ break;
break;
// return no route found if no case is matched
default:
@@ -1867,8 +1873,6 @@ if (isset($_GET['query'])) {
case "quota_notification_bcc":
process_edit_return(quota_notification_bcc('edit', $attr));
break;
- case "domain-wide-footer":
- process_edit_return(mailbox('edit', 'domain_wide_footer', $attr));
break;
case "mailq":
process_edit_return(mailq('edit', array_merge(array('qid' => $items), $attr)));
@@ -1881,6 +1885,9 @@ if (isset($_GET['query'])) {
case "template":
process_edit_return(mailbox('edit', 'mailbox_templates', array_merge(array('ids' => $items), $attr)));
break;
+ case "custom-attribute":
+ process_edit_return(mailbox('edit', 'mailbox_custom_attribute', array_merge(array('mailboxes' => $items), $attr)));
+ break;
default:
process_edit_return(mailbox('edit', 'mailbox', array_merge(array('username' => $items), $attr)));
break;
@@ -1900,6 +1907,9 @@ if (isset($_GET['query'])) {
case "template":
process_edit_return(mailbox('edit', 'domain_templates', array_merge(array('ids' => $items), $attr)));
break;
+ case "footer":
+ process_edit_return(mailbox('edit', 'domain_wide_footer', array_merge(array('domains' => $items), $attr)));
+ break;
default:
process_edit_return(mailbox('edit', 'domain', array_merge(array('domain' => $items), $attr)));
break;
diff --git a/data/web/lang/lang.cs-cz.json b/data/web/lang/lang.cs-cz.json
index 1a5213b9..25d4c67c 100644
--- a/data/web/lang/lang.cs-cz.json
+++ b/data/web/lang/lang.cs-cz.json
@@ -209,7 +209,7 @@
"include_exclude_info": "Ve výchozím nastavení (bez výběru), jsou adresovány všechny mailové schránky",
"includes": "Zahrnout tyto přijemce",
"ip_check": "Kontrola IP",
- "ip_check_disabled": "Kontrola IP je vypnuta. Můžete ji zapnout v System > Nastavení > Options > Přizpůsobení",
+ "ip_check_disabled": "Kontrola IP je zakázána. Můžete ji povolit v nabídce Systém > Nastavení > Možnosti > Přizpůsobení",
"ip_check_opt_in": "Přihlásit se k používání služby třetí strany ipv4.mailcow.email a ipv6.mailcow.email pro zjištění externích IP adres.",
"is_mx_based": "Na základě MX",
"last_applied": "Naposledy použité",
diff --git a/data/web/lang/lang.de-de.json b/data/web/lang/lang.de-de.json
index 75c66af6..5737a664 100644
--- a/data/web/lang/lang.de-de.json
+++ b/data/web/lang/lang.de-de.json
@@ -574,6 +574,7 @@
"client_secret": "Client-Secret",
"comment_info": "Ein privater Kommentar ist für den Benutzer nicht einsehbar. Ein öffentlicher Kommentar wird als Tooltip im Interface des Benutzers angezeigt.",
"created_on": "Erstellt am",
+ "custom_attributes": "benutzerdefinierte Attribute",
"delete1": "Lösche Nachricht nach Übertragung vom Quell-Server",
"delete2": "Lösche Nachrichten von Ziel-Server, die nicht auf Quell-Server vorhanden sind",
"delete2duplicates": "Lösche Duplikate im Ziel",
@@ -614,6 +615,7 @@
"max_quota": "Max. Größe per Mailbox (MiB)",
"maxage": "Maximales Alter in Tagen einer Nachricht, die kopiert werden soll (0 = alle Nachrichten kopieren)",
"maxbytespersecond": "Max. Übertragungsrate in Bytes/s (0 für unlimitiert)",
+ "mbox_exclude": "Mailboxen ausschließen",
"mbox_rl_info": "Dieses Limit wird auf den SASL Loginnamen angewendet und betrifft daher alle Absenderadressen, die der eingeloggte Benutzer verwendet. Bei Mailbox Ratelimit überwiegt ein Domain-weites Ratelimit.",
"mins_interval": "Intervall (min)",
"multiple_bookings": "Mehrfaches Buchen",
@@ -1125,6 +1127,7 @@
"apple_connection_profile_complete": "Dieses Verbindungsprofil beinhaltet neben IMAP- und SMTP-Konfigurationen auch Pfade für die Konfiguration von CalDAV (Kalender) und CardDAV (Adressbücher) für ein Apple-Gerät.",
"apple_connection_profile_mailonly": "Dieses Verbindungsprofil beinhaltet IMAP- und SMTP-Konfigurationen für ein Apple-Gerät.",
"apple_connection_profile_with_app_password": "Es wird ein neues App-Passwort erzeugt und in das Profil eingefügt, damit bei der Einrichtung kein Passwort eingegeben werden muss. Geben Sie das Profil nicht weiter, da es einen vollständigen Zugriff auf Ihr Postfach ermöglicht.",
+ "attribute": "Attribut",
"change_password": "Passwort ändern",
"change_password_hint_app_passwords": "Ihre Mailbox hat %d App-Passwörter, die nicht geändert werden. Um diese zu verwalten, gehen Sie bitte zum App-Passwörter-Tab.",
"clear_recent_successful_connections": "Alle erfolgreichen Verbindungen bereinigen",
@@ -1244,6 +1247,7 @@
"tls_policy_warning": "Vorsicht: Entscheiden Sie sich unverschlüsselte Verbindungen abzulehnen, kann dies dazu führen, dass Kontakte Sie nicht mehr erreichen. Nachrichten, die die Richtlinie nicht erfüllen, werden durch einen Hard-Fail im Mailsystem abgewiesen. Diese Einstellung ist aktiv für die primäre Mailbox, für alle Alias-Adressen, die dieser Mailbox direkt zugeordnet sind (lediglich eine einzige Ziel-Adresse) und der Adressen, die sich aus Alias-Domains ergeben. Ausgeschlossen sind temporäre Aliasse (\"Spam-Alias-Adressen\"), Catch-All Alias-Adressen sowie Alias-Adressen mit mehreren Zielen.",
"user_settings": "Benutzereinstellungen",
"username": "Benutzername",
+ "value": "Wert",
"verify": "Verifizieren",
"waiting": "Warte auf Ausführung",
"week": "Woche",
diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json
index da97bebd..723ed62e 100644
--- a/data/web/lang/lang.en-gb.json
+++ b/data/web/lang/lang.en-gb.json
@@ -576,6 +576,7 @@
"client_secret": "Client secret",
"comment_info": "A private comment is not visible to the user, while a public comment is shown as tooltip when hovering it in a user's overview",
"created_on": "Created on",
+ "custom_attributes": "Custom attributes",
"delete1": "Delete from source when completed",
"delete2": "Delete messages on destination that are not on source",
"delete2duplicates": "Delete duplicates on destination",
@@ -592,7 +593,8 @@
"from_user": "{= from_user =} - From user part of envelope, e.g for \"moo@mailcow.tld\" it returns \"moo\"",
"from_name": "{= from_name =} - From name of envelope, e.g for \"Mailcow <moo@mailcow.tld>\" it returns \"Mailcow\"",
"from_addr": "{= from_addr =} - From address part of envelope",
- "from_domain": "{= from_domain =} - From domain part of envelope"
+ "from_domain": "{= from_domain =} - From domain part of envelope",
+ "custom": "{= foo =} - If mailbox has the custom attribute \"foo\" with value \"bar\" it returns \"bar\""
},
"domain_footer_plain": "PLAIN footer",
"domain_quota": "Domain quota",
@@ -623,6 +625,7 @@
"max_quota": "Max. quota per mailbox (MiB)",
"maxage": "Maximum age of messages in days that will be polled from remote (0 = ignore age)",
"maxbytespersecond": "Max. bytes per second (0 = unlimited)",
+ "mbox_exclude": "Exclude mailboxes",
"mbox_rl_info": "This rate limit is applied on the SASL login name, it matches any \"from\" address used by the logged-in user. A mailbox rate limit overrides a domain-wide rate limit.",
"mins_interval": "Interval (min)",
"multiple_bookings": "Multiple bookings",
@@ -1141,6 +1144,7 @@
"apple_connection_profile_complete": "This connection profile includes IMAP and SMTP parameters as well as CalDAV (calendars) and CardDAV (contacts) paths for an Apple device.",
"apple_connection_profile_mailonly": "This connection profile includes IMAP and SMTP configuration parameters for an Apple device.",
"apple_connection_profile_with_app_password": "A new app password is generated and added to the profile so that no password needs to be entered when setting up your device. Please do not share the file as it grants full access to your mailbox.",
+ "attribute": "Attribute",
"change_password": "Change password",
"change_password_hint_app_passwords": "Your account has %d app passwords that will not be changed. To manage these, go to the App passwords tab.",
"clear_recent_successful_connections": "Clear seen successful connections",
@@ -1271,6 +1275,7 @@
"tls_policy_warning": "Warning: If you decide to enforce encrypted mail transfer, you may lose emails. Messages to not satisfy the policy will be bounced with a hard fail by the mail system. This option applies to your primary email address (login name), all addresses derived from alias domains as well as alias addresses with only this single mailbox as target.",
"user_settings": "User settings",
"username": "Username",
+ "value": "Value",
"verify": "Verify",
"waiting": "Waiting",
"week": "week",
diff --git a/data/web/lang/lang.fi-fi.json b/data/web/lang/lang.fi-fi.json
index 7305e19e..d4a5a08b 100644
--- a/data/web/lang/lang.fi-fi.json
+++ b/data/web/lang/lang.fi-fi.json
@@ -891,5 +891,17 @@
"no_active_admin": "Viimeistä aktiivista järjestelmänvalvojaa ei voi poistaa käytöstä",
"session_token": "Lomakkeen tunnus sanoma ei kelpaa: tunnus sanoman risti riita",
"session_ua": "Lomakkeen tunnus sanoma ei kelpaa: käyttäjä agentin tarkistus virhe"
+ },
+ "datatables": {
+ "emptyTable": "Tietoja ei ole saatavilla taulukossa",
+ "expand_all": "Laajenna kaikki",
+ "lengthMenu": "Näytä menu merkinnät",
+ "loadingRecords": "Ladataan...",
+ "processing": "Ole hyvä ja odota...",
+ "search": "Etsi:",
+ "paginate": {
+ "first": "Ensimmäinen",
+ "last": "Edellinen"
+ }
}
}
diff --git a/data/web/lang/lang.pt-br.json b/data/web/lang/lang.pt-br.json
index 8e5b06a0..4361b607 100644
--- a/data/web/lang/lang.pt-br.json
+++ b/data/web/lang/lang.pt-br.json
@@ -1,6 +1,6 @@
{
"acl": {
- "alias_domains": "Adicionar domínios de alias",
+ "alias_domains": "Adicionar domínios alternativos",
"app_passwds": "Gerenciar senhas de aplicativos",
"bcc_maps": "Mapas BCC",
"delimiter_action": "Ação delimitadora",
@@ -107,7 +107,8 @@
"timeout2": "Tempo limite para conexão com o host local",
"username": "Nome de usuário",
"validate": "Validar",
- "validation_success": "Validado com sucesso"
+ "validation_success": "Validado com sucesso",
+ "dry": "Simular sincronização"
},
"admin": {
"access": "Acesso",
@@ -681,7 +682,9 @@
"title": "Editar objeto",
"unchanged_if_empty": "Se inalterado, deixe em branco",
"username": "Nome de usuário",
- "validate_save": "Valide e salve"
+ "validate_save": "Valide e salve",
+ "custom_attributes": "Atributos personalizados",
+ "mbox_exclude": "Excluir caixas de email"
},
"fido2": {
"confirm": "Confirme",
@@ -873,7 +876,7 @@
"sieve_preset_5": "Resposta automática (férias)",
"sieve_preset_6": "Rejeitar e-mail com resposta",
"sieve_preset_7": "Redirecionar e manter/soltar",
- "sieve_preset_8": "Descartar mensagem enviada para um endereço de alias do qual o remetente faz parte",
+ "sieve_preset_8": "Redirecionar e-mail de um remetente específico, marcar como lido e classificar em subpasta",
"sieve_preset_header": "Veja os exemplos de predefinições abaixo. Para obter mais detalhes, consulte a Wikipedia.",
"sogo_visible": "O alias é visível no SoGo",
"sogo_visible_n": "Ocultar alias no SoGo",
@@ -1277,7 +1280,9 @@
"weeks": "semanas",
"with_app_password": "com senha do aplicativo",
"year": "ano",
- "years": "anos"
+ "years": "anos",
+ "attribute": "Atributo",
+ "value": "Valor"
},
"warning": {
"cannot_delete_self": "Não é possível excluir o usuário conectado",
diff --git a/data/web/lang/lang.ru-ru.json b/data/web/lang/lang.ru-ru.json
index 67800f33..2a909f29 100644
--- a/data/web/lang/lang.ru-ru.json
+++ b/data/web/lang/lang.ru-ru.json
@@ -107,7 +107,8 @@
"validate": "Проверить",
"validation_success": "Проверка прошла успешно",
"tags": "Теги",
- "app_passwd_protocols": "Разрешенные протоколы для пароля приложения"
+ "app_passwd_protocols": "Разрешенные протоколы для пароля приложения",
+ "dry": "Имитировать синхронизацию"
},
"admin": {
"access": "Настройки доступа",
@@ -625,11 +626,14 @@
"auth_user": "{= auth_user =} - Аутентифицированное имя пользователя, указанное MTA",
"from_user": "{= from_user =} - Из пользовательской части envelope, например, для \"moo@mailcow.tld\" возвращается \"moo\"",
"from_addr": "{= from_addr =} - Из адресной части envelope",
- "from_domain": "{= from_domain =} - из доменной части envelope"
+ "from_domain": "{= from_domain =} - из доменной части envelope",
+ "custom": "{= foo =} - Если почтовый ящик имеет пользовательский атрибут \"foo\" со значением \"bar\", он возвращает \"bar\"."
},
"domain_footer": "Нижний колонтитул домена",
"domain_footer_html": "HTML нижний колонтитул",
- "domain_footer_plain": "ПРОСТОЙ нижний колонтитул"
+ "domain_footer_plain": "ПРОСТОЙ нижний колонтитул",
+ "mbox_exclude": "Исключить почтовые ящики",
+ "custom_attributes": "Пользовательские атрибуты"
},
"fido2": {
"confirm": "Подтвердить",
@@ -1198,7 +1202,9 @@
"apple_connection_profile_with_app_password": "Новый пароль приложения генерируется и добавляется в профиль, поэтому при настройке устройства не требуется вводить пароль. Не предоставляйте доступ к файлу, поскольку он предоставляет полный доступ к вашему почтовому ящику.",
"direct_protocol_access": "Этот пользователь почтового ящика имеет прямой, внешний доступ к следующим протоколам и приложениям. Эта настройка контролируется вашим администратором. Для предоставления доступа к отдельным протоколам и приложениям могут быть созданы пароли приложений. Кнопка \"Вход в веб-почту\" обеспечивает единый вход в SOGo и всегда доступна.",
"with_app_password": "с паролем приложения",
- "change_password_hint_app_passwords": "В вашей учетной записи есть {{number_of_app_passwords}} паролей приложений, которые не будут изменены. Чтобы управлять ими, перейдите на вкладку \"Пароли приложений\"."
+ "change_password_hint_app_passwords": "В вашей учетной записи есть {{number_of_app_passwords}} паролей приложений, которые не будут изменены. Чтобы управлять ими, перейдите на вкладку \"Пароли приложений\".",
+ "attribute": "Атрибут",
+ "value": "Значение"
},
"warning": {
"cannot_delete_self": "Вы не можете удалить сами себя",
diff --git a/data/web/lang/lang.uk-ua.json b/data/web/lang/lang.uk-ua.json
index d7f3e3e3..67fcb655 100644
--- a/data/web/lang/lang.uk-ua.json
+++ b/data/web/lang/lang.uk-ua.json
@@ -107,7 +107,8 @@
"kind": "Вид",
"delete1": "Видалити з джерела після завершення",
"delete2duplicates": "Видалити дублікати на місці призначення",
- "domain_quota_m": "Загальна квота домену (МіБ)"
+ "domain_quota_m": "Загальна квота домену (МіБ)",
+ "dry": "Імітувати синхронізацію"
},
"admin": {
"access": "Налаштування доступу",
@@ -650,10 +651,13 @@
"auth_user": "{= auth_user =} - Аутентифіковане ім'я користувача, вказане MTA",
"from_user": "{= from_user =} - З користувацької частини envelope, наприклад, для \"moo@mailcow.tld\" повертає \"moo\"",
"from_addr": "{= from_addr =} - З адресної частини envelope",
- "from_domain": "{= from_domain =} - З доменної частини envelope"
+ "from_domain": "{= from_domain =} - З доменної частини envelope",
+ "custom": "{= foo =} - Якщо поштова скринька має кастомний атрибут \"foo\" зі значенням \"bar\", то повертається \"bar\""
},
"domain_footer_html": "Нижній колонтитул HTML",
- "domain_footer_plain": "ЗВИЧАЙНИЙ нижній колонтитул"
+ "domain_footer_plain": "ЗВИЧАЙНИЙ нижній колонтитул",
+ "custom_attributes": "Користувацькі атрибути",
+ "mbox_exclude": "Виключити поштові скриньки"
},
"fido2": {
"confirm": "Підтвердити",
@@ -1248,7 +1252,9 @@
"tls_policy_warning": "Попередження: якщо ви увімкнете примусове шифрування пошти, ви можете зіткнутися з втратою листів. Повідомлення, які не відповідають політиці, будуть відкидатися з повідомленням поштовим сервером про серйозний збій. Цей параметр застосовується до вашої основної адреси електронної пошти (логіну), усім особистим псевдонімам та псевдонімам доменів. Маються на увазі лише псевдоніми з однією поштовою скринькою, як одержувач.",
"year": "рік",
"years": "років",
- "pushover_sound": "Звук"
+ "pushover_sound": "Звук",
+ "value": "Значення",
+ "attribute": "Атрибут"
},
"warning": {
"domain_added_sogo_failed": "Домен був доданий, але перезавантажити SOGo не вдалося, будь ласка, перевірте журнали сервера.",
diff --git a/data/web/templates/edit.twig b/data/web/templates/edit.twig
index af83a31d..375018c6 100644
--- a/data/web/templates/edit.twig
+++ b/data/web/templates/edit.twig
@@ -24,6 +24,7 @@