git subrepo commit (merge) mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "02ae5285"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "649a5c01"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: I870ad468fba026cc5abf3c5699ed1e12ff28b32b
diff --git a/mailcow/src/mailcow-dockerized/data/web/lang/lang.en.json b/mailcow/src/mailcow-dockerized/data/web/lang/lang.en.json
index ceee60e..d5494e5 100644
--- a/mailcow/src/mailcow-dockerized/data/web/lang/lang.en.json
+++ b/mailcow/src/mailcow-dockerized/data/web/lang/lang.en.json
@@ -4,17 +4,20 @@
         "app_passwds": "Manage app passwords",
         "bcc_maps": "BCC maps",
         "delimiter_action": "Delimiter action",
+        "domain_desc": "Change domain description",
+        "domain_relayhost": "Change relayhost for a domain",
         "eas_reset": "Reset EAS devices",
         "extend_sender_acl": "Allow to extend sender ACL by external addresses",
         "filters": "Filters",
         "login_as": "Login as mailbox user",
+        "mailbox_relayhost": "Change relayhost for a mailbox",
         "prohibited": "Prohibited by ACL",
         "protocol_access": "Change protocol access",
         "pushover": "Pushover",
         "quarantine": "Quarantine actions",
         "quarantine_attachments": "Quarantine attachments",
-        "quarantine_notification": "Change quarantine notifications",
         "quarantine_category": "Change quarantine notification category",
+        "quarantine_notification": "Change quarantine notifications",
         "ratelimit": "Rate limit",
         "recipient_maps": "Recipient maps",
         "smtp_ip_access": "Change allowed hosts for SMTP",
@@ -26,7 +29,10 @@
         "syncjobs": "Sync jobs",
         "tls_policy": "TLS policy",
         "unlimited_quota": "Unlimited quota for mailboxes",
