From 02b2988beb996a1af11d164082b79c302267206a Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Tue, 27 Dec 2022 13:56:09 +0100 Subject: [PATCH 01/43] [Web] fix typo in SASL table logs --- data/web/js/site/debug.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/web/js/site/debug.js b/data/web/js/site/debug.js index 85e6b789..358b00c6 100644 --- a/data/web/js/site/debug.js +++ b/data/web/js/site/debug.js @@ -479,7 +479,7 @@ jQuery(function($){ data: 'datetime', defaultContent: '', createdCell: function(td, cellData) { - cellData = Math.floor((new Date(data.replace(/-/g, "/"))).getTime() / 1000); + cellData = Math.floor((new Date(cellData.replace(/-/g, "/"))).getTime() / 1000); createSortableDate(td, cellData) } } From 4d2e32ee4000b349d8915f574f492c1861d4edba Mon Sep 17 00:00:00 2001 From: Vincent Simon Date: Thu, 29 Dec 2022 18:24:15 +0100 Subject: [PATCH 02/43] [Web] added missing unban action --- data/web/lang/lang.en-gb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index 00b14f07..0bdbe8ea 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -264,6 +264,7 @@ "quota_notifications": "Quota notifications", "quota_notifications_info": "Quota notifications are sent to users once when crossing 80% and once when crossing 95% usage.", "quota_notifications_vars": "{{percent}} equals the current quota of the user
{{username}} is the mailbox name", + "queue_unban": "unban", "r_active": "Active restrictions", "r_inactive": "Inactive restrictions", "r_info": "Greyed out/disabled elements on the list of active restrictions are not known as valid restrictions to mailcow and cannot be moved. Unknown restrictions will be set in order of appearance anyway.
You can add new elements in inc/vars.local.inc.php to be able to toggle them.", From 690c34bc1d10d8ab463d59988ddaa0559ff1f1ec Mon Sep 17 00:00:00 2001 From: Tom Udding Date: Fri, 30 Dec 2022 16:22:52 +0100 Subject: [PATCH 03/43] Sort sync jobs DataTable based on ID By setting the default column to perform the sort on, the additional sort option for the first (hidden) column is also removed. --- data/web/js/site/mailbox.js | 1 + 1 file changed, 1 insertion(+) diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js index 12c4bb4d..30bd91bf 100644 --- a/data/web/js/site/mailbox.js +++ b/data/web/js/site/mailbox.js @@ -1908,6 +1908,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/syncjobs/all/no_log", From de30650dc78c025f8413e498a063b1e64ad6398b Mon Sep 17 00:00:00 2001 From: Tom Udding Date: Fri, 30 Dec 2022 16:32:02 +0100 Subject: [PATCH 04/43] Sort other mailbox DataTables also descending by ID Also removes the extra non-usable sort option. --- data/web/js/site/mailbox.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js index 30bd91bf..0e400b30 100644 --- a/data/web/js/site/mailbox.js +++ b/data/web/js/site/mailbox.js @@ -623,6 +623,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/domain/template/all", @@ -1078,6 +1079,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/mailbox/template/all", @@ -1414,6 +1416,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/bcc/all", @@ -1510,6 +1513,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/recipient_map/all", @@ -1593,6 +1597,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/tls-policy-map/all", @@ -1686,6 +1691,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/alias/all", @@ -2049,6 +2055,7 @@ jQuery(function($){ processing: true, serverSide: false, language: lang_datatables, + order:[[2, 'desc']], ajax: { type: "GET", url: "/api/v1/get/filters/all", From 75e4953070c6e1e39bbe93682df8b5d5d72b0aaa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 31 Dec 2022 16:49:02 +0100 Subject: [PATCH 05/43] Update mugi111/tweet-trigger-release action to v1.2 (#4952) Signed-off-by: milkmaker Signed-off-by: milkmaker Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/tweet-trigger-publish-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tweet-trigger-publish-release.yml b/.github/workflows/tweet-trigger-publish-release.yml index 86cf628d..9aab121a 100644 --- a/.github/workflows/tweet-trigger-publish-release.yml +++ b/.github/workflows/tweet-trigger-publish-release.yml @@ -11,7 +11,7 @@ jobs: run: | RELEASE_TAG=$(curl https://api.github.com/repos/mailcow/mailcow-dockerized/releases/latest | jq -r '.tag_name') - name: Tweet-trigger-publish-release - uses: mugi111/tweet-trigger-release@v1.1 + uses: mugi111/tweet-trigger-release@v1.2 with: consumer_key: ${{ secrets.CONSUMER_KEY }} consumer_secret: ${{ secrets.CONSUMER_SECRET }} From 9fe8bfadf3c0eb6fec3fbd1a0a7c452e45244b23 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 31 Dec 2022 16:49:21 +0100 Subject: [PATCH 06/43] Update actions/stale action to v7 (#4953) Signed-off-by: milkmaker Signed-off-by: milkmaker Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/close_old_issues_and_prs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close_old_issues_and_prs.yml b/.github/workflows/close_old_issues_and_prs.yml index 83a75d25..64002617 100644 --- a/.github/workflows/close_old_issues_and_prs.yml +++ b/.github/workflows/close_old_issues_and_prs.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write steps: - name: Mark/Close Stale Issues and Pull Requests 🗑️ - uses: actions/stale@v6.0.1 + uses: actions/stale@v7.0.0 with: repo-token: ${{ secrets.STALE_ACTION_PAT }} days-before-stale: 60 From 072cbe62de4674f63c5f592e38a5253701fc6c2e Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 31 Dec 2022 17:11:16 +0100 Subject: [PATCH 07/43] Enable regex as manager Add regex for matchstring line --- .github/renovate.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/renovate.json b/.github/renovate.json index 37962b2a..7d0eabf2 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -9,5 +9,13 @@ "@magiccc" ], "baseBranches": ["staging"], - "enabledManagers": ["github-actions"] + "enabledManagers": ["github-actions", "regex"], + "regexManagers": [ + { + "fileMatch": ["^helper-scripts\/nextcloud.sh$"], + "matchStrings": [ + "#\\srenovate:\\sdatasource=(?.*?) depName=(?.*?)( versioning=(?.*?))?( extractVersion=(?.*?))?\\s.*?_VERSION=(?.*)" + ] + } + ] } From afa1ed1effd8942e147b0a8d82f699513bae2830 Mon Sep 17 00:00:00 2001 From: Peter Date: Sat, 31 Dec 2022 17:13:38 +0100 Subject: [PATCH 08/43] Add matchstring line for regex Update nextcloud to 25.0.2 change download URLs --- helper-scripts/nextcloud.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/helper-scripts/nextcloud.sh b/helper-scripts/nextcloud.sh index 16311fc2..37c0d5f3 100755 --- a/helper-scripts/nextcloud.sh +++ b/helper-scripts/nextcloud.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash -NEXTCLOUD_VER="25" +# renovate: datasource=github-releases depName=nextcloud/server versioning=semver extractVersion=^v(?.*)$ +NEXTCLOUD_VERSION=25.0.2 for bin in curl dirmngr; do if [[ -z $(which ${bin}) ]]; then echo "Cannot find ${bin}, exiting..."; exit 1; fi @@ -77,7 +78,7 @@ elif [[ ${NC_UPDATE} == "y" ]]; then echo "Cannot upgrade to new major version, please update manually." exit 1 else - curl -L# -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/latest-$NEXTCLOUD_VER.tar.bz2" || { echo "Failed to download Nextcloud archive."; exit 1; } \ + curl -L# -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-$NEXTCLOUD_VERSION.tar.bz2" || { echo "Failed to download Nextcloud archive."; exit 1; } \ && tar -xjf nextcloud.tar.bz2 -C ./data/web/ \ && rm nextcloud.tar.bz2 \ && mkdir -p ./data/web/nextcloud/data \ @@ -98,7 +99,7 @@ elif [[ ${NC_INSTALL} == "y" ]]; then ADMIN_NC_PASS=$( Date: Tue, 3 Jan 2023 18:12:18 +0100 Subject: [PATCH 09/43] Translations update from Weblate (#4960) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Web] Updated lang.zh-cn.json Co-authored-by: milkmaker Co-authored-by: 雨 * [Web] Updated lang.en-gb.json Co-authored-by: Peter * [Web] Updated lang.de-de.json Co-authored-by: Peter * [Web] Updated lang.it-it.json Co-authored-by: Stefano Co-authored-by: milkmaker Co-authored-by: 雨 Co-authored-by: Peter Co-authored-by: Stefano --- data/web/lang/lang.de-de.json | 50 +++++----- data/web/lang/lang.en-gb.json | 60 ++++++------ data/web/lang/lang.it-it.json | 177 +++++++++++++++++++++++----------- data/web/lang/lang.zh-cn.json | 35 ++++++- 4 files changed, 206 insertions(+), 116 deletions(-) diff --git a/data/web/lang/lang.de-de.json b/data/web/lang/lang.de-de.json index 7b4b1f46..d430d0b3 100644 --- a/data/web/lang/lang.de-de.json +++ b/data/web/lang/lang.de-de.json @@ -459,30 +459,30 @@ "yotp_verification_failed": "Yubico OTP-Verifizierung fehlgeschlagen: %s" }, "datatables": { - "collapse_all": "Alle Einklappen", - "decimal": "", - "emptyTable": "Keine Daten in der Tabelle vorhanden", - "expand_all": "Alle Ausklappen", - "info": "_START_ bis _END_ von _TOTAL_ Einträgen", - "infoEmpty": "0 bis 0 von 0 Einträgen", - "infoFiltered": "(gefiltert von _MAX_ Einträgen)", - "infoPostFix": "", - "thousands": ".", - "lengthMenu": "_MENU_ Einträge anzeigen", - "loadingRecords": "Wird geladen...", - "processing": "Bitte warten...", - "search": "Suchen", - "zeroRecords": "Keine Einträge vorhanden.", - "paginate": { - "first": "Erste", - "previous": "Zurück", - "next": "Nächste", - "last": "Letzte" - }, - "aria": { - "sortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren", - "sortDescending": ": aktivieren, um Spalte absteigend zu sortieren" - } + "collapse_all": "Alle Einklappen", + "decimal": "", + "emptyTable": "Keine Daten in der Tabelle vorhanden", + "expand_all": "Alle Ausklappen", + "info": "_START_ bis _END_ von _TOTAL_ Einträgen", + "infoEmpty": "0 bis 0 von 0 Einträgen", + "infoFiltered": "(gefiltert von _MAX_ Einträgen)", + "infoPostFix": "", + "thousands": ".", + "lengthMenu": "_MENU_ Einträge anzeigen", + "loadingRecords": "Wird geladen...", + "processing": "Bitte warten...", + "search": "Suchen", + "zeroRecords": "Keine Einträge vorhanden.", + "paginate": { + "first": "Erste", + "previous": "Zurück", + "next": "Nächste", + "last": "Letzte" + }, + "aria": { + "sortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren", + "sortDescending": ": aktivieren, um Spalte absteigend zu sortieren" + } }, "debug": { "chart_this_server": "Chart (dieser Server)", @@ -942,7 +942,7 @@ "queue": { "delete": "Queue löschen", "flush": "Queue flushen", - "info" : "In der Mailqueue befinden sich alle E-Mails, welche auf eine Zustellung warten. Sollte eine E-Mail eine längere Zeit innerhalb der Mailqueue stecken wird diese automatisch vom System gelöscht.
Die Fehlermeldung der jeweiligen Mail gibt aufschluss darüber, warum diese nicht zugestellt werden konnte", + "info": "In der Mailqueue befinden sich alle E-Mails, welche auf eine Zustellung warten. Sollte eine E-Mail eine längere Zeit innerhalb der Mailqueue stecken wird diese automatisch vom System gelöscht.
Die Fehlermeldung der jeweiligen Mail gibt aufschluss darüber, warum diese nicht zugestellt werden konnte", "legend": "Funktionen der Mailqueue Aktionen:", "ays": "Soll die derzeitige Queue wirklich komplett bereinigt werden?", "deliver_mail": "Ausliefern", diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index 00b14f07..22fffac8 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -462,30 +462,30 @@ "yotp_verification_failed": "Yubico OTP verification failed: %s" }, "datatables": { - "collapse_all": "Collapse All", - "decimal": "", - "emptyTable": "No data available in table", - "expand_all": "Expand All", - "info": "Showing _START_ to _END_ of _TOTAL_ entries", - "infoEmpty": "Showing 0 to 0 of 0 entries", - "infoFiltered": "(filtered from _MAX_ total entries)", - "infoPostFix": "", - "thousands": ",", - "lengthMenu": "Show _MENU_ entries", - "loadingRecords": "Loading...", - "processing": "Please wait...", - "search": "Search:", - "zeroRecords": "No matching records found", - "paginate": { - "first": "First", - "last": "Last", - "next": "Next", - "previous": "Previous" - }, - "aria": { - "sortAscending": ": activate to sort column ascending", - "sortDescending": ": activate to sort column descending" - } + "collapse_all": "Collapse All", + "decimal": "", + "emptyTable": "No data available in table", + "expand_all": "Expand All", + "info": "Showing _START_ to _END_ of _TOTAL_ entries", + "infoEmpty": "Showing 0 to 0 of 0 entries", + "infoFiltered": "(filtered from _MAX_ total entries)", + "infoPostFix": "", + "thousands": ",", + "lengthMenu": "Show _MENU_ entries", + "loadingRecords": "Loading...", + "processing": "Please wait...", + "search": "Search:", + "zeroRecords": "No matching records found", + "paginate": { + "first": "First", + "last": "Last", + "next": "Next", + "previous": "Previous" + }, + "aria": { + "sortAscending": ": activate to sort column ascending", + "sortDescending": ": activate to sort column descending" + } }, "debug": { "chart_this_server": "Chart (this server)", @@ -947,7 +947,7 @@ "queue": { "delete": "Delete all", "flush": "Flush queue", - "info" : "The mail queue contains all e-mails that are waiting for delivery. If an email is stuck in the mail queue for a long time, it is automatically deleted by the system.
The error message of the respective mail gives information about why the mail could not be delivered.", + "info": "The mail queue contains all e-mails that are waiting for delivery. If an email is stuck in the mail queue for a long time, it is automatically deleted by the system.
The error message of the respective mail gives information about why the mail could not be delivered.", "legend": "Mail queue actions functions:", "ays": "Please confirm you want to delete all items from the current queue.", "deliver_mail": "Deliver", @@ -961,11 +961,11 @@ "unhold_mail_legend": "Releases selected mails for delivery. (Requires prior hold)" }, "ratelimit": { - "disabled": "Disabled", - "second": "msgs / second", - "minute": "msgs / minute", - "hour": "msgs / hour", - "day": "msgs / day" + "disabled": "Disabled", + "second": "msgs / second", + "minute": "msgs / minute", + "hour": "msgs / hour", + "day": "msgs / day" }, "start": { "help": "Show/Hide help panel", diff --git a/data/web/lang/lang.it-it.json b/data/web/lang/lang.it-it.json index 65c3d47a..8bfa9738 100644 --- a/data/web/lang/lang.it-it.json +++ b/data/web/lang/lang.it-it.json @@ -43,7 +43,7 @@ "app_name": "Nome app", "app_password": "Aggiungi la password dell'app", "automap": "Prova a mappare automaticamente le cartelle (\"Sent items\", \"Sent\" => \"Posta inviata\" ecc.)", - "backup_mx_options": "Relay options", + "backup_mx_options": "Opzioni di inoltro", "comment_info": "Un commento privato non è visibile all'utente, mentre un commento pubblico viene mostrato come suggerimento quando si passa con il mouse nella panoramica di un utente", "custom_params": "Parametri personalizzati", "custom_params_hint": "Corretto: --param=xy, errato: --param xy", @@ -303,7 +303,7 @@ "spamfilter": "Filtri spam", "subject": "Oggetto", "success": "Successo", - "sys_mails": "System mails", + "sys_mails": "Mail di sistema", "text": "Testo", "time": "Orario", "title": "Titolo", @@ -335,7 +335,8 @@ "api_read_write": "Accesso in lettura-scrittura", "oauth2_apps": "App OAuth2", "oauth2_add_client": "Aggiungere il client OAuth2", - "rsettings_preset_4": "Disattivare Rspamd per un dominio" + "rsettings_preset_4": "Disattivare Rspamd per un dominio", + "options": "Opzioni" }, "danger": { "access_denied": "Accesso negato o form di login non corretto", @@ -364,7 +365,7 @@ "extra_acl_invalid": "External sender address \"%s\" is invalid", "extra_acl_invalid_domain": "External sender \"%s\" uses an invalid domain", "fido2_verification_failed": "FIDO2 verification failed: %s", - "file_open_error": "File cannot be opened for writing", + "file_open_error": "Il file non può essere aperto per la scrittura", "filter_type": "Wrong filter type", "from_invalid": "Il mittente non può essere vuoto", "global_filter_write_error": "Could not write filter file: %s", @@ -397,7 +398,7 @@ "mailbox_quota_exceeds_domain_quota": "Lo spazio massimo supera la spazio del dominio", "mailbox_quota_left_exceeded": "Non c'è abbastanza spazio libero (space left: %d MiB)", "mailboxes_in_use": "Lo spazio massimo della casella deve essere maggiore o uguale a %d", - "malformed_username": "Malformed username", + "malformed_username": "Nome utente non valido", "map_content_empty": "Map content cannot be empty", "max_alias_exceeded": "Numero massimo di alias superato", "max_mailbox_exceeded": "Numero massimo di caselle superato (%d of %d)", @@ -429,18 +430,18 @@ "resource_invalid": "Il nome della risorsa non è valido", "rl_timeframe": "Rate limit time frame is incorrect", "rspamd_ui_pw_length": "Rspamd UI password should be at least 6 chars long", - "script_empty": "Script cannot be empty", + "script_empty": "Lo script non può essere vuoto", "sender_acl_invalid": "Il valore di Sender ACL non è valido", "set_acl_failed": "Failed to set ACL", "settings_map_invalid": "Settings map ID %s invalid", "sieve_error": "Sieve parser error: %s", "spam_learn_error": "Spam learn error: %s", - "subject_empty": "Subject must not be empty", + "subject_empty": "L'oggetto non deve essere vuoto", "target_domain_invalid": "Goto domain non è valido", "targetd_not_found": "Il target del dominio non è stato trovato", "targetd_relay_domain": "Target domain %s is a relay domain", - "temp_error": "Temporary error", - "text_empty": "Text must not be empty", + "temp_error": "Errore temporaneo", + "text_empty": "Il testo non deve essere vuoto", "tfa_token_invalid": "TFA token invalid", "tls_policy_map_dest_invalid": "Policy destination is invalid", "tls_policy_map_entry_exists": "A TLS policy map entry \"%s\" exists", @@ -448,40 +449,54 @@ "totp_verification_failed": "TOTP verification failed", "transport_dest_exists": "Transport destination \"%s\" exists", "webauthn_verification_failed": "WebAuthn verification failed: %s", - "unknown": "An unknown error occurred", + "unknown": "Si è verificato un errore sconosciuto", "unknown_tfa_method": "Unknown TFA method", "unlimited_quota_acl": "Unlimited quota prohibited by ACL", - "username_invalid": "Username %s non può essere utilizzato", + "username_invalid": "Il nome utente %s non può essere utilizzato", "validity_missing": "Assegnare un periodo di validità", "value_missing": "Si prega di fornire tutti i valori", - "yotp_verification_failed": "Verifica OTP Yubico fallita: %s" + "yotp_verification_failed": "Verifica OTP Yubico fallita: %s", + "demo_mode_enabled": "La modalità demo è abilitata", + "template_name_invalid": "Nome template non valido", + "template_exists": "Il template %s esiste già", + "template_id_invalid": "Il template con ID %s non è valido" }, "debug": { "chart_this_server": "Grafico (questo server)", - "containers_info": "Container information", + "containers_info": "Informazioni sul container", "disk_usage": "Uso del disco", "docs": "Docs", - "external_logs": "External logs", - "history_all_servers": "History (all servers)", + "external_logs": "Log esterni", + "history_all_servers": "Cronologia (tutti i server)", "in_memory_logs": "In-memory logs", "jvm_memory_solr": "JVM memory usage", "last_modified": "Ultima modifica", "log_info": "

mailcow in-memory logs are collected in Redis lists and trimmed to LOG_LINES (%d) every minute to reduce hammering.\r\n
In-memory logs are not meant to be persistent. All applications that log in-memory, also log to the Docker daemon and therefore to the default logging driver.\r\n
The in-memory log type should be used for debugging minor issues with containers.

\r\n

External logs are collected via API of the given application.

\r\n

Static logs are mostly activity logs, that are not logged to the Dockerd but still need to be persistent (except for API logs).

", - "login_time": "Time", + "login_time": "Orario", "logs": "Logs", - "online_users": "Users online", + "online_users": "Utenti online", "restart_container": "Riavvio", "service": "Servizio", - "size": "Size", - "solr_dead": "Solr is starting, disabled or died.", + "size": "Dimensione", + "solr_dead": "Solr sta partendo, è disabilitato o morto.", "solr_status": "Stato Solr", - "started_at": "Started at", - "started_on": "Started on", - "static_logs": "Static logs", + "started_at": "Iniziato alle", + "started_on": "Iniziato", + "static_logs": "Log statici", "success": "Successo", - "system_containers": "System & Containers", + "system_containers": "Sistema & Containers", "uptime": "Tempo di attività", - "username": "Username" + "username": "Nome utente", + "container_disabled": "Container arrestato o disattivato", + "update_available": "È disponibile un aggiornamento", + "container_running": "In esecuzione", + "container_stopped": "Arrestato", + "cores": "Cores", + "current_time": "Orario di sistema", + "memory": "Memoria", + "timezone": "Fuso orario", + "no_update_available": "Il sistema è aggiornato all'ultima versione", + "update_failed": "Impossibile verificare la presenza di un aggiornamento" }, "diagnostics": { "cname_from_a": "Valore letto dal record A/AAAA. Questo è supportato finché il record punta alla risorsa corretta.", @@ -514,7 +529,7 @@ "delete1": "Elimina dalla sorgente al termine", "delete2": "Delete messages on destination that are not on source", "delete2duplicates": "Elimina duplicati nella destinazione", - "delete_ays": "Please confirm the deletion process.", + "delete_ays": "Si prega di confermare il processo di eliminazione.", "description": "Descrizione", "disable_login": "Disabilita l'accesso (la posta in arrivo viene correttamente recapitata)", "domain": "Modifica dominio", @@ -527,12 +542,12 @@ "exclude": "Escludi oggetti (regex)", "extended_sender_acl": "External sender addresses", "extended_sender_acl_info": "A DKIM domain key should be imported, if available.
\r\n Remember to add this server to the corresponding SPF TXT record.
\r\n Whenever a domain or alias domain is added to this server, that overlaps with an external address, the external address is removed.
\r\n Use @domain.tld to allow to send as *@domain.tld.", - "force_pw_update": "Force password update at next login", + "force_pw_update": "Forza l'aggiornamento della password al prossimo accesso", "force_pw_update_info": "Questo utente potrà accedere solo a %s.", "full_name": "Nome completo", "gal": "Global Address List", "gal_info": "The GAL contains all objects of a domain and cannot be edited by any user. Free/busy information in SOGo is missing, if disabled! Restart SOGo to apply changes.", - "generate": "generate", + "generate": "crea", "grant_types": "Grant types", "hostname": "Hostname", "inactive": "Inattivo", @@ -549,7 +564,7 @@ "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": "Intervallo (min)", "multiple_bookings": "Prenotazioni multiple", - "nexthop": "Next hop", + "nexthop": "Prossimo hop", "password": "Password", "password_repeat": "Conferma password (riscrivi)", "previous": "Pagina precedente", @@ -561,9 +576,9 @@ "pushover_sender_array": "Only consider the following sender email addresses (comma-separated)", "pushover_sender_regex": "Consider the following sender regex", "pushover_text": "Notification text", - "pushover_title": "Notification title", + "pushover_title": "Titolo della notifica", "pushover_vars": "When no sender filter is defined, all mails will be considered.
Regex filters as well as exact sender checks can be defined individually and will be considered sequentially. They do not depend on each other.
Useable variables for text and title (please take note of data protection policies)", - "pushover_verify": "Verify credentials", + "pushover_verify": "Verifica credenziali", "quota_mb": "Spazio (MiB)", "quota_warning_bcc": "Quota warning BCC", "quota_warning_bcc_info": "Warnings will be sent as separate copies to the following recipients. The subject will be suffixed by the corresponding username in brackets, for example: Quota warning (user@example.com).", @@ -582,42 +597,44 @@ "sender_acl": "Consenti di inviare come", "sender_acl_disabled": "Sender check is disabled", "sender_acl_info": "If mailbox user A is allowed to send as mailbox user B, the sender address is not automatically displayed as selectable \"from\" field in SOGo.
\r\n Mailbox user B needs to create a delegation in SOGo to allow mailbox user A to select their address as sender. To delegate a mailbox in SOGo, use the menu (three dots) to the right of your mailbox name in the upper left while in mail view. This behaviour does not apply to alias addresses.", - "sieve_desc": "Short description", + "sieve_desc": "Breve descrizione", "sieve_type": "Filter type", "skipcrossduplicates": "Skip duplicate messages across folders (first come, first serve)", - "sogo_visible": "Alias is visible in SOGo", + "sogo_visible": "L'alias è visibile in SOGo", "sogo_visible_info": "This option only affects objects, that can be displayed in SOGo (shared or non-shared alias addresses pointing to at least one local mailbox). If hidden, an alias will not appear as selectable sender in SOGo.", "spam_alias": "Create or change time limited alias addresses", "spam_filter": "Spam filter", - "spam_policy": "Add or remove items to white-/blacklist", - "spam_score": "Set a custom spam score", + "spam_policy": "Aggiungi o rimuovi elementi dalla whitelist/blacklist", + "spam_score": "Imposta un punteggio spam personalizzato", "subfolder2": "Sincronizza in una sottocartella
(vuoto = non sincronizzare in sottocartella)", "syncjob": "Modifica sincronizzazione", "target_address": "Vai all'indirizzo/i (separato da virgola)", "target_domain": "Target dominio", - "timeout1": "Timeout for connection to remote host", - "timeout2": "Timeout for connection to local host", + "timeout1": "Timeout per la connessione all'host remoto", + "timeout2": "Timeout per la connessione all'host remoto", "title": "Modifica oggetto", "unchanged_if_empty": "Se immutato lasciare vuoto", - "username": "Username", + "username": "Nome utente", "validate_save": "Convalida e salva", "pushover": "Pushover", "sogo_access_info": "Il single-sign-on dall'interno dell'interfaccia di posta rimane funzionante. Questa impostazione non influisce sull'accesso a tutti gli altri servizi né cancella o modifica il profilo SOGo esistente dell'utente.", "none_inherit": "Nessuno / Eredita", "sogo_access": "Concedere l'accesso diretto a SOGo", "acl": "ACL (autorizzazione)", - "app_passwd_protocols": "Protocolli consentiti per la password dell'app" + "app_passwd_protocols": "Protocolli consentiti per la password dell'app", + "last_modified": "Ultima modifica", + "pushover_sound": "Suono" }, "fido2": { - "confirm": "Confirm", + "confirm": "Conferma", "fido2_auth": "Login with FIDO2", - "fido2_success": "Device successfully registered", - "fido2_validation_failed": "Validation failed", - "fn": "Friendly name", - "known_ids": "Known IDs", - "none": "Disabled", - "register_status": "Registration status", - "rename": "Rename", + "fido2_success": "Dispositivo registrato con successo", + "fido2_validation_failed": "Validazione fallita", + "fn": "Nome descrittivo", + "known_ids": "ID conosciuti", + "none": "Disabilitato", + "register_status": "Stato di registrazione", + "rename": "Rinominare", "set_fido2": "Register FIDO2 device", "set_fn": "Set friendly name", "start_fido2_validation": "Start FIDO2 validation", @@ -641,13 +658,14 @@ "header": { "administration": "Amministrazione", "apps": "App", - "debug": "Informazioni di sistema", + "debug": "Informazioni", "email": "E-Mail", "mailcow_config": "Configurazione", "quarantine": "Quarantena", "restart_netfilter": "Riavvia netfilter", "restart_sogo": "Riavvia SOGo", - "user_settings": "Impostazioni utente" + "user_settings": "Impostazioni utente", + "mailcow_system": "Sistema" }, "info": { "awaiting_tfa_confirmation": "In attesa di conferma TFA", @@ -661,7 +679,7 @@ "mobileconfig_info": "Please login as mailbox user to download the requested Apple connection profile.", "other_logins": "Key login", "password": "Password", - "username": "Username" + "username": "Nome utente" }, "mailbox": { "action": "Azione", @@ -733,7 +751,7 @@ "inactive": "Inattivo", "insert_preset": "Insert example preset \"%s\"", "kind": "Tipo", - "last_mail_login": "Last mail login", + "last_mail_login": "Ultimo accesso alla posta", "last_modified": "Ultima modifica", "last_pw_change": "Ultima modifica della password", "last_run": "Ultima esecuzione", @@ -828,7 +846,15 @@ "sender": "Mittente", "all_domains": "Tutti i domini", "recipient": "Destinatario", - "syncjob_EX_OK": "Successo" + "syncjob_EX_OK": "Successo", + "add_template": "Aggiungi template", + "force_pw_update": "Forza il cambio della password al prossimo accesso", + "relay_unknown": "Inoltra a caselle di posta sconosciute", + "mailbox_templates": "Template della mailbox", + "domain_templates": "Template di dominio", + "gal": "Elenco indirizzi globale", + "templates": "Template", + "template": "Template" }, "oauth2": { "access_denied": "Effettua il login alla casella di posta per garantire l'accesso tramite OAuth2.", @@ -847,7 +873,7 @@ "confirm_delete": "Conferma l'eliminazione di questo elemento.", "danger": "Pericolo", "deliver_inbox": "Consegna nella posta in arrivo", - "disabled_by_config": "The current system configuration disables the quarantine functionality. Please set \"retentions per mailbox\" and a \"maximum size\" for quarantine elements.", + "disabled_by_config": "L'attuale configurazione del sistema disabilita la funzionalità di quarantena. Imposta \"conservazioni per casella di posta\" e \"dimensione massima\" per gli elementi di quarantena.", "download_eml": "Download (.eml)", "empty": "Nessun risultato", "high_danger": "Alto", @@ -893,7 +919,18 @@ "type": "Tipologia" }, "queue": { - "queue_manager": "Gestore code" + "queue_manager": "Gestore code", + "delete": "Cancella tutto", + "ays": "Conferma che desideri eliminare tutti gli elementi dalla coda corrente.", + "info": "La coda di posta contiene tutte le e-mail in attesa di consegna. Se un'e-mail rimane a lungo nella coda di posta, viene automaticamente cancellata dal sistema.
Il messaggio di errore della rispettiva e-mail fornisce informazioni sul motivo per cui non è stato possibile consegnarla.", + "deliver_mail_legend": "Tenta di riconsegnare i messaggi selezionati.", + "hold_mail": "Blocca", + "flush": "Svuota la coda", + "deliver_mail": "Consegna", + "show_message": "Mostra messaggio", + "unhold_mail": "Sblocca", + "hold_mail_legend": "Blocca le mail selezionate. (Previene ulteriori tentativi di consegna)", + "legend": "Funzioni delle azioni della coda di posta:" }, "start": { "help": "Mostra/Nascondi pannello di aiuto", @@ -978,7 +1015,10 @@ "verified_totp_login": "Verified TOTP login", "verified_webauthn_login": "Verified WebAuthn login", "verified_yotp_login": "Verified Yubico OTP login", - "domain_add_dkim_available": "Esisteva già una chiave DKIM" + "domain_add_dkim_available": "Esisteva già una chiave DKIM", + "template_added": "Aggiunto template %s", + "template_modified": "Le modifiche al template %s sono state salvate", + "template_removed": "Il template con ID %s è stato cancellato" }, "tfa": { "api_register": "%s usa le API Yubico Cloud. Richiedi una chiave API qui", @@ -1142,7 +1182,7 @@ "tls_enforce_in": "Imponi TLS in ingresso", "tls_enforce_out": "Imponi TLS in uscita", "tls_policy": "Politica di crittografia", - "tls_policy_warning": "Attenzione: 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.", + "tls_policy_warning": "Attenzione: Se decidi di applicare il trasferimento di posta crittografato, potresti perdere le email.
I messaggi che non soddisfano la politica verranno respinti con un hard fail dal sistema di posta.
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": "Impostazioni utente", "username": "Nome utente", "verify": "Verifica", @@ -1166,7 +1206,8 @@ "syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Impossibile connettersi al server remoto", "syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "Nome utente o password errati", "with_app_password": "con password dell'app", - "direct_protocol_access": "Questo utente della mailbox ha accesso diretto ed esterno ai seguenti protocolli e applicazioni. Questa impostazione è controllata dal tuo amministratore. Le password delle applicazioni possono essere create per garantire l'accesso ai singoli protocolli e applicazioni.
Il pulsante \"Accedi alla webmail\" fornisce un singolo accesso a SOGo ed è sempre disponibile." + "direct_protocol_access": "Questo utente della mailbox ha accesso diretto ed esterno ai seguenti protocolli e applicazioni. Questa impostazione è controllata dal tuo amministratore. Le password delle applicazioni possono essere create per garantire l'accesso ai singoli protocolli e applicazioni.
Il pulsante \"Accedi alla webmail\" fornisce un singolo accesso a SOGo ed è sempre disponibile.", + "pushover_sound": "Suono" }, "warning": { "cannot_delete_self": "Cannot delete logged in user", @@ -1187,5 +1228,29 @@ "second": "messaggi / secondo", "hour": "messaggi / ora", "day": "messaggi / giorno" + }, + "datatables": { + "infoFiltered": "(filtrato da _MAX_ voci totali)", + "collapse_all": "Comprimi tutto", + "emptyTable": "Nessun dato disponibile nella tabella", + "expand_all": "Espandi tutto", + "info": "Visualizzazione da _START_ a _END_ di _TOTAL_ voci", + "infoEmpty": "Visualizzazione da 0 a 0 di 0 voci", + "thousands": ".", + "loadingRecords": "Caricamento...", + "processing": "Attendere prego...", + "search": "Ricerca:", + "zeroRecords": "Nessuna corrispondenza trovata", + "paginate": { + "first": "Prima", + "last": "Ultima", + "next": "Prossima", + "previous": "Precedente" + }, + "lengthMenu": "Mostra _MENU_ voci", + "aria": { + "sortAscending": ": attivare l'ordinamento crescente delle colonne", + "sortDescending": ": attivare l'ordinamento decrescente delle colonne" + } } } diff --git a/data/web/lang/lang.zh-cn.json b/data/web/lang/lang.zh-cn.json index 7532d7c4..ea42c50c 100644 --- a/data/web/lang/lang.zh-cn.json +++ b/data/web/lang/lang.zh-cn.json @@ -335,7 +335,8 @@ "username": "用户名", "validate_license_now": "通过证书服务器验证 GUID", "verify": "验证", - "yes": "✓" + "yes": "✓", + "options": "选项" }, "danger": { "access_denied": "访问被拒绝或者表单数据无效", @@ -454,7 +455,8 @@ "username_invalid": "用户名 %s 无法使用", "validity_missing": "请设置有效期", "value_missing": "请填入所有值", - "yotp_verification_failed": "Yubico OTP 认证失败: %s" + "yotp_verification_failed": "Yubico OTP 认证失败: %s", + "template_exists": "模板 %s 已存在" }, "debug": { "chart_this_server": "图表 (此服务器)", @@ -481,7 +483,11 @@ "success": "成功", "system_containers": "系统和容器", "uptime": "运行时间", - "username": "用户名" + "username": "用户名", + "container_disabled": "容器已被停止或禁用", + "container_running": "运行中", + "cores": "核心数", + "memory": "内存" }, "diagnostics": { "cname_from_a": "虽然此记录为 A/AAAA 类型,但只要此记录指向了正确的资源便可以被支持", @@ -820,7 +826,12 @@ "username": "用户名", "waiting": "等待中", "weekly": "每周", - "yes": "✓" + "yes": "✓", + "domain_templates": "域名模板", + "mailbox_templates": "邮箱模板", + "gal": "全局地址列表", + "max_aliases": "最大别名数", + "max_mailboxes": "最大可能的邮箱数" }, "oauth2": { "access_denied": "请作为邮箱所有者登录以使用 OAuth2 授权", @@ -885,7 +896,8 @@ "type": "类型" }, "queue": { - "queue_manager": "队列管理器" + "queue_manager": "队列管理器", + "delete": "全部删除" }, "ratelimit": { "disabled": "禁用", @@ -1179,5 +1191,18 @@ "quota_exceeded_scope": "域名配额超标: 此域名下现在只能创建无限容量的邮箱。", "session_token": "表单字段无效: Token 不匹配", "session_ua": "表单字段无效: User-Agent 校验错误" + }, + "datatables": { + "info": "正从 _TOTAL_ 个条目中显示 _START_ 到 _END_ 条目", + "collapse_all": "全部折叠", + "expand_all": "全部展开", + "infoEmpty": "正从共 0 个条目中显示从 0 到 0 条目", + "processing": "请稍等...", + "search": "搜索:", + "paginate": { + "first": "第一页", + "last": "最后一页", + "previous": "上一页" + } } } From c601eca25d79e9c3d00e74fc698606e136b9d915 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 4 Jan 2023 18:54:19 +0100 Subject: [PATCH 10/43] Update thollander/actions-comment-pull-request action to v2.3.0 --- .github/workflows/check_prs_if_on_staging.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_prs_if_on_staging.yml b/.github/workflows/check_prs_if_on_staging.yml index cb49ffbc..d084a582 100644 --- a/.github/workflows/check_prs_if_on_staging.yml +++ b/.github/workflows/check_prs_if_on_staging.yml @@ -10,7 +10,7 @@ jobs: if: github.event.pull_request.base.ref != 'staging' #check if the target branch is not staging steps: - name: Send message - uses: thollander/actions-comment-pull-request@main + uses: thollander/actions-comment-pull-request@v2.3.0 with: GITHUB_TOKEN: ${{ secrets.CHECKIFPRISSTAGING_ACTION_PAT }} message: | From b3c54ed07af02f4f213dfad39982280313a90d4a Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 4 Jan 2023 19:09:23 +0100 Subject: [PATCH 11/43] Add regex for matchstring line in Dockerfiles --- .github/renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/renovate.json b/.github/renovate.json index 7d0eabf2..5fab8128 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -16,6 +16,12 @@ "matchStrings": [ "#\\srenovate:\\sdatasource=(?.*?) depName=(?.*?)( versioning=(?.*?))?( extractVersion=(?.*?))?\\s.*?_VERSION=(?.*)" ] + }, + { + "fileMatch": ["(^|/)Dockerfile[^/]*$"], + "matchStrings": [ + "#\\srenovate:\\sdatasource=(?.*?) depName=(?.*?)( versioning=(?.*?))?\\s(ENV|ARG) .*?_VERSION=(?.*)\\s" + ] } ] } From cb098df743a5da37ca450212da0321f00c97163e Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 4 Jan 2023 19:10:32 +0100 Subject: [PATCH 12/43] Update gosu to 1.16 Change ENV to ARG Add matchstring line --- data/Dockerfiles/dovecot/Dockerfile | 4 +++- data/Dockerfiles/sogo/Dockerfile | 3 ++- data/Dockerfiles/solr/Dockerfile | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/data/Dockerfiles/dovecot/Dockerfile b/data/Dockerfiles/dovecot/Dockerfile index 4e90052b..38af3c20 100644 --- a/data/Dockerfiles/dovecot/Dockerfile +++ b/data/Dockerfiles/dovecot/Dockerfile @@ -3,8 +3,10 @@ LABEL maintainer "Andre Peters " ARG DEBIAN_FRONTEND=noninteractive ARG DOVECOT=2.3.19.1 +# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced +ARG GOSU_VERSION=1.16 ENV LC_ALL C -ENV GOSU_VERSION 1.14 + # Add groups and users before installing Dovecot to not break compatibility RUN groupadd -g 5000 vmail \ diff --git a/data/Dockerfiles/sogo/Dockerfile b/data/Dockerfiles/sogo/Dockerfile index f08600ac..da8f23be 100644 --- a/data/Dockerfiles/sogo/Dockerfile +++ b/data/Dockerfiles/sogo/Dockerfile @@ -3,8 +3,9 @@ LABEL maintainer "Andre Peters " ARG DEBIAN_FRONTEND=noninteractive ARG SOGO_DEBIAN_REPOSITORY=http://packages.sogo.nu/nightly/5/debian/ +# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced +ARG GOSU_VERSION=1.16 ENV LC_ALL C -ENV GOSU_VERSION 1.14 # Prerequisites RUN echo "Building from repository $SOGO_DEBIAN_REPOSITORY" \ diff --git a/data/Dockerfiles/solr/Dockerfile b/data/Dockerfiles/solr/Dockerfile index 06299257..0c5af1af 100644 --- a/data/Dockerfiles/solr/Dockerfile +++ b/data/Dockerfiles/solr/Dockerfile @@ -2,7 +2,8 @@ FROM solr:7.7-slim USER root -ENV GOSU_VERSION 1.11 +# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced +ARG GOSU_VERSION=1.16 COPY solr.sh / COPY solr-config-7.7.0.xml / From 5c2f48e94c5d0798acaf0553dd786c6edd862cfc Mon Sep 17 00:00:00 2001 From: milkmaker Date: Thu, 5 Jan 2023 17:40:36 +0100 Subject: [PATCH 13/43] [Web] Updated lang.zh-cn.json (#4965) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 雨 Co-authored-by: 雨 --- data/web/lang/lang.zh-cn.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/data/web/lang/lang.zh-cn.json b/data/web/lang/lang.zh-cn.json index ea42c50c..5d05ef62 100644 --- a/data/web/lang/lang.zh-cn.json +++ b/data/web/lang/lang.zh-cn.json @@ -31,7 +31,7 @@ "unlimited_quota": "无限邮箱容量配额" }, "add": { - "activate_filter_warn": "当 \"启用\" 选项被勾选后,所有其他过滤器都会被禁用", + "activate_filter_warn": "当“启用”选项被勾选后,其它所有的过滤器都会被禁用。", "active": "启用", "add": "添加", "add_domain_only": "只添加域名", @@ -208,7 +208,7 @@ "includes": "包括这些收件人", "is_mx_based": "基于 MX 记录", "last_applied": "最后应用的条目", - "license_info": "你不需要获取证书便可以使用此项目,但是获取证书可以帮助此项目进一步发展。
在这里注册你的 GUID或者为你的 Mailcow 安装购买支持服务。", + "license_info": "使用并不需要许可证,但获得许可证能够帮助此项目进一步发展。
在这里注册你的 GUID 或者为你的 Mailcow 安装购买支持服务。", "link": "链接", "loading": "请等待...", "login_time": "登录时间", @@ -403,7 +403,7 @@ "max_alias_exceeded": "超出最大别名数", "max_mailbox_exceeded": "超出最大邮箱数 (%d / %d)", "max_quota_in_use": "邮箱数必须大于等于 %d MiB", - "maxquota_empty": "每个邮箱的最大配额必须不为0", + "maxquota_empty": "每个邮箱的最大配额必须不为 0 。", "mysql_error": "MySQL 错误: %s", "network_host_invalid": "网络或主机无效: %s", "next_hop_interferes": "%s 与下一跳 %s 冲突", @@ -475,7 +475,7 @@ "restart_container": "重启", "service": "服务", "size": "大小", - "solr_dead": "Solr 在启动中、已关闭或已停止", + "solr_dead": "Solr 在启动中、已关闭或已停止。", "solr_status": "Solr 状态", "started_at": "开始于", "started_on": "启动于", @@ -490,7 +490,7 @@ "memory": "内存" }, "diagnostics": { - "cname_from_a": "虽然此记录为 A/AAAA 类型,但只要此记录指向了正确的资源便可以被支持", + "cname_from_a": "来自 A/AAAA 记录的值。但只要记录指向正确的资源即可。", "dns_records": "DNS 记录", "dns_records_24hours": "请注意 DNS 记录的更改可能需要24小时才可以使此页面的当前状态显示正确。此页面为你提供了一个可以便捷查询如何配置 DNS 记录以及检查你的 DNS 记录是否正确的方式。", "dns_records_data": "正确数据", @@ -507,7 +507,7 @@ "advanced_settings": "高级设置", "alias": "编辑别名", "allow_from_smtp": "只允许这些 IP 使用 SMTP", - "allow_from_smtp_info": "留空以允许所有发送者。
IPv4/IPv6地址或网络", + "allow_from_smtp_info": "留空以允许所有发送者。
IPv4/IPv6 地址和网络。", "allowed_protocols": "允许的协议", "app_name": "应用名称", "app_passwd": "应用密码", @@ -635,7 +635,7 @@ "delete_these_items": "请确认对以下对象 ID 的更改", "hibp_check": "使用 haveibeenpwned.com 网站检查密码", "hibp_nok": "匹配到密码!存在潜在的使用危险!", - "hibp_ok": "未匹配到密码", + "hibp_ok": "未找到匹配的记录。", "loading": "请等待...", "nothing_selected": "未选择", "restart_container": "重启容器", @@ -691,7 +691,7 @@ "aliases": "别名", "all_domains": "全部域名", "allow_from_smtp": "只允许这些 IP 使用 SMTP", - "allow_from_smtp_info": "留空以允许所有发送者,
IPv4/IPv6地址或网络", + "allow_from_smtp_info": "留空以允许所有发送者。
IPv4/IPv6 地址或网络。", "allowed_protocols": "允许用户直接访问的协议 (不会影响应用的密码协议)", "backup_mx": "中继域名", "bcc": "BCC", @@ -745,7 +745,7 @@ "last_run_reset": "下一次运行", "mailbox": "邮箱", "mailbox_defaults": "默认设置", - "mailbox_defaults_info": "配置新邮箱的默认设置", + "mailbox_defaults_info": "配置新邮箱的默认设置。", "mailbox_defquota": "默认邮箱大小", "mailbox_quota": "最大邮箱大小", "mailboxes": "邮箱", @@ -876,7 +876,7 @@ "refresh": "刷新", "rejected": "已拒绝", "release": "移除", - "release_body": "我们已在此消息中将你的消息作为 eml 附件文件", + "release_body": "我们已将你的消息作为 eml 文件附在此消息中。", "release_subject": "存在潜在危险的隔离文件 %s", "remove": "删除", "rewrite_subject": "重写主题", From 9727e4084f7303208f24da2154e40030b54516c2 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Fri, 6 Jan 2023 08:40:26 +0100 Subject: [PATCH 14/43] [Web] load public ip on click and add curl timeout --- data/web/js/site/debug.js | 49 ++++++++++++++++++++++++----------- data/web/json_api.php | 4 +++ data/web/lang/lang.de-de.json | 2 ++ data/web/lang/lang.en-gb.json | 2 ++ data/web/templates/debug.twig | 10 +++++-- 5 files changed, 50 insertions(+), 17 deletions(-) diff --git a/data/web/js/site/debug.js b/data/web/js/site/debug.js index 85e6b789..ea7b9fd3 100644 --- a/data/web/js/site/debug.js +++ b/data/web/js/site/debug.js @@ -51,7 +51,40 @@ $(document).ready(function() { showVersionModal("Version " + mailcow_info.version_tag, mailcow_info.version_tag); }) // get public ips - get_public_ips(); + $("#host_show_ip").click(function(){ + $("#host_show_ip").find(".text").addClass("d-none"); + $("#host_show_ip").find(".spinner-border").removeClass("d-none"); + + window.fetch("/api/v1/get/status/host/ip", { method:'GET', cache:'no-cache' }).then(function(response) { + return response.json(); + }).then(function(data) { + console.log(data); + + // display host ips + if (data.ipv4) + $("#host_ipv4").text(data.ipv4); + if (data.ipv6) + $("#host_ipv6").text(data.ipv6); + + $("#host_show_ip").addClass("d-none"); + $("#host_show_ip").find(".text").removeClass("d-none"); + $("#host_show_ip").find(".spinner-border").addClass("d-none"); + $("#host_ipv4").removeClass("d-none"); + $("#host_ipv6").removeClass("d-none"); + $("#host_ipv6").removeClass("text-danger"); + $("#host_ipv4").addClass("d-block"); + $("#host_ipv6").addClass("d-block"); + }).catch(function(error){ + console.log(error); + + $("#host_ipv6").removeClass("d-none"); + $("#host_ipv6").addClass("d-block"); + $("#host_ipv6").addClass("text-danger"); + $("#host_ipv6").text(lang_debug.error_show_ip); + $("#host_show_ip").find(".text").removeClass("d-none"); + $("#host_show_ip").find(".spinner-border").addClass("d-none"); + }); + }); update_container_stats(); }); jQuery(function($){ @@ -1224,20 +1257,6 @@ function update_container_stats(timeout=5){ // run again in n seconds setTimeout(update_container_stats, timeout * 1000); } -// get public ips -function get_public_ips(){ - window.fetch("/api/v1/get/status/host/ip", {method:'GET',cache:'no-cache'}).then(function(response) { - return response.json(); - }).then(function(data) { - console.log(data); - - // display host ips - if (data.ipv4) - $("#host_ipv4").text(data.ipv4); - if (data.ipv6) - $("#host_ipv6").text(data.ipv6); - }); -} // format hosts uptime seconds to readable string function formatUptime(seconds){ seconds = Number(seconds); diff --git a/data/web/json_api.php b/data/web/json_api.php index 79b6bfd5..0d3dbb2f 100644 --- a/data/web/json_api.php +++ b/data/web/json_api.php @@ -1548,10 +1548,14 @@ if (isset($_GET['query'])) { curl_setopt($curl, CURLOPT_URL, 'http://ipv4.mailcow.email'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 0); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_TIMEOUT, 10); $ipv4 = curl_exec($curl); curl_setopt($curl, CURLOPT_URL, 'http://ipv6.mailcow.email'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 0); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_TIMEOUT, 10); $ipv6 = curl_exec($curl); $ips = array( "ipv4" => $ipv4, diff --git a/data/web/lang/lang.de-de.json b/data/web/lang/lang.de-de.json index 7b4b1f46..89942e4e 100644 --- a/data/web/lang/lang.de-de.json +++ b/data/web/lang/lang.de-de.json @@ -494,6 +494,7 @@ "current_time": "Systemzeit", "disk_usage": "Festplattennutzung", "docs": "Dokumente", + "error_show_ip": "konnte die öffentlichen IP Adressen nicht auflösen", "external_logs": "Externe Logs", "history_all_servers": "History (alle Server)", "in_memory_logs": "In-memory Logs", @@ -506,6 +507,7 @@ "online_users": "Benutzer online", "restart_container": "Neustart", "service": "Dienst", + "show_ip": "Zeige öffentliche IP", "size": "Größe", "solr_dead": "Solr startet, ist deaktiviert oder temporär nicht erreichbar.", "solr_status": "Solr Status", diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index 00b14f07..bec5351d 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -497,6 +497,7 @@ "current_time": "System Time", "disk_usage": "Disk usage", "docs": "Docs", + "error_show_ip": "Could not resolve the public IP addresses", "external_logs": "External logs", "history_all_servers": "History (all servers)", "in_memory_logs": "In-memory logs", @@ -509,6 +510,7 @@ "online_users": "Users online", "restart_container": "Restart", "service": "Service", + "show_ip": "Show public IP", "size": "Size", "solr_dead": "Solr is starting, disabled or died.", "solr_status": "Solr status", diff --git a/data/web/templates/debug.twig b/data/web/templates/debug.twig index 6c96de88..a9399a12 100644 --- a/data/web/templates/debug.twig +++ b/data/web/templates/debug.twig @@ -52,8 +52,14 @@ IPs - - - - + - + - + From 68f5fbf65c04585485672dd1d91749134cdd861c Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Fri, 6 Jan 2023 09:11:51 +0100 Subject: [PATCH 15/43] [Web] remove remote Google fonts from lumen theme --- data/web/css/themes/lumen-bootstrap.css | 81 +++++++++++++++++- .../fonts/source-sans-pro-v21-latin-300.woff | Bin 0 -> 16084 bytes .../fonts/source-sans-pro-v21-latin-300.woff2 | Bin 0 -> 12956 bytes .../source-sans-pro-v21-latin-300italic.woff | Bin 0 -> 15704 bytes .../source-sans-pro-v21-latin-300italic.woff2 | Bin 0 -> 12556 bytes .../fonts/source-sans-pro-v21-latin-700.woff | Bin 0 -> 16104 bytes .../fonts/source-sans-pro-v21-latin-700.woff2 | Bin 0 -> 12924 bytes .../source-sans-pro-v21-latin-700italic.woff | Bin 0 -> 15640 bytes .../source-sans-pro-v21-latin-700italic.woff2 | Bin 0 -> 12612 bytes .../source-sans-pro-v21-latin-italic.woff | Bin 0 -> 15704 bytes .../source-sans-pro-v21-latin-italic.woff2 | Bin 0 -> 12580 bytes .../source-sans-pro-v21-latin-regular.woff | Bin 0 -> 16156 bytes .../source-sans-pro-v21-latin-regular.woff2 | Bin 0 -> 13036 bytes 13 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 data/web/fonts/source-sans-pro-v21-latin-300.woff create mode 100644 data/web/fonts/source-sans-pro-v21-latin-300.woff2 create mode 100644 data/web/fonts/source-sans-pro-v21-latin-300italic.woff create mode 100644 data/web/fonts/source-sans-pro-v21-latin-300italic.woff2 create mode 100644 data/web/fonts/source-sans-pro-v21-latin-700.woff create mode 100644 data/web/fonts/source-sans-pro-v21-latin-700.woff2 create mode 100644 data/web/fonts/source-sans-pro-v21-latin-700italic.woff create mode 100644 data/web/fonts/source-sans-pro-v21-latin-700italic.woff2 create mode 100644 data/web/fonts/source-sans-pro-v21-latin-italic.woff create mode 100644 data/web/fonts/source-sans-pro-v21-latin-italic.woff2 create mode 100644 data/web/fonts/source-sans-pro-v21-latin-regular.woff create mode 100644 data/web/fonts/source-sans-pro-v21-latin-regular.woff2 diff --git a/data/web/css/themes/lumen-bootstrap.css b/data/web/css/themes/lumen-bootstrap.css index a7582237..bcf62683 100644 --- a/data/web/css/themes/lumen-bootstrap.css +++ b/data/web/css/themes/lumen-bootstrap.css @@ -11,7 +11,86 @@ * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ -@import url("https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,300;0,400;0,700;1,400&display=swap"); + +/* source-sans-pro-300 - latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url('/fonts/source-sans-pro-v21-latin-300.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/source-sans-pro-v21-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/source-sans-pro-v21-latin-300.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-300.woff') format('woff'), /* Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/source-sans-pro-v21-latin-300.svg#SourceSansPro') format('svg'); /* Legacy iOS */ +} +/* source-sans-pro-300italic - latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: url('/fonts/source-sans-pro-v21-latin-300italic.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/source-sans-pro-v21-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/source-sans-pro-v21-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-300italic.woff') format('woff'), /* Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/source-sans-pro-v21-latin-300italic.svg#SourceSansPro') format('svg'); /* Legacy iOS */ +} +/* source-sans-pro-regular - latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: url('/fonts/source-sans-pro-v21-latin-regular.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/source-sans-pro-v21-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/source-sans-pro-v21-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/source-sans-pro-v21-latin-regular.svg#SourceSansPro') format('svg'); /* Legacy iOS */ +} +/* source-sans-pro-italic - latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: url('/fonts/source-sans-pro-v21-latin-italic.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/source-sans-pro-v21-latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/source-sans-pro-v21-latin-italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-italic.woff') format('woff'), /* Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/source-sans-pro-v21-latin-italic.svg#SourceSansPro') format('svg'); /* Legacy iOS */ +} +/* source-sans-pro-700 - latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: url('/fonts/source-sans-pro-v21-latin-700.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/source-sans-pro-v21-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/source-sans-pro-v21-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-700.woff') format('woff'), /* Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/source-sans-pro-v21-latin-700.svg#SourceSansPro') format('svg'); /* Legacy iOS */ +} +/* source-sans-pro-700italic - latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 700; + src: url('/fonts/source-sans-pro-v21-latin-700italic.eot'); /* IE9 Compat Modes */ + src: local(''), + url('/fonts/source-sans-pro-v21-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/fonts/source-sans-pro-v21-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-700italic.woff') format('woff'), /* Modern Browsers */ + url('/fonts/source-sans-pro-v21-latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */ + url('/fonts/source-sans-pro-v21-latin-700italic.svg#SourceSansPro') format('svg'); /* Legacy iOS */ +} + :root { --bs-blue: #158cba; --bs-indigo: #6610f2; diff --git a/data/web/fonts/source-sans-pro-v21-latin-300.woff b/data/web/fonts/source-sans-pro-v21-latin-300.woff new file mode 100644 index 0000000000000000000000000000000000000000..e966494d358e1ec78307f375e4ccde0ae2567400 GIT binary patch literal 16084 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 literal 0 HcmV?d00001 diff --git a/data/web/fonts/source-sans-pro-v21-latin-300.woff2 b/data/web/fonts/source-sans-pro-v21-latin-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fed32a93357b8e3d3e60d10f548574191a2f4913 GIT binary patch literal 12956 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 literal 0 HcmV?d00001 diff --git a/data/web/fonts/source-sans-pro-v21-latin-300italic.woff2 b/data/web/fonts/source-sans-pro-v21-latin-300italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a8e1fff22a7f33acedd783c155310c8926fbf58d GIT binary patch literal 12556 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 literal 0 HcmV?d00001 diff --git a/data/web/fonts/source-sans-pro-v21-latin-700italic.woff b/data/web/fonts/source-sans-pro-v21-latin-700italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..729bdee92b30adc67b04bb968bb599c33135fba4 GIT binary patch literal 15640 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 literal 0 HcmV?d00001 diff --git a/data/web/fonts/source-sans-pro-v21-latin-italic.woff b/data/web/fonts/source-sans-pro-v21-latin-italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..f927419cba20a1e8dcdf12e8802bb837378cb3f2 GIT binary patch literal 15704 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⪙_J=IP9 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

_~p+106u^pK0IL2 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%0DSOb;3fck`YJ{G z=K0u@NL+Od6buwV0M!To{|G?mFcq{dyMZfCTT>u_=MOlqp^Nr)$9+^G;uwYUt50Rlip!M#{2qyZ39IowN` z{x@##Y%56}^e_e@5P}kf;DAohf{YaCFgjjR96vZW#e%6!edVh298w_x;DCkX=XeB` zJn2DG_d7iYuCo8(io-{_o~z=9p794b!y22vH(Lgt$1i4OZFR$Ztw$Yn1a`s=xC1}b z~P|>lm7RKPaS~#}zwPC6h*M_4L%h;I(uF`30W>Mhv?NF&*eJndQ z#ML32ylhP?)#CB8aPh0`T9qqR^9yOw!H1L9io>o`NRxV%f~vJ^$yRnU0s$^QISHjY z$WAapqB~2ju&q$3SxBSmo2>EfY}EiENZc$EfZSs#LC6jv8wg$-UpqY$123g3UL(D0 zj9Il518R?H#rM@gz+pk=>Q#|WMZKIeWoM+CReJ1NRK~7m6)Gf=RdYOg&s5K@gDa$} zxC*kF$uh7JR%E?SbqI1)M^~I~Rb}Y_bmlxlnk{YSPO7(W-kmhS1qJeVAa4_TI*TzM zP@$lr$wbG%#KOkG#q<566cQ1W$RZ^pr=X;wW?~*o=UuUj`;zqw$Q6_)Ux7kJij_Fv znkx>fP-#My8>(G(Jwg4X+*adLANklJwI&^Qw>c|yzV)^5HK^C9S(6r9v}!Z!E&Xe? zOQ&uFDJ?5!G@AS`o97ip(2B~c>YCcR`i91)=9bpB z_Kwc3ZsieOE%kh%ND8YdtFd}#SajuJA#Nz@_hnhehczQxTdF6*ojt7zVFt(6j>;Gw ztD5S&*I%Ziem3Su=LP!C`M@0XMMqenqia?NPH->~6hEbKRZA-qf^aYp6v9AI91ISE zpyILrKF@69IIYDc+Bb+Jedl~Xb^pBnSbm1gk-@+T2ExHWPzb_6aWFUtf)el*ioy99 zILASy!b7((9)5dm_%A}RXTC6@P#{5cG=)0qxb~0ch){cO^=zuBF*B{>%58j+kbtO` zFXHo~nz)rqsGv$fg;hc-suDS3sML|IStWDy#gp_wp%e=a`-Vb{lmTIq$4g?1G8VJN G0ssK9UqeO! literal 0 HcmV?d00001 diff --git a/data/web/fonts/source-sans-pro-v21-latin-regular.woff b/data/web/fonts/source-sans-pro-v21-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..db90a83e0431df39bc65d1e1b39aba44a4bcddec GIT binary patch literal 16156 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 BX_){3 literal 0 HcmV?d00001 diff --git a/data/web/fonts/source-sans-pro-v21-latin-regular.woff2 b/data/web/fonts/source-sans-pro-v21-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e49928e8297a96a91c41824c0362e354e6a5c867 GIT binary patch literal 13036 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 Date: Fri, 6 Jan 2023 09:21:14 +0100 Subject: [PATCH 16/43] [Web] fix quarantine darkmode style --- data/web/css/themes/mailcow-darkmode.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/data/web/css/themes/mailcow-darkmode.css b/data/web/css/themes/mailcow-darkmode.css index e1824420..6e0db0e9 100644 --- a/data/web/css/themes/mailcow-darkmode.css +++ b/data/web/css/themes/mailcow-darkmode.css @@ -358,3 +358,11 @@ table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty { background: #333; } +span.mail-address-item { + background-color: #333; + border-radius: 4px; + border: 1px solid #555; + padding: 2px 7px; + display: inline-block; + margin: 2px 6px 2px 0; +} From dd9296ffc28d6442d479f0f41a90950226cccaf2 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Fri, 6 Jan 2023 11:07:44 +0100 Subject: [PATCH 17/43] [Web] fix extend_sender_acl issue for domainadmins --- data/web/inc/functions.mailbox.inc.php | 95 +++++++++++++------------- data/web/lang/lang.de-de.json | 1 + data/web/lang/lang.en-gb.json | 1 + data/web/templates/edit/mailbox.twig | 6 +- 4 files changed, 54 insertions(+), 49 deletions(-) diff --git a/data/web/inc/functions.mailbox.inc.php b/data/web/inc/functions.mailbox.inc.php index d67fa3e3..f6162cc6 100644 --- a/data/web/inc/functions.mailbox.inc.php +++ b/data/web/inc/functions.mailbox.inc.php @@ -2879,67 +2879,68 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) { $_SESSION['return'][] = array( 'type' => 'danger', 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), - 'msg' => 'access_denied' + 'msg' => 'extended_sender_acl_denied' ); - return false; } - $extra_acls = array_map('trim', preg_split( "/( |,|;|\n)/", $_data['extended_sender_acl'])); - foreach ($extra_acls as $i => &$extra_acl) { - if (empty($extra_acl)) { - continue; - } - if (substr($extra_acl, 0, 1) === "@") { - $extra_acl = ltrim($extra_acl, '@'); - } - if (!filter_var($extra_acl, FILTER_VALIDATE_EMAIL) && !is_valid_domain_name($extra_acl)) { - $_SESSION['return'][] = array( - 'type' => 'danger', - 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), - 'msg' => array('extra_acl_invalid', htmlspecialchars($extra_acl)) - ); - unset($extra_acls[$i]); - continue; - } - $domains = array_merge(mailbox('get', 'domains'), mailbox('get', 'alias_domains')); - if (filter_var($extra_acl, FILTER_VALIDATE_EMAIL)) { - $extra_acl_domain = idn_to_ascii(substr(strstr($extra_acl, '@'), 1), 0, INTL_IDNA_VARIANT_UTS46); - if (in_array($extra_acl_domain, $domains)) { + else { + $extra_acls = array_map('trim', preg_split( "/( |,|;|\n)/", $_data['extended_sender_acl'])); + foreach ($extra_acls as $i => &$extra_acl) { + if (empty($extra_acl)) { + continue; + } + if (substr($extra_acl, 0, 1) === "@") { + $extra_acl = ltrim($extra_acl, '@'); + } + if (!filter_var($extra_acl, FILTER_VALIDATE_EMAIL) && !is_valid_domain_name($extra_acl)) { $_SESSION['return'][] = array( 'type' => 'danger', 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), - 'msg' => array('extra_acl_invalid_domain', $extra_acl_domain) + 'msg' => array('extra_acl_invalid', htmlspecialchars($extra_acl)) ); unset($extra_acls[$i]); continue; } - } - else { - if (in_array($extra_acl, $domains)) { - $_SESSION['return'][] = array( - 'type' => 'danger', - 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), - 'msg' => array('extra_acl_invalid_domain', $extra_acl_domain) - ); - unset($extra_acls[$i]); - continue; + $domains = array_merge(mailbox('get', 'domains'), mailbox('get', 'alias_domains')); + if (filter_var($extra_acl, FILTER_VALIDATE_EMAIL)) { + $extra_acl_domain = idn_to_ascii(substr(strstr($extra_acl, '@'), 1), 0, INTL_IDNA_VARIANT_UTS46); + if (in_array($extra_acl_domain, $domains)) { + $_SESSION['return'][] = array( + 'type' => 'danger', + 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), + 'msg' => array('extra_acl_invalid_domain', $extra_acl_domain) + ); + unset($extra_acls[$i]); + continue; + } + } + else { + if (in_array($extra_acl, $domains)) { + $_SESSION['return'][] = array( + 'type' => 'danger', + 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), + 'msg' => array('extra_acl_invalid_domain', $extra_acl_domain) + ); + unset($extra_acls[$i]); + continue; + } + $extra_acl = '@' . $extra_acl; } - $extra_acl = '@' . $extra_acl; } - } - $extra_acls = array_filter($extra_acls); - $extra_acls = array_values($extra_acls); - $extra_acls = array_unique($extra_acls); - $stmt = $pdo->prepare("DELETE FROM `sender_acl` WHERE `external` = 1 AND `logged_in_as` = :username"); - $stmt->execute(array( - ':username' => $username - )); - foreach ($extra_acls as $sender_acl_external) { - $stmt = $pdo->prepare("INSERT INTO `sender_acl` (`send_as`, `logged_in_as`, `external`) - VALUES (:sender_acl, :username, 1)"); + $extra_acls = array_filter($extra_acls); + $extra_acls = array_values($extra_acls); + $extra_acls = array_unique($extra_acls); + $stmt = $pdo->prepare("DELETE FROM `sender_acl` WHERE `external` = 1 AND `logged_in_as` = :username"); $stmt->execute(array( - ':sender_acl' => $sender_acl_external, ':username' => $username )); + foreach ($extra_acls as $sender_acl_external) { + $stmt = $pdo->prepare("INSERT INTO `sender_acl` (`send_as`, `logged_in_as`, `external`) + VALUES (:sender_acl, :username, 1)"); + $stmt->execute(array( + ':sender_acl' => $sender_acl_external, + ':username' => $username + )); + } } } if (isset($_data['sender_acl'])) { diff --git a/data/web/lang/lang.de-de.json b/data/web/lang/lang.de-de.json index 89942e4e..bc94e619 100644 --- a/data/web/lang/lang.de-de.json +++ b/data/web/lang/lang.de-de.json @@ -363,6 +363,7 @@ "domain_not_empty": "Domain %s ist nicht leer", "domain_not_found": "Domain %s nicht gefunden", "domain_quota_m_in_use": "Domain-Speicherplatzlimit muss größer oder gleich %d MiB sein", + "extended_sender_acl_denied": "Keine Rechte zum setzen von externen Absenderadressen", "extra_acl_invalid": "Externe Absenderadresse \"%s\" ist ungültig", "extra_acl_invalid_domain": "Externe Absenderadresse \"%s\" verwendet eine ungültige Domain", "fido2_verification_failed": "FIDO2-Verifizierung fehlgeschlagen: %s", diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index bec5351d..e1323f94 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -363,6 +363,7 @@ "domain_not_empty": "Cannot remove non-empty domain %s", "domain_not_found": "Domain %s not found", "domain_quota_m_in_use": "Domain quota must be greater or equal to %s MiB", + "extended_sender_acl_denied": "missing ACL to set external sender addresses", "extra_acl_invalid": "External sender address \"%s\" is invalid", "extra_acl_invalid_domain": "External sender \"%s\" uses an invalid domain", "fido2_verification_failed": "FIDO2 verification failed: %s", diff --git a/data/web/templates/edit/mailbox.twig b/data/web/templates/edit/mailbox.twig index 289638d6..36fe053b 100644 --- a/data/web/templates/edit/mailbox.twig +++ b/data/web/templates/edit/mailbox.twig @@ -200,8 +200,10 @@ {% if sender_acl_handles.external_sender_aliases %} {% set ext_sender_acl = sender_acl_handles.external_sender_aliases|join(', ') %} {% endif %} - - {{ lang.edit.extended_sender_acl_info|raw }} + {% if acl.extend_sender_acl and acl.extend_sender_acl == 1 %} + + {{ lang.edit.extended_sender_acl_info|raw }} + {% endif %}

From 1e98784eee64240418d6e6df2336e2c0d7ac9dd2 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Fri, 6 Jan 2023 12:09:15 +0100 Subject: [PATCH 18/43] [Web] Opt-In for third party ip_check --- data/web/admin.php | 1 + data/web/debug.php | 1 + data/web/inc/functions.customize.inc.php | 33 +++++++++++++++++++ data/web/json_api.php | 14 ++++---- data/web/lang/lang.de-de.json | 4 +++ data/web/lang/lang.en-gb.json | 4 +++ .../templates/admin/tab-config-customize.twig | 14 ++++++++ data/web/templates/debug.twig | 20 ++++++----- 8 files changed, 76 insertions(+), 15 deletions(-) diff --git a/data/web/admin.php b/data/web/admin.php index a3b908b7..cd3eb890 100644 --- a/data/web/admin.php +++ b/data/web/admin.php @@ -103,6 +103,7 @@ $template_data = [ 'rsettings' => $rsettings, 'rspamd_regex_maps' => $rspamd_regex_maps, 'logo_specs' => customize('get', 'main_logo_specs'), + 'ip_check' => customize('get', 'ip_check'), 'password_complexity' => password_complexity('get'), 'show_rspamd_global_filters' => @$_SESSION['show_rspamd_global_filters'], 'lang_admin' => json_encode($lang['admin']), diff --git a/data/web/debug.php b/data/web/debug.php index 45c4456c..52052f68 100644 --- a/data/web/debug.php +++ b/data/web/debug.php @@ -65,6 +65,7 @@ $template_data = [ 'solr_uptime' => round($solr_status['status']['dovecot-fts']['uptime'] / 1000 / 60 / 60), 'clamd_status' => $clamd_status, 'containers' => $containers, + 'ip_check' => customize('get', 'ip_check'), 'lang_admin' => json_encode($lang['admin']), 'lang_debug' => json_encode($lang['debug']), 'lang_datatables' => json_encode($lang['datatables']), diff --git a/data/web/inc/functions.customize.inc.php b/data/web/inc/functions.customize.inc.php index 16c5c036..6025d97d 100644 --- a/data/web/inc/functions.customize.inc.php +++ b/data/web/inc/functions.customize.inc.php @@ -160,6 +160,25 @@ function customize($_action, $_item, $_data = null) { 'msg' => 'ui_texts' ); break; + case 'ip_check': + $ip_check = ($_data['ip_check_opt_in'] == "1") ? 1 : 0; + try { + $redis->set('IP_CHECK', $ip_check); + } + catch (RedisException $e) { + $_SESSION['return'][] = array( + 'type' => 'danger', + 'log' => array(__FUNCTION__, $_action, $_item, $_data), + 'msg' => array('redis_error', $e) + ); + return false; + } + $_SESSION['return'][] = array( + 'type' => 'success', + 'log' => array(__FUNCTION__, $_action, $_item, $_data), + 'msg' => 'ip_check_opt_in_modified' + ); + break; } break; case 'delete': @@ -276,6 +295,20 @@ function customize($_action, $_item, $_data = null) { return false; } break; + case 'ip_check': + try { + $ip_check = ($ip_check = $redis->get('IP_CHECK')) ? $ip_check : 0; + return $ip_check; + } + catch (RedisException $e) { + $_SESSION['return'][] = array( + 'type' => 'danger', + 'log' => array(__FUNCTION__, $_action, $_item, $_data), + 'msg' => array('redis_error', $e) + ); + return false; + } + break; } break; } diff --git a/data/web/json_api.php b/data/web/json_api.php index 0d3dbb2f..1823e5a5 100644 --- a/data/web/json_api.php +++ b/data/web/json_api.php @@ -1544,18 +1544,15 @@ if (isset($_GET['query'])) { } else if ($extra == "ip") { // get public ips + $curl = curl_init(); - curl_setopt($curl, CURLOPT_URL, 'http://ipv4.mailcow.email'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 0); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($ch, CURLOPT_TIMEOUT, 10); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($curl, CURLOPT_TIMEOUT, 15); + curl_setopt($curl, CURLOPT_URL, 'http://ipv4.mailcow.email'); $ipv4 = curl_exec($curl); curl_setopt($curl, CURLOPT_URL, 'http://ipv6.mailcow.email'); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curl, CURLOPT_POST, 0); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); - curl_setopt($ch, CURLOPT_TIMEOUT, 10); $ipv6 = curl_exec($curl); $ips = array( "ipv4" => $ipv4, @@ -1917,6 +1914,9 @@ if (isset($_GET['query'])) { case "ui_texts": process_edit_return(customize('edit', 'ui_texts', $attr)); break; + case "ip_check": + process_edit_return(customize('edit', 'ip_check', $attr)); + break; case "self": if ($_SESSION['mailcow_cc_role'] == "domainadmin") { process_edit_return(domain_admin('edit', $attr)); diff --git a/data/web/lang/lang.de-de.json b/data/web/lang/lang.de-de.json index bc94e619..1832cddd 100644 --- a/data/web/lang/lang.de-de.json +++ b/data/web/lang/lang.de-de.json @@ -204,6 +204,9 @@ "include_exclude": "Ein- und Ausschlüsse", "include_exclude_info": "Ohne Auswahl werden alle Mailboxen adressiert.", "includes": "Diese Empfänger einschließen", + "ip_check": "IP Check", + "ip_check_disabled": "IP check ist deaktiviert. Unter dem angegebenen Pfad kann es aktiviert werden
System > Configuration > Options > Customize", + "ip_check_opt_in": "Opt-In für die Nutzung der Drittanbieter-Dienste ipv4.mailcow.email und ipv6.mailcow.email zur Auflösung externer IP-Adressen.", "is_mx_based": "MX-basiert", "last_applied": "Zuletzt angewendet", "license_info": "Eine Lizenz ist nicht erforderlich, hilft jedoch der Entwicklung mailcows.
Hier kann die mailcow-GUID registriert werden. Alternativ ist die Bestellung von Support-Paketen möglich.", @@ -1004,6 +1007,7 @@ "forwarding_host_removed": "Weiterleitungs-Host %s wurde entfernt", "global_filter_written": "Filterdatei wurde erfolgreich geschrieben", "hash_deleted": "Hash wurde gelöscht", + "ip_check_opt_in_modified": "IP Check wurde erfolgreich gespeichert", "item_deleted": "Objekt %s wurde entfernt", "item_released": "Objekt %s freigegeben", "items_deleted": "Objekt(e) %s wurde(n) erfolgreich entfernt", diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index e1323f94..4472d039 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -206,6 +206,9 @@ "include_exclude": "Include/Exclude", "include_exclude_info": "By default - with no selection - all mailboxes are addressed", "includes": "Include these recipients", + "ip_check": "IP Check", + "ip_check_disabled": "IP check is disabled. You can enable it under
System > Configuration > Options > Customize", + "ip_check_opt_in": "Opt-In for using third party service ipv4.mailcow.email and ipv6.mailcow.email to resolve external IP addresses.", "is_mx_based": "MX based", "last_applied": "Last applied", "license_info": "A license is not required but helps further development.
Register your GUID here or buy support for your mailcow installation.", @@ -1016,6 +1019,7 @@ "forwarding_host_removed": "Forwarding host %s has been removed", "global_filter_written": "Filter was successfully written to file", "hash_deleted": "Hash deleted", + "ip_check_opt_in_modified": "IP check was saved successfully", "item_deleted": "Item %s successfully deleted", "item_released": "Item %s released", "items_deleted": "Item %s successfully deleted", diff --git a/data/web/templates/admin/tab-config-customize.twig b/data/web/templates/admin/tab-config-customize.twig index 4ec6aecb..766c0b6a 100644 --- a/data/web/templates/admin/tab-config-customize.twig +++ b/data/web/templates/admin/tab-config-customize.twig @@ -33,6 +33,20 @@
{% endif %} + {{ lang.admin.ip_check }}
+
+
+
+ + +
+

+ +

+
+
{{ lang.admin.app_links }}

{{ lang.admin.merged_vars_hint|raw }}

diff --git a/data/web/templates/debug.twig b/data/web/templates/debug.twig index a9399a12..60e78bdf 100644 --- a/data/web/templates/debug.twig +++ b/data/web/templates/debug.twig @@ -52,14 +52,18 @@ IPs - - - - - + {% if ip_check == 1 %} + - + - + + {% else %} + {{ lang.admin.ip_check_disabled|raw }} + {% endif %} From c44281f62d0e18de8bff3c42e46265ee79afb716 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it Date: Fri, 6 Jan 2023 12:43:10 +0100 Subject: [PATCH 19/43] [Web] set domain tab default active --- data/web/templates/mailbox.twig | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/data/web/templates/mailbox.twig b/data/web/templates/mailbox.twig index cdb6a428..d1044288 100644 --- a/data/web/templates/mailbox.twig +++ b/data/web/templates/mailbox.twig @@ -4,18 +4,18 @@
- +
@@ -86,7 +86,7 @@
- +
@@ -373,9 +373,9 @@
@@ -396,9 +396,9 @@
@@ -419,9 +419,9 @@
@@ -442,9 +442,9 @@
@@ -465,9 +465,9 @@
@@ -493,9 +493,9 @@
@@ -516,9 +516,9 @@
@@ -539,9 +539,9 @@
@@ -562,9 +562,9 @@
@@ -585,9 +585,9 @@
@@ -608,9 +608,9 @@

{{ lang.admin.hash_remove_info }}

diff --git a/data/web/templates/mailbox/tab-bcc.twig b/data/web/templates/mailbox/tab-bcc.twig index 7f8319e7..76845c3d 100644 --- a/data/web/templates/mailbox/tab-bcc.twig +++ b/data/web/templates/mailbox/tab-bcc.twig @@ -23,9 +23,9 @@
  • {{ lang.mailbox.bcc_to_rcpt }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_bcc_entry }} @@ -44,9 +44,9 @@
  • {{ lang.mailbox.bcc_to_rcpt }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_bcc_entry }} @@ -74,9 +74,9 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_recipient_map_entry }} @@ -92,9 +92,9 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_recipient_map_entry }} diff --git a/data/web/templates/mailbox/tab-domain-aliases.twig b/data/web/templates/mailbox/tab-domain-aliases.twig index f2037766..579520b5 100644 --- a/data/web/templates/mailbox/tab-domain-aliases.twig +++ b/data/web/templates/mailbox/tab-domain-aliases.twig @@ -1,7 +1,7 @@
    diff --git a/data/web/templates/mailbox/tab-domains.twig b/data/web/templates/mailbox/tab-domains.twig index d3d88246..1d63a7d8 100644 --- a/data/web/templates/mailbox/tab-domains.twig +++ b/data/web/templates/mailbox/tab-domains.twig @@ -22,10 +22,10 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • {% endif %} +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {% if mailcow_cc_role == 'admin' %} {{ lang.mailbox.add_domain }} @@ -43,10 +43,10 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • +
  • {% endif %} -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {% if mailcow_cc_role == 'admin' %} diff --git a/data/web/templates/mailbox/tab-filters.twig b/data/web/templates/mailbox/tab-filters.twig index 942f784f..02a86f27 100644 --- a/data/web/templates/mailbox/tab-filters.twig +++ b/data/web/templates/mailbox/tab-filters.twig @@ -23,9 +23,9 @@
  • {{ lang.mailbox.set_postfilter }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_filter }}
    @@ -44,9 +44,9 @@
  • {{ lang.mailbox.set_postfilter }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_filter }} diff --git a/data/web/templates/mailbox/tab-mailboxes.twig b/data/web/templates/mailbox/tab-mailboxes.twig index d04cf0d8..573d8ae8 100644 --- a/data/web/templates/mailbox/tab-mailboxes.twig +++ b/data/web/templates/mailbox/tab-mailboxes.twig @@ -16,9 +16,9 @@ {{ lang.mailbox.toggle_all }} {{ lang.mailbox.quick_actions }} {{ lang.mailbox.add_resource }} diff --git a/data/web/templates/mailbox/tab-syncjobs.twig b/data/web/templates/mailbox/tab-syncjobs.twig index 8ecfda5f..da692e7f 100644 --- a/data/web/templates/mailbox/tab-syncjobs.twig +++ b/data/web/templates/mailbox/tab-syncjobs.twig @@ -22,9 +22,9 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.user.create_syncjob }} @@ -41,9 +41,9 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.user.create_syncjob }} diff --git a/data/web/templates/mailbox/tab-templates-domains.twig b/data/web/templates/mailbox/tab-templates-domains.twig index 95bd2d7a..e5858b22 100644 --- a/data/web/templates/mailbox/tab-templates-domains.twig +++ b/data/web/templates/mailbox/tab-templates-domains.twig @@ -18,9 +18,9 @@ {% if mailcow_cc_role == 'admin' %} @@ -36,9 +36,9 @@ {% if mailcow_cc_role == 'admin' %} diff --git a/data/web/templates/mailbox/tab-templates-mbox.twig b/data/web/templates/mailbox/tab-templates-mbox.twig index a43ec914..529fad38 100644 --- a/data/web/templates/mailbox/tab-templates-mbox.twig +++ b/data/web/templates/mailbox/tab-templates-mbox.twig @@ -18,9 +18,9 @@ {% if mailcow_cc_role == 'admin' %} @@ -36,9 +36,9 @@ {% if mailcow_cc_role == 'admin' %} diff --git a/data/web/templates/mailbox/tab-tls-policy.twig b/data/web/templates/mailbox/tab-tls-policy.twig index efefcf21..2a6548a2 100644 --- a/data/web/templates/mailbox/tab-tls-policy.twig +++ b/data/web/templates/mailbox/tab-tls-policy.twig @@ -20,9 +20,9 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_tls_policy_map }} @@ -38,9 +38,9 @@
  • {{ lang.mailbox.deactivate }}
  • {{ lang.mailbox.remove }}
  • -
  • -
  • {{ lang.datatables.expand_all }}
  • -
  • {{ lang.datatables.collapse_all }}
  • +
  • +
  • {{ lang.datatables.expand_all }}
  • +
  • {{ lang.datatables.collapse_all }}
  • {{ lang.mailbox.add_tls_policy_map }} diff --git a/data/web/templates/quarantine.twig b/data/web/templates/quarantine.twig index c0b3737f..5ff7fe66 100644 --- a/data/web/templates/quarantine.twig +++ b/data/web/templates/quarantine.twig @@ -16,9 +16,9 @@ {{ lang.quarantine.toggle_all }} {{ lang.quarantine.quick_actions }}