diff --git a/data/Dockerfiles/netfilter/main.py b/data/Dockerfiles/netfilter/main.py index 62e0dda75a..c3ca379cae 100644 --- a/data/Dockerfiles/netfilter/main.py +++ b/data/Dockerfiles/netfilter/main.py @@ -114,8 +114,6 @@ def ban(address): global lock refreshF2boptions() - BAN_TIME = int(f2boptions['ban_time']) - BAN_TIME_INCREMENT = bool(f2boptions['ban_time_increment']) MAX_ATTEMPTS = int(f2boptions['max_attempts']) RETRY_WINDOW = int(f2boptions['retry_window']) NETBAN_IPV4 = '/' + str(f2boptions['netban_ipv4']) @@ -150,7 +148,7 @@ def ban(address): if bans[net]['attempts'] >= MAX_ATTEMPTS: cur_time = int(round(time.time())) - NET_BAN_TIME = BAN_TIME if not BAN_TIME_INCREMENT else BAN_TIME * 2 ** bans[net]['ban_counter'] + NET_BAN_TIME = calcNetBanTime(bans[net]['ban_counter']) logger.logCrit('Banning %s for %d minutes' % (net, NET_BAN_TIME / 60 )) if type(ip) is ipaddress.IPv4Address and int(f2boptions['manage_external']) != 1: with lock: @@ -277,12 +275,11 @@ def snat6(snat_target): tables.snat6(snat_target, os.getenv('IPV6_NETWORK', 'fd4d:6169:6c63:6f77::/64')) def autopurge(): + global f2boptions + while not quit_now: time.sleep(10) refreshF2boptions() - BAN_TIME = int(f2boptions['ban_time']) - MAX_BAN_TIME = int(f2boptions['max_ban_time']) - BAN_TIME_INCREMENT = bool(f2boptions['ban_time_increment']) MAX_ATTEMPTS = int(f2boptions['max_attempts']) QUEUE_UNBAN = r.hgetall('F2B_QUEUE_UNBAN') if QUEUE_UNBAN: @@ -290,9 +287,9 @@ def autopurge(): unban(str(net)) for net in bans.copy(): if bans[net]['attempts'] >= MAX_ATTEMPTS: - NET_BAN_TIME = BAN_TIME if not BAN_TIME_INCREMENT else BAN_TIME * 2 ** bans[net]['ban_counter'] + NET_BAN_TIME = calcNetBanTime(bans[net]['ban_counter']) TIME_SINCE_LAST_ATTEMPT = time.time() - bans[net]['last_attempt'] - if TIME_SINCE_LAST_ATTEMPT > NET_BAN_TIME or TIME_SINCE_LAST_ATTEMPT > MAX_BAN_TIME: + if TIME_SINCE_LAST_ATTEMPT > NET_BAN_TIME: unban(net) def mailcowChainOrder(): @@ -306,6 +303,16 @@ def mailcowChainOrder(): if quit_now: return quit_now, exit_code = tables.checkIPv6ChainOrder() +def calcNetBanTime(ban_counter): + global f2boptions + + BAN_TIME = int(f2boptions['ban_time']) + MAX_BAN_TIME = int(f2boptions['max_ban_time']) + BAN_TIME_INCREMENT = bool(f2boptions['ban_time_increment']) + NET_BAN_TIME = BAN_TIME if not BAN_TIME_INCREMENT else BAN_TIME * 2 ** ban_counter + NET_BAN_TIME = max([BAN_TIME, min([NET_BAN_TIME, MAX_BAN_TIME])]) + return NET_BAN_TIME + def isIpNetwork(address): try: ipaddress.ip_network(address, False) diff --git a/data/Dockerfiles/netfilter/modules/Logger.py b/data/Dockerfiles/netfilter/modules/Logger.py index 25562965f6..0ba2f42adc 100644 --- a/data/Dockerfiles/netfilter/modules/Logger.py +++ b/data/Dockerfiles/netfilter/modules/Logger.py @@ -13,9 +13,12 @@ def log(self, priority, message): tolog['time'] = int(round(time.time())) tolog['priority'] = priority tolog['message'] = message - if self.r is not None: - self.r.lpush('NETFILTER_LOG', json.dumps(tolog, ensure_ascii=False)) print(message) + if self.r is not None: + try: + self.r.lpush('NETFILTER_LOG', json.dumps(tolog, ensure_ascii=False)) + except Exception as ex: + print('Failed logging to redis: %s' % (ex)) def logWarn(self, message): self.log('warn', message) diff --git a/data/Dockerfiles/netfilter/modules/NFTables.py b/data/Dockerfiles/netfilter/modules/NFTables.py index 4cb0110aea..7740fa59f8 100644 --- a/data/Dockerfiles/netfilter/modules/NFTables.py +++ b/data/Dockerfiles/netfilter/modules/NFTables.py @@ -452,6 +452,8 @@ def get_unban_ip_dict(self, ipaddr:str, _family: str): continue rule = _object["rule"]["expr"][0]["match"] + if not "payload" in rule["left"]: + continue left_opt = rule["left"]["payload"] if not left_opt["protocol"] == _family: continue diff --git a/data/conf/rspamd/dynmaps/footer.php b/data/conf/rspamd/dynmaps/footer.php index 36b307c1b5..545c45ec1c 100644 --- a/data/conf/rspamd/dynmaps/footer.php +++ b/data/conf/rspamd/dynmaps/footer.php @@ -56,21 +56,42 @@ function getallheaders() { error_log("FOOTER: checking for domain " . $domain . ", user " . $username . " and address " . $from . PHP_EOL); try { - $stmt = $pdo->prepare("SELECT `plain`, `html`, `mbox_exclude`, `skip_replies` FROM `domain_wide_footer` + // try get $target_domain if $domain is an alias_domain + $stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` + WHERE `alias_domain` = :alias_domain"); + $stmt->execute(array( + ':alias_domain' => $domain + )); + $alias_domain = $stmt->fetch(PDO::FETCH_ASSOC); + if (!$alias_domain) { + $target_domain = $domain; + } else { + $target_domain = $alias_domain['target_domain']; + } + + // get footer associated with the domain + $stmt = $pdo->prepare("SELECT `plain`, `html`, `mbox_exclude`, `alias_domain_exclude`, `skip_replies` FROM `domain_wide_footer` WHERE `domain` = :domain"); $stmt->execute(array( - ':domain' => $domain + ':domain' => $target_domain )); $footer = $stmt->fetch(PDO::FETCH_ASSOC); + + // check if the sender is excluded if (in_array($from, json_decode($footer['mbox_exclude']))){ $footer = false; } + if (in_array($domain, json_decode($footer['alias_domain_exclude']))){ + $footer = false; + } if (empty($footer)){ echo $empty_footer; exit; } error_log("FOOTER: " . json_encode($footer) . PHP_EOL); + // footer will be applied + // get custom mailbox attributes to insert into the footer $stmt = $pdo->prepare("SELECT `custom_attributes` FROM `mailbox` WHERE `username` = :username"); $stmt->execute(array( ':username' => $username diff --git a/data/web/debug.php b/data/web/debug.php index 52052f682e..9c338009c8 100644 --- a/data/web/debug.php +++ b/data/web/debug.php @@ -39,9 +39,13 @@ $StartedAt['month'], $StartedAt['day'], $StartedAt['year'])); - $user_tz = new DateTimeZone(getenv('TZ')); - $date->setTimezone($user_tz); - $started = $date->format('r'); + try { + $user_tz = new DateTimeZone(getenv('TZ')); + $date->setTimezone($user_tz); + $started = $date->format('r'); + } catch(Exception $e) { + $started = '?'; + } } else { $started = '?'; diff --git a/data/web/edit.php b/data/web/edit.php index 83ae1467e0..4c5cd89e9b 100644 --- a/data/web/edit.php +++ b/data/web/edit.php @@ -59,7 +59,8 @@ 'domain_details' => $result, 'domain_footer' => $domain_footer, 'mailboxes' => mailbox('get', 'mailboxes', $_GET["domain"]), - 'aliases' => mailbox('get', 'aliases', $_GET["domain"], 'address') + 'aliases' => mailbox('get', 'aliases', $_GET["domain"], 'address'), + 'alias_domains' => mailbox('get', 'alias_domains', $_GET["domain"]) ]; } } diff --git a/data/web/inc/functions.mailbox.inc.php b/data/web/inc/functions.mailbox.inc.php index 0f48efbd5c..00c11deecc 100644 --- a/data/web/inc/functions.mailbox.inc.php +++ b/data/web/inc/functions.mailbox.inc.php @@ -3438,30 +3438,54 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) { $footers['plain'] = isset($_data['plain']) ? $_data['plain'] : ''; $footers['skip_replies'] = isset($_data['skip_replies']) ? (int)$_data['skip_replies'] : 0; $footers['mbox_exclude'] = array(); - if (isset($_data["mbox_exclude"])){ - if (!is_array($_data["mbox_exclude"])) { - $_data["mbox_exclude"] = array($_data["mbox_exclude"]); - } - foreach ($_data["mbox_exclude"] as $mailbox) { - if (!filter_var($mailbox, FILTER_VALIDATE_EMAIL)) { - $_SESSION['return'][] = array( - 'type' => 'danger', - 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), - 'msg' => array('username_invalid', $mailbox) - ); - continue; + $footers['alias_domain_exclude'] = array(); + if (isset($_data["exclude"])){ + if (!is_array($_data["exclude"])) { + $_data["exclude"] = array($_data["exclude"]); + } + foreach ($_data["exclude"] as $exclude) { + if (filter_var($exclude, FILTER_VALIDATE_EMAIL)) { + $stmt = $pdo->prepare("SELECT `address` FROM `alias` WHERE `address` = :address + UNION + SELECT `username` FROM `mailbox` WHERE `username` = :username"); + $stmt->execute(array( + ':address' => $exclude, + ':username' => $exclude, + )); + $row = $stmt->fetch(PDO::FETCH_ASSOC); + if(!$row){ + $_SESSION['return'][] = array( + 'type' => 'danger', + 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), + 'msg' => array('username_invalid', $exclude) + ); + continue; + } + array_push($footers['mbox_exclude'], $exclude); } - $is_now = mailbox('get', 'mailbox_details', $mailbox); - if(empty($is_now)){ + elseif (is_valid_domain_name($exclude)) { + $stmt = $pdo->prepare("SELECT `alias_domain` FROM `alias_domain` WHERE `alias_domain` = :alias_domain"); + $stmt->execute(array( + ':alias_domain' => $exclude, + )); + $row = $stmt->fetch(PDO::FETCH_ASSOC); + if(!$row){ + $_SESSION['return'][] = array( + 'type' => 'danger', + 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), + 'msg' => array('username_invalid', $exclude) + ); + continue; + } + array_push($footers['alias_domain_exclude'], $exclude); + } + else { $_SESSION['return'][] = array( 'type' => 'danger', 'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr), - 'msg' => array('username_invalid', $mailbox) + 'msg' => array('username_invalid', $exclude) ); - continue; } - - array_push($footers['mbox_exclude'], $mailbox); } } foreach ($domains as $domain) { @@ -3486,12 +3510,13 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) { try { $stmt = $pdo->prepare("DELETE FROM `domain_wide_footer` WHERE `domain`= :domain"); $stmt->execute(array(':domain' => $domain)); - $stmt = $pdo->prepare("INSERT INTO `domain_wide_footer` (`domain`, `html`, `plain`, `mbox_exclude`, `skip_replies`) VALUES (:domain, :html, :plain, :mbox_exclude, :skip_replies)"); + $stmt = $pdo->prepare("INSERT INTO `domain_wide_footer` (`domain`, `html`, `plain`, `mbox_exclude`, `alias_domain_exclude`, `skip_replies`) VALUES (:domain, :html, :plain, :mbox_exclude, :alias_domain_exclude, :skip_replies)"); $stmt->execute(array( ':domain' => $domain, ':html' => $footers['html'], ':plain' => $footers['plain'], ':mbox_exclude' => json_encode($footers['mbox_exclude']), + ':alias_domain_exclude' => json_encode($footers['alias_domain_exclude']), ':skip_replies' => $footers['skip_replies'], )); } @@ -4316,6 +4341,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) { $domaindata['mboxes_in_domain'] = $MailboxDataDomain['count']; $domaindata['mboxes_left'] = $row['mailboxes'] - $MailboxDataDomain['count']; $domaindata['domain_name'] = $row['domain']; + $domaindata['domain_h_name'] = idn_to_utf8($row['domain']); $domaindata['description'] = $row['description']; $domaindata['max_num_aliases_for_domain'] = $row['aliases']; $domaindata['max_num_mboxes_for_domain'] = $row['mailboxes']; @@ -4648,7 +4674,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) { } try { - $stmt = $pdo->prepare("SELECT `html`, `plain`, `mbox_exclude`, `skip_replies` FROM `domain_wide_footer` + $stmt = $pdo->prepare("SELECT `html`, `plain`, `mbox_exclude`, `alias_domain_exclude`, `skip_replies` FROM `domain_wide_footer` WHERE `domain` = :domain"); $stmt->execute(array( ':domain' => $domain diff --git a/data/web/inc/init_db.inc.php b/data/web/inc/init_db.inc.php index 6fec0c2f86..445af8a9a6 100644 --- a/data/web/inc/init_db.inc.php +++ b/data/web/inc/init_db.inc.php @@ -3,7 +3,7 @@ function init_db_schema() { try { global $pdo; - $db_version = "08012024_1442"; + $db_version = "09022024_1433"; $stmt = $pdo->query("SHOW TABLES LIKE 'versions'"); $num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC)); @@ -273,6 +273,7 @@ function init_db_schema() { "html" => "LONGTEXT", "plain" => "LONGTEXT", "mbox_exclude" => "JSON NOT NULL DEFAULT ('[]')", + "alias_domain_exclude" => "JSON NOT NULL DEFAULT ('[]')", "skip_replies" => "TINYINT(1) NOT NULL DEFAULT '0'" ), "keys" => array( diff --git a/data/web/inc/vars.inc.php b/data/web/inc/vars.inc.php index afc801e44d..8cfafa2bb8 100644 --- a/data/web/inc/vars.inc.php +++ b/data/web/inc/vars.inc.php @@ -95,6 +95,7 @@ 'it-it' => 'Italiano (Italian)', 'ko-kr' => '한국어 (Korean)', 'lv-lv' => 'latviešu (Latvian)', + 'nb-no' => 'Norsk (Norwegian)', 'nl-nl' => 'Nederlands (Dutch)', 'pl-pl' => 'Język Polski (Polish)', 'pt-br' => 'Português brasileiro (Brazilian Portuguese)', diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js index cc316b713b..e2016e3eda 100644 --- a/data/web/js/site/mailbox.js +++ b/data/web/js/site/mailbox.js @@ -451,6 +451,10 @@ jQuery(function($){ dataSrc: function(json){ $.each(json.data, function(i, item) { item.domain_name = escapeHtml(item.domain_name); + item.domain_h_name = escapeHtml(item.domain_h_name); + if (item.domain_name != item.domain_h_name){ + item.domain_h_name = item.domain_h_name + '' + item.domain_name + ''; + } item.aliases = item.aliases_in_domain + " / " + item.max_num_aliases_for_domain; item.mailboxes = item.mboxes_in_domain + " / " + item.max_num_mboxes_for_domain; @@ -489,11 +493,11 @@ jQuery(function($){ if (item.backupmx == 1) { if (item.relay_unknown_only == 1) { - item.domain_name = '
Relay Non-Local
' + item.domain_name; + item.domain_h_name = '
Relay Non-Local
' + item.domain_h_name; } else if (item.relay_all_recipients == 1) { - item.domain_name = '
Relay All
' + item.domain_name; + item.domain_h_name = '
Relay All
' + item.domain_h_name; } else { - item.domain_name = '
Relay
' + item.domain_name; + item.domain_h_name = '
Relay
' + item.domain_h_name; } } }); @@ -521,7 +525,7 @@ jQuery(function($){ }, { title: lang.domain, - data: 'domain_name', + data: 'domain_h_name', responsivePriority: 3, defaultContent: '' }, diff --git a/data/web/lang/lang.cs-cz.json b/data/web/lang/lang.cs-cz.json index 2d0b1014ef..593f1cdcfd 100644 --- a/data/web/lang/lang.cs-cz.json +++ b/data/web/lang/lang.cs-cz.json @@ -547,7 +547,7 @@ "dns_records": "DNS záznamy", "dns_records_24hours": "Upozornění: Změnám v systému DNS může trvat až 24 hodin, než se zde správně zobrazí jejich aktuální stav. Můžete zde snadno zjistit, jak nastavit DNS záznamy a zda jsou všechny záznamy správně uloženy.", "dns_records_data": "Správný záznam", - "dns_records_docs": "Přečtěte si prosím dokumentaci.", + "dns_records_docs": "Přečtěte si prosím dokumentaci.", "dns_records_name": "Název", "dns_records_status": "Současný stav", "dns_records_type": "Typ", diff --git a/data/web/lang/lang.da-dk.json b/data/web/lang/lang.da-dk.json index 33629bbeb6..95db916eff 100644 --- a/data/web/lang/lang.da-dk.json +++ b/data/web/lang/lang.da-dk.json @@ -459,7 +459,7 @@ "cname_from_a": "Værdi afledt af A / AAAA-post. Dette understøttes, så længe posten peger på den korrekte ressource.", "dns_records": "DNS-poster", "dns_records_24hours": "Bemærk, at ændringer, der foretages i DNS, kan tage op til 24 timer for at få deres aktuelle status korrekt reflekteret på denne side. Det er beregnet som en måde for dig let at se, hvordan du konfigurerer dine DNS-poster og kontrollere, om alle dine poster er korrekt gemt i DNS.", - "dns_records_docs": "Se også dokumentationen.", + "dns_records_docs": "Se også dokumentationen.", "dns_records_data": "Korrekte data", "dns_records_name": "Navn", "dns_records_status": "Nuværende tilstand", diff --git a/data/web/lang/lang.de-de.json b/data/web/lang/lang.de-de.json index ddadfac630..2298e1cbde 100644 --- a/data/web/lang/lang.de-de.json +++ b/data/web/lang/lang.de-de.json @@ -556,7 +556,7 @@ "dns_records": "DNS-Einträge", "dns_records_24hours": "Bitte beachten Sie, dass es bis zu 24 Stunden dauern kann, bis Änderungen an Ihren DNS-Einträgen als aktueller Status auf dieser Seite dargestellt werden. Diese Seite ist nur als Hilfsmittel gedacht, um die korrekten Werte für DNS-Einträge anzuzeigen und zu überprüfen, ob die Daten im DNS hinterlegt sind.", "dns_records_data": "Korrekte Daten", - "dns_records_docs": "Die Online-Dokumentation enthält weitere Informationen zur DNS-Konfiguration.", + "dns_records_docs": "Die Online-Dokumentation enthält weitere Informationen zur DNS-Konfiguration.", "dns_records_name": "Name", "dns_records_status": "Aktueller Status", "dns_records_type": "Typ", @@ -613,6 +613,7 @@ "extended_sender_acl_info": "Der DKIM-Domainkey der externen Absenderdomain sollte in diesen Server importiert werden, falls vorhanden.
\r\n Wird SPF verwendet, muss diesem Server der Versand gestattet werden.
\r\n Wird eine Domain oder Alias-Domain zu diesem Server hinzugefügt, die sich mit der externen Absenderadresse überschneidet, wird der externe Absender hier entfernt.
\r\n Ein Eintrag @domain.tld erlaubt den Versand als *@domain.tld", "force_pw_update": "Erzwinge Passwortänderung bei nächstem Login", "force_pw_update_info": "Dem Benutzer wird lediglich der Zugang zur %s ermöglicht, App Passwörter funktionieren weiterhin.", + "footer_exclude": "von Fußzeile ausschließen", "full_name": "Voller Name", "gal": "Globales Adressbuch", "gal_info": "Das globale Adressbuch enthält alle Objekte einer Domain und kann durch keinen Benutzer geändert werden. Die Verfügbarkeitsinformation in SOGo ist nur bei eingeschaltetem globalen Adressbuch ersichtlich Zum Anwenden einer Änderung muss SOGo neugestartet werden.", @@ -631,7 +632,6 @@ "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", diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json index ec97d0aef4..964caade6c 100644 --- a/data/web/lang/lang.en-gb.json +++ b/data/web/lang/lang.en-gb.json @@ -556,7 +556,7 @@ "dns_records": "DNS Records", "dns_records_24hours": "Please note that changes made to DNS may take up to 24 hours to correctly have their current state reflected on this page. It is intended as a way for you to easily see how to configure your DNS records and to check whether all your records are correctly stored in DNS.", "dns_records_data": "Correct Data", - "dns_records_docs": "Please also consult the documentation.", + "dns_records_docs": "Please also consult the documentation.", "dns_records_name": "Name", "dns_records_status": "Current State", "dns_records_type": "Type", @@ -613,6 +613,7 @@ "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_info": "This user will only be able to login to %s. App passwords remain useable.", + "footer_exclude": "Exclude from footer", "full_name": "Full name", "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.", @@ -631,7 +632,6 @@ "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", diff --git a/data/web/lang/lang.fr-fr.json b/data/web/lang/lang.fr-fr.json index 96e1aef7d9..374da543d3 100644 --- a/data/web/lang/lang.fr-fr.json +++ b/data/web/lang/lang.fr-fr.json @@ -107,7 +107,8 @@ "validation_success": "Validation réussie", "bcc_dest_format": "La destination Cci doit être une seule adresse e-mail valide.
Si vous avez besoin d'envoyer une copie à plusieurs adresses, créez un alias et utilisez-le ici.", "tags": "Etiquettes", - "app_passwd_protocols": "Protocoles autorisés pour le mot de passe de l'application" + "app_passwd_protocols": "Protocoles autorisés pour le mot de passe de l'application", + "dry": "Simuler la synchronisation" }, "admin": { "access": "Accès", @@ -209,7 +210,7 @@ "link": "Lien", "loading": "Veuillez patienter…", "logo_info": "Votre image sera redimensionnée à une hauteur de 40 pixels pour la barre de navigation du haut et à un maximum de 250 pixels en largeur pour la page d'accueil. Un graphique extensible est fortement recommandé.", - "lookup_mx": "Faire correspondre la destination à MX (.outlook.com pour acheminer tous les messages ciblés vers un MX * .outlook.com sur ce tronçon)", + "lookup_mx": "Faire correspondre la destination à MX (.*\\.google\\.com pour acheminer tous les messages ciblés vers un MX se terminant par google.com sur ce tronçon)", "main_name": "\"mailcow UI\" nom", "merged_vars_hint": "Les lignes grisées ont été importées depuis vars.(local.)inc.php et ne peuvent pas être modifiées.", "message": "Message", @@ -330,7 +331,14 @@ "logo_normal_label": "Normal", "logo_dark_label": "Inversé pour le mode sombre", "allowed_methods": "Access-Control-Allow-Methods", - "allowed_origins": "Access-Control-Allow-Origin" + "allowed_origins": "Access-Control-Allow-Origin", + "copy_to_clipboard": "Texte copié dans le presse-papier !", + "password_policy_special_chars": "Doit contenir des caractères spéciaux", + "rsettings_preset_4": "Désactiver Rspamd pour un domaine", + "oauth2_apps": "Applications OAuth2", + "password_length": "Longueur des mots de passe", + "password_policy_chars": "Doit contenir au moins une lettre", + "password_policy_length": "La longueur minimale du mot de passe est de %d" }, "danger": { "access_denied": "Accès refusé ou données de formulaire non valides", @@ -454,7 +462,9 @@ "demo_mode_enabled": "Le mode de démonstration est activé", "template_exists": "La template %s existe déja", "template_id_invalid": "Le numéro de template %s est invalide", - "template_name_invalid": "Le nom de la template est invalide" + "template_name_invalid": "Le nom de la template est invalide", + "img_dimensions_exceeded": "L'image dépasse les dimensions maximales", + "img_size_exceeded": "L'image dépasse la taille maximale de fichier" }, "debug": { "chart_this_server": "Graphique (ce serveur)", @@ -483,7 +493,7 @@ "cname_from_a": "Valeur dérivée de l’enregistrement A/AAAA. Ceci est supporté tant que l’enregistrement indique la bonne ressource.", "dns_records": "Enregistrements DNS", "dns_records_24hours": "Veuillez noter que les modifications apportées au DNS peuvent prendre jusqu’à 24 heures pour que leurs états actuels soient correctement reflétés sur cette page. Il est conçu comme un moyen pour vous de voir facilement comment configurer vos enregistrements DNS et de vérifier si tous vos enregistrements sont correctement stockés dans les DNS.", - "dns_records_docs": "Veuillez également consulter la documentation.", + "dns_records_docs": "Veuillez également consulter la documentation.", "dns_records_data": "Données correcte", "dns_records_name": "Nom", "dns_records_status": "Etat courant", diff --git a/data/web/lang/lang.it-it.json b/data/web/lang/lang.it-it.json index 6783dfed85..f652784021 100644 --- a/data/web/lang/lang.it-it.json +++ b/data/web/lang/lang.it-it.json @@ -107,7 +107,8 @@ "validation_success": "Convalidato con successo", "bcc_dest_format": "Il destinatario in copia nascosta deve essere un singolo indirizzo email.
Se si vuole spedire una copia del messaggio a più destinatari, bisogna creare un alias ed utilizzarlo per questa opzione.", "app_passwd_protocols": "Protocolli consentiti per la password dell'app", - "tags": "Tag" + "tags": "Tag", + "dry": "Simula sincronizzazione" }, "admin": { "access": "Accedi", @@ -339,7 +340,8 @@ "oauth2_add_client": "Aggiungere il client OAuth2", "rsettings_preset_4": "Disattivare Rspamd per un dominio", "options": "Opzioni", - "cors_settings": "Impostazioni CORS" + "cors_settings": "Impostazioni CORS", + "copy_to_clipboard": "Testo copiato negli appunti!" }, "danger": { "access_denied": "Accesso negato o form di login non corretto", @@ -462,7 +464,9 @@ "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" + "template_id_invalid": "Il template con ID %s non è valido", + "img_dimensions_exceeded": "L'immagine supera la dimensione massima consentita", + "img_size_exceeded": "L'immagine supera la dimensione massima del file" }, "debug": { "chart_this_server": "Grafico (questo server)", @@ -506,7 +510,7 @@ "dns_records": "Record DNS", "dns_records_24hours": "Tieni presente che le modifiche apportate ai record DNS potrebbero richiedere fino a 24 ore per poter essere visualizzate correttamente in questa pagina. Tutto ciò è da intendersi come un modo per voi di vedere come configurare i record DNS e per controllare se tutti i record DNS sono stati inseriti correttamente.", "dns_records_data": "Dati corretti", - "dns_records_docs": "Si prega di consultare anche la documentazione.", + "dns_records_docs": "Si prega di consultare anche la documentazione.", "dns_records_name": "Nome", "dns_records_status": "Stato attuale", "dns_records_type": "Tipo", @@ -626,7 +630,9 @@ "acl": "ACL (autorizzazione)", "app_passwd_protocols": "Protocolli consentiti per la password dell'app", "last_modified": "Ultima modifica", - "pushover_sound": "Suono" + "pushover_sound": "Suono", + "custom_attributes": "Attributi personalizzati", + "domain_footer_skip_replies": "Ignora il piè di pagina nelle e-mail di risposta" }, "fido2": { "confirm": "Conferma", @@ -1021,7 +1027,8 @@ "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" + "template_removed": "Il template con ID %s è stato cancellato", + "f2b_banlist_refreshed": "L'ID della lista blocchi è stato aggiornato con successo." }, "tfa": { "api_register": "%s usa le API Yubico Cloud. Richiedi una chiave API qui", @@ -1048,7 +1055,8 @@ "yubi_otp": "Autenticazione Yubico OTP", "tfa_token_invalid": "Token TFA non valido", "u2f_deprecated": "Sembra che la tua chiave sia stata registrata utilizzando il metodo U2F deprecato. Disattiveremo Two-Factor-Authenticaiton per te e cancelleremo la tua chiave.", - "u2f_deprecated_important": "Registra la tua chiave nel pannello di amministrazione con il nuovo metodo WebAuthn." + "u2f_deprecated_important": "Registra la tua chiave nel pannello di amministrazione con il nuovo metodo WebAuthn.", + "authenticators": "Autenticatori" }, "user": { "action": "Azione", @@ -1210,7 +1218,9 @@ "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.", - "pushover_sound": "Suono" + "pushover_sound": "Suono", + "attribute": "Attributo", + "value": "Valore" }, "warning": { "cannot_delete_self": "Cannot delete logged in user", diff --git a/data/web/lang/lang.nb-no.json b/data/web/lang/lang.nb-no.json new file mode 100644 index 0000000000..8e0946206d --- /dev/null +++ b/data/web/lang/lang.nb-no.json @@ -0,0 +1,208 @@ +{ + "admin": { + "api_read_only": "Kun lesetilgang", + "advanced_settings": "Avanserte innstillinger", + "admin_details": "Endre administratordetaljer", + "add_row": "Legg til rad", + "active_rspamd_settings_map": "Aktivt innstillingskart", + "admins": "Administratorer", + "api_info": "APIet er under utvikling. Dokumentasjonen finnes på /api", + "admin_domains": "Domenetilordninger", + "add": "Legg til", + "active": "Aktiv", + "add_transport": "Legg til transport", + "api_key": "API-nøkkel", + "add_admin": "Legg til administrator", + "admin": "Administrator", + "allowed_methods": "Tilgangskontroll-Tillatte-Metoder", + "add_transports_hint": "Vær oppmerksom på at eventuelle autentiseringsdata vil bli lagret i klartekst.", + "add_relayhost": "Legg til sender-avhengig transport", + "additional_rows": " ekstra rader ble lagt til", + "admins_ldap": "LDAP-administratorer", + "action": "Handling", + "add_settings_rule": "Legg til innstillingsregel", + "allowed_origins": "Tilgangskontroll-Tillat-Opphav", + "api_allow_from": "Tillat API-tilgang fra disse IP/CIDR-nettverkene", + "activate_send": "Aktivér sendeknapp", + "access": "Tilgang", + "add_domain_admin": "Legg til domeneadministrator", + "add_forwarding_host": "Legg til videresendingsvert", + "activate_api": "Aktivér API", + "add_relayhost_hint": "Vennligst vær oppmerksom på at autentiseringsdata, om noe, vil bli lagret i klartekst.", + "app_links": "App-lenker", + "app_name": "App-navn", + "apps_name": "\"mailcow Apps\"-navn", + "arrival_time": "Ankomsttid (servertid)", + "authed_user": "Autorisert bruker", + "ays": "Er du sikker på at du vil fortsette?", + "change_logo": "Endre logo", + "logo_normal_label": "Normal", + "logo_dark_label": "Omvendt for mørk modus", + "configuration": "Konfigurasjon", + "convert_html_to_text": "Konvertér HTML til ren tekst", + "copy_to_clipboard": "Tekst kopiert til utklippstavle!", + "cors_settings": "CORS-innstillinger", + "credentials_transport_warning": "Advarsel: Å legge til en ny transport-mapping vil oppdatere innloggingsinformasjon for alle oppføringer med en tilsvarende \"next hop\"-kolonne.", + "customer_id": "Kunde-ID", + "customize": "Tilpass", + "destination": "Mål", + "dkim_add_key": "Legg til ARC/DKIM-nøkkel", + "dkim_domains_selector": "Velger", + "dkim_domains_wo_keys": "Velg domener med manglende nøkler", + "dkim_from": "Fra", + "dkim_key_length": "DKIM-nøkkellengde (bits)", + "dkim_key_missing": "Nøkkel mangler", + "dkim_key_unused": "Nøkkel ikke i bruk", + "dkim_key_valid": "Nøkkel gyldig", + "dkim_keys": "ARC/DKIM-nøkler", + "dkim_overwrite_key": "Overskriv eksisterende DKIM-nøkkel", + "dkim_private_key": "Privat nøkkel", + "dkim_to": "Til", + "domain_admins": "Domeneadministratorer", + "domain_s": "Domene/r", + "duplicate": "Duplikat", + "duplicate_dkim": "Duplisert DKIM-oppføring", + "edit": "Rediger", + "empty": "Ingen resultater", + "excludes": "Ekspluderer disse mottakerne", + "f2b_ban_time": "Utestengingstid (sek)", + "f2b_blacklist": "Svartelistede nettverk/verter", + "f2b_filter": "Regex-filtre", + "f2b_manage_external": "Betjene Fail2Ban eksternt", + "f2b_manage_external_info": "Fail2Ban vil fortsette å vedlikeholde utestengingslisten, men den vil ikke aktivt legge til regler for å blokkere trafikk. Bruk den genererte blokkeringslisten under for å blokkere trafikk eksternt.", + "f2b_max_attempts": "Maks antall forsøk", + "f2b_max_ban_time": "Maks utestengingstid (sek)", + "f2b_netban_ipv4": "IPv4-subnetstørrelse å aktivere blokkering for (8-32)", + "f2b_netban_ipv6": "IPv6-subnetstørrelse å aktivere blokkering for (8-128)", + "f2b_parameters": "Fail2Ban-parametre", + "f2b_retry_window": "Tidsrom (sek) for maks antall forsøk", + "f2b_whitelist": "Hvitelistede nettverk/verter", + "filter_table": "Filtreringstabell", + "forwarding_hosts": "Videresendingsverter", + "api_skip_ip_check": "Hopp over IP-sjekk for API", + "ban_list_info": "Se liste over utestengte IPer under: nettverk (gjenværende utestengingstid) - [handlinger].
IPer i kø for å bli tillatt igjen vil bli fjernet fra den aktive utestengingslisten i løpet av noen sekunder.
Røde etiketter indikerer aktive permanente utestenginger via svartelisting.", + "dkim_from_title": "Kildedomene å kopiere data fra", + "domain": "Domene", + "f2b_ban_time_increment": "Utestengingstid økes for hver ny utestenging", + "api_read_write": "Lese- og skrivetilgang", + "f2b_list_info": "En svartelistet vert eller nettverk vil alltid ha større vekt enn en hvitelistet oppføring.Oppdateringer av listen tar noen sekunder før de vises.", + "f2b_regex_info": "Logger tatt i betraktning: SOGo, Postfix, Dovecot, PHP-FHM.", + "dkim_to_title": "Måldomene/r - vil bli overskrevet", + "domain_admin": "Domeneadministrator", + "r_active": "Aktive begrensninger", + "queue_unban": "fjern blokkering", + "r_inactive": "Inaktive begrensninger", + "r_info": "Grå/deaktivere elementer i listen over aktive restriksjoner er ikke kjente som gyldige restriksjoner i mailcow og kan ikke flyttes. Ukjente begrensninger vil bli aktivert i den rekkefølgen de opptrer uansett.
Du kan legge til nye elementer i inc/vars.local.inc.php for å kunne slå dem av og på." + }, + "acl": { + "ratelimit": "Nivågrense", + "sogo_profile_reset": "Nullstill SOGo-profil", + "smtp_ip_access": "Endre tillatte verter for SMTP", + "tls_policy": "TLS-policy", + "spam_alias": "Midlertidige alias", + "spam_policy": "Svarteliste/Hvitliste", + "unlimited_quota": "Ubegrenset kvote for postkasser", + "sogo_access": "Tillat administrasjon av SOGo-tilgang", + "syncjobs": "Synkroniser jobber", + "spam_score": "Spam-resultat", + "recipient_maps": "Mottakerkart", + "alias_domains": "Legg til alias-domene", + "app_passwds": "Behandle app-passord", + "bcc_maps": "BCC-mappinger", + "delimiter_action": "Skilletegn-handling", + "domain_relayhost": "Endre videresendingsvert for et domene", + "eas_reset": "Nullstill EAS-enheter", + "filters": "Filtre", + "login_as": "Logg inn som postkassebruker", + "mailbox_relayhost": "Endre videresendingsvert for en postkasse", + "prohibited": "Forbudt av ACL", + "protocol_access": "Endre protokolltilgang", + "pushover": "Pushover", + "quarantine": "Karantenehandlinger", + "quarantine_attachments": "Sett vedlegg i karantene", + "quarantine_category": "Endre varslingskategori for karantene", + "quarantine_notification": "Endre karantenevarslinger", + "domain_desc": "Endre domenebeskrivelse", + "extend_sender_acl": "Tillat utvidelse av sender-ACL fra eksterne adresser" + }, + "add": { + "app_passwd_protocols": "Tillatte protokoller for app-passord", + "hostname": "Vert", + "goto_ham": "Lær som ham", + "custom_params": "Tilpassede parametre", + "target_address": "Gå-til-adresse", + "delete2": "Slett meldinger på måldestinasjonen som ikke finnes på kilden", + "syncjob": "Legg til synkroniseringsjobb", + "domain": "Domene", + "timeout1": "Tidsavbrudd for tilkobling til ekstern vert", + "goto_null": "Slett epost uten varsling", + "custom_params_hint": "Riktig: --param=xy, feil: --param xy", + "multiple_bookings": "Flere reservasjoner", + "alias_domain": "Aliasdomene", + "exclude": "Ekskludér objekter (regex)", + "validate": "Validér", + "dry": "Simulér synkronisering", + "relay_all_info": "↪ Hvis du velger å ikke videresende for alle mottakere, så må du legge til en (\"blind\") postkasse for hver eneste mottaker som det skal videresendes for.", + "description": "Beskrivelse", + "destination": "Måldestinasjon", + "alias_domain_info": "Kun gyldige domenenavn (kommaseparerte).", + "mailbox_username": "Brukernavn (venstre del av en epostadresse)", + "username": "Brukernavn", + "mins_interval": "Sjekkintervall (minutter)", + "disable_login": "Ikke tillat innlogging (innkommende epost blir fremdeles mottatt)", + "delete2duplicates": "Slett duplikater på måldestinasjonen", + "post_domain_add": "SOGo-kontaineren, \"sogo-mailcow\", må startes på nytt etter at man har lagt til et nytt domene!

I tillegg må domenets DNS-oppsett ses gjennom. Når DNS-oppsettet er godkjent, start \"acme-mailcow\" på nytt for å automatisk opprette sertifikater for det nye domenet (autoconfig.<domain>, autodiscover.<domain>).
Dette steget er valgfritt og vil bli forsøkt utført hver 24. time.", + "select": "Vennligst velg...", + "full_name": "Fullt navn", + "alias_address": "Aliasadresse/r", + "activate_filter_warn": "Alle andre filtre vil deaktiveres når aktive er valgt.", + "quota_mb": "Kvote (MiB)", + "gal_info": "Den globale adresselisten inneholder alle objekter i et domene og kan ikke redigeres av noen bruker. Ledig/opptatt-informasjon i SOGo vil mangle, hvis deaktivert! Start SOGo på nytt for å aktivere endringene.", + "alias_address_info": "Komplett/e epostadresse/r eller @example.com, for å fange opp alle meldinger til et domene (kommaseparert).Kun mailcow-domener.", + "bcc_dest_format": "BCC-mål må være én enkelt og gyldig epostadresse.
Hvis du trenger å sende en kopi til flere adresser, opprett et alias og bruk det her.", + "add": "Legg til", + "add_domain_only": "Legg til kun domene", + "kind": "Type", + "relay_domain": "Vidersend for dette domenet", + "add_domain_restart": "Legg til domene og start SOGo på nytt", + "enc_method": "Krypteringsmetode", + "app_name": "App-navn", + "relay_transport_info": "
Info
Du kan definere transport-kart for en egendefinert destinasjon for dette domenet. Hvis denne ikke er satt, vil det bli foretatt et MX-oppslag.", + "max_aliases": "Maks. antall mulige alias", + "comment_info": "En privat kommentar er ikke synlig for brukeren, mens en offentlig kommentar vises som et verktøytips når man holder muspekeren over i en brukers oversikt.", + "inactive": "Inaktiv", + "domain_quota_m": "Total domenekvote (MiB)", + "password": "Passord", + "delete1": "Slett fra kilde når fullført", + "tags": "Emneknagger", + "port": "Port", + "backup_mx_options": "Alternativer for videresending", + "gal": "Global Adresseliste", + "private_comment": "Privat kommentar", + "goto_spam": "Lær som spam", + "target_domain": "Måldomene", + "public_comment": "Offentlig kommentar", + "timeout2": "Tidsavbrudd for tilkobling til lokal vert", + "mailbox_quota_def": "Standard kvote for postkasser", + "skipcrossduplicates": "Hopp over duplikatmeldinger på tvers av mapper (førstemann til mølla)", + "sieve_desc": "Kort beskrivelse", + "mailbox_quota_m": "Maks. kvote pr. postkasse (MiB)", + "automap": "Forsøk automatisk mappe-tilordning (\"Sendte elementer\", \"Sendt\" => \"Sendt\" etc.)", + "validation_success": "Validering fullført", + "relay_all": "Videresend for alle mottakere", + "subscribeall": "Abonnér på alle mapper", + "domain_matches_hostname": "Domene %s er det samme som vertsnavn", + "generate": "opprett", + "app_password": "Legg til app-passord", + "max_mailboxes": "Maks. antall mulige postkasser", + "syncjob_hint": "Vær oppmerksom på at passord må lagres i klartekst!", + "relayhost_wrapped_tls_info": "Vennligst ikke bruk TLS-aktiverte porter (stort sett bare brukt på port 465).
\nBruk en annen ikke-TLS-aktivert port og send STARTTLS. En TLS-policy for å tvinge TLS kan opprettes i \"TLS-policy-mappinger\".", + "relay_unknown_only": "Videresend kun for ikke-eksisterende postkasser. Eksisterende postkasser vil bli levert lokalt.", + "sieve_type": "Filtertype", + "password_repeat": "Passordbekreftelse (gjenta)", + "nexthop": "Neste hopp", + "select_domain": "Vennligst velg et domene først", + "active": "Aktiv", + "target_address_info": "Komplett/e epostadresse/r (kommaseparert)." + } +} diff --git a/data/web/lang/lang.nl-nl.json b/data/web/lang/lang.nl-nl.json index efffa1d7e0..46325effc0 100644 --- a/data/web/lang/lang.nl-nl.json +++ b/data/web/lang/lang.nl-nl.json @@ -510,7 +510,7 @@ "cname_from_a": "Waarde afgeleid van een A- of AAAA-vermelding.", "dns_records": "DNS-configuratie", "dns_records_24hours": "Houd er rekening mee dat wijzigingen aan DNS tot wel 24 uur in beslag kunnen nemen voordat ze op deze pagina worden weergegeven. Deze informatie is bedoeld om gemakkelijk te bekijken of de DNS-configuratie aan de eisen voldoet.", - "dns_records_docs": "Raadpleeg ook de documentatie.", + "dns_records_docs": "Raadpleeg ook de documentatie.", "dns_records_data": "Correcte gegevens", "dns_records_name": "Naam", "dns_records_status": "Huidige staat", diff --git a/data/web/lang/lang.pt-br.json b/data/web/lang/lang.pt-br.json index 9acaf87c77..5854cc1f28 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 alternativos", + "alias_domains": "Adicionar domínios alias", "app_passwds": "Gerenciar senhas de aplicativos", "bcc_maps": "Mapas BCC", "delimiter_action": "Ação delimitadora", @@ -28,7 +28,7 @@ "spam_score": "Pontuação de spam", "syncjobs": "Trabalhos de sincronização", "tls_policy": "Política de TLS", - "unlimited_quota": "Cota ilimitada para mailbox" + "unlimited_quota": "Cota ilimitada para mailboxes" }, "add": { "activate_filter_warn": "Todos os outros filtros serão desativados quando a opção ativa estiver marcada.", @@ -480,7 +480,9 @@ "username_invalid": "O nome de usuário %s não pode ser usado", "validity_missing": "Por favor, atribua um período de validade", "value_missing": "Forneça todos os valores", - "yotp_verification_failed": "Falha na verificação do Yubico OTP: %s" + "yotp_verification_failed": "Falha na verificação do Yubico OTP: %s", + "img_dimensions_exceeded": "A imagem excede o tamanho máximo", + "img_size_exceeded": "A imagem excede o tamanho máximo" }, "datatables": { "collapse_all": "Recolher tudo", @@ -554,7 +556,7 @@ "dns_records": "Registros DNS", "dns_records_24hours": "Observe que as alterações feitas no DNS podem levar até 24 horas para que seu estado atual seja refletido corretamente nesta página. O objetivo é uma forma de você ver facilmente como configurar seus registros DNS e verificar se todos os seus registros estão armazenados corretamente no DNS.", "dns_records_data": "Dados corretos", - "dns_records_docs": "Consulte também a documentação.", + "dns_records_docs": "Consulte também a documentação.", "dns_records_name": "Nome", "dns_records_status": "Estado atual", "dns_records_type": "Tipo", @@ -609,6 +611,7 @@ "extended_sender_acl_info": "Uma chave de domínio DKIM deve ser importada, se disponível.
\r\n Lembre-se de adicionar esse servidor ao registro TXT SPF correspondente.
\r\n Sempre que um domínio ou domínio de alias é adicionado a esse servidor, que se sobrepõe a um endereço externo, o endereço externo é removido.
\r\n Use @domain .tld para permitir o envio como * @domain .tld.", "force_pw_update": "Forçar a atualização da senha no próximo login", "force_pw_update_info": "Esse usuário só poderá fazer login em %s. As senhas do aplicativo permanecem utilizáveis.", + "footer_exclude": "Excluir do rodapé", "full_name": "Nome completo", "gal": "Lista de endereços global", "gal_info": "A GAL contém todos os objetos de um domínio e não pode ser editada por nenhum usuário. Faltam informações de disponibilidade no SoGo, se desativadas! Reinicie o SoGo para aplicar as alterações.", @@ -624,10 +627,10 @@ "mailbox_relayhost_info": "Aplicado somente à caixa de correio e aos aliases diretos, substitui um host de retransmissão de domínio.", "max_aliases": "Máximo de aliases", "max_mailboxes": "Número máximo de mailboxes possíveis", - "max_quota": "Cota máxima por caixa de correio (MiB)", + "max_quota": "Cota máxima por mailbox (MiB)", "maxage": "Duração máxima das mensagens em dias que serão pesquisadas remotamente
(0 = ignorar a idade)", "maxbytespersecond": "Máximo de bytes por segundo
(0 = ilimitado)", - "mbox_rl_info": "Esse limite de taxa é aplicado ao nome de login do SASL e corresponde a qualquer endereço “de” usado pelo usuário conectado. Um limite de taxa de caixa de correio substitui um limite de taxa em todo o domínio.", + "mbox_rl_info": "Esse limite de taxa é aplicado ao nome de login do SASL e corresponde a qualquer endereço “de” usado pelo usuário conectado. Um limite de taxa de mailbox substitui um limite de taxa em todo o domínio.", "mins_interval": "Intervalo (min)", "multiple_bookings": "Várias reservas", "none_inherit": "Nenhum/Herdar", @@ -654,7 +657,7 @@ "ratelimit": "Limite de taxa", "redirect_uri": "URL de redirecionamento/retorno de chamada", "relay_all": "Retransmita todos os destinatários", - "relay_all_info": "↪ Se você optar por não retransmitir todos os destinatários, precisará adicionar uma caixa de correio (“cega”) para cada destinatário que deve ser retransmitido.", + "relay_all_info": "↪ Se você optar por não retransmitir todos os destinatários, precisará adicionar uma mailbox (“cega”) para cada destinatário que deve ser retransmitido.", "relay_domain": "Retransmitir este domínio", "relay_transport_info": "
Informações
Você pode definir mapas de transporte para um destino personalizado para esse domínio. Se não for definido, uma pesquisa MX será feita.", "relay_unknown_only": "Retransmita somente mailboxes não existentes. As caixas de mailboxes serão entregues localmente.", @@ -665,14 +668,14 @@ "scope": "Escopo", "sender_acl": "Permitir enviar como", "sender_acl_disabled": "A verificação do remetente está desativada", - "sender_acl_info": "Se o usuário A da caixa de correio tiver permissão para enviar como usuário B da caixa de correio, o endereço do remetente não será exibido automaticamente como campo “de” selecionável no SoGo.
\r\n O usuário B da caixa de correio precisa criar uma delegação no SoGo para permitir que o usuário A da caixa de correio selecione seu endereço como remetente. Para delegar uma caixa de correio no SoGo, use o menu (três pontos) à direita do nome da sua caixa de correio no canto superior esquerdo enquanto estiver na visualização de e-mail. Esse comportamento não se aplica a endereços de alias.", + "sender_acl_info": "Se o usuário A da mailbox tiver permissão para enviar como usuário B da mailbox, o endereço do remetente não será exibido automaticamente como campo “de” selecionável no SoGo.
\n O usuário B da mailbox precisa criar uma delegação no SoGo para permitir que o usuário A da mailbox selecione seu endereço como remetente. Para delegar uma mailbox no SoGo, use o menu (três pontos) à direita do nome da sua caixa de correio no canto superior esquerdo enquanto estiver na visualização de e-mail. Esse comportamento não se aplica a endereços de alias.", "sieve_desc": "Breve descrição", "sieve_type": "Tipo de filtro", "skipcrossduplicates": "Ignore mensagens duplicadas entre pastas (primeiro a chegar, primeiro a ser servido)", "sogo_access": "Conceder acesso de login direto ao SoGo", "sogo_access_info": "O login único de dentro da interface do usuário de e-mail continua funcionando. Essa configuração não afeta o acesso a todos os outros serviços nem exclui ou altera o perfil SoGo existente de um usuário.", "sogo_visible": "O alias é visível no SoGo", - "sogo_visible_info": "Essa opção afeta somente objetos, que podem ser exibidos no SoGo (endereços de alias compartilhados ou não compartilhados apontando para pelo menos uma caixa de correio local). Se estiver oculto, um alias não aparecerá como remetente selecionável no SoGo.", + "sogo_visible_info": "Essa opção afeta somente objetos, que podem ser exibidos no SoGo (endereços de alias compartilhados ou não compartilhados apontando para pelo menos uma mailbox local). Se estiver oculto, um alias não aparecerá como remetente selecionável no SoGo.", "spam_alias": "Crie ou altere endereços de alias com limite de tempo", "spam_filter": "Filtro de spam", "spam_policy": "Adicionar ou remover itens da lista branca/negra", @@ -688,7 +691,7 @@ "username": "Nome de usuário", "validate_save": "Valide e salve", "custom_attributes": "Atributos personalizados", - "mbox_exclude": "Excluir mailboxes" + "domain_footer_skip_replies": "Ignore o rodapé nos e-mails de resposta" }, "fido2": { "confirm": "Confirme", @@ -724,7 +727,7 @@ "administration": "Configuração e detalhes", "apps": "Aplicativos", "debug": "Informações", - "email": "Correio eletrônico", + "email": "E-mail", "mailcow_system": "Sistema", "mailcow_config": "Configuração", "quarantine": "Quarentena", @@ -741,7 +744,7 @@ "delayed": "O login foi atrasado em %s segundos.", "fido2_webauthn": "Login do FIDO2/WebAuthn", "login": "Login", - "mobileconfig_info": "Faça login como usuário da caixa de correio para baixar o perfil de conexão Apple solicitado.", + "mobileconfig_info": "Faça login como usuário da mailbox para baixar o perfil de conexão Apple solicitado.", "other_logins": "Login com chave", "password": "Senha", "username": "Nome de usuário" @@ -758,16 +761,16 @@ "add_domain_alias": "Adicionar alias de domínio", "add_domain_record_first": "Por favor, adicione um domínio primeiro", "add_filter": "Adicionar filtro", - "add_mailbox": "Adicionar caixa de correio", + "add_mailbox": "Adicionar mailbox", "add_recipient_map_entry": "Adicionar mapa do destinatário", "add_resource": "Adicionar recurso", "add_template": "Adicionar modelo", "add_tls_policy_map": "Adicionar mapa de política TLS", "address_rewriting": "Reescrita de endereço", - "alias": "Pseudônimo", - "alias_domain_alias_hint": "Os aliases não são aplicados automaticamente aos aliases de domínio. Um endereço de alias my-alias @domain não cobre o endereço my-alias @alias -domain (onde “alias-domain” é um domínio de alias imaginário para “domain”).
Use um filtro de peneira para redirecionar e-mails para uma caixa de correio externa (consulte a guia “Filtros” ou use SoGo -> Forwarder). Use “Expandir alias em domínios de alias” para adicionar automaticamente os aliases ausentes.", + "alias": "Alias", + "alias_domain_alias_hint": "Os aliases não são aplicados automaticamente aos aliases de domínio. Um endereço de alias my-alias@domain não cobre o endereço my-alias@alias -domain (onde “alias-domain” é um domínio de alias imaginário para “domain”).
Use um filtro para redirecionar e-mails para uma mailbox externa (consulte a guia “Filtros” ou use SoGo -> Forwarder). Use “Expandir alias em domínios de alias” para adicionar automaticamente os aliases ausentes.", "alias_domain_backupmx": "Domínio de alias inativo para domínio de retransmissão", - "aliases": "Pseudônimos", + "aliases": "Aliases", "all_domains": "Todos os domínios", "allow_from_smtp": "Permita que esses IPs usem apenas SMTP", "allow_from_smtp_info": "Deixe em branco para permitir todos os remetentes. Endereços e
redes IPv4/IPv6.", @@ -829,16 +832,16 @@ "last_pw_change": "Última alteração de senha", "last_run": "Última corrida", "last_run_reset": "Programe a seguir", - "mailbox": "Caixa de correio", + "mailbox": "Mailbox", "mailbox_defaults": "Configurações padrão", "mailbox_defaults_info": "Defina as configurações padrão para novas mailboxes.", - "mailbox_defquota": "Tamanho padrão da caixa de correio", - "mailbox_templates": "Modelos de caixa de correio", - "mailbox_quota": "Tamanho máximo de uma caixa de correio", - "mailboxes": "mailboxes", + "mailbox_defquota": "Tamanho padrão da mailbox", + "mailbox_templates": "Modelos de mailbox", + "mailbox_quota": "Tamanho máximo de uma mailbox", + "mailboxes": "Mailboxes", "max_aliases": "Máximo de aliases", "max_mailboxes": "Número máximo de mailboxes possíveis", - "max_quota": "Cota máxima por caixa de correio", + "max_quota": "Cota máxima por mailbox", "mins_interval": "Intervalo (min)", "msg_num": "Mensagem #", "multiple_bookings": "Várias reservas", @@ -895,7 +898,7 @@ "syncjob_EXIT_CONNECTION_FAILURE": "Problema de conexão", "syncjob_EXIT_TLS_FAILURE": "Problema com conexão criptografada", "syncjob_EXIT_AUTHENTICATION_FAILURE": "Problema de autenticação", - "syncjob_EXIT_OVERQUOTA": "A caixa de correio de destino está acima da cota", + "syncjob_EXIT_OVERQUOTA": "A mailbox de destino está acima da cota", "syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Não é possível se conectar ao servidor remoto", "syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "Nome de usuário ou senha incorretos", "table_size": "Tamanho da mesa", @@ -922,7 +925,7 @@ "yes": "✓" }, "oauth2": { - "access_denied": "Faça login como proprietário da caixa de correio para conceder acesso via OAuth2.", + "access_denied": "Faça login como proprietário da mailbox para conceder acesso via OAuth2.", "authorize_app": "Autorizar aplicativo", "deny": "Negar", "permit": "Autorizar aplicativo", @@ -938,7 +941,7 @@ "confirm_delete": "Confirme a exclusão desse elemento.", "danger": "Perigo", "deliver_inbox": "Entregar na caixa de entrada", - "disabled_by_config": "A configuração atual do sistema desativa a funcionalidade de quarentena. Defina “retenções por caixa de correio” e um “tamanho máximo” para os elementos de quarentena.", + "disabled_by_config": "A configuração atual do sistema desativa a funcionalidade de quarentena. Defina “retenções por mailbox” e um “tamanho máximo” para os elementos de quarentena.", "download_eml": "Baixar (.eml)", "empty": "Sem resultados", "high_danger": "Alto", @@ -951,7 +954,7 @@ "notified": "Notificado", "qhandler_success": "Solicitação enviada com sucesso para o sistema. Agora você pode fechar a janela.", "qid": "Respand AID", - "qinfo": "O sistema de quarentena salvará as mensagens rejeitadas no banco de dados (o remetente não terá a impressão de uma mensagem entregue), bem como as mensagens, que são entregues como cópia na pasta Lixo eletrônico de uma caixa de correio.\r\n
“Aprenda como spam e exclua” aprenderá uma mensagem como spam por meio do teorema bayesiano e também calculará hashes difusos para negar mensagens semelhantes no futuro.\r\n
Esteja ciente de que aprender várias mensagens pode ser demorado, dependendo do seu sistema.
Os elementos da lista negra são excluídos da quarentena.", + "qinfo": "O sistema de quarentena salvará as mensagens rejeitadas no banco de dados (o remetente não terá a impressão de uma mensagem entregue), bem como as mensagens, que são entregues como cópia na pasta Lixo eletrônico de uma mailbox.\n
“Aprenda como spam e exclua” aprenderá uma mensagem como spam por meio do Teorema de Bayes e também calculará hashes difusos para negar mensagens semelhantes no futuro.\n
Esteja ciente de que aprender várias mensagens pode ser demorado, dependendo do seu sistema.
Os elementos da lista negra são excluídos da quarentena.", "qitem": "Item de quarentena", "quarantine": "Quarentena", "quick_actions": "Ações", @@ -1010,7 +1013,7 @@ "help": "Mostrar/ocultar painel de ajuda", "imap_smtp_server_auth_info": "Use seu endereço de e-mail completo e o mecanismo de autenticação PLAIN.
\r\nSeus dados de login serão criptografados pela criptografia obrigatória do lado do servidor.", "mailcow_apps_detail": "Use um aplicativo mailcow para acessar seus e-mails, calendário, contatos e muito mais.", - "mailcow_panel_detail": "Os administradores de domínio criam, modificam ou excluem mailboxes e aliases, alteram domínios e leem mais informações sobre seus domínios atribuídos.
\nOs usuários de caixas de correio podem criar aliases com limite de tempo (aliases de spam), alterar suas configurações de senha e filtro de spam." + "mailcow_panel_detail": "Os administradores de domínio criam, modificam ou excluem mailboxes e aliases, alteram domínios e leem mais informações sobre seus domínios atribuídos.
\nOs usuários de mailbox podem criar aliases com limite de tempo (aliases de spam), alterar suas configurações de senha e filtro de spam." }, "success": { "acl_saved": "ACL para o objeto %s salvo", @@ -1062,9 +1065,9 @@ "learned_ham": "Identificação %s como ham aprendida com sucesso", "license_modified": "As alterações na licença foram salvas", "logged_in_as": "Conectado como %s", - "mailbox_added": "A caixa de correio %s foi adicionada", - "mailbox_modified": "As alterações na caixa de correio %s foram salvas", - "mailbox_removed": "A caixa de correio %s foi removida", + "mailbox_added": "A mailbox %s foi adicionada", + "mailbox_modified": "As alterações na mailbox %s foram salvas", + "mailbox_removed": "A mailbox %s foi removida", "nginx_reloaded": "O Nginx foi recarregado", "object_modified": "As alterações no objeto %s foram salvas", "password_policy_saved": "A política de senha foi salva com sucesso", @@ -1077,7 +1080,7 @@ "relayhost_removed": "A entrada de mapa %s foi removida", "reset_main_logo": "Redefinir para o logotipo padrão", "resource_added": "O recurso %s foi adicionado", - "resource_modified": "As alterações na caixa de correio %s foram salvas", + "resource_modified": "As alterações na mailbox %s foram salvas", "resource_removed": "O recurso %s foi removido", "rl_saved": "Limite de taxa para o objeto %s salvo", "rspamd_ui_pw_set": "Senha do Rspamd UI definida com sucesso", @@ -1123,14 +1126,15 @@ "webauthn": "Autenticação WebAuthn", "waiting_usb_auth": "Aguardando o dispositivo USB...

Toque no botão no seu dispositivo USB agora.", "waiting_usb_register": "Aguardando o dispositivo USB...

Digite sua senha acima e confirme seu registro tocando no botão no seu dispositivo USB.", - "yubi_otp": "Autenticação Yubico OTP" + "yubi_otp": "Autenticação Yubico OTP", + "authenticators": "Autenticadores" }, "user": { "action": "Ação", "active": "Ativo", "active_sieve": "Filtro ativo", "advanced_settings": "Configurações avançadas", - "alias": "Pseudônimo", + "alias": "Alias", "alias_create_random": "Gere um alias aleatório", "alias_extend_all": "Estenda os aliases em 1 hora", "alias_full_date": "D.M.Y., H: S T", @@ -1147,7 +1151,7 @@ "apple_connection_profile": "Perfil de conexão da Apple", "apple_connection_profile_complete": "Esse perfil de conexão inclui parâmetros IMAP e SMTP, bem como caminhos CalDAV (calendários) e CardDAV (contatos) para um dispositivo Apple.", "apple_connection_profile_mailonly": "Esse perfil de conexão inclui parâmetros de configuração IMAP e SMTP para um dispositivo Apple.", - "apple_connection_profile_with_app_password": "Uma nova senha de aplicativo é gerada e adicionada ao perfil para que nenhuma senha precise ser inserida ao configurar seu dispositivo. Não compartilhe o arquivo, pois ele concede acesso total à sua caixa de correio.", + "apple_connection_profile_with_app_password": "Uma nova senha de aplicativo é gerada e adicionada ao perfil para que nenhuma senha precise ser inserida ao configurar seu dispositivo. Não compartilhe o arquivo, pois ele concede acesso total à sua mailbox.", "change_password": "Alterar senha", "change_password_hint_app_passwords": "Sua conta tem %d senhas de aplicativos que não serão alteradas. Para gerenciá-las, acesse a guia Senhas do aplicativo.", "clear_recent_successful_connections": "Conexões bem-sucedidas e claras", @@ -1160,7 +1164,7 @@ "delete_ays": "Confirme o processo de exclusão.", "direct_aliases": "Endereços de alias diretos", "direct_aliases_desc": "Os endereços de alias diretos são afetados pelo filtro de spam e pelas configurações da política TLS.", - "direct_protocol_access": "Esse usuário da caixa de correio tem acesso externo direto aos seguintes protocolos e aplicativos. Essa configuração é controlada pelo administrador. As senhas de aplicativos podem ser criadas para conceder acesso a protocolos e aplicativos individuais.
O botão “Login no webmail” fornece login único no SoGo e está sempre disponível.", + "direct_protocol_access": "Esse usuário da mailbox tem acesso externo direto aos seguintes protocolos e aplicativos. Essa configuração é controlada pelo administrador. As senhas de aplicativos podem ser criadas para conceder acesso a protocolos e aplicativos individuais.
O botão “Login no webmail” fornece login único no SoGo e está sempre disponível.", "eas_reset": "Redefinir o cache do dispositivo ActiveSync", "eas_reset_help": "Em muitos casos, uma redefinição do cache do dispositivo ajudará a recuperar um perfil quebrado do ActiveSync.
Atenção: Todos os elementos serão baixados novamente!", "eas_reset_now": "Reinicie agora", @@ -1187,7 +1191,7 @@ "last_ui_login": "Último login na interface do usuário", "loading": "Carregando...", "login_history": "Histórico de login", - "mailbox": "Caixa de correio", + "mailbox": "Mailbox", "mailbox_details": "Detalhes", "mailbox_general": "Geral", "mailbox_settings": "Configurações", @@ -1239,7 +1243,7 @@ "spamfilter": "Filtro de spam", "spamfilter_behavior": "Avaliação", "spamfilter_bl": "Lista negra", - "spamfilter_bl_desc": "Endereços de e-mail na lista negra para sempre serem classificados como spam e rejeitados. E-mails rejeitados não serão copiados para a quarentena. Podem ser usados curingas. Um filtro só é aplicado a aliases diretos (aliases com uma única caixa de correio de destino), excluindo aliases abrangentes e a própria caixa de correio.", + "spamfilter_bl_desc": "Endereços de e-mail na lista negra para sempre serem classificados como spam e rejeitados. E-mails rejeitados não serão copiados para a quarentena. Podem ser usados curingas. Um filtro só é aplicado a aliases diretos (aliases com uma única caixa de correio de destino), excluindo aliases abrangentes e a própria mailbox.", "spamfilter_default_score": "Valores padrão", "spamfilter_green": "Verde: esta mensagem não é spam", "spamfilter_hint": "O primeiro valor descreve a “pontuação baixa de spam”, o segundo representa a “alta pontuação de spam”.", @@ -1251,7 +1255,7 @@ "spamfilter_table_remove": "remover", "spamfilter_table_rule": "Regra", "spamfilter_wl": "Lista branca", - "spamfilter_wl_desc": "Os endereços de e-mail incluídos na lista branca são programados para nunca serem classificados como spam. Podem ser usados curingas. Um filtro só é aplicado a aliases diretos (aliases com uma única caixa de correio de destino), excluindo aliases abrangentes e a própria caixa de correio.", + "spamfilter_wl_desc": "Os endereços de e-mail incluídos na lista branca são programados para nunca serem classificados como spam. Podem ser usados curingas. Um filtro só é aplicado a aliases diretos (aliases com uma única mailbox de destino), excluindo aliases abrangentes e a própria mailbox.", "spamfilter_yellow": "Amarelo: esta mensagem pode ser spam, será marcada como spam e movida para sua pasta de lixo eletrônico", "status": "Status", "sync_jobs": "Trabalhos de sincronização", @@ -1261,7 +1265,7 @@ "syncjob_EXIT_CONNECTION_FAILURE": "Problema de conexão", "syncjob_EXIT_TLS_FAILURE": "Problema com conexão criptografada", "syncjob_EXIT_AUTHENTICATION_FAILURE": "Problema de autenticação", - "syncjob_EXIT_OVERQUOTA": "A caixa de correio de destino está acima da cota", + "syncjob_EXIT_OVERQUOTA": "A mailbox de destino está acima da cota", "syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Não é possível se conectar ao servidor remoto", "syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "Nome de usuário ou senha incorretos", "tag_handling": "Definir o tratamento para e-mails marcados", @@ -1275,7 +1279,7 @@ "tls_enforce_in": "Imponha a entrada de TLS", "tls_enforce_out": "Imponha a saída TLS", "tls_policy": "Política de criptografia", - "tls_policy_warning": "Aviso: Se você decidir impor a transferência de e-mail criptografada, poderá perder e-mails.
As mensagens que não satisfizerem a política serão devolvidas com uma falha grave pelo sistema de correio.
Essa opção se aplica ao seu endereço de e-mail principal (nome de login), a todos os endereços derivados de domínios de alias, bem como aos endereços de alias com apenas essa única caixa de correio como destino.", + "tls_policy_warning": "Aviso: Se você decidir impor a transferência de e-mail criptografada, poderá perder e-mails.
As mensagens que não satisfizerem a política serão devolvidas com uma falha grave pelo sistema de correio.
Essa opção se aplica ao seu endereço de e-mail principal (nome de login), a todos os endereços derivados de domínios de alias, bem como aos endereços de alias com apenas essa única mailbox como destino.", "user_settings": "Configurações do usuário", "username": "Nome de usuário", "verify": "Verificar", diff --git a/data/web/lang/lang.ro-ro.json b/data/web/lang/lang.ro-ro.json index 5c7b29b0ea..90c96c218d 100644 --- a/data/web/lang/lang.ro-ro.json +++ b/data/web/lang/lang.ro-ro.json @@ -504,7 +504,7 @@ "cname_from_a": "Valoare derivată din înregistrarea A/AAAA. Acest lucru este acceptat atâta timp cât înregistrarea indică resursele corecte.", "dns_records": "Înregistrări DNS", "dns_records_24hours": "Rețineți că modificările aduse DNS-ului pot dura până la 24 de ore pentru a reflecta corect starea lor curentă pe această pagină. Acest mecanism este conceput ca o modalitate să vezi ușor cum să îți configurezi înregistrările DNS și să verifici dacă toate înregistrările sunt stocate corect în DNS.", - "dns_records_docs": "Vă rugăm să consultați și documentația.", + "dns_records_docs": "Vă rugăm să consultați și documentația.", "dns_records_data": "Date corecte", "dns_records_name": "Nume", "dns_records_status": "Stare curentă", diff --git a/data/web/lang/lang.ru-ru.json b/data/web/lang/lang.ru-ru.json index 2a959ab3c9..5891b6abec 100644 --- a/data/web/lang/lang.ru-ru.json +++ b/data/web/lang/lang.ru-ru.json @@ -504,7 +504,7 @@ "dns_records": "Записи DNS", "dns_records_24hours": "Обратите внимание, что для внесения изменений в DNS может потребоваться до 24 часов, чтобы правильно отобразить их текущее состояние на этой странице. Эта страница предназначен для того, чтобы вы могли легко увидеть, как настроить записи DNS и проверить, все ли записи правильно занесены в DNS.", "dns_records_data": "Значение", - "dns_records_docs": "Пожалуйста, ознакомьтесь с документацией.", + "dns_records_docs": "Пожалуйста, ознакомьтесь с документацией.", "dns_records_name": "Название", "dns_records_status": "Статус", "dns_records_type": "Тип", @@ -546,6 +546,7 @@ "extended_sender_acl_info": "Для внешних доменов должен быть импортирован или сгенерирован доменный ключ DKIM с соответствующей записью TXT в домене, если внешний домен использует DMARC.
\r\n Не забудьте добавить этот сервер к соответствующей записи SPF TXT внешнего домена.
\r\n Добавление домена из списка внешних адресов в mailcow автоматически удалит соответствующие записи из внешних адресов пользователей.
\r\n Чтобы разрешить пользователю отправку от имени *@domain.tld, укажите @domain.tld.", "force_pw_update": "Требовать смены пароля при следующем входе в систему", "force_pw_update_info": "Пользователь должен будет войти в %s и сменить свой пароль. mailcow OAuth2, SOGo, EAS, IMAP/POP3 и SMTP будут не доступны до смены пароля.", + "footer_exclude": "Исключить из нижнего колонтитула", "full_name": "Полное имя", "gal": "GAL - Глобальная адресная книга", "gal_info": "GAL содержит все объекты домена и не подлежит редактированию. Информация о занятости в SOGo будет отсутствовать для домена, если данная функция будет отключена! Требуется перезапустить SOGo, чтобы применить изменения.", @@ -635,7 +636,6 @@ "domain_footer": "Нижний колонтитул домена", "domain_footer_html": "HTML нижний колонтитул", "domain_footer_plain": "ПРОСТОЙ нижний колонтитул", - "mbox_exclude": "Исключить почтовые ящики", "custom_attributes": "Пользовательские атрибуты" }, "fido2": { diff --git a/data/web/lang/lang.si-si.json b/data/web/lang/lang.si-si.json index cf1cf799c2..3a424631db 100644 --- a/data/web/lang/lang.si-si.json +++ b/data/web/lang/lang.si-si.json @@ -543,7 +543,7 @@ "dns_records": "DNS zapisi", "dns_records_24hours": "Prosim upoštevajte, da lahko traja do 24 ur da se spremembe v DNS pravilno prikažejo na tej strani. Namen je da lahko enostavno vidite, kako konfigurirati svoje DNS zapise in preverite ali so vaši zapisi pravilno shranjeni v DNS.", "dns_records_data": "Pravilni podatki", - "dns_records_docs": "Prosim preverite tudi dokumentacijo.", + "dns_records_docs": "Prosim preverite tudi dokumentacijo.", "dns_records_name": "Ime", "dns_records_status": "Trenutno stanje", "dns_records_type": "Vrsta", diff --git a/data/web/lang/lang.sk-sk.json b/data/web/lang/lang.sk-sk.json index d656a2cd16..466afdb854 100644 --- a/data/web/lang/lang.sk-sk.json +++ b/data/web/lang/lang.sk-sk.json @@ -523,7 +523,7 @@ "dns_records": "DNS záznamy", "dns_records_24hours": "Berte prosím do úvahy, že zmeny v DNS môžu trvať až 24 hodín, aby sa zmeny prejavili na tejto stránke. Pre jednoduchosť DNS konfigurácie môžete použiť údaje uvedené nižšie, prípadne skontrolovať tak správnosť záznamov v DNS.", "dns_records_data": "Správne dáta", - "dns_records_docs": "Pozrite si prosím dokumentáciu.", + "dns_records_docs": "Pozrite si prosím dokumentáciu.", "dns_records_name": "Meno", "dns_records_status": "Súčasný stav", "dns_records_type": "Typ", diff --git a/data/web/lang/lang.sv-se.json b/data/web/lang/lang.sv-se.json index ba97e705d1..a987081920 100644 --- a/data/web/lang/lang.sv-se.json +++ b/data/web/lang/lang.sv-se.json @@ -473,7 +473,7 @@ "cname_from_a": "Värde härstammar från A/AAAA-uppslaget. Detta stöds så länge som uppslaget pekar mot rätt resurs.", "dns_records": "DNS-uppslag", "dns_records_24hours": "Observera att ändringar gjorda i DNS kan ta upp till 24 timmar innan det visas korrekt på denna sida. Syftet med sidan är att enkelt se hur DNS-uppslagen är konfigurerade. Det är lätt att kontrollera att DNS-uppslagen är korrekt uppsatta.", - "dns_records_docs": "Se även dokumentationen.", + "dns_records_docs": "Se även dokumentationen.", "dns_records_data": "Korrektdata", "dns_records_name": "Namn", "dns_records_status": "Nuvarande status", diff --git a/data/web/lang/lang.uk-ua.json b/data/web/lang/lang.uk-ua.json index e778f1569e..7312246425 100644 --- a/data/web/lang/lang.uk-ua.json +++ b/data/web/lang/lang.uk-ua.json @@ -525,7 +525,7 @@ "cname_from_a": "Значення, отримане із запису A/AAAA. Це підтримується, поки запис вказує на правильний ресурс.", "dns_records": "Записи DNS", "dns_records_data": "Значення", - "dns_records_docs": "Також перегляньте документацію.", + "dns_records_docs": "Також перегляньте документацію.", "dns_records_name": "Назва", "dns_records_status": "Статус", "optional": "Цей запис необов'язковий.", @@ -561,6 +561,7 @@ "extended_sender_acl": "Зовнішні адреси пошти", "force_pw_update": "Вимагати зміну пароля при наступному вході до системи", "force_pw_update_info": "Цей користувач зможе увійти лише в %s. Паролі додатків залишаються придатними для використання.", + "footer_exclude": "Виключити з нижнього колонтитула", "full_name": "Повне ім'я", "gal": "GAL - Глобальна адресна книга", "generate": "згенерувати", @@ -659,8 +660,7 @@ }, "domain_footer_html": "Нижній колонтитул HTML", "domain_footer_plain": "ЗВИЧАЙНИЙ нижній колонтитул", - "custom_attributes": "Користувацькі атрибути", - "mbox_exclude": "Виключити поштові скриньки" + "custom_attributes": "Користувацькі атрибути" }, "fido2": { "confirm": "Підтвердити", diff --git a/data/web/lang/lang.zh-cn.json b/data/web/lang/lang.zh-cn.json index b1aacf5c86..cca5ecc58d 100644 --- a/data/web/lang/lang.zh-cn.json +++ b/data/web/lang/lang.zh-cn.json @@ -494,7 +494,7 @@ "dns_records": "DNS 记录", "dns_records_24hours": "请注意 DNS 记录的更改可能需要24小时才可以使此页面的当前状态显示正确。此页面为你提供了一个可以便捷查询如何配置 DNS 记录以及检查你的 DNS 记录是否正确的方式。", "dns_records_data": "正确数据", - "dns_records_docs": "请同时也参考这个文档.", + "dns_records_docs": "请同时也参考这个文档.", "dns_records_name": "名称", "dns_records_status": "当前状态", "dns_records_type": "类型", diff --git a/data/web/lang/lang.zh-tw.json b/data/web/lang/lang.zh-tw.json index 4d84b21162..c3c2cf7146 100644 --- a/data/web/lang/lang.zh-tw.json +++ b/data/web/lang/lang.zh-tw.json @@ -88,7 +88,7 @@ "relay_all": "中繼所有收件人", "relay_all_info": "↪ 如果選擇中繼所有收件人,你會需要幫每個應該中繼的收件人新增一個 (\"盲\") 信箱。", "relay_domain": "中繼此域名", - "relay_transport_info": "
資訊
你可以為此域名定義傳輸規則以自訂目的地,如果留空則會遵照 MX 紀錄。", + "relay_transport_info": "
資訊
你可以為此域名定義傳輸規則以自訂目的地,如果留空則會遵照 MX 紀錄。", "relay_unknown_only": "只為不存在的信箱地址中繼。已存在的信箱地址則在本區域遞送。", "relayhost_wrapped_tls_info": "請 不要 使用\"已包裝 TLS\"的通訊埠 (大多為通訊埠 465).
\r\n使用其他\"未包裝\"的通訊埠發起 STARTTLS. 你可以在\"TLS 規則表\"中新增強制使用 TLS 的規則。", "select": "請選擇...", @@ -519,14 +519,15 @@ "show_ip": "顯示公網IP", "update_available": "有可用更新", "no_update_available": "系統已經是最新版本", - "update_failed": "無法檢查更新" + "update_failed": "無法檢查更新", + "wip": "工作正在進行中" }, "diagnostics": { "cname_from_a": "由 A/AAAA 紀錄獲取。只要紀錄指向正確的資源,此功能就會持續運作。", "dns_records": "DNS 紀錄", "dns_records_24hours": "請注意 DNS 紀錄的更改可能需要 24 小時才能正確顯示於此頁面。此頁面的目的是為了讓你可以輕鬆的了解如何設定 DNS 紀錄並檢查 DNS 是否設定正確。", "dns_records_data": "正確值", - "dns_records_docs": "請同時另外查看 文件.", + "dns_records_docs": "請同時另外查看 文件.", "dns_records_name": "名稱", "dns_records_status": "目前狀態", "dns_records_type": "類型", @@ -569,6 +570,7 @@ "extended_sender_acl_info": "如果可以的話,請匯入 DKIM 域名金鑰。
\r\n別忘記將此伺服器新增到相應的 SPF TXT 中。
\r\n當域名或域名別名被新增時,若其與此外部寄件人地址交疊,則外部寄件人地址會被移除。
\r\n填入 @domain.tld 以允許作為 *@domain.tld 發送郵件。", "force_pw_update": "在下一次登入時強制要求更新密碼", "force_pw_update_info": "此使用者只能登入至 %s。應用程式密碼仍可正常使用", + "footer_exclude": "从页脚排除", "full_name": "全名", "gal": "全域聯絡人清單", "gal_info": "全域聯絡人清單包含了域名下的所有物件,且使用者不可編輯。如果關閉,使用者的 空閒/繁忙 訊息將不能在 SOGo 中顯示。重新啟動 SOGo 以應用更改。", @@ -615,7 +617,7 @@ "relay_all": "中繼所有收件人", "relay_all_info": "↪ 如果選擇中繼所有收件人,你會需要幫每個應該中繼的收件人新增一個 (\"盲\") 信箱。", "relay_domain": "中繼這個域名", - "relay_transport_info": "
資訊
你可以為此域名定義傳輸規則以自訂目的地,如果留空則會遵照 MX 紀錄。", + "relay_transport_info": "
資訊
你可以為此域名定義傳輸規則以自訂目的地,如果留空則會遵照 MX 紀錄。", "relay_unknown_only": "只為不存在的信箱地址中繼。已存在的信箱地址則在本區域遞送。", "relayhost": "中繼傳輸", "remove": "移除", @@ -623,7 +625,7 @@ "save": "儲存更改", "scope": "範圍", "sender_acl": "允許發送為", - "sender_acl_disabled": "寄件人檢查已關閉", + "sender_acl_disabled": "寄件人檢查已關閉", "sender_acl_info": "如果信箱使用者 A 被允許以信箱使用者 B 發送郵件,該寄件人地址不會出現在 SOGo 中\"發送自\"的下拉選項中。
\r\n信箱使用者 B 需要新增授權以允許信箱使用者 A 選擇 B 的地址作為寄件人;授權方法為,在 SOGo 中點擊右上方信箱名稱左邊的選項按鈕(三個點)並授權。此行為不會套用於信箱別名。", "sieve_desc": "簡短描述", "sieve_type": "過濾器類型", @@ -648,7 +650,6 @@ "validate_save": "驗證並儲存", "domain_footer_info": "網域範圍的頁尾將會新增至與該網域內的位址關聯的所有外發電子郵件。
以下變數可用於頁尾:", "custom_attributes": "自訂屬性", - "mbox_exclude": "排除信箱", "pushover_sound": "聲音" }, "fido2": { @@ -684,7 +685,7 @@ "header": { "administration": "設定和管理", "apps": "應用程式", - "debug": "系統訊息", + "debug": "系統資訊", "quarantine": "隔離", "restart_netfilter": "重新啟動 netfilter", "restart_sogo": "重新啟動 SOGo", @@ -829,7 +830,7 @@ "sender": "寄件人", "set_postfilter": "標記為 postfilter", "set_prefilter": "標記為 prefilter", - "sieve_info": "你可以為每個使用者儲存多個過濾器,但只能同時啟用一個 prefilter 和一個 postfilter。
\r\n過濾器將按清單中的順序依次執行,下一個腳本不會因為上一個腳本失敗或\"keep;\"而停止。更改全域 sieve 腳本會重新啟動 Dovecot。

全域 sieve prefilter → Prefilter → 使用者腳本 → Postfilter → 全域 sieve postfilter", + "sieve_info": "你可以為每個使用者儲存多個過濾器,但只能同時啟用一個 prefilter 和一個 postfilter。
\n過濾器將按清單中的順序依次執行,下一個腳本不會因為上一個腳本失敗或保留而停止。更改全域 sieve 腳本會重新啟動 Dovecot。

全域 sieve prefilter • Prefilter • 使用者腳本 • Postfilter • 全域 sieve postfilter", "sieve_preset_1": "丟棄含有潛在危險檔案格式的信件", "sieve_preset_2": "永遠標記來自指定寄件人的郵件為已讀", "sieve_preset_3": "無聲刪除,並停止運行後續的 sieve 腳本", @@ -837,7 +838,7 @@ "sieve_preset_5": "自動回覆 (休假)", "sieve_preset_6": "拒絕郵件並回應", "sieve_preset_7": "重新導向並保留/刪除", - "sieve_preset_8": "刪除寄件人發送給包含自己別名地址的郵件", + "sieve_preset_8": "重新導向來自特定寄件者的電子郵件,標記為已讀取並分類到子資料夾中", "sieve_preset_header": "請看下方的範例預設。 查看 Wikipedia 以瞭解更多細節。", "sogo_visible": "別名會顯示於 SOGo", "sogo_visible_n": "在 SOGo 中隱藏別名", @@ -1171,7 +1172,7 @@ "running": "運行中", "save": "儲存變更", "save_changes": "儲存變更", - "sender_acl_disabled": "寄件人檢查已關閉", + "sender_acl_disabled": "寄件人檢查已關閉", "shared_aliases": "共享別名地址", "shared_aliases_desc": "共用別名不會受使用者的個別設定如垃圾過濾器和加密規則等影響。共享別名地址的垃圾信件過濾只能由管理員透過域名級別規則修改。", "show_sieve_filters": "顯示使用者啟用的 sieve 過濾器", @@ -1231,7 +1232,8 @@ "year": "年", "years": "年", "attribute": "屬性", - "pushover_sound": "聲音" + "pushover_sound": "聲音", + "value": "數值" }, "warning": { "cannot_delete_self": "不能刪除已登入的使用者", @@ -1282,6 +1284,9 @@ "ays": "請確認您要刪除目前隊列中的所有項目。", "deliver_mail": "遞送", "queue_manager": "隊列管理器", - "unhold_mail_legend": "釋放選定的郵件以供投遞。 (需事先持有)" + "unhold_mail_legend": "釋放選定的郵件以供投遞。 (需事先持有)", + "hold_mail_legend": "保存選定的郵件。(防止進一步的交付嘗試)", + "hold_mail": "保留", + "unhold_mail": "取消保留" } } diff --git a/data/web/templates/edit/domain.twig b/data/web/templates/edit/domain.twig index 8a700d06ad..6d1d85c730 100644 --- a/data/web/templates/edit/domain.twig +++ b/data/web/templates/edit/domain.twig @@ -26,6 +26,15 @@ +
+ +
+ {{ result.domain_h_name }} + {% if result.domain_h_name != result.domain_name %} + {{ result.domain_name }} + {% endif %} +
+
@@ -289,9 +298,9 @@ {{ lang.edit.domain_footer_info_vars.custom }}
- +
- {% for mailbox in mailboxes %} {% endfor %} + {% for alias_domain in alias_domains %} + + {% endfor %}
diff --git a/data/web/templates/modals/mailbox.twig b/data/web/templates/modals/mailbox.twig index 22807c8d39..6316d9fb05 100644 --- a/data/web/templates/modals/mailbox.twig +++ b/data/web/templates/modals/mailbox.twig @@ -381,6 +381,12 @@