-        "domain_desc": "Change domain description"
+        "xmpp_admin": "Promote XMPP user to administrator",
+        "xmpp_domain_access": "Configure XMPP domain access",
+        "xmpp_mailbox_access": "Configure XMPP user access",
+        "xmpp_prefix": "Change XMPP subdomain (prefix)"
     },
     "add": {
         "activate_filter_warn": "All other filters will be deactivated, when active is checked.",
@@ -42,7 +48,8 @@
         "app_password": "Add app password",
         "automap": "Try to automap folders (\"Sent items\", \"Sent\" => \"Sent\" etc.)",
         "backup_mx_options": "Relay options",
-        "comment_info": "A private comment is not visible to the user, while a public comment is shown as tooltip when hovering it in a users overview",
+        "bcc_dest_format": "BCC destination must be a single valid email address.<br> If you need to send a copy to multiple addresses, create an Alias and use it here.",
+        "comment_info": "A private comment is not visible to the user, while a public comment is shown as tooltip when hovering it in a user's overview",
         "custom_params": "Custom parameters",
         "custom_params_hint": "Right: --param=xy, wrong: --param xy",
         "delete1": "Delete from source when completed",
@@ -102,7 +109,13 @@
         "timeout2": "Timeout for connection to local host",
         "username": "Username",
         "validate": "Validate",
-        "validation_success": "Validated successfully"
+        "validation_success": "Validated successfully",
+        "xmpp": "Activate XMPP for this domain",
+        "xmpp_access": "XMPP access",
+        "xmpp_access_info": "XMPP must be enabled for this domain.",
+        "xmpp_admin": "XMPP administrator",
+        "xmpp_admin_info": "<b>Danger:</b> Promotes a user to an XMPP administrator of this domain.",
+        "xmpp_info": "This function will enable chat functionality for this domain."
     },
     "admin": {
         "access": "Access",
@@ -125,10 +138,14 @@
         "admin": "Administrator",
         "admin_details": "Edit administrator details",
         "admin_domains": "Domain assignments",
+        "admins": "Administrators",
+        "admins_ldap": "LDAP Administrators",
         "advanced_settings": "Advanced settings",
         "api_allow_from": "Allow API access from these IPs/CIDR network notations",
         "api_info": "The API is a work in progress. The documentation can be found at <a href=\"/api\">/api</a>",
         "api_key": "API key",
+        "api_read_only": "Read-Only Access",
+        "api_read_write": "Read-Write Access",
         "api_skip_ip_check": "Skip IP check for API",
         "app_links": "App links",
         "app_name": "App name",
@@ -140,7 +157,7 @@
         "change_logo": "Change logo",
         "configuration": "Configuration",
         "convert_html_to_text": "Convert HTML to plain text",
-        "credentials_transport_warning": "<b>Warning</b>: Adding a new transport map entry will update the credentials for all entries with a matching nexthop column.",
+        "credentials_transport_warning": "<b>Warning</b>: Adding a new transport map entry will update the credentials for all entries with a matching next hop column.",
         "customer_id": "Customer ID",
         "customize": "Customize",
         "delete_queue": "Delete all",
@@ -199,12 +216,14 @@
         "include_exclude": "Include/Exclude",
         "include_exclude_info": "By default - with no selection - <b>all mailboxes</b> are addressed",
         "includes": "Include these recipients",
+        "is_mx_based": "MX based",
         "last_applied": "Last applied",
         "license_info": "A license is not required but helps further development.<br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"SAL order\">Register your GUID here</a> or <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Support order\">buy support for your mailcow installation.</a>",
         "link": "Link",
         "loading": "Please wait...",
+        "login_time": "Login time",
         "logo_info": "Your image will be scaled to a height of 40px for the top navigation bar and a max. width of 250px for the start page. A scalable graphic is highly recommended.",
-        "lookup_mx": "Match destination against MX (.outlook.com to route all mail targeted to a MX *.outlook.com over this hop)",
+        "lookup_mx": "Destination is a regular expression to match against MX name (<code>.*google\\.com</code> to route all mail targeted to a MX ending in google.com over this hop)",
         "main_name": "\"mailcow UI\" name",
         "merged_vars_hint": "Greyed out rows were merged from <code>vars.(local.)inc.php</code> and cannot be modified.",
         "message": "Message",
@@ -214,14 +233,23 @@
         "no_active_bans": "No active bans",
         "no_new_rows": "No further rows available",
         "no_record": "No record",
+        "oauth2_apps": "OAuth2 Apps",
+        "oauth2_add_client": "Add OAuth2 client",
         "oauth2_client_id": "Client ID",
         "oauth2_client_secret": "Client secret",
-        "oauth2_info": "The OAuth2 implementation supports the grant type \"Authorization Code\" and issues refresh tokens.<br>\r\nThe server also automatically issues new refresh tokens, after a refresh token has been used.<br><br>\r\n→ The default scope is <i>profile</i>. Only mailbox users can be authenticated against OAuth2. If the scope parameter is omitted, it falls back to <i>profile</i>.<br>\r\n→ The <i>state</i> parameter is required to be sent by the client as part of the authorize request.<br><br>\r\nPaths for requests to the OAuth2 API: <br>\r\n<ul>\r\n  <li>Authorization endpoint: <code>/oauth/authorize</code></li>\r\n  <li>Token endpoint: <code>/oauth/token</code></li>\r\n  <li>Resource page:  <code>/oauth/profile</code></li>\r\n</ul>\r\nRegenerating the client secret will not expire existing authorization codes, but they will fail to renew their token.<br><br>\r\nRevoking client tokens will cause immediate termination of all active sessions. All clients need to re-authenticate.",
+        "oauth2_info": "The OAuth2 implementation supports the grant type \"Authorization Code\" and issues refresh tokens.<br>\r\nThe server also automatically issues new refresh tokens, after a refresh token has been used.<br><br>\r\n&#8226; The default scope is <i>profile</i>. Only mailbox users can be authenticated against OAuth2. If the scope parameter is omitted, it falls back to <i>profile</i>.<br>\r\n&#8226; The <i>state</i> parameter is required to be sent by the client as part of the authorize request.<br><br>\r\nPaths for requests to the OAuth2 API: <br>\r\n<ul>\r\n  <li>Authorization endpoint: <code>/oauth/authorize</code></li>\r\n  <li>Token endpoint: <code>/oauth/token</code></li>\r\n  <li>Resource page:  <code>/oauth/profile</code></li>\r\n</ul>\r\nRegenerating the client secret will not expire existing authorization codes, but they will fail to renew their token.<br><br>\r\nRevoking client tokens will cause immediate termination of all active sessions. All clients need to re-authenticate.",
         "oauth2_redirect_uri": "Redirect URI",
         "oauth2_renew_secret": "Generate new client secret",
         "oauth2_revoke_tokens": "Revoke all client tokens",
         "optional": "optional",
         "password": "Password",
+        "password_length": "Password length",
+        "password_policy": "Password policy",
+        "password_policy_chars": "Must contain at least one alphabetic character",
+        "password_policy_length": "Minimum password length is %d",
+        "password_policy_lowerupper": "Must contain lowercase and uppercase characters",
+        "password_policy_numbers": "Must contain at least one number",
+        "password_policy_special_chars": "Must contain special characters",
         "password_repeat": "Confirmation password (repeat)",
         "priority": "Priority",
         "private_key": "Private key",
@@ -229,8 +257,8 @@
         "quarantine_bcc": "Send a copy of all notifications (BCC) to this recipient:<br><small>Leave empty to disable. <b>Unsigned, unchecked mail. Should be delivered internally only.</b></small>",
         "quarantine_exclude_domains": "Exclude domains and alias-domains",
         "quarantine_max_age": "Maximum age in days<br><small>Value must be equal to or greater than 1 day.</small>",
-        "quarantine_max_size": "Maximum size in MiB (larger elements are discarded):<br><small>0 does <b>not</b> indicate unlimited.</small>",
         "quarantine_max_score": "Discard notification if spam score of a mail is higher than this value:<br><small>Defaults to 9999.0</small>",
+        "quarantine_max_size": "Maximum size in MiB (larger elements are discarded):<br><small>0 does <b>not</b> indicate unlimited.</small>",
         "quarantine_notification_html": "Notification email template:<br><small>Leave empty to restore default template.</small>",
         "quarantine_notification_sender": "Notification email sender",
         "quarantine_notification_subject": "Notification email subject",
@@ -243,14 +271,14 @@
         "queue_deliver_mail": "Deliver",
         "queue_hold_mail": "Hold",
         "queue_manager": "Queue manager",
+        "queue_show_message": "Show message",
         "queue_unban": "queue unban",
         "queue_unhold_mail": "Unhold",
-        "queue_show_message": "Show message",
         "quota_notification_html": "Notification email template:<br><small>Leave empty to restore default template.</small>",
         "quota_notification_sender": "Notification email sender",
         "quota_notification_subject": "Notification email subject",
         "quota_notifications": "Quota notifications",
-        "quota_notifications_info": "Quota notications are sent to users once when crossing 80% and once when crossing 95% usage.",
+        "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<br>{{username}} is the mailbox name",
         "r_active": "Active restrictions",
         "r_inactive": "Inactive restrictions",
@@ -261,6 +289,7 @@
         "regen_api_key": "Regenerate API key",
         "regex_maps": "Regex maps",
         "relay_from": "\"From:\" address",
+        "relay_rcpt": "\"To:\" address",
         "relay_run": "Run test",
         "relayhosts": "Sender-dependent transports",
         "relayhosts_hint": "Define sender-dependent transports to be able to select them in a domains configuration dialog.<br>\r\n  The transport service is always \"smtp:\" and will therefore try TLS when offered. Wrapped TLS (SMTPS) is not supported. A users individual outbound TLS policy setting is taken into account.<br>\r\n  Affects selected domains including alias domains.",
@@ -278,6 +307,7 @@
         "rsettings_preset_1": "Disable all but DKIM and rate limit for authenticated users",
         "rsettings_preset_2": "Postmasters want spam",
         "rsettings_preset_3": "Only allow specific senders for a mailbox (i.e. usage as internal mailbox only)",
+        "rsettings_preset_4": "Disable Rspamd for a domain",
         "rspamd-com_settings": "A setting name will be auto-generated, please see the example presets below. For more details see <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd docs</a>",
         "rspamd_global_filters": "Global filter maps",
         "rspamd_global_filters_agree": "I will be careful!",
@@ -289,19 +319,22 @@
         "search_domain_da": "Search domains",
         "send": "Send",
         "sender": "Sender",
+        "service": "Service",
         "service_id": "Service ID",
         "source": "Source",
         "spamfilter": "Spam filter",
         "subject": "Subject",
+        "success": "Success",
         "sys_mails": "System mails",
         "text": "Text",
         "time": "Time",
         "title": "Title",
         "title_name": "\"mailcow UI\" website title",
         "to_top": "Back to top",
-        "transport_dest_format": "Syntax: example.org, .example.org, *, box@example.org (multiple values can be comma-separated)",
+        "transport_dest_format": "Regex or syntax: example.org, .example.org, *, box@example.org (multiple values can be comma-separated)",
         "transport_maps": "Transport Maps",
-        "transports_hint": "→ A transport map entry <b>overrules</b> a sender-dependent transport map</b>.<br>\r\n→ Outbound TLS policy settings per-user are ignored and can only be enforced by TLS policy map entries.<br>\r\n→ The transport service for defined transports is always \"smtp:\" and will therefore try TLS when offered. Wrapped TLS (SMTPS) is not supported.<br>\r\n→ Addresses matching \"/localhost$/\" will always be transported via \"local:\", therefore a \"*\" destination will not apply to those addresses.<br>\r\n→ To determine credentials for an exemplary next hop \"[host]:25\", Postfix <b>always</b> queries for \"host\" before searching for \"[host]:25\". This behavior makes it impossible to use \"host\" and \"[host]:25\" at the same time.",
+        "transport_test_rcpt_info": "&#8226; Use null@hosted.mailcow.de to test relaying to a foreign destination.",
+        "transports_hint": "&#8226; A transport map entry <b>overrules</b> a sender-dependent transport map</b>.<br>\r\n&#8226; MX-based transports are preferably used.<br>\r\n&#8226; Outbound TLS policy settings per-user are ignored and can only be enforced by TLS policy map entries.<br>\r\n&#8226; The transport service for defined transports is always \"smtp:\" and will therefore try TLS when offered. Wrapped TLS (SMTPS) is not supported.<br>\r\n&#8226; Addresses matching \"/localhost$/\" will always be transported via \"local:\", therefore a \"*\" destination will not apply to those addresses.<br>\r\n&#8226; To determine credentials for an exemplary next hop \"[host]:25\", Postfix <b>always</b> queries for \"host\" before searching for \"[host]:25\". This behavior makes it impossible to use \"host\" and \"[host]:25\" at the same time.",
         "ui_footer": "Footer (HTML allowed)",
         "ui_header_announcement": "Announcements",
         "ui_header_announcement_active": "Set announcement active",
@@ -309,9 +342,9 @@
         "ui_header_announcement_help": "The announcement is visible for all logged in users and on the login screen of the UI.",
         "ui_header_announcement_select": "Select announcement type",
         "ui_header_announcement_type": "Type",
+        "ui_header_announcement_type_danger": "Very important",
         "ui_header_announcement_type_info": "Info",
         "ui_header_announcement_type_warning": "Important",
-        "ui_header_announcement_type_danger": "Very important",
         "ui_texts": "UI labels and texts",
         "unban_pending": "unban pending",
         "unchanged_if_empty": "If unchanged leave blank",
@@ -347,6 +380,7 @@
         "domain_quota_m_in_use": "Domain quota must be greater or equal to %s MiB",
         "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",
         "filter_type": "Wrong filter type",
         "from_invalid": "Sender must not be empty",
@@ -390,6 +424,7 @@
         "network_host_invalid": "Invalid network or host: %s",
         "next_hop_interferes": "%s interferes with nexthop %s",
         "next_hop_interferes_any": "An existing next hop interferes with %s",
+        "nginx_reload_failed": "Nginx reload failed: %s",
         "no_user_defined": "No user defined",
         "object_exists": "Object %s already exists",
         "object_is_not_numeric": "Value %s is not numeric",
@@ -430,49 +465,61 @@
         "totp_verification_failed": "TOTP verification failed",
         "transport_dest_exists": "Transport destination \"%s\" exists",
         "u2f_verification_failed": "U2F verification failed: %s",
-        "fido2_verification_failed": "FIDO2 verification failed: %s",
         "unknown": "An unknown error occurred",
         "unknown_tfa_method": "Unknown TFA method",
         "unlimited_quota_acl": "Unlimited quota prohibited by ACL",
         "username_invalid": "Username %s cannot be used",
         "validity_missing": "Please assign a period of validity",
         "value_missing": "Please provide all values",
+        "xmpp_map_write_error": "Could not write XMPP map: %s",
+        "xmpp_reload_failed": "XMPP could not be reloaded",
+        "xmpp_restart_failed": "XMPP could not be restarted",
         "yotp_verification_failed": "Yubico OTP verification failed: %s"
     },
     "debug": {
         "chart_this_server": "Chart (this server)",
         "containers_info": "Container information",
         "disk_usage": "Disk usage",
+        "docs": "Docs",
         "external_logs": "External logs",
         "history_all_servers": "History (all servers)",
         "in_memory_logs": "In-memory logs",
         "jvm_memory_solr": "JVM memory usage",
+        "last_modified": "Last modified",
         "log_info": "<p>mailcow <b>in-memory logs</b> are collected in Redis lists and trimmed to LOG_LINES (%d) every minute to reduce hammering.\r\n  <br>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  <br>The in-memory log type should be used for debugging minor issues with containers.</p>\r\n  <p><b>External logs</b> are collected via API of the given application.</p>\r\n  <p><b>Static logs</b> are mostly activity logs, that are not logged to the Dockerd but still need to be persistent (except for API logs).</p>",
+        "login_time": "Time",
         "logs": "Logs",
+        "online_users": "Users online",
         "restart_container": "Restart",
+        "service": "Service",
+        "size": "Size",
         "solr_dead": "Solr is starting, disabled or died.",
-        "solr_docs": "Docs",
-        "solr_last_modified": "Last modified",
-        "solr_size": "Size",
-        "solr_started_at": "Started at",
         "solr_status": "Solr status",
-        "solr_uptime": "Uptime",
+        "started_at": "Started at",
         "started_on": "Started on",
         "static_logs": "Static logs",
-        "system_containers": "System & Containers"
+        "success": "Success",
+        "system_containers": "System & Containers",
+        "uptime": "Uptime",
+        "username": "Username",
+        "xmpp_dead": "XMPP is starting, disabled or died.",
+        "xmpp_status": "XMPP status"
     },
     "diagnostics": {
         "cname_from_a": "Value derived from A/AAAA record. This is supported as long as the record points to the correct resource.",
         "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 <a target=\"_blank\" href=\"https://mailcow.github.io/mailcow-dockerized-docs/prerequisite-dns/\">the documentation</a>.",
         "dns_records_name": "Name",
         "dns_records_status": "Current State",
         "dns_records_type": "Type",
         "optional": "This record is optional."
     },
     "edit": {
+        "acl": "ACL (Permission)",
         "active": "Active",
+        "admin": "Edit administrator",
         "advanced_settings": "Advanced settings",
         "alias": "Edit alias",
         "allow_from_smtp": "Only allow these IPs to use <b>SMTP</b>",
@@ -482,10 +529,10 @@
         "app_passwd": "App password",
         "automap": "Try to automap folders (\"Sent items\", \"Sent\" => \"Sent\" etc.)",
         "backup_mx_options": "Relay options",
-        "bcc_dest_format": "BCC destination must be a single valid email address.",
+        "bcc_dest_format": "BCC destination must be a single valid email address.<br> If you need to send a copy to multiple addresses, create an Alias and use it here.",
         "client_id": "Client ID",
         "client_secret": "Client secret",
-        "comment_info": "A private comment is not visible to the user, while a public comment is shown as tooltip when hovering it in a users overview",
+        "comment_info": "A private comment is not visible to the user, while a public comment is shown as tooltip when hovering it in a user's overview",
         "delete1": "Delete from source when completed",
         "delete2": "Delete messages on destination that are not on source",
         "delete2duplicates": "Delete duplicates on destination",
@@ -512,8 +559,10 @@
         "hostname": "Hostname",
         "inactive": "Inactive",
         "kind": "Kind",
+        "lookup_mx": "Destination is a regular expression to match against MX name (<code>.*google\\.com</code> to route all mail targeted to a MX ending in google.com over this hop)",
         "mailbox": "Edit mailbox",
         "mailbox_quota_def": "Default mailbox quota",
+        "mailbox_relayhost_info": "Applied to the mailbox and direct aliases only, does override a domain relayhost.",
         "max_aliases": "Max. aliases",
         "max_mailboxes": "Max. possible mailboxes",
         "max_quota": "Max. quota per mailbox (MiB)",
@@ -522,12 +571,14 @@
         "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",
+        "none_inherit": "None / Inherit",
         "nexthop": "Next hop",
         "password": "Password",
         "password_repeat": "Confirmation password (repeat)",
         "previous": "Previous page",
         "private_comment": "Private comment",
         "public_comment": "Public comment",
+        "pushover": "Pushover",
         "pushover_evaluate_x_prio": "Escalate high priority mail [<code>X-Priority: 1</code>]",
         "pushover_info": "Push notification settings will apply to all clean (non-spam) mail delivered to <b>%s</b> including aliases (shared, non-shared, tagged).",
         "pushover_only_x_prio": "Only consider high priority mail [<code>X-Priority: 1</code>]",
@@ -538,6 +589,9 @@
         "pushover_vars": "When no sender filter is defined, all mails will be considered.<br>Regex filters as well as exact sender checks can be defined individually and will be considered sequentially. They do not depend on each other.<br>Useable variables for text and title (please take note of data protection policies)",
         "pushover_verify": "Verify credentials",
         "quota_mb": "Quota (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: <code>Quota warning (user@example.com)</code>.",
+        "ratelimit": "Rate limit",
         "redirect_uri": "Redirect/Callback URL",
         "relay_all": "Relay all recipients",
         "relay_all_info": "↪ If you choose <b>not</b> to relay all recipients, you will need to add a (\"blind\") mailbox for every single recipient that should be relayed.",
@@ -550,16 +604,17 @@
         "save": "Save changes",
         "scope": "Scope",
         "sender_acl": "Allow to send as",
-        "sender_acl_disabled": "↳ <span class=\"label label-danger\">Sender check is disabled</span>",
+        "sender_acl_disabled": "<span class=\"label label-danger\">Sender check is disabled</span>",
         "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.<br>\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_type": "Filter type",
         "skipcrossduplicates": "Skip duplicate messages across folders (first come, first serve)",
         "sogo_access": "Grant access to SOGo",
-        "sogo_access_info": "Grant or permit access to SOGo. This setting does neither affect access to all other services nor does it delete or change a users existing SOGo profile.",
+        "sogo_access_info": "Grant or permit access to SOGo. This setting does neither affect access to all other services nor does it delete or change a user's existing SOGo profile.",
         "sogo_visible": "Alias is visible 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",
         "subfolder2": "Sync into subfolder on destination<br><small>(empty = do not use subfolder)</small>",
@@ -571,16 +626,41 @@
         "title": "Edit object",
         "unchanged_if_empty": "If unchanged leave blank",
         "username": "Username",
-        "validate_save": "Validate and save"
+        "validate_save": "Validate and save",
+        "xmpp": "Activate XMPP for this domain",
+        "xmpp_access": "XMPP access",
+        "xmpp_access_info": "XMPP must be enabled for this domain.",
+        "xmpp_admin": "XMPP administrator",
+        "xmpp_admin_info": "<b>Danger:</b> Promotes a user to an XMPP administrator of this domain.",
+        "xmpp_example_jid": "<b>Example JID</b> (login with mailbox password)",
+        "xmpp_info": "This function will enable chat functionality for this domain.",
+        "xmpp_prefix": "XMPP prefix for domain (\"im\" to use <b>im</b>.example.org)",
+        "xmpp_prefix_info": "To request certificates for XMPP, two CNAME DNS records should point from <b>im</b>.example.org as well as <b>*.im</b>.example.org to <b>%s</b>. Please also run the DNS check for this domain after enabling XMPP."
+    },
+    "fido2": {
+        "confirm": "Confirm",
+        "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",
+        "set_fido2": "Register FIDO2 device",
+        "set_fn": "Set friendly name",
+        "start_fido2_validation": "Start FIDO2 validation"
     },
     "footer": {
         "cancel": "Cancel",
         "confirm_delete": "Confirm deletion",
         "delete_now": "Delete now",
         "delete_these_items": "Please confirm your changes to the following object id",
+        "hibp_check": "Check against haveibeenpwned.com",
         "hibp_nok": "Matched! This is a potentially dangerous password!",
         "hibp_ok": "No match found.",
         "loading": "Please wait...",
+        "nothing_selected": "Nothing selected",
         "restart_container": "Restart container",
         "restart_container_info": "<b>Important:</b> A graceful restart may take a while to complete, please wait for it to finish.",
         "restart_now": "Restart now",
@@ -617,6 +697,7 @@
         "active": "Active",
         "add": "Add",
         "add_alias": "Add alias",
+        "add_alias_expand": "Expand alias over alias domains",
         "add_bcc_entry": "Add BCC map",
         "add_domain": "Add domain",
         "add_domain_alias": "Add domain alias",
@@ -628,9 +709,10 @@
         "add_tls_policy_map": "Add TLS policy map",
         "address_rewriting": "Address rewriting",
         "alias": "Alias",
-        "alias_domain_alias_hint": "Aliases are <b>not</b> applied on domain aliases automatically. An alias address <code>my-alias@domain</code> <b>does not</b> cover the address <code>my-alias@alias-domain</code> (where \"alias-domain\" is an imaginary alias domain for \"domain\").<br>Please use a sieve filter to redirect mail to an external mailbox (see tab \"Filters\" or use  SOGo -> Forwarder).",
+        "alias_domain_alias_hint": "Aliases are <b>not</b> applied on domain aliases automatically. An alias address <code>my-alias@domain</code> <b>does not</b> cover the address <code>my-alias@alias-domain</code> (where \"alias-domain\" is an imaginary alias domain for \"domain\").<br>Please use a sieve filter to redirect mail to an external mailbox (see tab \"Filters\" or use  SOGo -> Forwarder). Use \"Expand alias over alias domains\" to automatically add missing aliases.",
         "alias_domain_backupmx": "Alias domain inactive for relay domain",
         "aliases": "Aliases",
+        "all_domains": "All Domains",
         "allow_from_smtp": "Only allow these IPs to use <b>SMTP</b>",
         "allow_from_smtp_info": "Leave empty to allow all senders.<br>IPv4/IPv6 addresses and networks.",
         "allowed_protocols": "Allowed protocols",
@@ -654,6 +736,7 @@
         "booking_custom_short": "Hard limit",
         "booking_lt0": "Unlimited, but show as busy when booked",
         "booking_lt0_short": "Soft limit",
+        "catch_all": "Catch-All",
         "daily": "Daily",
         "deactivate": "Deactivate",
         "description": "Description",
@@ -671,20 +754,23 @@
         "filter_table": "Filter table",
         "filters": "Filters",
         "fname": "Full name",
+        "goto_ham": "Learn as <b>ham</b>",
+        "goto_spam": "Learn as <b>spam</b>",
         "hourly": "Hourly",
         "in_use": "In use (%)",
         "inactive": "Inactive",
         "insert_preset": "Insert example preset \"%s\"",
         "kind": "Kind",
         "last_mail_login": "Last mail login",
+        "last_pw_change": "Last password change",
         "last_run": "Last run",
         "last_run_reset": "Schedule next",
         "mailbox": "Mailbox",
+        "mailbox_defaults": "Default settings",
+        "mailbox_defaults_info": "Define default settings for new mailboxes.",
         "mailbox_defquota": "Default mailbox size",
         "mailbox_quota": "Max. size of a mailbox",
         "mailboxes": "Mailboxes",
-        "mailbox_defaults": "Default settings",
-        "mailbox_defaults_info": "Define default settings for new mailboxes.",
         "mins_interval": "Interval (min)",
         "msg_num": "Message #",
         "multiple_bookings": "Multiple bookings",
@@ -692,15 +778,17 @@
         "no": "&#10005;",
         "no_record": "No record for object %s",
         "no_record_single": "No record",
+        "open_logs": "Open logs",
         "owner": "Owner",
         "private_comment": "Private comment",
         "public_comment": "Public comment",
-        "q_add_header": "Junk folder",
-        "q_all": "All categories",
-        "q_reject": "Rejected",
-        "quarantine_notification": "Quarantine notifications",
+        "q_add_header": "when moved to Junk folder",
+        "q_all": " when moved to Junk folder and on reject",
+        "q_reject": "on reject",
         "quarantine_category": "Quarantine notification category",
+        "quarantine_notification": "Quarantine notifications",
         "quick_actions": "Actions",
+        "recipient": "Recipient",
         "recipient_map": "Recipient map",
         "recipient_map_info": "Recipient maps are used to replace the destination address on a message before it is delivered.",
         "recipient_map_new": "New recipient",
@@ -711,9 +799,10 @@
         "remove": "Remove",
         "resources": "Resources",
         "running": "Running",
+        "sender": "Sender",
         "set_postfilter": "Mark as postfilter",
         "set_prefilter": "Mark as prefilter",
-        "sieve_info": "You can store multiple filters per user, but only one prefilter and one postfilter can be active at the same time.<br>\r\nEach filter will be processed in the described order. Neither a failed script nor an issued \"keep;\" will stop processing of further scripts. Changes to global sieve scripts will trigger a restart of Dovecot.<br><br>Global sieve prefilter → Prefilter → User scripts → Postfilter → Global sieve postfilter",
+        "sieve_info": "You can store multiple filters per user, but only one prefilter and one postfilter can be active at the same time.<br>\r\nEach filter will be processed in the described order. Neither a failed script nor an issued \"keep;\" will stop processing of further scripts. Changes to global sieve scripts will trigger a restart of Dovecot.<br><br>Global sieve prefilter &#8226; Prefilter &#8226; User scripts &#8226; Postfilter &#8226; Global sieve postfilter",
         "sieve_preset_1": "Discard mail with probable dangerous file types",
         "sieve_preset_2": "Always mark the e-mail of a specific sender as seen",
         "sieve_preset_3": "Discard silently, stop all further sieve processing",
@@ -723,7 +812,6 @@
         "sieve_preset_7": "Redirect and keep/drop",
         "sieve_preset_8": "Discard message sent to an alias address the sender is part of",
         "sieve_preset_header": "Please see the example presets below. For more details see <a href=\"https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)\" target=\"_blank\">Wikipedia</a>.",
-        "sogo_allow_admin_hint": "Administrative SOGo logins are only available for mailboxes with an existing SOGo profile. A user must have been logged in to SOGo at least once.",
         "sogo_visible": "Alias is visible in SOGo",
         "sogo_visible_n": "Hide alias in SOGo",
         "sogo_visible_y": "Show alias in SOGo",
@@ -743,8 +831,8 @@
         "tls_map_parameters_info": "Empty or parameters, for example: protocols=!SSLv2 ciphers=medium exclude=3DES",
         "tls_map_policy": "Policy",
         "tls_policy_maps": "TLS policy maps",
-        "tls_policy_maps_info": "This policy map overrides outgoing TLS transport rules independently of a users TLS policy settings.<br>\r\n  Please check <a href=\"http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps\" target=\"_blank\">the \"smtp_tls_policy_maps\" docs</a> for further information.",
         "tls_policy_maps_enforced_tls": "These policies will also override the behaviour for mailbox users that enforce outgoing TLS connections. If no policy exists below, these users will apply the default values specified as <code>smtp_tls_mandatory_protocols</code> and <code>smtp_tls_mandatory_ciphers</code>.",
+        "tls_policy_maps_info": "This policy map overrides outgoing TLS transport rules independently of a user's TLS policy settings.<br>\r\n  Please check <a href=\"http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps\" target=\"_blank\">the \"smtp_tls_policy_maps\" docs</a> for further information.",
         "tls_policy_maps_long": "Outgoing TLS policy map overrides",
         "toggle_all": "Toggle all",
         "username": "Username",
@@ -786,6 +874,9 @@
         "qitem": "Quarantine item",
         "quarantine": "Quarantine",
         "quick_actions": "Actions",
+        "quick_delete_link": "Open quick delete link",
+        "quick_info_link": "Open info link",
+        "quick_release_link": "Open quick release link",
         "rcpt": "Recipient",
         "received": "Received",
         "recipients": "Recipients",
@@ -799,10 +890,7 @@
         "rspamd_result": "Rspamd result",
         "sender": "Sender (SMTP)",
         "sender_header": "Sender (\"From\" header)",
-        "type": "Type",
-        "quick_release_link": "Open quick release link",
-        "quick_delete_link": "Open quick delete link",
-        "quick_info_link": "Open info link",
+        "settings_info": "Maximum amount of elements to be quarantined: %s<br>Maximum email size: %s MiB",
         "show_item": "Show item",
         "spam": "Spam",
         "spam_score": "Score",
@@ -811,7 +899,15 @@
         "table_size_show_n": "Show %s items",
         "text_from_html_content": "Content (converted html)",
         "text_plain_content": "Content (text/plain)",
-        "toggle_all": "Toggle all"
+        "toggle_all": "Toggle all",
+        "type": "Type"
+    },
+    "ratelimit": {
+      "disabled": "Disabled",
+      "second": "msgs / second",
+      "minute": "msgs / minute",
+      "hour": "msgs / hour",
+      "day": "msgs / day"
     },
     "start": {
         "help": "Show/Hide help panel",
@@ -868,7 +964,9 @@
         "mailbox_added": "Mailbox %s has been added",
         "mailbox_modified": "Changes to mailbox %s have been saved",
         "mailbox_removed": "Mailbox %s has been removed",
+        "nginx_reloaded": "Nginx was reloaded",
         "object_modified": "Changes to object %s have been saved",
+        "password_policy_saved": "Password policy was saved successfully",
         "pushover_settings_edited": "Pushover settings successfully set, please verify credentials.",
         "qlearn_spam": "Message ID %s was learned as spam and deleted",
         "queue_command_success": "Queue command completed successfully",
@@ -890,10 +988,13 @@
         "tls_policy_map_entry_saved": "TLS policy map entry \"%s\" has been saved",
         "ui_texts": "Saved changes to UI texts",
         "upload_success": "File uploaded successfully",
+        "verified_fido2_login": "Verified FIDO2 login",
         "verified_totp_login": "Verified TOTP login",
         "verified_u2f_login": "Verified U2F login",
-        "verified_fido2_login": "Verified FIDO2 login",
-        "verified_yotp_login": "Verified Yubico OTP login"
+        "verified_yotp_login": "Verified Yubico OTP login",
+        "xmpp_maps_updated": "XMPP maps were updated",
+        "xmpp_reloaded": "XMPP service was reloaded",
+        "xmpp_restarted": "XMPP service was restarted"
     },
     "tfa": {
         "api_register": "%s uses the Yubico Cloud API. Please get an API key for your key <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">here</a>",
@@ -920,20 +1021,6 @@
         "waiting_usb_register": "<i>Waiting for USB device...</i><br><br>Please enter your password above and confirm your registration by tapping the button on your USB device.",
         "yubi_otp": "Yubico OTP authentication"
     },
-    "fido2": {
-        "set_fn": "Set friendly name",
-        "fn": "Friendly name",
-        "rename": "rename",
-        "confirm": "Confirm",
-        "register_status": "Registration status",
-        "known_ids": "Known IDs",
-        "none": "Disabled",
-        "set_fido2": "Register FIDO2 device",
-        "start_fido2_validation": "Start FIDO2 validation",
-        "fido2_auth": "Login with FIDO2",
-        "fido2_success": "Device successfully registered",
-        "fido2_validation_failed": "Validation failed"
-    },
     "user": {
         "action": "Action",
         "active": "Active",
@@ -956,9 +1043,11 @@
         "apple_connection_profile_complete": "This connection profile includes IMAP and SMTP parameters as well as CalDAV (calendars) and CardDAV (contacts) paths for an Apple device.",
         "apple_connection_profile_mailonly": "This connection profile includes IMAP and SMTP configuration parameters for an Apple device.",
         "change_password": "Change password",
+        "clear_recent_successful_connections": "Clear seen successful connections",
         "client_configuration": "Show configuration guides for email clients and smartphones",
         "create_app_passwd": "Create app password",
         "create_syncjob": "Create new sync job",
+        "created_on": "Created on",
         "daily": "Daily",
         "day": "day",
         "delete_ays": "Please confirm the deletion process.",
@@ -970,10 +1059,13 @@
         "edit": "Edit",
         "email": "Email",
         "email_and_dav": "Email, calendars and contacts",
+        "empty": "No results",
         "encryption": "Encryption",
         "excludes": "Excludes",
         "expire_in": "Expire in",
+        "fido2_webauthn": "FIDO2/WebAuthn",
         "force_pw_update": "You <b>must</b> set a new password to be able to access groupware related services.",
+        "from": "from",
         "generate": "generate",
         "hour": "hour",
         "hourly": "Hourly",
@@ -982,17 +1074,26 @@
         "interval": "Interval",
         "is_catch_all": "Catch-all for domain/s",
         "last_mail_login": "Last mail login",
+        "last_pw_change": "Last password change",
         "last_run": "Last run",
+        "last_ui_login": "Last UI login",
         "loading": "Loading...",
-        "mailbox_details": "Mailbox details",
+        "login_history": "Login history",
+        "mailbox": "Mailbox",
+        "mailbox_details": "Details",
+        "mailbox_general": "General",
+        "mailbox_settings": "Settings",
         "messages": "messages",
+        "month": "month",
+        "months": "months",
         "never": "Never",
         "new_password": "New password",
-        "new_password_description": "Requirement: 6 characters long, letters and numbers.",
         "new_password_repeat": "Confirmation password (repeat)",
         "no_active_filter": "No active filter available",
         "no_last_login": "No last UI login information",
         "no_record": "No record",
+        "open_logs": "Open logs",
+        "open_webmail_sso": "Login to webmail",
         "password": "Password",
         "password_now": "Current password (confirm changes)",
         "password_repeat": "Password (repeat)",
@@ -1008,10 +1109,11 @@
         "q_add_header": "Junk folder",
         "q_all": "All categories",
         "q_reject": "Rejected",
-        "quarantine_notification": "Quarantine notifications",
         "quarantine_category": "Quarantine notification category",
-        "quarantine_notification_info": "Once a notification has been sent, items will be marked as \"notified\" and no further notifications will be sent for this particular item.",
         "quarantine_category_info": "The notification category \"Rejected\" includes mail that was rejected, while \"Junk folder\" will notify a user about mails that were put into the junk folder.",
+        "quarantine_notification": "Quarantine notifications",
+        "quarantine_notification_info": "Once a notification has been sent, items will be marked as \"notified\" and no further notifications will be sent for this particular item.",
+        "recent_successful_connections": "Seen successful connections",
         "remove": "Remove",
         "running": "Running",
         "save": "Save changes",
@@ -1021,7 +1123,7 @@
         "shared_aliases_desc": "Shared aliases are not affected by user specific settings such as the spam filter or encryption policy. Corresponding spam filters can only be made by an administrator as a domain-wide policy.",
         "show_sieve_filters": "Show active user sieve filter",
         "sogo_profile_reset": "Reset SOGo profile",
-        "sogo_profile_reset_help": "This will destroy a users SOGo profile and <b>delete all contact and calendar data irretrievable</b>.",
+        "sogo_profile_reset_help": "This will destroy a user's SOGo profile and <b>delete all contact and calendar data irretrievable</b>.",
         "sogo_profile_reset_now": "Reset profile now",
         "spam_aliases": "Temporary email aliases",
         "spam_score_reset": "Reset to server default",
@@ -1062,7 +1164,9 @@
         "waiting": "Waiting",
         "week": "week",
         "weekly": "Weekly",
-        "weeks": "weeks"
+        "weeks": "weeks",
+        "year": "year",
+        "years": "years"
     },
     "warning": {
         "cannot_delete_self": "Cannot delete logged in user",
@@ -1071,6 +1175,7 @@
         "fuzzy_learn_error": "Fuzzy hash learn error: %s",
         "hash_not_found": "Hash not found or already deleted",
         "ip_invalid": "Skipped invalid IP: %s",
+        "is_not_primary_alias": "Skipped non-primary alias %s",
         "no_active_admin": "Cannot deactivate last active admin",
         "quota_exceeded_scope": "Domain quota exceeded: Only unlimited mailboxes can be created in this domain scope.",
         "session_token": "Form token invalid: Token mismatch",