Compare commits

..

15 Commits

Author SHA1 Message Date
FreddleSpl0it
7ce3b0faed Merge pull request #6719 from mailcow/staging
Update 2025-09
2025-09-10 11:18:17 +02:00
FreddleSpl0it
b1c088a57f Merge pull request #6718 from mailcow/staging
Update 2025-09
2025-09-10 11:05:09 +02:00
FreddleSpl0it
527f27d249 Merge pull request #6632 from mailcow/staging
Update 2025-07
2025-07-15 07:48:37 +02:00
FreddleSpl0it
1994b9895b Merge pull request #6537 from mailcow/staging
Update 2025-05_2
2025-05-13 10:16:30 +02:00
FreddleSpl0it
798e6a4c00 Merge pull request #6535 from mailcow/staging
Update 2025-05
2025-05-13 09:58:32 +02:00
FreddleSpl0it
3f493e043d Merge pull request #6468 from mailcow/staging
Update 2025-03b
2025-04-07 09:09:39 +02:00
FreddleSpl0it
2c47145dee Merge pull request #6419 from mailcow/staging
Update 2025-03a
2025-03-27 09:19:29 +01:00
FreddleSpl0it
c3c68360dc Merge pull request #6391 from mailcow/staging
Update 2025-03
2025-03-25 08:10:50 +01:00
FreddleSpl0it
a632980871 Merge pull request #6336 from mailcow/staging
Update 2025-02
2025-02-27 11:48:57 +01:00
FreddleSpl0it
2d1ef41d32 Merge pull request #6335 from mailcow/staging
Update 2025-02
2025-02-27 11:05:55 +01:00
FreddleSpl0it
120366fec7 Merge pull request #6291 from mailcow/staging
Update 2025-01a
2025-02-04 13:55:30 +01:00
DerLinkman
244d4b8c4c compose: rollback clamd version until next major... accidentally pushed 2025-01-29 13:46:53 +01:00
DerLinkman
f92ddd86c5 clamd: update to 1.4.2 + build from source instead using alpine packages (#6273)
* clamd: update to 1.4.2 + build from source instead using alpine packages

* clamd: remove exposed ports from buildfile

* clamd: cleanup dockerfile
2025-01-29 09:49:04 +01:00
FreddleSpl0it
ba0349a911 Merge pull request #6256 from mailcow/staging
[Nginx] move conf.d include to end of nginx.conf
2025-01-23 14:55:38 +01:00
FreddleSpl0it
8caf09cd80 Merge pull request #6253 from mailcow/staging
2025-01
2025-01-23 12:01:38 +01:00
58 changed files with 621 additions and 2223 deletions

View File

@@ -11,35 +11,22 @@ body:
required: true
- type: checkboxes
attributes:
label: Checklist prior issue creation
description: Prior to creating the issue...
label: I've found a bug and checked that ...
description: Prior to placing the issue, please check following:** *(fill out each checkbox with an `X` once done)*
options:
- label: I understand that failure to follow below instructions may cause this issue to be closed.
- label: ... I understand that not following the below instructions will result in immediate closure and/or deletion of my issue.
required: true
- label: I understand that vague, incomplete or inaccurate information may cause this issue to be closed.
- label: ... I have understood that this bug report is dedicated for bugs, and not for support-related inquiries.
required: true
- label: I understand that this form is intended solely for reporting software bugs and not for support-related inquiries.
- label: ... I have understood that answers are voluntary and community-driven, and not commercial support.
required: true
- label: I understand that all responses are voluntary and community-driven, and do not constitute commercial support.
required: true
- label: I confirm that I have reviewed previous [issues](https://github.com/mailcow/mailcow-dockerized/issues) to ensure this matter has not already been addressed.
required: true
- label: I confirm that my environment meets all [prerequisite requirements](https://docs.mailcow.email/getstarted/prerequisite-system/) as specified in the official documentation.
- label: ... I have verified that my issue has not been already answered in the past. I also checked previous [issues](https://github.com/mailcow/mailcow-dockerized/issues).
required: true
- type: textarea
attributes:
label: Description
description: Please provide a brief description of the bug. If applicable, add screenshots to help explain your problem. (Very useful for bugs in mailcow UI.)
validations:
required: true
- type: textarea
attributes:
label: "Steps to reproduce:"
description: "Please describe the steps to reproduce the bug. Screenshots can be added, if helpful."
placeholder: |-
1. ...
2. ...
3. ...
description: Please provide a brief description of the bug in 1-2 sentences. If applicable, add screenshots to help explain your problem. Very useful for bugs in mailcow UI.
render: plain text
validations:
required: true
- type: textarea
@@ -49,36 +36,45 @@ body:
render: plain text
validations:
required: true
- type: textarea
attributes:
label: "Steps to reproduce:"
description: "Please describe the steps to reproduce the bug. Screenshots can be added, if helpful."
render: plain text
placeholder: |-
1. ...
2. ...
3. ...
validations:
required: true
- type: markdown
attributes:
value: |
## System information
In this stage we would kindly ask you to attach general system information about your setup.
### In this stage we would kindly ask you to attach general system information about your setup.
- type: dropdown
attributes:
label: "Which branch are you using?"
description: "#### Run: `git rev-parse --abbrev-ref HEAD`"
description: "#### `git rev-parse --abbrev-ref HEAD`"
multiple: false
options:
- master (stable)
- staging
- master
- nightly
validations:
required: true
- type: dropdown
attributes:
label: "Which architecture are you using?"
description: "#### Run: `uname -m`"
description: "#### `uname -m`"
multiple: false
options:
- x86_64
- x86
- ARM64 (aarch64)
validations:
required: true
- type: input
attributes:
label: "Operating System:"
description: "#### Run: `lsb_release -ds`"
placeholder: "e.g. Ubuntu 22.04 LTS"
validations:
required: true
@@ -97,44 +93,43 @@ body:
- type: input
attributes:
label: "Virtualization technology:"
description: "LXC and OpenVZ are not supported!"
placeholder: "KVM, VMware ESXi, Xen, etc"
placeholder: "KVM, VMware, Xen, etc - **LXC and OpenVZ are not supported**"
validations:
required: true
- type: input
attributes:
label: "Docker version:"
description: "#### Run: `docker version`"
description: "#### `docker version`"
placeholder: "20.10.21"
validations:
required: true
- type: input
attributes:
label: "docker-compose version or docker compose version:"
description: "#### Run: `docker-compose version` or `docker compose version`"
description: "#### `docker-compose version` or `docker compose version`"
placeholder: "v2.12.2"
validations:
required: true
- type: input
attributes:
label: "mailcow version:"
description: "#### Run: ```git describe --tags `git rev-list --tags --max-count=1` ```"
placeholder: "2022-08x"
description: "#### ```git describe --tags `git rev-list --tags --max-count=1` ```"
placeholder: "2022-08"
validations:
required: true
- type: input
attributes:
label: "Reverse proxy:"
placeholder: "e.g. nginx/Traefik, or none"
placeholder: "e.g. Nginx/Traefik"
validations:
required: true
- type: textarea
attributes:
label: "Logs of git diff:"
description: "#### Output of `git diff origin/master`, any other changes to the code? Sanitize if needed. If so, **please post them**:"
description: "#### Output of `git diff origin/master`, any other changes to the code? If so, **please post them**:"
render: plain text
validations:
required: false
required: true
- type: textarea
attributes:
label: "Logs of iptables -L -vn:"

View File

@@ -14,7 +14,7 @@ jobs:
pull-requests: write
steps:
- name: Mark/Close Stale Issues and Pull Requests 🗑️
uses: actions/stale@v10.1.0
uses: actions/stale@v10.0.0
with:
repo-token: ${{ secrets.STALE_ACTION_PAT }}
days-before-stale: 60

View File

@@ -12,7 +12,7 @@ jobs:
with:
fetch-depth: 0
- name: Run the Action
uses: devops-infra/action-pull-request@v1.0.2
uses: devops-infra/action-pull-request@v0.6.1
with:
github_token: ${{ secrets.PRTONIGHTLY_ACTION_PAT }}
title: Automatic PR to nightly from ${{ github.event.repository.updated_at}}

View File

@@ -17,13 +17,7 @@ caller="${BASH_SOURCE[1]##*/}"
get_installed_tools(){
for bin in openssl curl docker git awk sha1sum grep cut jq; do
if [[ -z $(command -v ${bin}) ]]; then
echo "Error: Cannot find command '${bin}'. Cannot proceed."
echo "Solution: Please review system requirements and install requirements. Then, re-run the script."
echo "See System Requirements: https://docs.mailcow.email/getstarted/install/"
echo "Exiting..."
exit 1
fi
if [[ -z $(command -v ${bin}) ]]; then echo "Cannot find ${bin}, exiting..."; exit 1; fi
done
if grep --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo -e "${LIGHT_RED}BusyBox grep detected, please install gnu grep, \"apk add --no-cache --upgrade grep\"${NC}"; exit 1; fi
@@ -227,4 +221,4 @@ detect_major_update() {
fi
fi
fi
}
}

View File

@@ -5,65 +5,14 @@
# 1) Check if the host supports IPv6
get_ipv6_support() {
# ---- helper: probe external IPv6 connectivity without DNS ----
_probe_ipv6_connectivity() {
# Use literal, always-on IPv6 echo responders (no DNS required)
local PROBE_IPS=("2001:4860:4860::8888" "2606:4700:4700::1111")
local ip rc=1
for ip in "${PROBE_IPS[@]}"; do
if command -v ping6 &>/dev/null; then
ping6 -c1 -W2 "$ip" &>/dev/null || ping6 -c1 -w2 "$ip" &>/dev/null
rc=$?
elif command -v ping &>/dev/null; then
ping -6 -c1 -W2 "$ip" &>/dev/null || ping -6 -c1 -w2 "$ip" &>/dev/null
rc=$?
else
rc=1
fi
[[ $rc -eq 0 ]] && return 0
done
return 1
}
if [[ ! -f /proc/net/if_inet6 ]] || grep -qs '^1' /proc/sys/net/ipv6/conf/all/disable_ipv6 2>/dev/null; then
if grep -qs '^1' /proc/sys/net/ipv6/conf/all/disable_ipv6 2>/dev/null \
|| ! ip -6 route show default &>/dev/null; then
DETECTED_IPV6=false
echo -e "${YELLOW}IPv6 not detected on host ${LIGHT_RED}IPv6 is administratively disabled${YELLOW}.${NC}"
return
echo -e "${YELLOW}IPv6 not detected on host ${LIGHT_RED}disabling IPv6 support${YELLOW}.${NC}"
else
DETECTED_IPV6=true
echo -e "IPv6 detected on host ${LIGHT_GREEN}leaving IPv6 support enabled${YELLOW}.${NC}"
fi
if ip -6 route show default 2>/dev/null | grep -qE '^default'; then
echo -e "${YELLOW}Default IPv6 route found testing external IPv6 connectivity...${NC}"
if _probe_ipv6_connectivity; then
DETECTED_IPV6=true
echo -e "IPv6 detected on host ${LIGHT_GREEN}leaving IPv6 support enabled${YELLOW}.${NC}"
else
DETECTED_IPV6=false
echo -e "${YELLOW}Default IPv6 route present but external IPv6 connectivity failed ${LIGHT_RED}disabling IPv6 support${YELLOW}.${NC}"
fi
return
fi
if ip -6 addr show scope global 2>/dev/null | grep -q 'inet6'; then
DETECTED_IPV6=false
echo -e "${YELLOW}Global IPv6 address present but no default route ${LIGHT_RED}disabling IPv6 support${YELLOW}.${NC}"
return
fi
if ip -6 addr show scope link 2>/dev/null | grep -q 'inet6'; then
echo -e "${YELLOW}Only link-local IPv6 addresses found testing external IPv6 connectivity...${NC}"
if _probe_ipv6_connectivity; then
DETECTED_IPV6=true
echo -e "External IPv6 connectivity available ${LIGHT_GREEN}leaving IPv6 support enabled${YELLOW}.${NC}"
else
DETECTED_IPV6=false
echo -e "${YELLOW}Only link-local IPv6 present and no external connectivity ${LIGHT_RED}disabling IPv6 support${YELLOW}.${NC}"
fi
return
fi
DETECTED_IPV6=false
echo -e "${YELLOW}IPv6 not detected on host ${LIGHT_RED}disabling IPv6 support${YELLOW}.${NC}"
}
# 2) Ensure Docker daemon.json has (or create) the required IPv6 settings
@@ -72,7 +21,7 @@ docker_daemon_edit(){
DOCKER_MAJOR=$(docker version --format '{{.Server.Version}}' 2>/dev/null | cut -d. -f1)
MISSING=()
_has_kv() { grep -Eq "\"$1\"[[:space:]]*:[[:space:]]*$2" "$DOCKER_DAEMON_CONFIG" 2>/dev/null; }
_has_kv() { grep -Eq "\"$1\"\s*:\s*$2" "$DOCKER_DAEMON_CONFIG" 2>/dev/null; }
if [[ -f "$DOCKER_DAEMON_CONFIG" ]]; then
@@ -89,18 +38,12 @@ docker_daemon_edit(){
fi
# Gather missing keys
! _has_kv ipv6 true && MISSING+=("ipv6: true")
# For Docker < 28, keep requiring fixed-cidr-v6 (default bridge needs it on old engines)
if [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 28 ]]; then
! grep -Eq '"fixed-cidr-v6"[[:space:]]*:[[:space:]]*".+"' "$DOCKER_DAEMON_CONFIG" \
&& MISSING+=('fixed-cidr-v6: "fd00:dead:beef:c0::/80"')
fi
# For Docker < 27, ip6tables needed and was tied to experimental in older releases
if [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 27 ]]; then
! _has_kv ipv6 true && MISSING+=("ipv6: true")
! grep -Eq '"fixed-cidr-v6"\s*:\s*".+"' "$DOCKER_DAEMON_CONFIG" \
&& MISSING+=('fixed-cidr-v6: "fd00:dead:beef:c0::/80"')
if [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -le 27 ]]; then
_has_kv ipv6 true && ! _has_kv ip6tables true && MISSING+=("ip6tables: true")
! _has_kv experimental true && MISSING+=("experimental: true")
! _has_kv experimental true && MISSING+=("experimental: true")
fi
# Fix if needed
@@ -117,19 +60,9 @@ docker_daemon_edit(){
cp "$DOCKER_DAEMON_CONFIG" "${DOCKER_DAEMON_CONFIG}.bak"
if command -v jq &>/dev/null; then
TMP=$(mktemp)
# Base filter: ensure ipv6 = true
JQ_FILTER='.ipv6 = true'
# Add fixed-cidr-v6 only for Docker < 28
if [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 28 ]]; then
JQ_FILTER+=' | .["fixed-cidr-v6"] = (.["fixed-cidr-v6"] // "fd00:dead:beef:c0::/80")'
fi
# Add ip6tables/experimental only for Docker < 27
if [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 27 ]]; then
JQ_FILTER+=' | .ip6tables = true | .experimental = true'
fi
JQ_FILTER='.ipv6 = true | .["fixed-cidr-v6"] = "fd00:dead:beef:c0::/80"'
[[ "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 27 ]] \
&& JQ_FILTER+=' | .ip6tables = true | .experimental = true'
jq "$JQ_FILTER" "$DOCKER_DAEMON_CONFIG" >"$TMP" && mv "$TMP" "$DOCKER_DAEMON_CONFIG"
echo -e "${LIGHT_GREEN}daemon.json updated. Restarting Docker...${NC}"
(command -v systemctl &>/dev/null && systemctl restart docker) || service docker restart
@@ -155,7 +88,6 @@ docker_daemon_edit(){
fi
if [[ $ans =~ ^[Yy]$ ]]; then
mkdir -p "$(dirname "$DOCKER_DAEMON_CONFIG")"
if [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 27 ]]; then
cat > "$DOCKER_DAEMON_CONFIG" <<EOF
{
@@ -165,19 +97,12 @@ docker_daemon_edit(){
"experimental": true
}
EOF
elif [[ -n "$DOCKER_MAJOR" && "$DOCKER_MAJOR" -lt 28 ]]; then
else
cat > "$DOCKER_DAEMON_CONFIG" <<EOF
{
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80"
}
EOF
else
# Docker 28+: ipv6 works without fixed-cidr-v6
cat > "$DOCKER_DAEMON_CONFIG" <<EOF
{
"ipv6": true
}
EOF
fi
echo -e "${GREEN}Created $DOCKER_DAEMON_CONFIG with IPv6 settings.${NC}"
@@ -197,7 +122,7 @@ configure_ipv6() {
# detect manual override if mailcow.conf is present
if [[ -n "$MAILCOW_CONF" && -f "$MAILCOW_CONF" ]] && grep -q '^ENABLE_IPV6=' "$MAILCOW_CONF"; then
MANUAL_SETTING=$(grep '^ENABLE_IPV6=' "$MAILCOW_CONF" | cut -d= -f2)
elif [[ -z "$MAILCOW_CONF" ]] && [[ -n "${ENABLE_IPV6:-}" ]]; then
elif [[ -z "$MAILCOW_CONF" ]] && [[ ! -z "${ENABLE_IPV6:-}" ]]; then
MANUAL_SETTING="$ENABLE_IPV6"
else
MANUAL_SETTING=""
@@ -206,34 +131,38 @@ configure_ipv6() {
get_ipv6_support
# if user manually set it, check for mismatch
if [[ "$DETECTED_IPV6" != "true" ]]; then
if [[ -n "$MAILCOW_CONF" && -f "$MAILCOW_CONF" ]]; then
if grep -q '^ENABLE_IPV6=' "$MAILCOW_CONF"; then
sed -i 's/^ENABLE_IPV6=.*/ENABLE_IPV6=false/' "$MAILCOW_CONF"
else
echo "ENABLE_IPV6=false" >> "$MAILCOW_CONF"
fi
if [[ -n "$MANUAL_SETTING" ]]; then
if [[ "$MANUAL_SETTING" == "false" && "$DETECTED_IPV6" == "true" ]]; then
echo -e "${RED}ERROR: You have ENABLE_IPV6=false but your host and Docker support IPv6.${NC}"
echo -e "${RED}This can create an open relay. Please set ENABLE_IPV6=true in your mailcow.conf and re-run.${NC}"
exit 1
elif [[ "$MANUAL_SETTING" == "true" && "$DETECTED_IPV6" == "false" ]]; then
echo -e "${RED}ERROR: You have ENABLE_IPV6=true but your host does not support IPv6.${NC}"
echo -e "${RED}Please disable or fix your host/Docker IPv6 support, or set ENABLE_IPV6=false.${NC}"
exit 1
else
export IPV6_BOOL=false
return
fi
echo "Skipping Docker IPv6 configuration because host does not support IPv6."
echo "Make sure to check if your docker daemon.json does not include \"enable_ipv6\": true if you do not want IPv6."
echo "IPv6 configuration complete: ENABLE_IPV6=false"
sleep 2
return
fi
docker_daemon_edit
# no manual override: proceed to set or export
if [[ "$DETECTED_IPV6" == "true" ]]; then
docker_daemon_edit
else
echo "Skipping Docker IPv6 configuration because host does not support IPv6."
fi
# now write into mailcow.conf or export
if [[ -n "$MAILCOW_CONF" && -f "$MAILCOW_CONF" ]]; then
LINE="ENABLE_IPV6=$DETECTED_IPV6"
if grep -q '^ENABLE_IPV6=' "$MAILCOW_CONF"; then
sed -i 's/^ENABLE_IPV6=.*/ENABLE_IPV6=true/' "$MAILCOW_CONF"
sed -i "s/^ENABLE_IPV6=.*/$LINE/" "$MAILCOW_CONF"
else
echo "ENABLE_IPV6=true" >> "$MAILCOW_CONF"
echo "$LINE" >> "$MAILCOW_CONF"
fi
else
export IPV6_BOOL=true
export IPV6_BOOL="$DETECTED_IPV6"
fi
echo "IPv6 configuration complete: ENABLE_IPV6=true"
echo "IPv6 configuration complete: ENABLE_IPV6=$DETECTED_IPV6"
}

View File

@@ -43,7 +43,6 @@ adapt_new_options() {
"ALLOW_ADMIN_EMAIL_LOGIN"
"SKIP_HTTP_VERIFICATION"
"SOGO_EXPIRE_SESSION"
"SOGO_URL_ENCRYPTION_KEY"
"REDIS_PORT"
"REDISPASS"
"DOVECOT_MASTER_USER"
@@ -95,6 +94,7 @@ adapt_new_options() {
echo '# Max log lines per service to keep in Redis logs' >> mailcow.conf
echo "LOG_LINES=9999" >> mailcow.conf
;;
IPV4_NETWORK)
echo '# Internal IPv4 /24 subnet, format n.n.n. (expands to n.n.n.0/24)' >> mailcow.conf
echo "IPV4_NETWORK=172.22.1" >> mailcow.conf
@@ -276,22 +276,21 @@ adapt_new_options() {
echo '# A COMPLETE DOCKER STACK REBUILD (compose down && compose up -d) IS NEEDED TO APPLY THIS.' >> mailcow.conf
echo ENABLE_IPV6=${IPV6_BOOL} >> mailcow.conf
;;
SKIP_CLAMD)
echo '# Skip ClamAV (clamd-mailcow) anti-virus (Rspamd will auto-detect a missing ClamAV container) - y/n' >> mailcow.conf
echo 'SKIP_CLAMD=n' >> mailcow.conf
;;
SKIP_OLEFY)
echo '# Skip Olefy (olefy-mailcow) anti-virus for Office documents (Rspamd will auto-detect a missing Olefy container) - y/n' >> mailcow.conf
echo 'SKIP_OLEFY=n' >> mailcow.conf
;;
REDISPASS)
echo "REDISPASS=$(LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 2>/dev/null | head -c 28)" >> mailcow.conf
;;
SOGO_URL_ENCRYPTION_KEY)
echo '# SOGo URL encryption key (exactly 16 characters, limited to AZ, az, 09)' >> mailcow.conf
echo '# This key is used to encrypt email addresses within SOGo URLs' >> mailcow.conf
echo "SOGO_URL_ENCRYPTION_KEY=$(LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 2>/dev/null | head -c 16)" >> mailcow.conf
;;
*)
echo "${option}=" >> mailcow.conf
;;

View File

@@ -1,3 +1,3 @@
FROM debian:trixie-slim
FROM debian:bookworm-slim
RUN apt update && apt install pigz -y --no-install-recommends

View File

@@ -1,6 +1,6 @@
#!/bin/sh
backend=nftables
backend=iptables
nft list table ip filter &>/dev/null
nftables_found=$?

View File

@@ -449,11 +449,6 @@ if __name__ == '__main__':
tables = NFTables(chain_name, logger)
else:
logger.logInfo('Using IPTables backend')
logger.logWarn(
"DEPRECATION: iptables-legacy is deprecated and will be removed in future releases. "
"Please switch to nftables on your host to ensure complete compatibility."
)
time.sleep(5)
tables = IPTables(chain_name, logger)
clear()

View File

@@ -1,6 +1,5 @@
import time
import json
import datetime
class Logger:
def __init__(self):
@@ -9,28 +8,17 @@ class Logger:
def set_redis(self, redis):
self.r = redis
def _format_timestamp(self):
# Local time with milliseconds
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def log(self, priority, message):
# build redis-friendly dict
tolog = {
'time': int(round(time.time())), # keep raw timestamp for Redis
'priority': priority,
'message': message
}
# print human-readable message with timestamp
ts = self._format_timestamp()
print(f"{ts} {priority.upper()}: {message}", flush=True)
# also push JSON to Redis if connected
tolog = {}
tolog['time'] = int(round(time.time()))
tolog['priority'] = priority
tolog['message'] = message
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(f'{ts} WARN: Failed logging to redis: {ex}', flush=True)
print('Failed logging to redis: %s' % (ex))
def logWarn(self, message):
self.log('warn', message)
@@ -39,4 +27,4 @@ class Logger:
self.log('crit', message)
def logInfo(self, message):
self.log('info', message)
self.log('info', message)

View File

@@ -10,7 +10,7 @@ def includes_conf(env, template_vars):
server_name_config = f"server_name {template_vars['MAILCOW_HOSTNAME']} autodiscover.* autoconfig.* {' '.join(template_vars['ADDITIONAL_SERVER_NAMES'])};"
listen_plain_config = f"listen {template_vars['HTTP_PORT']};"
listen_ssl_config = f"listen {template_vars['HTTPS_PORT']};"
if template_vars['ENABLE_IPV6']:
if not template_vars['ENABLE_IPV6']:
listen_plain_config += f"\nlisten [::]:{template_vars['HTTP_PORT']};"
listen_ssl_config += f"\nlisten [::]:{template_vars['HTTPS_PORT']} ssl;"
listen_ssl_config += "\nhttp2 on;"

View File

@@ -3,11 +3,11 @@ FROM php:8.2-fpm-alpine3.21
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
# renovate: datasource=github-tags depName=krakjoe/apcu versioning=semver-coerced extractVersion=^v(?<version>.*)$
ARG APCU_PECL_VERSION=5.1.27
ARG APCU_PECL_VERSION=5.1.26
# renovate: datasource=github-tags depName=Imagick/imagick versioning=semver-coerced extractVersion=(?<version>.*)$
ARG IMAGICK_PECL_VERSION=3.8.0
# renovate: datasource=github-tags depName=php/pecl-mail-mailparse versioning=semver-coerced extractVersion=^v(?<version>.*)$
ARG MAILPARSE_PECL_VERSION=3.1.9
ARG MAILPARSE_PECL_VERSION=3.1.8
# renovate: datasource=github-tags depName=php-memcached-dev/php-memcached versioning=semver-coerced extractVersion=^v(?<version>.*)$
ARG MEMCACHED_PECL_VERSION=3.3.0
# renovate: datasource=github-tags depName=phpredis/phpredis versioning=semver-coerced extractVersion=(?<version>.*)$

View File

@@ -2,7 +2,7 @@ FROM debian:bookworm-slim
LABEL maintainer="The Infrastructure Company GmbH <info@servercow.de>"
ARG DEBIAN_FRONTEND=noninteractive
ARG RSPAMD_VER=rspamd_3.13.2-1~8bf602278
ARG RSPAMD_VER=rspamd_3.12.1-1~6dbfca2fa
ARG CODENAME=bookworm
ENV LC_ALL=C
@@ -14,8 +14,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
dnsutils \
netcat-traditional \
wget \
redis-tools \
procps \
redis-tools \
procps \
nano \
lua-cjson \
&& arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \

View File

@@ -24,10 +24,6 @@ while [[ "${DBV_NOW}" != "${DBV_NEW}" ]]; do
done
echo "DB schema is ${DBV_NOW}"
if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
mariadb --skip-ssl --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "DROP TRIGGER IF EXISTS sogo_update_password"
fi
# cat /dev/urandom seems to hang here occasionally and is not recommended anyway, better use openssl
RAND_PASS=$(openssl rand -base64 16 | tr -dc _A-Z-a-z-0-9)
@@ -50,10 +46,6 @@ cat <<EOF > /var/lib/sogo/GNUstep/Defaults/sogod.plist
<string>YES</string>
<key>SOGoEncryptionKey</key>
<string>${RAND_PASS}</string>
<key>SOGoURLEncryptionEnabled</key>
<string>YES</string>
<key>SOGoURLEncryptionPassphrase</key>
<string>${SOGO_URL_ENCRYPTION_KEY}</string>
<key>OCSAdminURL</key>
<string>mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_admin</string>
<key>OCSCacheFolderURL</key>

View File

@@ -78,7 +78,7 @@ http {
{%endif%}
listen {{ HTTPS_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%} ssl;
{% if ENABLE_IPV6 %}
{% if not DISABLE_IPv6 %}
{% if not HTTP_REDIRECT %}
listen [::]:{{ HTTP_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%};
{%endif%}
@@ -105,7 +105,7 @@ http {
{%endif%}
listen {{ HTTPS_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%} ssl;
{% if ENABLE_IPV6 %}
{% if not DISABLE_IPv6 %}
{% if not HTTP_REDIRECT %}
listen [::]:{{ HTTP_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%};
{%endif%}
@@ -126,7 +126,7 @@ http {
# rspamd dynmaps:
server {
listen 8081;
{% if ENABLE_IPV6 %}
{% if not DISABLE_IPv6 %}
listen [::]:8081;
{%endif%}
index index.php index.html;
@@ -199,7 +199,7 @@ http {
{%endif%}
listen {{ HTTPS_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%} ssl;
{% if ENABLE_IPV6 %}
{% if not DISABLE_IPv6 %}
{% if not HTTP_REDIRECT %}
listen [::]:{{ HTTP_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%};
{%endif%}

View File

@@ -1,16 +1,7 @@
; NOTE: Restart phpfpm on ANY manual changes to PHP files!
; opcache
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.validate_timestamps=0
; JIT
; Disabled for now due to some PHP segmentation faults observed
; in certain environments. Possibly some PHP or PHP extension bug.
opcache.jit=disable
opcache.jit_buffer_size=0
opcache.revalidate_freq=1

View File

@@ -1,13 +1,12 @@
# Whitelist generated by Postwhite v3.4 on Sat Nov 1 00:21:43 UTC 2025
# Whitelist generated by Postwhite v3.4 on Mon Sep 1 00:23:07 UTC 2025
# https://github.com/stevejenkins/postwhite/
# 2161 total rules
# 2165 total rules
2a00:1450:4000::/36 permit
2a01:111:f400::/48 permit
2a01:111:f403:2800::/53 permit
2a01:111:f403:8000::/51 permit
2a01:111:f403::/49 permit
2a01:111:f403:8000::/50 permit
2a01:111:f403:8000::/51 permit
2a01:111:f403:c000::/51 permit
2a01:111:f403:d000::/53 permit
2a01:111:f403:f000::/52 permit
2a01:238:20a:202:5370::1 permit
2a01:238:20a:202:5372::1 permit
@@ -50,11 +49,13 @@
8.25.194.0/23 permit
8.25.196.0/23 permit
8.36.116.0/24 permit
8.39.54.0/23 permit
8.39.54.250/31 permit
8.39.144.0/24 permit
8.40.222.0/23 permit
8.40.222.250/31 permit
12.130.86.238 permit
13.107.213.69 permit
13.107.246.69 permit
13.108.16.0/20 permit
13.107.246.40 permit
13.110.208.0/21 permit
13.110.209.0/24 permit
13.110.216.0/22 permit
@@ -166,13 +167,13 @@
34.215.104.144 permit
34.218.115.239 permit
34.225.212.172 permit
34.241.242.183 permit
35.83.148.184 permit
35.155.198.111 permit
35.158.23.94 permit
35.161.32.253 permit
35.162.73.231 permit
35.167.93.243 permit
35.174.145.124 permit
35.176.132.251 permit
35.205.92.9 permit
35.228.216.85 permit
@@ -182,6 +183,7 @@
37.218.249.47 permit
37.218.251.62 permit
39.156.163.64/29 permit
40.90.65.81 permit
40.92.0.0/15 permit
40.92.0.0/16 permit
40.107.0.0/16 permit
@@ -189,6 +191,7 @@
40.233.64.216 permit
40.233.83.78 permit
40.233.88.28 permit
43.239.212.33 permit
44.206.138.57 permit
44.210.169.44 permit
44.217.45.156 permit
@@ -268,8 +271,12 @@
50.56.130.221 permit
50.56.130.222 permit
50.112.246.219 permit
51.77.79.158 permit
51.83.17.38 permit
51.89.119.103 permit
52.1.14.157 permit
52.5.230.59 permit
52.6.74.205 permit
52.12.53.23 permit
52.13.214.179 permit
52.26.1.71 permit
@@ -296,6 +303,7 @@
52.96.91.34 permit
52.96.111.82 permit
52.96.172.98 permit
52.96.214.50 permit
52.96.222.194 permit
52.96.222.226 permit
52.96.223.2 permit
@@ -316,6 +324,8 @@
52.234.172.96/28 permit
52.235.253.128 permit
52.236.28.240/28 permit
54.36.149.183 permit
54.38.221.122 permit
54.90.148.255 permit
54.165.19.38 permit
54.174.52.0/24 permit
@@ -334,6 +344,7 @@
54.244.54.130 permit
54.244.242.0/24 permit
54.255.61.23 permit
56.124.6.228 permit
57.103.64.0/18 permit
57.129.93.249 permit
62.13.128.0/24 permit
@@ -418,6 +429,7 @@
65.110.161.77 permit
65.123.29.213 permit
65.123.29.220 permit
65.154.166.0/24 permit
65.212.180.36 permit
66.102.0.0/20 permit
66.119.150.192/26 permit
@@ -674,8 +686,6 @@
82.165.159.45 permit
82.165.159.130 permit
82.165.159.131 permit
85.9.206.169 permit
85.9.210.45 permit
85.158.136.0/21 permit
85.215.255.39 permit
85.215.255.40 permit
@@ -1224,12 +1234,16 @@
99.83.190.102 permit
103.9.96.0/22 permit
103.28.42.0/24 permit
103.122.78.238 permit
103.151.192.0/23 permit
103.168.172.128/27 permit
103.237.104.0/22 permit
104.43.243.237 permit
104.44.112.128/25 permit
104.47.0.0/17 permit
104.47.20.0/23 permit
104.47.75.0/24 permit
104.47.108.0/23 permit
104.130.96.0/28 permit
104.130.122.0/23 permit
106.10.144.64/27 permit
@@ -1364,6 +1378,7 @@
108.174.6.215 permit
108.175.18.45 permit
108.175.30.45 permit
108.177.96.0/20 permit
108.179.144.0/20 permit
109.224.244.0/24 permit
109.237.142.0/24 permit
@@ -1389,6 +1404,9 @@
117.120.16.0/21 permit
119.42.242.52/31 permit
119.42.242.156 permit
121.244.91.48 permit
121.244.91.52 permit
122.15.156.182 permit
123.126.78.64/29 permit
124.108.96.24/31 permit
124.108.96.28/31 permit
@@ -1416,7 +1434,6 @@
128.245.248.0/21 permit
129.41.77.70 permit
129.41.169.249 permit
129.77.16.0/20 permit
129.80.5.164 permit
129.80.64.36 permit
129.80.67.121 permit
@@ -1453,8 +1470,21 @@
134.170.141.64/26 permit
134.170.143.0/24 permit
134.170.174.0/24 permit
135.84.80.0/24 permit
135.84.81.0/24 permit
135.84.82.0/24 permit
135.84.83.0/24 permit
135.84.216.0/22 permit
136.146.128.0/20 permit
136.143.160.0/24 permit
136.143.161.0/24 permit
136.143.162.0/24 permit
136.143.176.0/24 permit
136.143.177.0/24 permit
136.143.178.49 permit
136.143.182.0/23 permit
136.143.184.0/24 permit
136.143.188.0/24 permit
136.143.190.0/23 permit
136.147.128.0/20 permit
136.147.135.0/24 permit
136.147.176.0/20 permit
@@ -1469,6 +1499,7 @@
139.138.46.219 permit
139.138.57.55 permit
139.138.58.119 permit
139.167.79.86 permit
139.180.17.0/24 permit
140.238.148.191 permit
141.148.159.229 permit
@@ -1513,7 +1544,6 @@
148.105.0.0/16 permit
148.105.8.0/21 permit
149.72.0.0/16 permit
149.72.234.184 permit
149.72.248.236 permit
149.97.173.180 permit
150.230.98.160 permit
@@ -1569,7 +1599,6 @@
159.183.0.0/16 permit
159.183.68.71 permit
159.183.79.38 permit
159.183.129.172 permit
160.1.62.192 permit
161.38.192.0/20 permit
161.38.204.0/22 permit
@@ -1587,10 +1616,12 @@
163.114.134.16 permit
163.114.135.16 permit
163.116.128.0/17 permit
163.192.116.87 permit
164.152.23.32 permit
164.152.25.241 permit
164.177.132.168/30 permit
165.173.128.0/24 permit
165.173.180.250/31 permit
165.173.182.250/31 permit
166.78.68.0/22 permit
166.78.68.221 permit
166.78.69.169 permit
@@ -1620,12 +1651,26 @@
168.245.12.252 permit
168.245.46.9 permit
168.245.127.231 permit
169.148.129.0/24 permit
169.148.131.0/24 permit
169.148.138.0/24 permit
169.148.142.10 permit
169.148.144.0/25 permit
169.148.144.10 permit
169.148.146.0/23 permit
169.148.175.3 permit
169.148.188.0/24 permit
169.148.188.182 permit
170.10.128.0/24 permit
170.10.129.0/24 permit
170.10.132.56/29 permit
170.10.132.64/29 permit
170.10.133.0/24 permit
172.217.32.0/21 permit
172.217.0.0/20 permit
172.217.32.0/20 permit
172.217.128.0/19 permit
172.217.160.0/20 permit
172.217.192.0/19 permit
172.253.56.0/21 permit
172.253.112.0/20 permit
173.0.84.0/29 permit
@@ -1805,7 +1850,16 @@
199.16.156.0/22 permit
199.33.145.1 permit
199.33.145.32 permit
199.34.22.36 permit
199.59.148.0/22 permit
199.67.80.2 permit
199.67.80.20 permit
199.67.82.2 permit
199.67.82.20 permit
199.67.84.0/24 permit
199.67.86.0/24 permit
199.67.88.0/24 permit
199.67.90.0/24 permit
199.101.161.130 permit
199.101.162.0/25 permit
199.122.120.0/21 permit
@@ -1862,6 +1916,8 @@
204.92.114.187 permit
204.92.114.203 permit
204.92.114.204/31 permit
204.141.32.0/23 permit
204.141.42.0/23 permit
204.216.164.202 permit
204.220.160.0/21 permit
204.220.168.0/21 permit
@@ -2149,18 +2205,21 @@
2603:1030:20e:3::23c permit
2603:1030:b:3::152 permit
2603:1030:c02:8::14 permit
2607:13c0:0001:0000:0000:0000:0000:7000/116 permit
2607:13c0:0002:0000:0000:0000:0000:1000/116 permit
2607:13c0:0004:0000:0000:0000:0000:0000/116 permit
2607:f8b0:4000::/36 permit
2620:109:c003:104::/64 permit
2620:109:c003:104::215 permit
2620:109:c006:104::/64 permit
2620:109:c003:104::/64 permit
2620:109:c006:104::215 permit
2620:109:c006:104::/64 permit
2620:109:c00d:104::/64 permit
2620:10d:c090:400::8:1 permit
2620:10d:c091:400::8:1 permit
2620:10d:c09b:400::8:1 permit
2620:10d:c09c:400::8:1 permit
2620:119:50c0:207::/64 permit
2620:119:50c0:207::215 permit
2620:119:50c0:207::/64 permit
2800:3f0:4000::/36 permit
49.12.4.251 permit # checks.mailcow.email
2a01:4f8:c17:7906::10 permit # checks.mailcow.email

View File

@@ -133,7 +133,7 @@ try {
error_log("ALIAS EXPANDER: http pipe: goto address " . $goto . " is an alias branch for " . $goto_branch . PHP_EOL);
$goto_branch_array = explode(',', $goto_branch);
} else {
$stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` = :domain AND `active` = '1'");
$stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` = :domain AND `active` AND '1'");
$stmt->execute(array(':domain' => $parsed_goto['domain']));
$goto_branch = $stmt->fetch(PDO::FETCH_ASSOC)['target_domain'];
if ($goto_branch) {

View File

@@ -182,7 +182,7 @@ foreach (json_decode($rcpts, true) as $rcpt) {
error_log("RCPT RESOVLER: http pipe: goto address " . $goto . " is an alias branch for " . $goto_branch . PHP_EOL);
$goto_branch_array = explode(',', $goto_branch);
} else {
$stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` = :domain AND `active` = '1'");
$stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` = :domain AND `active` AND '1'");
$stmt->execute(array(':domain' => $parsed_goto['domain']));
$goto_branch = $stmt->fetch(PDO::FETCH_ASSOC)['target_domain'];
if ($goto_branch) {

View File

@@ -167,7 +167,7 @@ foreach (json_decode($rcpts, true) as $rcpt) {
error_log("RCPT RESOVLER: http pipe: goto address " . $goto . " is an alias branch for " . $goto_branch . PHP_EOL);
$goto_branch_array = explode(',', $goto_branch);
} else {
$stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` = :domain AND `active` = '1'");
$stmt = $pdo->prepare("SELECT `target_domain` FROM `alias_domain` WHERE `alias_domain` = :domain AND `active` AND '1'");
$stmt->execute(array(':domain' => $parsed_goto['domain']));
$goto_branch = $stmt->fetch(PDO::FETCH_ASSOC)['target_domain'];
if ($goto_branch) {

View File

@@ -7,8 +7,6 @@ if(file_exists('inc/vars.local.inc.php')) {
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/functions.inc.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/functions.auth.inc.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/sessions.inc.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/functions.mailbox.inc.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/functions.ratelimit.inc.php';
$default_autodiscover_config = $autodiscover_config;
$autodiscover_config = array_merge($default_autodiscover_config, $autodiscover_config);

View File

@@ -1,7 +1,7 @@
<?php
function app_passwd($_action, $_data = null) {
global $pdo;
global $lang;
global $pdo;
global $lang;
$_data_log = $_data;
!isset($_data_log['app_passwd']) ?: $_data_log['app_passwd'] = '*';
!isset($_data_log['app_passwd2']) ?: $_data_log['app_passwd2'] = '*';
@@ -43,7 +43,20 @@ function app_passwd($_action, $_data = null) {
);
return false;
}
if (password_check($password, $password2) !== true) {
if (!preg_match('/' . $GLOBALS['PASSWD_REGEP'] . '/', $password)) {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_data_log),
'msg' => 'password_complexity'
);
return false;
}
if ($password != $password2) {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_data_log),
'msg' => 'password_mismatch'
);
return false;
}
$password_hashed = hash_password($password);
@@ -75,15 +88,15 @@ function app_passwd($_action, $_data = null) {
'log' => array(__FUNCTION__, $_action, $_data_log),
'msg' => 'app_passwd_added'
);
break;
break;
case 'edit':
$ids = (array)$_data['id'];
foreach ($ids as $id) {
$is_now = app_passwd('details', $id);
if (!empty($is_now)) {
$app_name = (!empty($_data['app_name'])) ? $_data['app_name'] : $is_now['name'];
$password = (!empty($_data['app_passwd'])) ? $_data['app_passwd'] : null;
$password2 = (!empty($_data['app_passwd2'])) ? $_data['app_passwd2'] : null;
$password = (!empty($_data['password'])) ? $_data['password'] : null;
$password2 = (!empty($_data['password2'])) ? $_data['password2'] : null;
if (isset($_data['protocols'])) {
$protocols = (array)$_data['protocols'];
$imap_access = (in_array('imap_access', $protocols)) ? 1 : 0;
@@ -113,7 +126,20 @@ function app_passwd($_action, $_data = null) {
}
$app_name = htmlspecialchars(trim($app_name));
if (!empty($password) && !empty($password2)) {
if (password_check($password, $password2) !== true) {
if (!preg_match('/' . $GLOBALS['PASSWD_REGEP'] . '/', $password)) {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => 'password_complexity'
);
continue;
}
if ($password != $password2) {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
'msg' => 'password_mismatch'
);
continue;
}
$password_hashed = hash_password($password);
@@ -156,7 +182,7 @@ function app_passwd($_action, $_data = null) {
'msg' => array('object_modified', htmlspecialchars(implode(', ', $ids)))
);
}
break;
break;
case 'delete':
$ids = (array)$_data['id'];
foreach ($ids as $id) {
@@ -187,17 +213,19 @@ function app_passwd($_action, $_data = null) {
'msg' => array('app_passwd_removed', htmlspecialchars($id))
);
}
break;
break;
case 'get':
$app_passwds = array();
$stmt = $pdo->prepare("SELECT `id`, `name` FROM `app_passwd` WHERE `mailbox` = :username");
$stmt->execute(array(':username' => $username));
$app_passwds = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $app_passwds;
break;
break;
case 'details':
$app_passwd_data = array();
$stmt = $pdo->prepare("SELECT * FROM `app_passwd` WHERE `id` = :id");
$stmt = $pdo->prepare("SELECT *
FROM `app_passwd`
WHERE `id` = :id");
$stmt->execute(array(':id' => $_data));
$app_passwd_data = $stmt->fetch(PDO::FETCH_ASSOC);
if (empty($app_passwd_data)) {
@@ -209,6 +237,6 @@ function app_passwd($_action, $_data = null) {
}
$app_passwd_data['name'] = htmlspecialchars(trim($app_passwd_data['name']));
return $app_passwd_data;
break;
break;
}
}

View File

@@ -325,10 +325,8 @@ function customize($_action, $_item, $_data = null) {
break;
case 'ui_texts':
try {
$mailcow_hostname = strtolower(getenv("MAILCOW_HOSTNAME"));
$data['title_name'] = ($title_name = $redis->get('TITLE_NAME')) ? $title_name : "$mailcow_hostname - mail UI";
$data['main_name'] = ($main_name = $redis->get('MAIN_NAME')) ? $main_name : "$mailcow_hostname - mail UI";
$data['title_name'] = ($title_name = $redis->get('TITLE_NAME')) ? $title_name : 'mailcow UI';
$data['main_name'] = ($main_name = $redis->get('MAIN_NAME')) ? $main_name : 'mailcow UI';
$data['apps_name'] = ($apps_name = $redis->get('APPS_NAME')) ? $apps_name : $lang['header']['apps'];
$data['help_text'] = ($help_text = $redis->get('HELP_TEXT')) ? $help_text : false;
if (!empty($redis->get('UI_IMPRESS'))) {

View File

@@ -1006,7 +1006,7 @@ function edit_user_account($_data) {
update_sogo_static_view();
}
// edit password recovery email
elseif (!empty($password_old) && isset($pw_recovery_email)) {
elseif (isset($pw_recovery_email)) {
if (!isset($_SESSION['acl']['pw_reset']) || $_SESSION['acl']['pw_reset'] != "1" ) {
$_SESSION['return'][] = array(
'type' => 'danger',
@@ -1016,21 +1016,6 @@ function edit_user_account($_data) {
return false;
}
$stmt = $pdo->prepare("SELECT `password` FROM `mailbox`
WHERE `kind` NOT REGEXP 'location|thing|group'
AND `username` = :user AND authsource = 'mailcow'");
$stmt->execute(array(':user' => $username));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!verify_hash($row['password'], $password_old)) {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_data_log),
'msg' => 'access_denied'
);
return false;
}
$pw_recovery_email = (!filter_var($pw_recovery_email, FILTER_VALIDATE_EMAIL)) ? '' : $pw_recovery_email;
$stmt = $pdo->prepare("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.recovery_email', :recovery_email)
WHERE `username` = :username AND authsource = 'mailcow'");
@@ -1122,21 +1107,11 @@ function user_get_alias_details($username) {
}
return $data;
}
function is_valid_domain_name($domain_name, $options = array()) {
function is_valid_domain_name($domain_name) {
if (empty($domain_name)) {
return false;
}
// Convert domain name to ASCII for validation
$domain_name = idn_to_ascii($domain_name, 0, INTL_IDNA_VARIANT_UTS46);
if (isset($options['allow_wildcard']) && $options['allow_wildcard'] == true) {
// Remove '*.' if wildcard subdomains are allowed
if (strpos($domain_name, '*.') === 0) {
$domain_name = substr($domain_name, 2);
}
}
return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name)
&& preg_match("/^.{1,253}$/", $domain_name)
&& preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name));

View File

@@ -1446,7 +1446,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
}
foreach ($mx as $index => $mx_domain) {
$mx_domain = idn_to_ascii(strtolower(trim($mx_domain)), 0, INTL_IDNA_VARIANT_UTS46);
if (!is_valid_domain_name($mx_domain, array('allow_wildcard' => true))) {
if (!is_valid_domain_name($mx_domain)) {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_type, $_data, $_attr),
@@ -3897,7 +3897,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
foreach ($mx as $index => $mx_domain) {
$mx_domain = idn_to_ascii(strtolower(trim($mx_domain)), 0, INTL_IDNA_VARIANT_UTS46);
$invalid_mx = false;
if (!is_valid_domain_name($mx_domain, array('allow_wildcard' => true))) {
if (!is_valid_domain_name($mx_domain)) {
$invalid_mx = $mx_domain;
break;
}

View File

@@ -62,11 +62,7 @@ if ($app_links_processed){
}
}
// Workaround to get text with <br> straight to twig.
// Using "nl2br" doesn't work with Twig as it would escape everything by default.
if (isset($UI_TEXTS["ui_footer"])) {
$UI_TEXTS["ui_footer"] = nl2br($UI_TEXTS["ui_footer"]);
}
$globalVariables = [
'mailcow_hostname' => getenv('MAILCOW_HOSTNAME'),

View File

@@ -4,7 +4,7 @@ function init_db_schema()
try {
global $pdo;
$db_version = "07102025_1015";
$db_version = "19082025_1436";
$stmt = $pdo->query("SHOW TABLES LIKE 'versions'");
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
@@ -1337,14 +1337,6 @@ function init_db_schema()
$pdo->query($create);
}
// Clear old app_passwd log entries
$pdo->exec("DELETE FROM logs
WHERE role != 'unauthenticated'
AND JSON_EXTRACT(`call`, '$[0]') = 'app_passwd'
AND JSON_EXTRACT(`call`, '$[1]') = 'edit'
AND (JSON_CONTAINS_PATH(`call`, 'one', '$[2].password')
OR JSON_CONTAINS_PATH(`call`, 'one', '$[2].password2'));");
// Mitigate imapsync argument injection issue
$pdo->query("UPDATE `imapsync` SET `custom_params` = ''
WHERE `custom_params` LIKE '%pipemess%'

View File

@@ -1,9 +1,7 @@
<?php
// Start session
if (session_status() !== PHP_SESSION_ACTIVE) {
session_name($SESSION_NAME);
ini_set("session.cookie_httponly", 1);
ini_set("session.cookie_samesite", $SESSION_SAMESITE_POLICY);
ini_set('session.gc_maxlifetime', $SESSION_LIFETIME);
}

View File

@@ -80,7 +80,7 @@ if (isset($_POST["verify_tfa_login"])) {
intval($user_details['attributes']['force_pw_update']) != 1 &&
getenv('SKIP_SOGO') != "y" &&
!$is_dual) {
header("Location: /SOGo/so/");
header("Location: /SOGo/so/{$_SESSION['mailcow_cc_username']}");
die();
} else {
header("Location: /user");
@@ -146,7 +146,7 @@ if (isset($_POST["login_user"]) && isset($_POST["pass_user"])) {
intval($user_details['attributes']['force_pw_update']) != 1 &&
getenv('SKIP_SOGO') != "y" &&
!$is_dual) {
header("Location: /SOGo/so/");
header("Location: /SOGo/so/{$login_user}");
die();
} else {
header("Location: /user");

View File

@@ -85,7 +85,7 @@ $AVAILABLE_LANGUAGES = array(
// 'ca-es' => 'Català (Catalan)',
'bg-bg' => 'Български (Bulgarian)',
'cs-cz' => 'Čeština (Czech)',
'da-dk' => 'Dansk (Danish)',
'da-dk' => 'Danish (Dansk)',
'de-de' => 'Deutsch (German)',
'en-gb' => 'English',
'es-es' => 'Español (Spanish)',
@@ -110,7 +110,6 @@ $AVAILABLE_LANGUAGES = array(
'sv-se' => 'Svenska (Swedish)',
'tr-tr' => 'Türkçe (Turkish)',
'uk-ua' => 'Українська (Ukrainian)',
'vi-vn' => 'Tiếng Việt (Vietnamese)',
'zh-cn' => '简体中文 (Simplified Chinese)',
'zh-tw' => '繁體中文 (Traditional Chinese)',
);
@@ -154,13 +153,6 @@ $LOG_PAGINATION_SIZE = 50;
// Session lifetime in seconds
$SESSION_LIFETIME = 10800;
// Session SameSite Policy
// Use "None", "Lax" or "Strict"
$SESSION_SAMESITE_POLICY = "Lax";
// Name of the session cookie
$SESSION_NAME = "MCSESSID";
// Label for OTP devices
$OTP_LABEL = "mailcow UI";

View File

@@ -12,7 +12,7 @@ elseif (isset($_SESSION['mailcow_cc_role']) && $_SESSION['mailcow_cc_role'] == '
$user_details = mailbox("get", "mailbox_details", $_SESSION['mailcow_cc_username']);
$is_dual = (!empty($_SESSION["dual-login"]["username"])) ? true : false;
if (intval($user_details['attributes']['sogo_access']) == 1 && !$is_dual && getenv('SKIP_SOGO') != "y") {
header("Location: /SOGo/so/");
header("Location: /SOGo/so/{$_SESSION['mailcow_cc_username']}");
} else {
header("Location: /user");
}

View File

@@ -22,8 +22,8 @@ $(document).ready(function() {
$.notify({message: msg},{z_index: 20000, delay: auto_hide, type: type,placement: {from: "bottom",align: "right"},animate: {enter: 'animated fadeInUp',exit: 'animated fadeOutDown'}});
}
$(".generate_password").click(async function( event ) {
try {
$(".generate_password").click(async function( event ) {
try {
var password_policy = await window.fetch("/api/v1/get/passwordpolicy", { method:'GET', cache:'no-cache' });
var password_policy = await password_policy.json();
random_passwd_length = password_policy.length;
@@ -48,11 +48,7 @@ $(document).ready(function() {
})
}
$(".rot-enc").html(function(){
footer_html = $(this).html();
footer_html = footer_html.replace(/&lt;/g, '<').replace(/&gt;/g, '>')
.replace(/&amp;/g, '&').replace(/&nzc;/g, '&')
.replace(/&quot;/g, '"').replace(/&#x27;/g, "'");
return str_rot13(footer_html)
return str_rot13($(this).html())
});
// https://stackoverflow.com/questions/4399005/implementing-jquerys-shake-effect-with-animate
function shake(div,interval,distance,times) {
@@ -129,7 +125,7 @@ $(document).ready(function() {
}
});
})();
// responsive tabs, scroll to opened tab
$(document).on("shown.bs.collapse shown.bs.tab", function (e) {
var target = $(e.target);
@@ -413,4 +409,4 @@ function copyToClipboard(id) {
// only works with https connections
navigator.clipboard.writeText(copyText.value);
mailcow_alert_box(lang.copy_to_clipboard, "success");
}
}

View File

@@ -715,6 +715,7 @@ jQuery(function($){
$('.app_hide').off('change');
$('.app_hide').on('change', function (e) {
var value = $(this).is(':checked') ? '1' : '0';
console.log(value)
$(this).parent().children(':first-child').val(value);
})
}

View File

@@ -47,6 +47,8 @@ $(document).ready(function() {
window.fetch("/api/v1/get/status/host/ip", { method:'GET', cache:'no-cache' }).then(function(response) {
return response.json();
}).then(function(data) {
console.log(data);
// display host ips
if (data.ipv4)
$("#host_ipv4").text(data.ipv4);
@@ -1005,7 +1007,7 @@ jQuery(function($){
"data-order": cellData.sortBy,
"data-sort": cellData.sortBy
});
},
},
render: function (data) {
return data.value;
}
@@ -1030,7 +1032,7 @@ jQuery(function($){
"data-order": cellData.sortBy,
"data-sort": cellData.sortBy
});
},
},
render: function (data) {
return data.value;
}
@@ -1346,6 +1348,8 @@ function update_stats(timeout=5){
window.fetch("/api/v1/get/status/host", {method:'GET',cache:'no-cache'}).then(function(response) {
return response.json();
}).then(function(data) {
console.log(data);
if (data){
// display table data
$("#host_date").text(data.system_time);
@@ -1395,6 +1399,8 @@ function update_container_stats(timeout=5){
var diskIOCtx = Chart.getChart(container + "_DiskIOChart");
var netIOCtx = Chart.getChart(container + "_NetIOChart");
console.log(container);
console.log(data);
prev_stats = null;
if (data.length >= 2){
prev_stats = data[data.length -2];

View File

@@ -66,6 +66,7 @@ $(document).ready(function() {
// load tags
if ($('#tags').length){
var tagsEl = $('#tags').parent().find('.tag-values')[0];
console.log($(tagsEl).val())
var tags = JSON.parse($(tagsEl).val());
$(tagsEl).val("");

View File

@@ -1949,6 +1949,11 @@ jQuery(function($){
defaultContent: '',
responsivePriority: 5,
},
{
title: lang.bcc_destinations,
data: 'bcc_dest',
defaultContent: ''
},
{
title: lang.sogo_visible,
data: 'sogo_visible',

View File

@@ -97,7 +97,7 @@ jQuery(function($){
var datetime = new Date(item.datetime.replace(/-/g, "/"));
var local_datetime = datetime.toLocaleDateString(undefined, {year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"});
var service = '<div class="badge bg-secondary">' + item.service.toUpperCase() + '</div>';
var app_password = item.app_password ? ' <a href="/edit/app-passwd/' + item.app_password + '"><i class="bi bi-key-fill"></i><span class="ms-1">' + escapeHtml(item.app_password_name || "App") + '</span></a>' : '';
var app_password = item.app_password ? ' <a href="/edit/app-passwd/' + item.app_password + '"><i class="bi bi-app-indicator"></i> ' + escapeHtml(item.app_password_name || "App") + '</a>' : '';
var real_rip = item.real_rip.startsWith("Web") ? item.real_rip : '<a href="https://bgp.tools/prefix/' + item.real_rip + '" target="_blank">' + item.real_rip + "</a>";
var ip_location = item.location ? ' <span class="flag-icon flag-icon-' + item.location.toLowerCase() + '"></span>' : '';
var ip_data = real_rip + ip_location + app_password;
@@ -105,9 +105,10 @@ jQuery(function($){
$(".last-sasl-login").append(`
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto d-flex flex-column">
<div class="fw-bold">` + ip_location + real_rip + `</div>
<small class="fst-italic mt-2">` + service + ` ` + local_datetime + `</small>` + app_password + `
<div class="fw-bold">` + real_rip + `</div>
<small class="fst-italic mt-2">` + service + ` ` + local_datetime + `</small>
</div>
<span>` + ip_location + `</span>
</li>
`);
})
@@ -168,6 +169,7 @@ jQuery(function($){
type: "GET",
url: "/api/v1/get/time_limited_aliases",
dataSrc: function(data){
console.log(data);
$.each(data, function (i, item) {
if (acl_data.spam_alias === 1) {
item.action = '<div class="btn-group">' +
@@ -260,6 +262,7 @@ jQuery(function($){
type: "GET",
url: '/api/v1/get/syncjobs/' + encodeURIComponent(mailcow_cc_username) + '/no_log',
dataSrc: function(data){
console.log(data);
$.each(data, function (i, item) {
item.user1 = escapeHtml(item.user1);
item.log = '<a href="#syncjobLogModal" data-bs-toggle="modal" data-syncjob-id="' + item.id + '">' + lang.open_logs + '</a>'
@@ -415,6 +418,7 @@ jQuery(function($){
type: "GET",
url: '/api/v1/get/app-passwd/all',
dataSrc: function(data){
console.log(data);
$.each(data, function (i, item) {
item.name = escapeHtml(item.name)
item.protocols = []
@@ -510,6 +514,7 @@ jQuery(function($){
type: "GET",
url: '/api/v1/get/policy_wl_mailbox',
dataSrc: function(data){
console.log(data);
$.each(data, function (i, item) {
if (validateEmail(item.object)) {
item.chkbox = '<input type="checkbox" class="form-check-input" data-id="policy_wl_mailbox" name="multi_select" value="' + item.prefid + '" />';
@@ -580,6 +585,7 @@ jQuery(function($){
type: "GET",
url: '/api/v1/get/policy_bl_mailbox',
dataSrc: function(data){
console.log(data);
$.each(data, function (i, item) {
if (validateEmail(item.object)) {
item.chkbox = '<input type="checkbox" class="form-check-input" data-id="policy_bl_mailbox" name="multi_select" value="' + item.prefid + '" />';

View File

@@ -24,7 +24,7 @@
"sogo_access": "Správa přístupu do SOGo",
"sogo_profile_reset": "Resetování profilu SOGo",
"spam_alias": "Dočasné aliasy",
"spam_policy": "Denylist/Allowlist",
"spam_policy": "Blacklist/Whitelist",
"spam_score": "Skóre spamu",
"syncjobs": "Synchronizační úlohy",
"tls_policy": "Pravidla TLS",
@@ -109,9 +109,7 @@
"validate": "Ověřit",
"validation_success": "Úspěšně ověřeno",
"tags": "Štítky",
"dry": "Simulovat synchronizaci",
"internal": "Interní",
"internal_info": "Interní aliasy jsou přístupné jen z vlastních domén nebo jejich aliasů."
"dry": "Simulovat synchronizaci"
},
"admin": {
"access": "Přístupy",
@@ -305,7 +303,7 @@
"rspamd_global_filters": "Mapa globálních filtrů",
"rspamd_global_filters_agree": "Budu opatrný!",
"rspamd_global_filters_info": "Mapa globálních filtrů obsahuje jiné globální black- a whitelisty.",
"rspamd_global_filters_regex": "Názvy stačí k vysvětlení. Položky musejí obsahovat jen platné regulární výrazy ve tvaru \"/vyraz/parametry\" (e.g. <code>/.+@domena\\.tld/i</code>).<br>\n Každý výraz bude podroben základní kontrole, přesto je možné Rspamd 'rozbít', nebude-li syntax zcela korektní.<br>\n Rspamd se pokusí po každé změně načíst mapu znovu. V případě potíží <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">restartujte Rspamd</a>, aby se konfigurace načetla explicitně.",
"rspamd_global_filters_regex": "Názvy jsou dostatečným vysvětlením. Musí obsahovat jen platné regulární výrazy ve formátu \"/vyraz/parametry\" (e.g. <code>/.+@domena\\.tld/i</code>).<br>\r\n Každý výraz bude podroben základní kontrole, přesto je možné Rspamd 'rozbít', nebude-li syntax zcela korektní.<br>\r\n Rspamd se pokusí načíst mapu po každé změně. V případě potíží, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">restartujte Rspamd</a>, aby se konfigurace načetla explicitně.",
"rspamd_settings_map": "Nastavení Rspamd",
"sal_level": "Úroveň 'Moo'",
"save": "Uložit změny",
@@ -409,9 +407,7 @@
"iam_extra_permission": "Aby vše fungovalo, musí mít mailcow klient v Keycloaku nastavený <code>servisní účet</code> a povolení <code>view-users</code>.",
"iam_host": "Hostitel",
"iam_host_info": "Zadejte jeden či více hostitelů, oddělte čárkou.",
"iam_import_users": "Importovat uživatele",
"iam_auth_flow": "Proces autentizace",
"needs_restart": "potřebuje restart"
"iam_import_users": "Importovat uživatele"
},
"danger": {
"access_denied": "Přístup odepřen nebo jsou neplatná data ve formuláři",
@@ -552,11 +548,7 @@
"img_size_exceeded": "Obrázek má větší než povolenou velikost souboru",
"invalid_reset_token": "Neplatný resetovací token",
"required_data_missing": "Chybí potřebný údaj %s",
"reset_token_limit_exceeded": "Byl překročen limit na reset tokeny. Zkuste to později.",
"max_age_invalid": "Maximální životnost %s není platná",
"mode_invalid": "Mód %s není platný",
"mx_invalid": "Záznam MX %s není platný",
"version_invalid": "Verze %s není platná"
"reset_token_limit_exceeded": "Byl překročen limit na reset tokeny. Zkuste to později."
},
"datatables": {
"emptyTable": "Tabulka neobsahuje žádná data",
@@ -767,20 +759,7 @@
"mailbox_rename_warning": "DŮLEŽITÉ! Vytvořte si zálohu schránky, než ji přejmenujete.",
"mailbox_rename_alias": "Automaticky vytvořit alias",
"mailbox_rename_title": "Nový název zdejší schránky",
"pushover": "Pushover",
"internal": "Interní",
"internal_info": "Interní aliasy jsou přístupné jen z vlastních domén nebo jejich aliasů.",
"mta_sts": "MTA-STS",
"mta_sts_info": "<a href='https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#SMTP_MTA_Strict_Transport_Security' target='_blank'>MTA-STS</a> je standard, jenž říká poštovním serverům, aby komunikovaly pomocí TLS s platnými certifikáty. <br>Používá se, pokud není k dispozici <a target='_blank' href='https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities'>DANE</a>, např. chybí-li či není podporováno DNSSEC.<br><b>Pozn.</b>: Podporuje-li přijímající doména DANE a DNSSEC, bude <b>vždy</b> použito DANE; MTA-STS zůstane jako plán B.",
"mta_sts_version": "Verze",
"mta_sts_version_info": "Určuje verzi standardu MTA-STS zatím je podporována jen <code>STSv1</code>.",
"mta_sts_mode": "Mód",
"mta_sts_mode_info": "K dispozici jsou tři módy:<ul><li><em>testing</em> pravidlo se jen sleduje, porušení je bez následků.</li><li><em>enforce</em> pravidlo je důsledně dodržováno, spojení bez platného TLS jsou odmítána.</li><li><em>none</em> pravidlo je zveřejněno, ale neuplatňuje se.</li></ul>",
"mta_sts_max_age": "Maximální životnost",
"mta_sts_max_age_info": "Doba v sekundách, po niž poštovní servery mohou toho pravidlo držet v mezipaměti bez nutnosti obnovení.",
"mta_sts_mx": "Server MX",
"mta_sts_mx_info": "Dovoluje odesílání jen výslovně vypsaným poštovním serverům; odesílající server kontroluje, že server MX určený v DNS odpovídá pravidlu, a povolí doručení jen s platným certifikátem TLS (chrání přes útokem typu MITM).",
"mta_sts_mx_notice": "Lze zadat více serverů MX (oddělte čárkou)."
"pushover": "Pushover"
},
"fido2": {
"confirm": "Potvrdit",
@@ -850,8 +829,7 @@
"login_admintext": "Přihlášení správce",
"login_user": "Přihlášení uživatele",
"login_dadmin": "Přihlášení správce domény",
"login_admin": "Přihlášení správce",
"email": "Mailová adresa"
"login_admin": "Přihlášení správce"
},
"mailbox": {
"action": "Akce",
@@ -883,7 +861,7 @@
"bcc": "BCC",
"bcc_destination": "Cíl kopie",
"bcc_destinations": "Cíl kopií",
"bcc_info": "<br/>Skrytá kopie (mapa BCC) se používá pro tiché předávání kopií všech zpráv na jinou adresu. Mapa příjemců se použije, funguje-li je místní cíl jako adresát zprávy. Totéž platí pro mapy odesílatelů.<br/>\n Místní cíl se nedozví, selže-li doručení na cíl BCC.",
"bcc_info": "Skrytá kopie (mapa BCC) se používá pro tiché předávání kopií všech zpráv na jinou adresu. Mapa příjemců se použije, funguje-li je místní cíl jako adresát zprávy. Totéž platí pro mapy odesílatelů.\nMístní cíl se nedozví, selže-li doručení na cíl BCC.",
"bcc_local_dest": "Týká se",
"bcc_map": "Skrytá kopie",
"bcc_map_type": "Typ skryté kopie",
@@ -1027,8 +1005,7 @@
"weekly": "Každý týden",
"yes": "&#10003;",
"relay_unknown": "Předávání neexistujících schránek",
"iam": "Poskytovatel identity",
"internal": "Interní"
"iam": "Poskytovatel identity"
},
"oauth2": {
"access_denied": "K udělení přístupu se přihlašte jako vlastník mailové schránky.",
@@ -1105,8 +1082,7 @@
"hold_mail_legend": "Podrží vybrané e-maily. (Zabrání dalším pokusům o doručení)",
"show_message": "Zobrazit zprávu",
"unhold_mail": "Uvolnit",
"unhold_mail_legend": "Uvolnit vybrané e-maily k doručení. (Pouze v případě předchozího podržení)",
"unban": "odblokovat"
"unhold_mail_legend": "Uvolnit vybrané e-maily k doručení. (Pouze v případě předchozího podržení)"
},
"ratelimit": {
"disabled": "Vypnuto",

View File

@@ -1100,7 +1100,7 @@
"legend": "Funktionen der Mailqueue Aktionen:",
"ays": "Soll die derzeitige Queue wirklich komplett bereinigt werden?",
"deliver_mail": "Ausliefern",
"deliver_mail_legend": "Versucht eine erneute Zustellung der ausgewählten Mails.",
"deliver_mail_legend": "Versucht eine erneute Zustellung der ausgwählten Mails.",
"hold_mail": "Zurückhalten",
"hold_mail_legend": "Hält die ausgewählten Mails zurück. (Verhindert weitere Zustellversuche)",
"queue_manager": "Queue Manager",

View File

@@ -39,16 +39,16 @@
"alias_domain_info": "<small>Tikai derīgi domēna vārdi (komatu atdalīti).</small>",
"automap": "Mēģiniet automatizēt mapes (\"Nosūtītie vienumi\", \"Nosūtītie\" => \"Nosūtītie\" etc.)",
"backup_mx_options": "Dublējuma MX iespējas",
"delete1": "Izdzēst no avota pēc pabeigšanas",
"delete1": "Dzēst no avota, kad tas ir pabeigts",
"delete2": "Dzēsiet ziņojumus galamērķī, kas nav avotā",
"delete2duplicates": "Izdzēst atkārtojošos vienumus galamērķī",
"delete2duplicates": "Dzēst dublikātus galamērķī",
"description": "Apraksts",
"domain": "Domēns",
"domain_quota_m": "Kopējā domēna kvota (MiB)",
"enc_method": "Šifrēšanas metode",
"exclude": "Izslēgt objektus (regex)",
"full_name": "Pilns vārds",
"goto_null": "Klusām atmest pastu",
"goto_null": "Klusām dzēst pastu",
"hostname": "Saimniekdators",
"kind": "Veids",
"mailbox_quota_m": "Maks. kvota pastkastei (MiB)",
@@ -77,13 +77,12 @@
"target_domain": "Mērķa domēns",
"username": "Lietotājvārds",
"validate": "Apstiprināt",
"validation_success": "Sekmīgi apstiprināts",
"validation_success": "Apstiprināts veiksmīgi",
"bcc_dest_format": "BCC galamērķim ir jābūt vienai derīgai e-pasta adresei.<br>Ja ir nepieciešams nosūtīt kopiju vairākām adresēm, jāizveido aizstājvārds un jāizmanto tas šeit.",
"domain_matches_hostname": "Domēns %s atbilst saimniekdatora nosaukumam",
"disable_login": "Neļaut pieteikšanos (ienākošais pasts joprojām tiks pieņemts)",
"app_password": "Pievienot lietotnes paroli",
"app_passwd_protocols": "Atļautie lietotnes paroles protokoli",
"goto_spam": "Apgūt kā <span class=\"text-danger\"><b>mēstuli</b></span>"
"app_passwd_protocols": "Atļautie lietotnes paroles protokoli"
},
"admin": {
"access": "Pieeja",
@@ -116,14 +115,14 @@
"domain": "Domēns",
"domain_admins": "Domēna administratori",
"edit": "Labot",
"empty": "Nav iznākuma",
"empty": "Nav rezultātu",
"f2b_ban_time": "Aizlieguma laiks (s)",
"f2b_max_attempts": "Maks. piegājieni",
"f2b_netban_ipv4": "IPv4 apakštīkla izmērs, lai piemērotu aizliegumu uz (8-32)",
"f2b_netban_ipv6": "IPv6 apakštīkla izmērs, lai piemērotu aizliegumu uz (8-128)",
"f2b_parameters": "Fail2ban parametri",
"f2b_retry_window": "Atkārtošanas logs (s) priekš maks. piegājiena",
"f2b_whitelist": "Atļautie tīkli/resursdatori",
"f2b_whitelist": "Baltā saraksta tīkls/hosts",
"filter_table": "Filtru tabula",
"forwarding_hosts": "Hostu pārsūtīšana",
"forwarding_hosts_add_hint": "Var norādīt vai nu IPv4/IPv6 adreses, tīklu ar CIDR apzīmējumu, saimniekdatoru nosaukumus (kas tiks atrisināti IP adresēs) vai arī domēna vārdus (kas tiks atrisināti IP adresēs, vaicājot SPF ierakstus, vai, ja tādu nav, MX ierakstus).",
@@ -182,10 +181,7 @@
"rspamd_com_settings": "Iestatījuma nosaukums tiks izveidots automātiski. Lūgums zemāk skatīt priekšiestatījumu piemērus. Vairāk informācijas ir <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd dokumentācijā</a>",
"reset_password_vars": "<code>{{link}}</code> Izveidotā paroles atiestatīšanas saite<br><code>{{username}}</code> Lietotāja, kurš pieprasīja paroles atiestatīšanu, pastkastes nosaukums<br><code>{{username2}}</code> Atkopšanas pastkastes nosaukums<br><code>{{date}}</code> Paroles atiestatīšanas pieprasījuma veikšanas datums<br><code>{{token_lifetime}}</code> Pilnvaras derīgums minūtēs<br><code>{{hostname}}</code> mailcow saimniekdatora nosaukums",
"ui_header_announcement_help": "Paziņojums ir redzams visiem lietotājiem, kuri ir pieteikušies, un pieteikšanās ekrānā saskarnē.",
"login_time": "Pieteikšanās laiks",
"iam_version": "Versija",
"quarantine_max_age": "Lielākais pieļaujamais vecums dienās<br><small>Vērtībai jābūt vienādai ar vai lielākai par 1 dienu.</small>",
"quarantine_max_score": "Atmest paziņojumu, ja e-pasta ziņojuma mēstuļu novērtējums ir augstāks par šo vērtību:<br><small>Noklusējums ir 9999.0</small>"
"login_time": "Pieteikšanās laiks"
},
"danger": {
"access_denied": "Piekļuve liegta, vai nepareizi dati",
@@ -205,8 +201,8 @@
"goto_empty": "Aizstājādresei jāsatur vismaz viena derīga mērķa adrese",
"goto_invalid": "Goto adrese nepareiza",
"imagick_exception": "Kļūda: Imagick izņēmums, lasot attēlu",
"img_invalid": "Nevar apstiprināt attēla datni",
"img_tmp_missing": "Nevar apstiprināt attēla datni: pagaidu datne nav atrasta",
"img_invalid": "Nevar apstiprināt attēla failu",
"img_tmp_missing": "Nevar apstiprināt attēla failu: pagaidu failu nav atrasts",
"invalid_mime_type": "Nederīgs mime tips",
"is_alias": "%s jau ir zināma kā aizstājadrese",
"is_alias_or_mailbox": "%s jau ir zināms kā aizstājvārds, pastkaste vai aizstājadrese, kas ir izvērsta no aizstājdomēna.",
@@ -238,10 +234,7 @@
"username_invalid": "Lietotājvārds nevar tikt izmantots",
"validity_missing": "Lūdzu piešķiriet derīguma termiņu",
"domain_cannot_match_hostname": "Domēns nevar atbilst saimniekdatora nosaukumam",
"app_passwd_id_invalid": "Lietotnes paroles Id %s ir nederīgs",
"img_dimensions_exceeded": "Attēls pārsniedz lielāko pieļaujamo attēla lielumu",
"img_size_exceeded": "Attēls pārsniedz lielāko pieļaujamo datnes lielumu",
"version_invalid": "Versija %s ir nederīga"
"app_passwd_id_invalid": "Lietotnes paroles Id %s ir nederīgs"
},
"diagnostics": {
"cname_from_a": "Vērtība, kas iegūta no A/AAAA ieraksta. Tas tiek atbalstīts tik ilgi, kamēr ieraksts norāda uz pareizo resursu.",
@@ -258,9 +251,9 @@
"alias": "Labot aizstājvārdu",
"automap": "Mēģiniet automatizēt mapes (\"Nosūtītie vienumi\", \"Nosūtītie\" => \"Nosūtītie\" utt.)",
"backup_mx_options": "Dublēt MX iespējas",
"delete1": "Izdzēst no avota pēc pabeigšanas",
"delete1": "Dzēst no avota, kad pabeigts",
"delete2": "Dzēsiet ziņojumus galamērķī, kas nav avotā",
"delete2duplicates": "Izdzēst atkārtojošos vienumus galamērķī",
"delete2duplicates": "Dzēst dublikātus galamērķī",
"description": "Apraksts",
"domain": "Labot domēnu",
"domain_admin": "Labot domēna administratoru",
@@ -280,7 +273,7 @@
"max_aliases": "Lielākais aizstājvārdu skaits",
"max_mailboxes": "Maks. iespējamās pastkastes",
"max_quota": "Maks. kvota uz pastkasti (MiB)",
"maxage": "Lielākais pieļaujamais ziņojumu, kuri tiks vaicāti attālajā serverī, vecums dienās<br><small>(0 = neņemt vērā vecumu)</small>",
"maxage": "Lielākais ziņojumu, kuri tiks vaicāti attālajā serverī, vecums dienās<br><small>(0 = neņemt vērā vecumu)</small>",
"maxbytespersecond": "Maks. baiti sekundē (0 ir vienāds ar neierobežotu skaitu)",
"mins_interval": "Intervāls (min)",
"multiple_bookings": "Vairāki rezervējumi",
@@ -299,8 +292,8 @@
"sieve_type": "Filtra tips",
"skipcrossduplicates": "Izlaist dublētus ziņojumus pa mapēm (pirmais nāk, pirmais kalpo)",
"spam_alias": "Izveidot vai mainīt laika ierobežotas aizstājadreses",
"spam_policy": "Pievienot vai noņemt vienumus atļautajā/liegumu sarakstā",
"spam_score": "Iestatīt pielāgotu mēstules vērtējumu",
"spam_policy": "Pievienot vai noņemt vienumus baltajā-/melnajā sarakstā",
"spam_score": "Iestatīt pielāgotu surogātpasta vērtējumu",
"subfolder2": "Sinhronizēt galamērķa apakšmapē<br><small>(tukšs = neizmantot apakšmapi)</small>",
"syncjob": "Labot sinhronizācijas darbu",
"target_address": "Mērķa adrese/s <small>(atdalītas ar komatu)</small>",
@@ -323,21 +316,17 @@
"disable_login": "Neļaut pieteikšanos (ienākošais pasts joprojām tiks pieņemts)",
"app_passwd_protocols": "Atļautie lietotnes paroles protokoli",
"allowed_protocols": "Atļautie protokoli tiešai lietotāja piekļuvei (neietekmē lietotnes paroles protokolus)",
"app_passwd": "Lietotnes parole",
"mta_sts_version": "Versija",
"mta_sts_version_info": "Norāda MTA-STS standarta versiju pašreiz ir derīga tikai <code>STSv1</code>.",
"sender_acl_disabled": "<span class=\"badge fs-6 bg-danger\">Sūtītāja pārbaude ir atspējota</span>"
"app_passwd": "Lietotnes parole"
},
"footer": {
"cancel": "Atcelt",
"confirm_delete": "Apstiprināt izdzēšanu",
"delete_now": "Izdzēst tagad",
"confirm_delete": "Apstiprināt dzēšanu",
"delete_now": "Dzēst tagad",
"delete_these_items": "Lūgums apstiprināt izmaiņas šim objekta Id",
"loading": "Lūgums uzgaidīt...",
"restart_container": "Restartēt konteineri",
"restart_container_info": "<b>Svarīgi:</b> nesteidzīga pārsāknēšana var aizņemt ilgāku laiku. Lūgums uzgaidīt, līdz tā tiek pabeigta.",
"restart_now": "Pārsāknēt tagad",
"hibp_nok": "Sakrīt. Šī, iespējams, ir bīstama parole."
"restart_now": "Pārsāknēt tagad"
},
"header": {
"administration": "Konfigurācija un informācija",
@@ -400,7 +389,7 @@
"domain_quota_total": "Kopējais domēna ierobežojums",
"domains": "Domēns",
"edit": "Labot",
"empty": "Nav iznākuma",
"empty": "Nav rezultātu",
"excludes": "Izslēdzot",
"filter_table": "Filtra tabula",
"filters": "Filtri",
@@ -459,15 +448,13 @@
"add_alias_expand": "Izvērst aizstājvārdu pār aizstājdomēniem",
"alias_domain_alias_hint": "Aizstājvārdi <b>netiek</b> automātiski piemēroti domēnu aizstājvārdiem. Aizstājadrese <code>my-alias@domain</code> <b>nenosedz</b> adresi <code>my-alias@alias-domain</code> (kur \"alias-domain\" ir iedomāts \"domain\" aizstājdomēns).<br>Lūgums izmantot sieta atlasi, lai pārvirzītu pastu uz ārēju pastkasti (skatīt cilti \"Atlasīšana\" vai izmantot SOGo -> Pārsūtītājs). \"Izvērst aizstājvārdu pār aizstājdomēniem\" ir izmantojams, lai automātiski pievienotu trūkstošos aiztājvārdus.",
"alias_domain_backupmx": "Aizstājdomēns ir neaktīvs retranslācijas domēnam",
"disable_login": "Neļaut pieteikšanos (ienākošais pasts joprojām tiks pieņemts)",
"sieve_preset_1": "Atmest e-pasta vēstules ar iespējami bīstamiem datņu veidiem",
"syncjob_last_run_result": "Pēdējās izpildes iznākums"
"disable_login": "Neļaut pieteikšanos (ienākošais pasts joprojām tiks pieņemts)"
},
"quarantine": {
"action": "Darbības",
"atts": "Pielikumi",
"check_hash": "Meklēt datnes jaucējvērtību @ VT",
"empty": "Nav iznākuma",
"check_hash": "Meklēt faila hašu @ VT",
"empty": "Nav rezultātu",
"qid": "Rspamd QID",
"qitem": "Karantīnas vienumi",
"quarantine": "Karantīna",
@@ -476,7 +463,7 @@
"received": "Saņemtie",
"recipients": "Adresāts",
"release": "Atbrīvot",
"release_body": "Mēs pievienojām Tavu ziņojumu kā .eml datni šim ziņojumam.",
"release_body": "Šim ziņojumam mēs esam pievienojuši jūsu ziņojumu kā eml failu.",
"release_subject": "Potenciāli kaitīgs karantīnas vienums %s",
"remove": "Noņemt",
"sender": "Sūtītājs (SMTP)",
@@ -486,14 +473,8 @@
"text_plain_content": "Saturs (teksts/vienkāršs)",
"toggle_all": "Pārslēgt visu",
"disabled_by_config": "Pašreizējā sistēmas konfigurācija atspējo karantīnu. Lūgums iestatīt \"saglabāšanu katrai pastkastītei\" un \"lielākais pieļaujamais lielums\" karantīnas vienumiem.",
"qhandler_success": "Pieprasījums sekmīgi nosūtīts sistēmai. Logu tagad var aizvērt.",
"qinfo": "Karantīnas sistēma datubāzē saglabās noraidīto pastu (sūtītājam <em>netiks</em> radīts iespaids par piegādātu pastu), kā arī pastu, kas tiek piegādāts kā kopija pastkastes mēstuļu mapē.\n <br>\"Apgūt kā surogātpastu un izdzēst\" apgūs ziņojumu kā surogātpastu ar Bajesa teorēmu un aprēķinās arī nestriktas jaucējvērtības, lai nākotnē noraidītu līdzīgus ziņojumus.\n <br>Lūgums apzināties, ka vairāku ziņojumu apgūšana var būt laikietilpīga atkarībā no sistēmas.<br>Lieguma saraksta vienumi karantīnā netiek iekļauti.",
"danger": "Bīstamība",
"notified": "Paziņots",
"refresh": "Atsvaidzināt",
"rspamd_result": "Rspamd iznākums",
"settings_info": "Lielākais pieļaujamais karantējamo vienumu daudzums: %s<br>Lielākais pieļaujamais e-pasta lielums: %s MiB",
"spam_score": "Novērtējums"
"qhandler_success": "Pieprasījums veiksmīgi nosūtīts sistēmai. Tagad var aizvērt logu.",
"qinfo": "Karantīnas sistēma datubāzē saglabās noraidīto pastu (sūtītājam <em>netiks</em> radīts iespaids par piegādātu pastu), kā arī pastu, kas tiek piegādāts kā kopija pastkastes mēstuļu mapē.\n <br>\"Apgūt kā surogātpastu un izdzēst\" apgūs ziņojumu kā surogātpastu ar Bajesa teorēmu un aprēķinās arī nestriktas jaucējvērtības, lai nākotnē noraidītu līdzīgus ziņojumus.\n <br>Lūgums apzināties, ka vairāku ziņojumu apgūšana var būt laikietilpīga atkarībā no sistēmas.<br>Melnā saraksta vienumi karantīnā netiek iekļauti."
},
"queue": {
"queue_manager": "Rindas pārvaldnieks",
@@ -524,8 +505,8 @@
"f2b_modified": "Fail2ban parametru izmaiņas tika saglabātas",
"forwarding_host_added": "Pāradresācijas hosts %s pievienotsd",
"forwarding_host_removed": "Pāradresācijas hosts %s noņemts",
"item_deleted": "Vienums %s izdzēsts sekmīgi",
"items_deleted": "Vienums %s izdzēsts sekmīgi",
"item_deleted": "Vērtība %s veiksmīgi dzēsta",
"items_deleted": "Vērtība %s veiksmīgi dzēsta",
"items_released": "Atlasītie vienumi tika izlaisti",
"mailbox_added": "Pastkaste %s ir pievienota",
"mailbox_modified": "Izmaiņas pastkastei %s ir saglabātas",
@@ -538,21 +519,20 @@
"resource_modified": "Izmaiņas %s ir saglabātas",
"resource_removed": "Resurs %s tika noņemts",
"ui_texts": "Saglabāt UI izmaiņas tekstiem",
"upload_success": "Datne sekmīgi augšupielādēta",
"upload_success": "Faila augšupielāde veiksmīga",
"verified_fido2_login": "Apliecināta FIDO2 pieteikšanās",
"verified_webauthn_login": "Apliecināta WebAuthn pieteikšanās",
"verified_totp_login": "Apliecināta TOTP pieteikšanās",
"verified_yotp_login": "Apliecināta Yubico OTP pieteikšanās",
"app_passwd_removed": "Noņemta lietotnes parole ar Id %s",
"app_passwd_added": "Pievienota jauna lietotnes parole",
"f2b_banlist_refreshed": "Liegumu saraksta Id tika sekmīgi atsvaidzināts."
"app_passwd_added": "Pievienota jauna lietotnes parole"
},
"tfa": {
"api_register": "%s izmanto Yubico Cloud API. Lūdzu iegūstiet API atslēgu priekš Jūsu atslēgas<a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">here</a>",
"confirm": "Apstiprināt",
"confirm_totp_token": "Lūgums apstiprināt savas izmaiņas ar izveidotās tekstvienības ievadīšanu",
"confirm_totp_token": "Lūdzu apstipriniet Jūsu izmaiņas ievadot uzģenerēto tekstu",
"delete_tfa": "Atspējot TFA",
"disable_tfa": "Atspējot TFA līdz nākamajai sekmīgajai pieteikšanās reizei",
"disable_tfa": "Atspējot TFA līdz nākamajai veiksmīgajai pieteikšanās reizei",
"enter_qr_code": "TOTP kods, ja Tava ierīce nevar nolasīt kvadrātkodus",
"key_id": "Jūsu YubiKey identifikators",
"key_id_totp": "Identifikators Jūsu atslēgai",
@@ -564,7 +544,7 @@
"totp": "Uz laiku bāzēta vienreizēja parole (Google Autentifikātors utt.)",
"webauthn": "WebAuthn autentifikācija",
"waiting_usb_auth": "<i>Gaida USB ierīci...</i><br><br>Lūdzu, tagad nospiežiet pogu uz Jūsu WebAuthn USB ierīces.",
"waiting_usb_register": "<i>Gaida USB ierīci...</i><br><br>Lūgums augstāk ievadīt savu paroli un apstiprināt reģistrēšanos ar USB ierīces pogas nospiešanu.",
"waiting_usb_register": "<i>Gaida USB ierīci...</i><br><br>Lūdzu augšā ievadiet Jūsu paroli un apstipriniet WebAuthn reģistrāciju nospiežot pogu uz Jūsu WebAuthn USB ierīces.",
"yubi_otp": "Yubico OTP autentifikators",
"authenticators": "Autentificētāji"
},
@@ -609,7 +589,7 @@
"new_password_repeat": "Paroles apstiprinājums (atkārtoti)",
"no_active_filter": "Nav pieejami aktīvi filtri",
"no_record": "Nav ieraksta",
"password_now": "Pašreizējā parole (apstiprināt izmaiņas)",
"password_now": "Pašreizējā parole (Apstiprināt izmaiņas)",
"remove": "Noņemt",
"running": "Darbojas",
"save_changes": "Saglabāt izmaiņas",
@@ -619,11 +599,11 @@
"spam_aliases": "Pagaidu e-pasta aizstājvārdi",
"spamfilter": "Mēstuļu filtrs",
"spamfilter_behavior": "Reitings",
"spamfilter_bl": "Liegumu saraksts",
"spamfilter_bl_desc": "No lieguma sarakstā iekļautajām e-pasta adresēm saņemtās vēstules <b>vienmēr</b> tiks atzīmētas kā mēstules un noraidītas. Noraidītais pasts <b>netiks</b> ievietots karantīnā. Var izmantot aizstājzīmes. Atlasīšana tiek pielietota tikai tiešiem aizstājvārdiem (aizstājvārdiem ar vienu mērķa pastkasti), izņemot visu tverošos aizstājvārdus un pašu pastkasti.",
"spamfilter_bl": "Melnais saraksts",
"spamfilter_bl_desc": "No melnajā sarakstā iekļautajām e-pasta adresēm saņemtās vēstules <b>vienmēr</b> tiks atzīmētas kā mēstules un noraidītas. Noraidītais pasts <b>netiks</b> ievietots karantīnā. Var izmantot aizstājzīmes. Atlasīšana tiek pielietota tikai tiešiem aizstājvārdiem (aizstājvārdiem ar vienu mērķa pastkasti), izņemot visu tverošos aizstājvārdus un pašu pastkasti.",
"spamfilter_default_score": "Noklusējuma vērtības",
"spamfilter_green": "Zaļš: šī nav mēstule",
"spamfilter_hint": "Pirmā vērtība norāda uz zemu \"mēstules novērtējumu\", otrā atspoguļo \"augstu mēstules novērtējumu\".",
"spamfilter_hint": "Pirmā vērtība norāda uz zemu \"Spam vērtējumu\" vērtējumu, otra vērtība par \"Augstu spam vērtējumu\".",
"spamfilter_red": "Sarkans: Šī vēstule noteikti ir spams un tiek nekavējoties noraidīta",
"spamfilter_table_action": "Darbība",
"spamfilter_table_add": "Pievienot vienību",
@@ -631,8 +611,8 @@
"spamfilter_table_empty": "Nav datu ko parādīt",
"spamfilter_table_remove": "noņemt",
"spamfilter_table_rule": "Noteikums",
"spamfilter_wl": "Atļautais saraksts",
"spamfilter_wl_desc": "No atļautā saraksta e-pasta adresēm saņemtās vēstules <b>nekad</b> netiks atzīmētas kā mēstules. Var tikt izmantotas aizstājzīmes. Atlase tiek piemērota tikai tiešiem aizstājvārdiem (aizstājvārdiem ar vienu mērķa pastkasti), izņemot visu tverošos aizstājvārdus un pašu pastkasti.",
"spamfilter_wl": "Baltais saraksts",
"spamfilter_wl_desc": "No baltā saraksta e-pasta adresēm saņemtās vēstules <b>nekad</b> netiks atzīmētas kā mēstules. Var tikt izmantotas aizstājzīmes. Atlase tiek piemērota tikai tiešiem aizstājvārdiem (aizstājvārdiem ar vienu mērķa pastkasti), izņemot visu tverošos aizstājvārdus un pašu pastkasti.",
"spamfilter_yellow": "Dzeltens: šī vēstule visticamāk ir spams un tiks pārvietota uz Junk mapi",
"status": "Status",
"sync_jobs": "Sinhronizācijas uzdevumi",
@@ -664,21 +644,15 @@
"change_password_hint_app_passwords": "Kontā ir %d lietotņu paroles, kas netiks mainītas. Lai pārvaldītu tās, jādodas uz cilni \"Lietotņu paroles\".",
"with_app_password": "ar lietotnes paroli",
"apple_connection_profile_with_app_password": "Jauna lietotnes parole ir izveidota un pievienota profilam, lai ierīces iestatīšanas laikā nebūtu nepieciešams ievadīt paroli. Lūgums nekopīgot datni, jo tā nodrošina pilnu piekļuvi pastkastei.",
"tfa_info": "Divpakāpju autentificēšanās palīdz aizsargāt kontu.Ja tā ir iespējota, ir nepieciešamas lietotņu paroles, lai pieteiktos lietotnēs vai pakalpojumos, kas nenodrošina divpakāpju autentificēšanos (piem., e-pasta klienti).",
"tfa_info": "Divpakāpju autentificēšanās palīdz aizsargāt kontu.Ja tā ir iespējota, var būt nepieciešamas lietotņu paroles, lai pieteiktos lietotnēs vai pakalpojumos, kas nenodrošina divpakāpju autentificēšanos (piem., e-pasta klienti).",
"app_passwds": "Lietotņu paroles",
"create_app_passwd": "Izveidot lietotnes paroli",
"empty": "Nav iznākuma",
"quarantine_notification_info": "Tiklīdz paziņojums ir nosūtīts, vienumi tiks atzīmēti kā \"paziņoti\", un par šo vienumu vairs netiks sūtīti paziņojumi.",
"sender_acl_disabled": "<span class=\"badge fs-6 bg-danger\">Sūtītāja pārbaude ir atspējota</span>",
"syncjob_last_run_result": "Pēdējās izpildes iznākums"
"create_app_passwd": "Izveidot lietotnes paroli"
},
"datatables": {
"paginate": {
"first": "Pirmā",
"last": "Pēdējā"
},
"emptyTable": "Tabulā nav datu",
"search": "Meklēt:"
}
},
"debug": {
"last_modified": "Pēdējoreiz mainīts",

View File

@@ -185,12 +185,11 @@
"protocol_access": "Endre protokolltilgang",
"pushover": "Pushover",
"quarantine": "Karantenehandlinger",
"quarantine_attachments": "Se vedlegg i karantene",
"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",
"pw_reset": "Tillat endring av brukerpassord"
"extend_sender_acl": "Tillat utvidelse av sender-ACL fra eksterne adresser"
},
"add": {
"app_passwd_protocols": "Tillatte protokoller for app-passord",

View File

@@ -1,117 +1,50 @@
{
"acl": {
"sogo_profile_reset": "Zresetuj profil SOGo",
"syncjobs": "Zadania doryczące synchronizacji kont",
"alias_domains": "Dodaj domeny aliasowe",
"delimiter_action": "Akcja oparta na separatorze",
"app_passwds": "Zarządzaj hasłami do aplikacji",
"bcc_maps": "Mapy BCC",
"domain_desc": "Zmień opis dotyczący domeny",
"domain_relayhost": "Zmień serwer przekazujący dla tej domeny",
"eas_reset": "Resetuj urządzenia EAS",
"extend_sender_acl": "Zezwalaj na rozszerzenie listy kontroli dostępu nadawców(ACL) o adresy zewnętrzne",
"filters": "Dostępne filtry",
"login_as": "Zaloguj się jako użytkownik poczty",
"mailbox_relayhost": "Zmień serwer pocztowy(relayhost) dla skrzynki pocztowej",
"prohibited": "Zakazane przez liste kontroli dostępu(ACL)",
"protocol_access": "Zmień dostęp do protokołów",
"pushover": "Pushover(powiadomienia push w czasie rzeczywistym)",
"pw_reset": "Zezwalaj na resetowanie hasła użytkownika mailcow",
"quarantine": "Akcje kwarantanny",
"quarantine_attachments": "Załączniki do kwarantanny",
"quarantine_category": "Zmień kategorię dotyczącą powiadomień o kwarantannie",
"quarantine_notification": "Zmień powiadomienia o kwarantannie",
"ratelimit": "Ograniczenie liczby zapytań",
"recipient_maps": "Mapy odbiorców",
"smtp_ip_access": "Zmiana dozwolonych hostów SMTP",
"sogo_access": "Zezwól na zarządzanie dostępem SOGo",
"spam_alias": "Tymczasowe aliasy",
"spam_policy": "Zablokowane adresy/Dozwolone adresy",
"spam_score": "Wskaźnik spam",
"tls_policy": "Polityka TLS",
"unlimited_quota": "Nieograniczony limit dla skrzynek pocztowych"
"sogo_profile_reset": "Usuń profil SOGo (webmail)",
"syncjobs": "Polecenie synchronizacji",
"alias_domains": "Dodaj aliasy domen",
"delimiter_action": "Akcja oparta na separatorze"
},
"add": {
"active": "Aktywny",
"add": "Dodaj",
"alias_address": "Alias/y",
"alias_address": "Alias/y:",
"alias_address_info": "<small>Pełny/e adres/y email lub @example.com, aby przejąć wszystkie wiadomości dla domeny (oddzielone przecinkami). <b>tylko domeny mailcow</b>.</small>",
"alias_domain": "Alias domeny",
"alias_domain_info": "<small>Tylko prawidłowe nazwy domen (oddzielone przecinkami).</small>",
"backup_mx_options": "Opcje Backup MX",
"backup_mx_options": "Opcje Backup MX:",
"delete1": "Usuń ze źródła po zakończeniu",
"delete2duplicates": "Usuń duplikaty w miejscu docelowym",
"description": "Opis",
"description": "Opis:",
"domain": "Domena",
"domain_quota_m": "Łączny limit domeny (MiB)",
"domain_quota_m": "Łączny limit domeny (MiB):",
"enc_method": "Metoda szyfrowania",
"exclude": "Wyklucz obiekty (regex)",
"full_name": "Pełna nazwa",
"full_name": "Pełna nazwa:",
"hostname": "Nazwa hosta",
"kind": "Rodzaj",
"mailbox_quota_m": "Maks. wielkość skrzynki (MiB)",
"mailbox_username": "Nazwa użytkownika (lewa strona adresu email)",
"max_aliases": "Maks. liczba aliasów",
"max_mailboxes": "Maks. liczba skrzynek",
"mailbox_quota_m": "Maks. wielkość skrzynki (MiB):",
"mailbox_username": "Nazwa użytkownika (lewa strona adresu email):",
"max_aliases": "Maks. liczba aliasów:",
"max_mailboxes": "Maks. liczba skrzynek:",
"mins_interval": "Zakres pobierania (minuty)",
"multiple_bookings": "Wielokrotne rejestracje",
"password": "Hasło",
"password_repeat": "Potwierdź hasło(powtórz)",
"password": "Hasło:",
"password_repeat": "Potwierdź hasło(powtórz):",
"port": "Port",
"post_domain_add": "Kontener SOGo, \"sogo-mailcow\", musi zostać ponownie uruchomiony po dodaniu nowej domeny!<br><br>Dodatkowo należy przejrzeć konfigurację DNS domeny. Po zatwierdzeniu konfiguracji DNS uruchom ponownie \"acme-mailcow\", aby automatycznie wygenerować certyfikaty dla nowej domeny (autoconfig.&lt;domain&gt;, autodiscover.&lt;domain&gt;).<br>Ten krok jest opcjonalny i będzie ponownie wykonywany co 24 godziny.",
"quota_mb": "Limit wielkości (MiB)",
"post_domain_add": "Po dodaniu nowej domeny będziesz musiał ponownie uruchomić kontener serwisowy SOGo!",
"quota_mb": "Limit wielkości (MiB):",
"relay_all": "Przekaż wszystkim odbiorcom",
"relay_all_info": "↪Jeśli wybierzesz <b>not</b>, aby przekazać wszystkich odbiorców, musisz dodać (\"ślepą\") skrzynkę pocztową dla każdego pojedynczego odbiorcy, która powinna być przekazywana.",
"relay_all_info": "<small>Jeśli decydujesz się <b>nie</b> przekazywać wszystkim odbiorcom, musisz dodać (\"ślepą\")skrzynkę dla każdego poszczególnego odbiorcy, któremu należy przekazać.</small>",
"relay_domain": "Domena przekaźnikowa",
"select": "Proszę wybrać...",
"select_domain": "Proszę najpierw wybrać domenę",
"syncjob": "Dodaj polecenie synchronizacji",
"syncjob_hint": "Pamiętaj, że hasła należy zapisywać w zwykłym tekście!",
"target_address": "Adresy Idź do",
"target_address": "Adresy Idź do:",
"target_address_info": "<small> Pełny/e adres/y email (oddzielone przecinkami).</small>",
"target_domain": "Domena docelowa",
"username": "Nazwa użytkownika",
"activate_filter_warn": "Wszystkie pozostałe filtry zostaną wyłączone, gdy opcja active zostanie zaznaczona.",
"add_domain_only": "Dodaj wyłącznie domene",
"add_domain_restart": "Dodaj domenę i uruchom ponownie SOGo",
"app_name": "Nazwa aplikacji",
"app_password": "Dodaj hasło do aplikacji",
"app_passwd_protocols": "Dozwolone protokoły dla hasła aplikacji",
"automap": "Spróbuj automatycznie mapować foldery (\"Wysłane elementy\", \"Wysłane\" => \"Wysłane\" itp.)",
"bcc_dest_format": "Miejscem docelowym BCC musi być jeden prawidłowy adres e-mail.<br>Jeśli chcesz wysłać kopię do wielu adresów, utwórz alias i użyj go tutaj.",
"comment_info": "Prywatny komentarz nie jest widoczny dla użytkownika, podczas gdy publiczny komentarz jest wyświetlany jako podpowiedź, które pojawia się, gdy użytkownik najedzie myszką nad elementem",
"custom_params": "Niestandardowe parametry",
"custom_params_hint": "Właściwa: --param=xy, błędna: --param xy",
"delete2": "Usuń wiadomości w miejscu docelowym, które nie znajdują się w źródle",
"destination": "Miejsce docelowe",
"disable_login": "Nie pozwalaj na logowanie(poczta przychodząca jest nadal akceptowana)",
"domain_matches_hostname": "Domena %s pasuje do nazwy hosta",
"dry": "Symulacja synchronizacji",
"gal": "Globalna lista adresów",
"gal_info": "GAL zawiera wszystkie obiekty domeny i nie może być edytowany przez żadnego użytkownika. Wolne/zajęte logi w SOGo bedą nidostępne, jeśli są wyłączone! <b>Uruchom ponownie SOGo, aby zastosować zmiany.</b>",
"generate": "generuj",
"goto_ham": "Ucz się jako <span class=\"text-success\"><b>ham</b></span>",
"goto_null": "Odrzucaj pocztę \"po cichu\"",
"goto_spam": "Ucz się jako <span class=\"text-danger\"><b>spam</b></span>",
"inactive": "Nieaktywny",
"internal": "Wewnętrzny",
"internal_info": "Aliasy wewnętrzne są dostępne tylko z domeny własnej lub domeny aliasów.",
"mailbox_quota_def": "Domyślny przydział skrzynki pocztowej",
"nexthop": "Następny hop",
"private_comment": "Prywatny komentarz",
"public_comment": "Komentarz publiczny",
"relay_transport_info": "<div class=\"badge fs-6 bg-info\">Info</div>Możesz transports maps dla niestandardowego miejsca docelowego dla tej domeny. Jeśli nie jest ustawiony, zostanie aktywowany lookup MX.",
"relay_unknown_only": "Przekaż tylko nieistniejące skrzynki pocztowe. Istniejące skrzynki pocztowe będą dostarczane lokalnie.",
"relayhost_wrapped_tls_info": "Proszę <b>nie</b> używać portów owiniętych TLS (głównie używanych na porcie 465).<br>\nUżyj dowolnego portu niezawiniętego i uruchom STARTTLS. Polityka TLS w celu egzekwowania TLS może być utworzona w \"mapie zasad TLS\".",
"sieve_desc": "Krótki opis",
"sieve_type": "Typ filtra",
"skipcrossduplicates": "Pomiń duplikaty wiadomości w folderach (na zasadzie kolejności zgłoszeń)",
"subscribeall": "Subskrybuj wszystkie foldery",
"tags": "Tagi",
"timeout1": "Limit czasu połączenia z hostem zdalnym",
"timeout2": "Limit czasu połączenia dla lokalnego hosta",
"validate": "Zatwierdź",
"validation_success": "Zatwierdzone z powodzeniem"
"target_domain": "Domena docelowa:",
"username": "Nazwa użytkownika"
},
"admin": {
"access": "Dostęp",
@@ -167,251 +100,7 @@
"spamfilter": "Filtr spamu",
"time": "Czas",
"unchanged_if_empty": "W przypadku braku zmian, nie wypełniaj",
"username": "Nazwa użytkownika",
"activate_api": "Aktywuj API",
"activate_send": "Aktywuj przycisk wysyłania",
"active_rspamd_settings_map": "Aktywne ustawienia mapy",
"add_admin": "Dodaj administratora",
"add_relayhost": "Dodaj transport zależny od nadawcy",
"add_relayhost_hint": "Miej na uwadze, że dane uwierzytelniające, jeśli takie istnieją, będą przechowywane w postaci zwykłego tekstu",
"add_row": "Dodaj wiersz",
"add_settings_rule": "Dodaj regułę ustawień",
"add_transport": "Dodaj transport",
"add_transports_hint": "Należy pamiętać, że dane uwierzytelniające, jeśli takie istnieją, będą przechowywane jako zwykły tekst.",
"additional_rows": " Dodano kolejne rzędy",
"admins": "Administratorzy",
"admins_ldap": "Administratorzy LDAP",
"admin_quicklink": "Ukryj szybki link do strony logowania administratora",
"advanced_settings": "Ustawienia zaawansowane",
"allowed_methods": "Dostęp-kontrola-zezwolenie-metody",
"allowed_origins": "Dostęp-Kontrola-Zezwolenia-Pochodzenie",
"api_allow_from": "Zezwalaj na dostęp API z tych notacji sieciowych IP/CIDR",
"api_info": "API jest w trakcie prac. Dokumentację można znaleźć pod adresem <a href=\"/api\">/api</a>",
"api_key": "klucz API",
"api_read_only": "Dostęp tylko do odczytu",
"api_read_write": "Dostęp tylko do odczytu",
"api_skip_ip_check": "Pomiń sprawdzenie IP dla API",
"app_hide": "Ukryj dla logowania",
"app_links": "Linki aplikacji",
"app_name": "Nazwa aplikacji",
"apps_name": "Nazwa \"aplikacji mailcow\"",
"arrival_time": "Czas serwera",
"authed_user": "Autoryzowany użytkownik",
"ays": "Jesteś pewien, że chcesz kontynuować?",
"ban_list_info": "Zobacz listę zakazanych adresów IP poniżej: <b>network (pozostały czas zakazu) - [działania]</b>.<br/>IP kolejkowane do odbanowania zostaną usunięte z listy aktywnych zakazów w ciągu kilku sekund.<br/>Czerwone etykiety wskazują aktywny stałe zakazy poprzez odmowę wpisu.",
"change_logo": "Zmień logo",
"logo_normal_label": "Normalna",
"logo_dark_label": "Odwrócony dla trybu ciemnego",
"convert_html_to_text": "Konwertuj HTML na zwykły tekst",
"copy_to_clipboard": "Tekst skopiowany do schowka!",
"cors_settings": "Ustawienia CORS",
"credentials_transport_warning": "Ostrzeżenie</b>: Dodanie nowego wpisu mapy transportu spowoduje aktualizację danych uwierzytelniających dla wszystkich wpisów z pasującą kolumną hop.",
"customer_id": "Identyfikator klienta",
"customize": "Dostosuj",
"login_page": "Strona logowania",
"destination": "Miejsce docelowe",
"dkim_domains_selector": "Selektor",
"dkim_domains_wo_keys": "Wybierz domeny z brakującymi kluczami",
"dkim_from": "Od",
"dkim_from_title": "Domena źródłowa do kopiowania danych z",
"dkim_overwrite_key": "Nadpisanie istniejącego klucza DKIM",
"dkim_to": "Do",
"dkim_to_title": "Domeny docelowe - zostaną nadpisane",
"domain_admin": "Administrator domeny",
"domainadmin_quicklink": "Ukryj szybki link do strony logowania administratora domeny",
"domain_s": "Domena/y",
"duplicate": "Duplikat",
"duplicate_dkim": "Duplikat rekordu DKIM",
"excludes": "Wyklucza tych odbiorców",
"f2b_ban_time_increment": "Czas zakazu jest zwiększany z każdym zakazem",
"f2b_blacklist": "Lista odrzuconych sieci/hostów",
"f2b_filter": "Filtry Regex",
"f2b_list_info": "Odrzucony host lub sieć zawsze będzie przewyższać jednostkę zezwalającą.</b>Zastosowanie aktualizacji listy zajmie kilka sekund.</b><b>",
"f2b_manage_external": "Zarządzaj Fail2Ban zewnętrznie",
"f2b_manage_external_info": "Fail2ban nadal będzie utrzymywać listę banów, ale nie będzie aktywnie ustalać zasad blokowania ruchu. Użyj wygenerowane listy banów poniżej, aby zewnętrznie zablokować ruch.",
"f2b_max_ban_time": "Max. czas bana (s)",
"f2b_netban_ipv4": "Rozmiar podsieci IPv4 do zastosowania zakazu (8-32)",
"f2b_netban_ipv6": "Rozmiar podsieci IPv6 do zastosowania zakazu (8-128)",
"f2b_regex_info": "Logi brane pod uwagę: SOGo, Postfix, Dovecot, PHP-FPM.",
"filter": "Filtr",
"force_sso_text": "Jeśli skonfigurowany jest zewnętrzny dostawca OIDC, ta opcja ukrywa domyślne formularze logowania mailcow i pokazuje tylko przycisk logowania pojedynczego",
"force_sso": "Wyłącz logowanie mailcow i pokaż tylko pojedyncze logowanie",
"from": "Od",
"generate": "Generuj",
"guid": "GUID - unikalny identyfikator instancji",
"guid_and_license": "GUID & licencja",
"hash_remove_info": "Usunięcie hasha z limitem współczynnika (jeśli nadal istnieje) spowoduje całkowite zresetowanie jego licznika.<br>\n\nKażdy hash jest oznaczony indywidualnym kolorem.",
"help_text": "Zastąp tekst pomocy poniżej maski logowania (dozwolone HTML)",
"html": "HTML",
"iam": "Dostawca tożsamości",
"iam_attribute_field": "Pole atrybutów",
"iam_authorize_url": "Punkt końcowy autoryzacji",
"iam_auth_flow": "Przepływ uwierzytelniania",
"iam_auth_flow_info": "Oprócz przepływu kodu autoryzacyjnego (Standardowy przepływ w Keycloak), który służy do logowania jednokrotnego logowania, mailcow obsługuje również przepływ uwierzytelniania z bezpośrednimi poświadczeniami. Mailpassword Flow próbuje zweryfikować dane uwierzytelniające użytkownika za pomocą Keycloak Admin REST API. mailcow pobiera hashowane hasło z atrybutu <code>mailcow_password</code>, który jest mapowany w Keycloak.",
"iam_basedn": "Baza DN",
"iam_client_id": "ID klienta",
"iam_client_secret": "Sekret klienta",
"iam_client_scopes": "Zakresy klientów",
"iam_default_template": "Domyślny szablon",
"iam_default_template_description": "Jeśli użytkownikowi nie zostanie przypisany żaden szablon, domyślny szablon zostanie użyty do utworzenia skrzynki pocztowej, ale nie do aktualizacji skrzynki pocztowej.",
"iam_description": "Skonfiguruj zewnętrznego dostawce uwierzytelniania<br>Skrzynki pocztowe użytkownika zostaną automatycznie utworzone przy pierwszym logowaniu, pod warunkiem, że zostało ustawione mapowanie atrybutów.",
"iam_extra_permission": "Aby następujące ustawienia działały, klient mailcow w Keycloak potrzebuje <code>konta serwisowego</code> oraz uprawnień do <code>podgląd-użytkowników</code>.",
"iam_host": "Host",
"iam_host_info": "Wprowadź jeden lub więcej hostów LDAP, oddzielonych przecinkami.",
"iam_import_users": "Zaimportuj użytkowników",
"iam_login_provisioning": "Automatyczne tworzenie użytkowników przy logowaniu",
"iam_mapping": "Mapowanie atrybutów",
"iam_bindpass": "Powiąż hasło",
"iam_periodic_full_sync": "Okresowa pełna synchronizacja",
"iam_port": "Port",
"iam_realm": "Realm",
"iam_redirect_url": "Przekierowanie Url",
"iam_rest_flow": "Mailpassword Flow",
"iam_server_url": "Adres URL serwera",
"iam_sso": "Pojedyncze logowanie",
"iam_sync_interval": "Interwał synchronizacji / importu (min)",
"iam_test_connection": "Test połączenia",
"iam_token_url": "Tokenowy punkt końcowy",
"iam_userinfo_url": "Endpoint informacji o użytkowniku",
"iam_username_field": "Pole nazwy użytkownika",
"iam_binddn": "Powiąź DN",
"iam_use_ssl": "Używaj SSL",
"iam_use_ssl_info": "Jeśli włączysz SSL, a port zostanie ustawiony na 389, zostanie automatycznie nadpisany, aby użyć 636.",
"iam_use_tls": "Używaj StartTLS",
"iam_use_tls_info": "Jeśli włączono TLS, należy użyć domyślnego portu dla serwera LDAP (389). Nie można używać portów SSL.",
"iam_version": "Wersja",
"ignore_ssl_error": "Ignoruj błędy SSL",
"in_use_by": "W użyciu przez",
"include_exclude": "Uwzględnij/Nie uwzględniaj",
"include_exclude_info": "Domyślnie - bez zaznaczenia - <b>wszystkie skrzynki pocztowe</b> są adresowane",
"includes": "Uwzględnij tych odbiorców",
"ip_check": "Sprawdź IP",
"ip_check_disabled": "Sprawdzenie IP jest wyłączone. Możesz go włączyć w obszarze <br> <strong>System > Konfiguracja > Opcje > Dostosuj</strong>",
"ip_check_opt_in": "Opt-In korzystania z usług stron trzecich <strong>ipv4.mailcow.email</strong> i <strong>ipv6.mailcow.email</strong> w celu rozwiązania zewnętrznych adresów IP.",
"is_mx_based": "Bazuje na MX",
"last_applied": "ostatnio zastosowany",
"license_info": "Licencja nie jest wymagana, ale pomaga w dalszym rozwoju.<br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"SAL order\">Zarejestruj swój GUID tutaj</a> lub <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Zamówienie wsparcia\">kup wsparcie dla instalacji mailcow.</a>",
"link": "Link",
"login_time": "Cześć logowania",
"logo_info": "Twój obraz zostanie przeskalowany do wysokości 40px dla górnego paska nawigacyjnego i max. szerokości 250px dla strony startowej. Zalecana jest skalowalna grafika.",
"recipients": "Odbiorcy",
"send": "Wyślij",
"sender": "Nadawca",
"lookup_mx": "Destynacja jest regularnym wyrażeniem, które pasuje do nazwy MX (<code>.*\\\\.google\\.com</code>, aby przekierować całą pocztę skierowaną do MX kończącego się na google.com w tym hopie)",
"main_name": "Nazwa \"mailcow UI\"",
"merged_vars_hint": "Wyszarzone wiersze zostały połączone z <code>vars. (local.) inc.php</code> i nie można ich modyfikować.",
"message_size": "Rozmiar wiadomości",
"nexthop": "Następny hop",
"needs_restart": "potrzebny restart",
"no": "&#10005;",
"no_active_bans": "Brak aktywnych banów",
"no_new_rows": "Brak dostępnych kolejnych wierszy",
"oauth2_apps": "Aplikacje OAuth2",
"oauth2_add_client": "Dodaj klienta OAuth2",
"oauth2_client_id": "ID klienta",
"oauth2_client_secret": "Sekret klienta",
"oauth2_info": "Implementacja OAuth2 obsługuje typ grantu \"Kod autoryzacji\" i wydaje tokeny odświeżania.<br>\nSerwer automatycznie wydaje również nowe tokeny odświeżania, po użyciu tokena odświeżania.<br><br>\n&#8226; Domyślnym zakresem jest <i>profil</i>. Tylko użytkownicy skrzynek pocztowych mogą być uwierzytelniani w OAuth2. Jeśli parametr zakresu zostanie pominięty, wraca do <i>profil</i>.<br>\n\nParametr <i>state</i> musi zostać wysłany przez klienta w ramach żądania autoryzacji.<br><br>>\nŚcieżki zapytań do API OAuth2: <br>\n<ul>\nPunkt końcowy autoryzacji: <kod>/autoryzuj</koduj</koduj</li>\nPunkt końcowy tokena: <kod>/autoth/token</kod></li>\nStrona zasobów: <kod>/prawo/profil</kod>>\n</ul>\nRegeneracja tajemnicy klienta nie spowoduje wygaśnięcia istniejących kodów autoryzacyjnych, ale nie odnowi ich tokena.<br><br>\nOdwołanie tokenów klienta spowoduje natychmiastowe zakończenie wszystkich aktywnych sesji. Wszyscy klienci muszą się ponownie uwierzytelnić.",
"oauth2_redirect_uri": "Przekieruj URI",
"oauth2_renew_secret": "Wygeneruj sekret nowego klienta",
"oauth2_revoke_tokens": "Unieważnij wszystkie tokeny klienta",
"optional": "Opcjonalny",
"options": "Opcje",
"password_length": "Długość hasła",
"password_policy": "Polityka haseł",
"password_policy_chars": "Musi zawierać co najmniej jeden znak alfabetyczny",
"password_policy_length": "Minimalna długość hasła to %d",
"password_policy_lowerupper": "Musi zawierać małe i duże litery",
"password_policy_numbers": "Musi zawierać co najmniej jeden numer",
"password_policy_special_chars": "Musi zawierać znaki specjalne",
"password_reset_info": "Jeśli nie jest udostępniony e-mail zapasowy, ta funkcja nie może być używana.",
"password_reset_settings": "Ustawienia odzyskiwania haseł",
"password_reset_tmpl_html": "Szablon HTML",
"password_reset_tmpl_text": "Szablon tekstu",
"password_settings": "Ustawienia hasła",
"quarantine_bcc": "Wyślij kopię wszystkich powiadomień (BCC) do tego odbiorcy: <br><small>Pozostaw pustą aby wyłączyć. <b>Niepodpisana, niezaznaczona poczta. Powinna być dostarczana tylko wewnętrznie.</b></small>",
"quarantine_exclude_domains": "Wyklucz domeny i domeny aliasowe",
"quarantine_max_age": "Maksymalny wiek w dniach <br><small>Wartość musi być równa lub większa niż 1 dzień.</small>",
"quarantine_max_score": "Odrzuć powiadomienie, jeśli wskaźnik spamu wiadomości jest wyższy niż ta wartość: <br><small>Domyślne do 9999.0</small>",
"quarantine_max_size": "Maksymalny rozmiar w MiB (większe elementy są odrzucane):<br><small>0 oznacza, że <b>nie</b> oznacza nieograniczony.</small>",
"quarantine_notification_html": "Szablon wiadomości e-mail z powiadomieniem:<br><small> Pozostaw puste, aby przywrócić szablon domyślny.</small>",
"quarantine_notification_sender": "Powiadomienie nadawcy wiadomości e-mail",
"quarantine_notification_subject": "Powiadomienie E-mail Temat",
"quarantine_redirect": "<b>Przekieruj wszystkie powiadomienia </b> do tego odbiorcy:<br><small> Pozostaw pusty aby wyłączyć. <b>Niepodpisana, niezaznaczona poczta. Powinny być dostarczane tylko wewnętrznie.</b></small>",
"quarantine_release_format": "Format zwolnionych przedmiotów",
"quarantine_release_format_att": "Jako załącznik",
"quarantine_release_format_raw": "Niezmodyfikowany oryginał",
"quarantine_retention_size": "Retencje na skrzynkę pocztową: <br><small>0 oznacza <b>nieaktywne</b>.</small>",
"quicklink_text": "Pokaż lub ukryj szybkie linki do innych stron logowania pod formularzem logowania",
"quota_notification_html": "Szablon wiadomości e-mail z powiadomieniem:<br><small> Pozostaw puste, aby przywrócić szablon domyślny.</small>",
"quota_notification_sender": "Powiadomienie nadawcy wiadomości e-mail",
"quota_notification_subject": "Temat powiadomienia e-mail",
"quota_notifications": "Powiadomienia o limitach",
"quota_notifications_info": "Powiadomienia o limktach są wysyłane do użytkowników raz przy przekroczaniu 80% i raz przy przekraczaniu 95% zużycia.",
"quota_notifications_vars": "{{percent}} równa się aktualnemu limitowi użytkownika<br>{{username}} jest nazwą skrzynki pocztowej",
"queue_unban": "Zdejmij bana",
"rate_name": "Nazwa oceny",
"regen_api_key": "Regeneruj klucz API",
"regex_maps": "Mapy Regex",
"relay_from": "\"Od:\" adres",
"relay_rcpt": "\"Do:\"Adres",
"relay_run": "Uruchom test",
"relayhosts": "Transporty zależne od nadawcy",
"relayhosts_hint": "Zdefiniuj transporty zależne od nadawcy, aby móc wybrać je w oknie dialogowym konfiguracji domeny.<br>\nUsługa transportu jest zawsze \"smtp:\" i dlatego uruchomj TLS, gdy będzie oferowana. Owinięty TLS (SMTPS) nie jest obsługiwany. Pod uwagę brane jest indywidualne ustawienie polityki wychodzącej TLS użytkownika.<br>\nDotyczy wybranych domen, w tym domen aliasowych.",
"remove_row": "Usuń wiersz",
"reset_default": "Zresetuj do ustawień domyślnych",
"reset_limit": "Usuń hash",
"reset_password_vars": "<code>{{link}}</code> Wygenerowany link do resetu hasła <br><code>{{username}}</code> Nazwa skrzynki pocztowej użytkownika, który poprosił o zresetowanie hasła<br><code>{{username2}}</code> Nazwa skrzynki pocztowej do odzyskiwania <br><code>{{date}}</code> Data złożenia żądania resetowania hasła<br><code>{{token_lifetime}}</code>Żywotność tokena w minutach<br><code>{{hostname}}</code> Nazwa hosta mailcow",
"restore_template": "Pozostaw puste, aby przywrócić szablon domyślny.",
"routing": "Routing",
"rsetting_add_rule": "Dodaj regułę",
"rsetting_content": "Zawartość reguły",
"rsetting_desc": "Krótki opis",
"rsetting_no_selection": "Proszę zaznaczyć regułę",
"rsetting_none": "Brak dostępnych reguł",
"rsettings_insert_preset": "Wstaw przykład presetowany \"%s\"",
"rsettings_preset_1": "Wyłącz wszystkie z wyjątkiem DKIM i limitu stawek dla uwierzytelnionych użytkowników",
"rsettings_preset_2": "Administratorzy poczty pozwalają na spam",
"rsettings_preset_3": "Zezwalaj tylko określonym nadawcom na skrzynkę pocztową (tj. używaj tylko jako wewnętrznej skrzynki pocztowej)",
"rsettings_preset_4": "Wyłącz Rspamd dla domeny",
"rspamd_com_settings": "Nazwa ustawienia zostanie automatycznie wygenerowana, zobacz przykładowe ustawienia wstępne poniżej. Aby uzyskać więcej informacji, zobacz <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd docs</a>",
"rspamd_global_filters": "Globalne mapy filtrów",
"rspamd_global_filters_agree": "Będę ostrożny!",
"rspamd_global_filters_info": "Globalne mapy filtrów zawierają różne rodzaje globalnych list dozwolonych i zablokowanych adresów.",
"rspamd_global_filters_regex": "Ich imiona wyjaśniają ich cel. Cała zawartość musi zawierać ważne wyrażenie regularne w formacie \"/pattern/options\" (e.g. <code>/.+@domain\\.tld/i</code>).<br>\nChociaż podstawowe kontrole są wykonywane na każdej linii regex, funkcja Rspamd może zostać złamana, jeśli nie odczyta poprawnie składni.<br>>\nRspamd po zmianie spróbuje odczytać zawartość mapy. Jeśli wystąpią problemy, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">restart Rspamd</a>, aby wymusić ponowne ładowanie mapy.<br> Elementy z listy odrzuconych są wyłączone z kwarantanny.",
"rspamd_settings_map": "Mapa ustawień Rspamd",
"sal_level": "Poziom Moo",
"service": "Usługa",
"service_id": "Id usługi",
"subject": "Temat",
"success": "Sukces",
"sys_mails": "Maile systemowe",
"task": "Zadanie",
"text": "Tekst",
"title": "Tytuł",
"title_name": "Tytuł strony internetowej \"mailcow UI\"",
"to_top": "Powrót na górę",
"transport_dest_format": "Regex lub syntax: example.org, .example.org, *, box@example.org\n(wiele wartości można rozdzielić przecinkami)",
"transport_maps": "Mapy transportu",
"transport_test_rcpt_info": "&#8226; Użyj null@hosted.mailcow.de aby przetestować przekazywanie do nieznanego miejsca docelowego.",
"transports_hint": "&#8226; Wpis mapy transportowej <b>overrules</b> mapa transportowa zależna od nadawcy</b>.<br>\nNajlepiej stosować transporty oparte na MX &#8226;.<br>\nUstawienia zasad Outbound TLS dotyczące użytkownika są ignorowane i mogą być egzekwowane tylko przez wpisy mapy zasad TLS\n&#8226; Usługa transportu dla zdefiniowanych transportów jest zawsze \"smtp:\" i dlatego uruchomi TLS, gdy będzie oferowana. Wrapped TLS (SMTPS) nie jest obsługiwany.<br>\nAdresy pasujące do \"/localhost$/\" będą zawsze transportowane przez \"lokalne:\", dlatego miejsce docelowe \"*\" nie będzie miało zastosowania do tych adresów.<br>\n&#8226; Aby określić poświadczenia dla przykładowego następnego hopa \"[host]:25\", Postfix <b>zawsze</b> kolejkuje zapytania o \"host\" przed wyszukaniem \"[host]:25\". Takie zachowanie uniemożliwia jednoczesne użycie \"host\" i \"[host]:25.",
"ui_footer": "Stopka (dozwolone HTML)",
"ui_header_announcement": "Ogłoszenia",
"ui_header_announcement_active": "Ustaw ogłoszenie jako aktywne",
"ui_header_announcement_content": "Tekst (dozwolony HTML)",
"ui_header_announcement_help": "Ogłoszenie jest widoczne dla wszystkich zalogowanych użytkowników oraz na ekranie logowania interfejsu użytkownika.",
"ui_header_announcement_select": "Wybierz typ ogłoszenia",
"ui_header_announcement_type": "Typ",
"ui_header_announcement_type_danger": "Bardzo ważne",
"ui_header_announcement_type_info": "Info",
"ui_header_announcement_type_warning": "Ważne",
"ui_texts": "Etykiety i teksty UI",
"unban_pending": "oczekuje na odblokowanie",
"upload": "Prześlij",
"user_link": "Link użytkownika",
"user_quicklink": "Ukryj Quicklink do strony logowania użytkownika",
"validate_license_now": "Sprawdź identyfikator GUID względem serwera licencji",
"verify": "Zweryfikuj",
"yes": "&#10003;"
"username": "Nazwa użytkownika"
},
"danger": {
"access_denied": "Odmowa dostępu lub nieprawidłowe dane w formularzu",
@@ -424,17 +113,17 @@
"description_invalid": "Nieprawidłowy opis źródła",
"dkim_domain_or_sel_invalid": "Nieprawidłowa domena lub selektor DKIM",
"domain_exists": "Domena %s już istnieje",
"domain_invalid": "Nazwa domeny jest pusta lub nieprawidłowa",
"domain_invalid": "Błędna nazwa domeny",
"domain_not_empty": "Nie można usunąć niepustej domeny",
"domain_not_found": "Nie znaleziono domeny %s",
"domain_quota_m_in_use": "Limit domeny musi być większy lub równy do %s MiB",
"goto_empty": "Adres alias musi zawierać co najmniej jeden prawidłowy adres goto",
"domain_quota_m_in_use": "Limit domeny %s MiB",
"goto_empty": "Adres Idź do nie może być pusty",
"goto_invalid": "Adres Idź do jest nieprawidłowy",
"is_alias": "%s został już podany jako alias",
"is_alias_or_mailbox": "%s podano wcześniej jako alias lub skrzynkę",
"is_spam_alias": "%s podano wcześniej jako alias dla spam",
"last_key": "Nie można usunąć ostatniego klucza, zamiast tego należy wyłączyć TFA.",
"login_failed": "Logowanie nie powiodło się",
"last_key": "Nie można usunąć ostatniego klucza",
"login_failed": "Niepowodzenie logowania",
"mailbox_invalid": "Nieprawidłowa nazwa skrzynki",
"mailbox_quota_exceeded": "Wielkość przekracza limit domeny (maks. %d MiB)",
"mailbox_quota_exceeds_domain_quota": "Maksymalna wielkość przekracza limit domeny",
@@ -457,106 +146,7 @@
"target_domain_invalid": "Domena Idź do jest nieprawidłowa",
"targetd_not_found": "Nie znaleziono domeny docelowej",
"username_invalid": "Nie można użyć nazwy użytkownika",
"validity_missing": "Proszę wyznaczyć termin ważności",
"to_invalid": "Pole odbiorca nie może być puste",
"app_name_empty": "Nazwa aplikacji nie może być pusta",
"app_passwd_id_invalid": "Identyfikator hasła aplikacji %s jest niepoprawny",
"authsource_in_use": "Nie można zmienić ani usunąć dostawcy tożsamości, ponieważ jest używany przez co najmniej jednego użytkownika.",
"bcc_empty": "Miejsce docelowe BCC nie może być puste",
"bcc_exists": "Mapa BCC %s istnieje dla typu %s",
"bcc_must_be_email": "Miejsce docelowe BCC %s nie jest prawidłowym adresem e-mail",
"comment_too_long": "Komentarz zbyt długi, maksymalnie 160 dozwolonych znaków.",
"cors_invalid_method": "Podano nieprawidłową metodę Allow-Method",
"cors_invalid_origin": "Podano nieprawidłową wartość Allow-Origin",
"defquota_empty": "Domyślny limit skrzynki pocztowej nie może wynosić 0",
"demo_mode_enabled": "Tryb demo jest włączony",
"dkim_domain_or_sel_exists": "Klucz DKIM dla \"%s\" istnieje i nie zostanie nadpisany",
"domain_cannot_match_hostname": "Domena nie może być taka sama jak nazwa hosta",
"extended_sender_acl_denied": "brak ACL do ustawiania adresów nadawcy zewnętrznego",
"extra_acl_invalid": "Adres nadawcy zewnętrznego \"%s\" jest nieważny",
"extra_acl_invalid_domain": "Nadawca zewnętrzny \"%s\" używa nieprawidłowej domeny",
"fido2_verification_failed": "Weryfikacja FIDO2 nie powiodła się: %s",
"file_open_error": "Nie można otworzyć pliku do zapisu",
"filter_type": "Niewłaściwy typ filtra",
"from_invalid": "Nadawca nie może być pusty",
"generic_server_error": "Wystąpił nieoczekiwany błąd serwera. Skontaktuj się z administratorem.",
"global_filter_write_error": "Nie można zapisać pliku filtra: %s",
"global_map_invalid": "Id mapy globalnej %s nieprawidłowe",
"global_map_write_error": "Nie można napisać globalnej mapy ID %s: %s",
"ham_learn_error": "Błąd uczenia ham: %s",
"iam_test_connection": "Połączenie nie powiodło się",
"imagick_exception": "Błąd: wyjątek Imagick podczas odczytu obrazu",
"img_dimensions_exceeded": "Obraz przekracza maksymalny rozmiar obrazu",
"img_invalid": "Nie można zweryfikować pliku obrazu",
"img_size_exceeded": "Obraz przekracza maksymalny rozmiar pliku",
"img_tmp_missing": "Nie można zweryfikować pliku obrazu: Nie znaleziono pliku tymczasowego",
"invalid_bcc_map_type": "Nieprawidłowy typ mapy BCC",
"invalid_destination": "Format docelowy \"%s\" jest nieprawidłowy",
"invalid_filter_type": "Nieprawidłowy typ filtra",
"invalid_host": "Nieprawidłowy określony host: %s",
"invalid_mime_type": "Niepoprawny typ mime",
"invalid_nexthop": "Następny format hop jest nieprawidłowy",
"invalid_nexthop_authenticated": "Następny hop już istnieje z innymi danymi logowania — zaktualizuj najpierw istniejące dane uwierzytelniające dla tego hopa",
"invalid_recipient_map_new": "Określony nieprawidłowy nowy odbiorca: %s",
"invalid_recipient_map_old": "Określony nieprawidłowy pierwotny odbiorca: %s",
"invalid_reset_token": "Nieprawidłowy token resetu",
"ip_list_empty": "Lista dozwolonych adresów IP nie może być pusta",
"mailbox_defquota_exceeds_mailbox_maxquota": "Domyślny limit skrzynki pocztowej przekracza maksymalny dozwolony limit",
"malformed_username": "Nieprawidłowy format nazwy użytkownika.",
"map_content_empty": "Zawartość mapy nie może być pusta",
"max_age_invalid": "Nieprawidłowa wartość maksymalnego wieku: %s",
"mode_invalid": "Tryb %s jest nieprawidłowy",
"mx_invalid": "Rekord MX %s jest nieprawidłowy",
"mysql_error": "Błąd MySQL: %s",
"network_host_invalid": "Nieprawidłowa sieć lub host: %s",
"next_hop_interferes": "%s powoduje konflikt z nexthop %s.",
"next_hop_interferes_any": "Istniejący next hop koliduje z %s.”",
"nginx_reload_failed": "Nie udało się przeładować Nginx: %s",
"no_user_defined": "Brak zdefiniowanego użytkownika",
"password_reset_invalid_user": "Skrzynka pocztowa nie została znaleziona lub nie ustawiono adresu e-mail do odzyskiwania",
"password_reset_na": "Odzyskiwanie hasła jest obecnie niedostępne. Skontaktuj się ze swoim administratorem.",
"private_key_error": "Błąd klucza prywatnego: %s",
"pushover_credentials_missing": "Brak tokena i/lub klucza Pushover",
"pushover_key": "Klucz Pushover ma niewłaściwy format",
"pushover_token": "Token Pushover ma zły format",
"recipient_map_entry_exists": "Istnieje wpis mapy odbiorcy \"%s",
"recovery_email_failed": "Nie można wysłać e-maila odzyskiwania. Skontaktuj się ze swoim administratorem.",
"redis_error": "Błąd Redis: %s",
"relayhost_invalid": "Wpis mapy %s jest niepoprawny",
"release_send_failed": "Nie udało się zwolnić wiadomości: %s.",
"required_data_missing": "Brakuje wymaganych danych %s",
"reset_f2b_regex": "Filtr Regex nie mógł zostać zresetowany na czas, spróbuj ponownie lub poczekaj jeszcze kilka sekund i przeładuj stronę.",
"reset_token_limit_exceeded": "Limit tokenów Reset został przekroczony. Spróbuj ponownie później",
"rl_timeframe": "Nieprawidłowo ustawiony przedział czasu limitu",
"rspamd_ui_pw_length": "Hasło do Rspamd UI powinno mieć co najmniej 6 znaków długości",
"script_empty": "Skrypt nie może być pusty",
"set_acl_failed": "Nie udało się ustawić ACL",
"settings_map_invalid": "Ustawienia id mapy %s są nieprawidłowe",
"sieve_error": "Błąd podczas analizy skryptu Sieve: %s",
"spam_learn_error": "Błąd uczenia spamu: %s.",
"subject_empty": "Temat nie może być pusty",
"targetd_relay_domain": "Domena docelowa %s jest skonfigurowana jako domena przekazująca relay",
"template_exists": "Szablon %s już istnieje",
"template_id_invalid": "Identyfikator szablonu %s niepoprawny",
"template_name_invalid": "Nazwa szablonu niepoprawna",
"temp_error": "Tymczasowy błąd",
"text_empty": "Pole tekstowe nie może być puste",
"tfa_token_invalid": "Niepoprawny token TFA",
"tls_policy_map_dest_invalid": "Podano błędne lub nieobsługiwane miejsce docelowe dla tej polityki",
"tls_policy_map_entry_exists": "Istnieje mapa polityki TLS \"%s",
"tls_policy_map_parameter_invalid": "Parametr polityki jest nieprawidłowy",
"totp_verification_failed": "Weryfikacja TOTP nie powiodła się",
"transport_dest_exists": "Miejsce docelowe transportu „%s” już istnieje",
"webauthn_verification_failed": "Weryfikacja WebAuthn nie powiodła się: %s",
"webauthn_authenticator_failed": "Wybrany autoryzator nie został odnaleziony",
"webauthn_publickey_failed": "Nie przechowywano klucza publicznego dla wybranego uwierzytelniacza",
"webauthn_username_failed": "Wybrany autoryzator należy do innego konta",
"unknown": "Wystąpił nieznany błąd",
"unknown_tfa_method": "Nieznana metodą TFA",
"unlimited_quota_acl": "Ustawienie nieograniczonego limitu przestrzeni jest zabronione przez reguły ACL",
"value_missing": "Proszę o podanie wszystkich wartości",
"version_invalid": "Wersja %s jest niepoprawna",
"yotp_verification_failed": "Weryfikacja OTP Yubico nie powiodła się: %s"
"validity_missing": "Proszę wyznaczyć termin ważności"
},
"edit": {
"active": "Aktywny",
@@ -601,58 +191,13 @@
"target_domain": "Domena docelowa",
"title": "Edytuj obiekt",
"unchanged_if_empty": "Jeżli bez zmian, nie wypełniaj",
"username": "Nazwa użytkownika",
"delete_ays": "Proszę o potwierdzenie procesu usuwania.",
"acl": "ACL (Pozwolenie)",
"admin": "Edytyj administratora",
"advanced_settings": "Ustawienia zaawansowane",
"allow_from_smtp": "Zezwalaj tylko tym adresom IP na używanie <b>SMTP</b>",
"allow_from_smtp_info": "Pozostaw puste, aby zezwolić na wszystkich nadawców.<br>adresy IPv4/IPv6 i sieci.",
"allowed_protocols": "Dozwolone protokoły dla bezpośredniego dostępu użytkownika (nie wpływa na protokoły haseł aplikacji).",
"app_name": "Nazwa aplikacji",
"app_passwd": "Hasło do aplikacji",
"app_passwd_protocols": "Dozwolone protokoły dla hasła aplikacji",
"automap": "Spróbuj automatycznie mapować foldery (np. „Sent items”, „Sent” ⇒ „Sent” itp.)",
"bcc_dest_format": "Miejscem docelowym BCC musi być jeden prawidłowy adres e-mail.<br>Jeśli chcesz wysłać kopię na wiele adresów, utwórz alias i użyj go tutaj.",
"client_id": "Id klienta",
"client_secret": "Tajny klucz klienta(sekret)",
"comment_info": "Komentarz prywatny nie jest widoczny dla użytkownika, natomiast komentarz publiczny jest wyświetlany jako podpowiedź po najechaniu kursorem w widoku użytkownika.",
"created_on": "Stworzony na",
"custom_attributes": "Niestandardowe atrybuty",
"delete2": "Usunąć wiadomości na koncie docelowym, które nie występują na koncie źródłowym?",
"disable_login": "Zablokuj logowanie (przychodząca poczta nadal będzie przyjmowana)",
"domain_footer": "Stopka dla całej domeny",
"domain_footer_html": "Stopka HTML",
"domain_footer_info": "Stopki dla całej domeny są dodawane do wszystkich wychodzących wiadomości e-mail powiązanych z adresami w tej domenie.<br>W stopce można użyć następujących zmiennych:",
"domain_footer_info_vars": {
"auth_user": "{= auth_user =} - Uwierzytelniona nazwa użytkownika określona przez MTA",
"from_user": "{= from_user =} część użytkownika (local-part) adresu nadawcy; np. dla „moo@mailcow.tld\n” zwróci „moo”",
"from_name": "{= from_name =} nazwa nadawcy (From name) z nagłówka wiadomości; np. dla „Mailcow <moo@mailcow.tld\n>” zwróci „Mailcow”.",
"from_addr": "{= from_addr =} pełny adres nadawcy (z części envelope)",
"from_domain": "{= from_domain =} część domenowa adresu nadawcy (z envelope).",
"custom": "{= foo =} - jeśli skrzynka pocztowa ma niestandardowy atrybut „foo” o wartości „bar”, zwraca „bar”."
},
"domain_footer_plain": "Stopka w formacie tekstowym(PLAIN)",
"domain_footer_skip_replies": "Nie dodawaj stopki do odpowiedzi na e-maile",
"extended_sender_acl": "Adresy nadawców zewnętrznych",
"extended_sender_acl_info": "Klucz DKIM dla domeny powinien zostać zaimportowany, jeśli jest dostępny.\nPamiętaj, aby dodać ten serwer do odpowiadającego rekordu SPF typu TXT.\nKiedy domena lub domena aliasu zostanie dodana do tego serwera i pokrywa się z zewnętrznym adresem, zewnętrzny adres zostanie usunięty.",
"force_pw_update": "Wymuszenie aktualizacji hasła przy następnym logowaniu",
"force_pw_update_info": "Ten użytkownik będzie mógł logować się wyłącznie do %s. Hasła aplikacyjne pozostają aktywne.",
"footer_exclude": "Wyklucz ze stopki",
"gal": "Globalna lista adresowa",
"gal_info": "GAL zawiera wszystkie obiekty domeny i nie może być edytowana przez żadnego użytkownika. Informacje o dostępności (free/busy) w SOGo są niedostępne, jeśli funkcja jest wyłączona!<b>Uruchom ponownie SOGo, aby zastosować zmiany.</b>",
"generate": "generuj",
"grant_types": "Rodzaje grantów(Typy przyznawania dostępu)",
"internal": "Wewnętrzny",
"internal_info": "Aliasów wewnętrznych można używać tylko w obrębie własnej domeny lub domen aliasów.",
"last_modified": "Ostatnio modyfikowany",
"lookup_mx": "Destination to wyrażenie regularne dopasowujące nazwę serwera MX (np. <code>.*.google.com</code> — aby kierować całą pocztę wysyłaną do MX kończących się na google.com przez ten hop)."
"username": "Nazwa użytkownika"
},
"footer": {
"cancel": "Anuluj",
"confirm_delete": "Potwierdź usunięcie",
"delete_now": "Usuń teraz",
"delete_these_items": "Proszę potwierdzić zmiany w poniższym identyfikatorze obiektu",
"delete_these_items": "Czy jesteś pewien, że chcesz usunąć następujące elementy?",
"loading": "Proszę czekać...",
"restart_now": "Uruchom ponownie teraz"
},
@@ -671,14 +216,7 @@
"delayed": "Logowanie zostało opóźnione o %s sekund.",
"login": "Zaloguj się",
"password": "Hasło",
"username": "Nazwa użytkownika",
"forgot_password": "Zapomniałeś hasła?",
"login_linkstext": "Login nieprawidłowy?",
"login_usertext": "Zaloguj się jako użytkownik",
"login_domainadmintext": "Zaloguj się jako administrator domeny",
"login_admintext": "Zaloguj się jako admin",
"other_logins": "lub zaloguj za pomocą",
"email": "Adres e-mail"
"username": "Nazwa użytkownika"
},
"mailbox": {
"action": "Działanie",
@@ -746,15 +284,10 @@
"quarantine": "Kwarantanna",
"quick_actions": "Szybkie działania",
"remove": "Usuń",
"toggle_all": "Zaznacz wszystkie",
"confirm_delete": "Potwierdź usunięcie tego elementu.",
"learn_spam_delete": "Zapamiętaj jako spam i usuwaj w przyszłości",
"quick_delete_link": "Otwórz szybki link do usuwania"
"toggle_all": "Zaznacz wszystkie"
},
"queue": {
"queue_manager": "Menedżer kolejki",
"delete": "Usuń wszystko",
"ays": "Potwierdź, że chcesz usunąć wszystkie elementy z bieżącej kolejki."
"queue_manager": "Queue Manager"
},
"start": {
"help": "Pokaż/Ukryj panel pomocy",
@@ -765,7 +298,7 @@
"alias_added": "Alias/y został/y dodany/e",
"alias_domain_removed": "Usunięto alias domeny %s",
"alias_modified": "Zapisano zmiany w aliasie/ach %s",
"alias_removed": "Usunięto alias %s",
"alias_removed": "Usunięto alias %s ",
"aliasd_added": "Dodano alias domeny %s",
"aliasd_modified": "Zapisano zmiany w aliasie domeny %s",
"dkim_added": "Klucz DKIM został zapisany",
@@ -781,32 +314,23 @@
"forwarding_host_added": "Dodano hosta przekazującego %s",
"forwarding_host_removed": "Usunięto hosta przekazującego %s",
"item_deleted": "",
"items_deleted": "Elementy %s skutecznie usunięte",
"items_deleted": "Item %s successfully deleted",
"mailbox_added": "Dodano skrzynkę %s",
"mailbox_modified": "Zapisano zmiany w skrzynce %s",
"mailbox_removed": "Usunięto skrzynkę %s",
"object_modified": "Zapisano zmiany w obiekcie %s",
"resource_added": "Dodano śródło %s",
"resource_modified": "Zapisano zmiany w skrzynce %s",
"resource_removed": "Usunięto zasób %s",
"template_removed": "Szablon o identyfikatorze %s został usunięty.",
"tls_policy_map_entry_deleted": "Mapa polityki TLS o identyfikatorze %s została usunięta",
"tls_policy_map_entry_saved": "Wpis mapy polityki TLS \"%s\" został zapisany",
"ui_texts": "Zapisane zmiany w tekstach UI",
"upload_success": "Plik przesłany pomyślnie",
"verified_fido2_login": "Zweryfikowany login FIDO2",
"verified_totp_login": "Zweryfikowany login TOTP",
"verified_webauthn_login": "Zweryfikowany login WebAuthn",
"verified_yotp_login": "Zweryfikowany login Yubico OTP"
"resource_removed": "Usunięto zasób %s"
},
"tfa": {
"api_register": "%s używa Yubico Cloud API. Proszę pobrać klucz API dla Twojego klucza <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">tutaj</a>",
"api_register": "%s używa Yubico Cloud API. Proszę pobrać klucz API dla Twojego klucza <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">here</a>",
"confirm": "Potwierdź",
"confirm_totp_token": "Potwierdź zmiany przez wprowadzenie wygenerowanego tokenu",
"delete_tfa": "Wyłącz TFA",
"disable_tfa": "Wyłącz TFA do kolejnego udanego logowania",
"enter_qr_code": "Twój kod TOTP, jeśli Twoje urządzenie nie skanuje kodów QR.",
"key_id": "Identyfikator dla twojego urządzenia",
"key_id": "Identyfikator dla Twojego YubiKey",
"key_id_totp": "Identyfikator dla Twojego klucza",
"none": "Deaktywuj",
"scan_qr_code": "Zeskanuj następujący kod aplikacją uwierzytelniającą lub wprowadź kod ręcznie.",
@@ -816,16 +340,8 @@
"totp": "Time-based OTP (Google Authenticator itd.)",
"webauthn": "Uwierzytelnianie WebAuthn",
"waiting_usb_auth": "<i>Czekam na urządzenie USB...</i><br><br>Wciśnij teraz przycisk na urządzeniu WebAuthn USB.",
"waiting_usb_register": "<i> Czekam na urządzenie USB...</i><br><br>Wprowadź swoje hasło powyżej i potwierdź rejestrację przez naciśnięcie przycisku na urządzeniu USB.",
"yubi_otp": "Uwierzytelnianie Yubico OTP",
"authenticators": "Uwierzytelniacze",
"error_code": "Kod błędu",
"init_webauthn": "Inicjalizacja, proszę czekać...",
"reload_retry": "- (przeładuj przeglądarkę, jeśli błąd nadal występuje)",
"start_webauthn_validation": "Rozpocznij walidację",
"tfa_token_invalid": "Token TFA nieprawidłowy",
"u2f_deprecated": "Wygląda na to, że Twój klucz został zarejestrowany przy użyciu przestarzałej metody U2F. Dezaktywujemy dla Ciebie uwierzytelnianie dwuskładnikowe i usuniemy Twój klucz.",
"u2f_deprecated_important": "Zarejestruj swój klucz w panelu administracyjnym za pomocą nowej metody WebAuthn."
"waiting_usb_register": "<i> Czekam na urządzenie USB...</i><br><br>Wprowadź swoje hasło powyżej i potwierdź rejestrację WebAuthn przez naciśnięcie przycisku na urządzeniu WebAuthn USB.",
"yubi_otp": "Uwierzytelnianie Yubico OTP"
},
"user": {
"action": "Działanie",
@@ -855,7 +371,7 @@
"edit": "Edytuj",
"encryption": "Szyfrowanie",
"excludes": "Wyłączenia",
"force_pw_update": "<b>Musisz</b> ustawić nowe hasło, aby mieć dostęp do usług groupware.",
"force_pw_update": "<b>Musisz</b> zmienić hasło, aby używać webmaila.",
"hour": "Godzina",
"hourly": "Co godzinę",
"hours": "Godziny",
@@ -863,7 +379,7 @@
"interval": "Zakres",
"is_catch_all": "Funkcja catch-all dla domen/y",
"last_run": "Ostatnie uruchomienie",
"mailbox_details": "Szczegóły",
"mailbox_details": " Szczegóły skrzynki",
"messages": "wiadomości",
"never": "Nigdy",
"new_password": "Nowe hasło",
@@ -875,17 +391,17 @@
"remove": "Usuń",
"save_changes": "Zapisz zmiany",
"shared_aliases": "Aliasy współdzielone",
"shared_aliases_desc": "Współdzielone aliasy nie są objęte ustawieniami specyficznymi dla użytkownika, takimi jak filtr antyspamowy czy polityka szyfrowania.\nOdpowiadające im filtry antyspamowe mogą być tworzone wyłącznie przez administratora — jako polityki obowiązujące dla całej domeny.",
"show_sieve_filters": "Pokaż filtr sieve aktywnego użytkownika",
"sogo_profile_reset": "Zresetuj profil SOGo",
"sogo_profile_reset_help": "Spowoduje to usunięcie profilu użytkownika SOGo oraz bezpowrotne <b>usunięcie wszystkich danych kontaktów i kalendarza.</b>",
"sogo_profile_reset_now": "Zresetuj profil teraz",
"spam_aliases": "Tymczasowe aliasy email",
"shared_aliases_desc": "Na aliasy współdzielone nie wpływają filtry spamu i ustawienia TLS.",
"show_sieve_filters": "Twój filtr sieve",
"sogo_profile_reset": "Usuń profil SOGo (webmail)",
"sogo_profile_reset_help": "To usunie ustawienia SOGo <b>bezpowrotnie</b>.",
"sogo_profile_reset_now": "Usuń profil teraz",
"spam_aliases": "Tymczasowy alias email",
"spamfilter": "Filtr spamu",
"spamfilter_behavior": "Ocena",
"spamfilter_behavior": "Rating",
"spamfilter_bl": "Czarna lista",
"spamfilter_bl_desc": "Adresy e-mail znajdujące się na liście zablokowanych (denylist) są <b>zawsze</b>klasyfikowane jako spam i odrzucane.\nOdrzucone wiadomości <b>nie są</b>kopiowane do kwarantanny.\nMożna używać symboli wieloznacznych (wildcardów).\nFiltr jest stosowany wyłącznie do bezpośrednich aliasów (aliasów kierujących do jednej skrzynki pocztowej), z wyłączeniem aliasów typu „catch-all” oraz samej skrzynki.",
"spamfilter_default_score": "Wartości domyślne",
"spamfilter_bl_desc": "Adresy email z czarnej listy <b>zawsze</b> klasyfikuj jako spam i odrzucaj. Można użyć wildcards.",
"spamfilter_default_score": "Wartości domyślne:",
"spamfilter_green": "Zielony: ta wiadomość nie jest spamem",
"spamfilter_hint": "Pierwsza wartość oznacza \"niską punktację spam\", druga wartość oznacza \"wysoką punktację spam\".",
"spamfilter_red": "Czerwony: ta wiadomość jest spamem i zostanie odrzucona przez serwer",
@@ -896,13 +412,13 @@
"spamfilter_table_remove": "Usuń",
"spamfilter_table_rule": "Zasada",
"spamfilter_wl": "Biała lista",
"spamfilter_wl_desc": "Adresy e-mail znajdujące się na liście dozwolonych (allowlist) są zaprogramowane tak, aby <b> nigdy nie </b> były klasyfikowane jako spam.\nMożna używać symboli wieloznacznych (wildcardów).\nFiltr jest stosowany wyłącznie do bezpośrednich aliasów (aliasów wskazujących na jedną skrzynkę pocztową), z wyłączeniem aliasów typu „catch-all” oraz samej skrzynki pocztowej",
"spamfilter_wl_desc": "Adresy email z białej listy <b>nigdy</b> nie klasyfikuj jako spam. Można użyć wildcards.",
"spamfilter_yellow": "Żółty: ta wiadomość może być spamem, zostanie oznaczona jako spam i przeniesiona do folderu spam",
"sync_jobs": "Zadania synchronizacji",
"sync_jobs": "Polecenie synchronizacji",
"tag_handling": "Ustaw obsługę znaczników pocztowych",
"tag_help_example": "Przykład adresu email z etykietą: ja<b>+Facebook</b>@example.org",
"tag_help_explain": "W podfolderze: tworzy nowy podfolder z nazwą taką jak etykieta, który zostanie umieszczony pod Skrzynką odbiorczą (\"Skrzynka odbiorcza/Facebook\").<br>\r\nW temacie: nazwy etykiet zostaną dodane na początku tematów wiadomości, np.: \"[Facebook] Moje wiadomości\".",
"tag_in_none": "Nie wykonuj żadnej akcji",
"tag_in_none": "Nic nie robić",
"tag_in_subfolder": "W podfolderze",
"tag_in_subject": "W temacie",
"tls_enforce_in": "Uruchom TLS przychodzące",
@@ -913,176 +429,6 @@
"username": "Nazwa użytkownika",
"week": "Tydzień",
"weekly": "Co tydzień",
"weeks": "Tygodnie",
"q_add_header": "Spam",
"advanced_settings": "Ustawienia zaawansowane",
"app_hint": "Hasła aplikacji są alternatywnymi hasłami dla logowania IMAP, SMTP, CalDAV, CardDAV i EAS. Nazwa użytkownika pozostaje niezmieniona. Webmail SOGo nie jest dostępny za pośrednictwem haseł aplikacji.",
"allowed_protocols": "Dozwolone protokoły",
"app_name": "Nazwa aplikacji",
"app_passwds": "Hasła do aplikacji",
"apple_connection_profile": "Profil połączenia Apple",
"apple_connection_profile_complete": "Ten profil połączenia obejmuje parametry IMAP i SMTP, a także ścieżki CalDAV (kalendarze) i CardDAV (kontakty) dla urządzenia Apple.",
"apple_connection_profile_mailonly": "Ten profil połączenia zawiera parametry konfiguracji IMAP i SMTP dla urządzenia Apple.",
"apple_connection_profile_with_app_password": "Nowe hasło aplikacji jest generowane i dodawane do profilu, dzięki czemu nie trzeba wprowadzać hasła podczas konfigurowania urządzenia. Proszę nie udostępniaj tego pliku, ponieważ zapewnia on pełny dostęp do skrzynki pocztowej.",
"attribute": "Atrybut",
"authentication": "Uwierzytelnianie",
"change_password_hint_app_passwords": "Twoje konto ma %d hasła aplikacji, które nie zostaną zmienione. Aby nimi zarządzać, przejdź do zakładki Hasła aplikacji.",
"clear_recent_successful_connections": "Wyczyść udane połączenia",
"create_app_passwd": "Stwórz hasło do aplikacji",
"created_on": "Stworzony na",
"delete_ays": "Proszę o potwierdzenie procesu usuwania.",
"direct_protocol_access": "Ten użytkownik skrzynki pocztowej ma <b>bezpośredni, zewnętrzny dostęp</b> do następujących protokołów i aplikacji. To ustawienie jest kontrolowane przez administratora. Można tworzyć hasła aplikacji, aby przyznać dostęp do poszczególnych protokołów i aplikacji.Przycisk „Webmail” umożliwia jednokrotne logowanie (SSO) do SOGo i jest zawsze dostępny.",
"email": "Email",
"email_and_dav": "E-maile, kalendarze i kontakty",
"empty": "Brak wyników",
"expire_in": "wygasa w",
"fido2_webauthn": "FIDO2/WebAuthn",
"from": "od",
"generate": "generuj",
"last_mail_login": "Ostatni login na skrzynkę pocztową",
"last_pw_change": "Ostatnia zmiana hasła",
"last_ui_login": "Ostatni login UI",
"loading": "Ładowanie...",
"login_history": "Historia logowania",
"mailbox": "Skrzynka pocztowa",
"mailbox_general": "Ogólne ustawienia skrzynki",
"mailbox_settings": "Ustawienia",
"month": "miesiąc",
"months": "miesiące",
"no_last_login": "Brak ostatnich danych logowania do interfejsu użytkownika",
"open_logs": "Otwórz logi użytkownika",
"open_webmail_sso": "­Webmail",
"overview": "Przegląd",
"password": "Hasło",
"password_repeat": "Hasło (powtórz)",
"password_reset_info": "Jeśli nie ma wiadomości e-mail do odzyskiwania hasła, ta funkcja nie może być używana.",
"protocols": "Protokoły",
"pushover_evaluate_x_prio": "Eskaluj wiadomości o wysokim priorytecie [<code>X-Priority: 1</code>]",
"pushover_info": "Ustawienia powiadomień push będą stosowane do wszystkich czystych (niebędących spamem) wiadomości dostarczonych do <b>%s</b>, w tym aliasów (współdzielonych, niewspółdzielonych i oznaczonych).",
"pushover_only_x_prio": "Uwzględniaj tylko wiadomości o wysokim priorytecie [<code>X-Priority: 1</code>]",
"pushover_sender_array": "Uwzględnij następujące adresy e-mail nadawców <small>(oddzielone przecinkami)</small>",
"pushover_sender_regex": "Dopasuj nadawców według następującego regexu",
"pushover_text": "Tekst powiadomienia",
"pushover_title": "Tytuł powiadomienia",
"pushover_sound": "Dźwięk powiadomienia",
"pushover_vars": "Jeśli nie zdefiniowano filtra nadawcy, wszystkie wiadomości będą brane pod uwagę.<br>Filtry regex oraz dokładne sprawdzanie nadawców można definiować indywidualnie są one przetwarzane kolejno i nie zależą od siebie.</br>Dostępne zmienne dla treści i tytułu (prosimy pamiętać o zasadach ochrony danych osobowych).",
"pushover_verify": "Zweryfikuj dane logowania",
"pw_recovery_email": "E-mail do odzyskiwania hasła",
"q_all": "Wszystkie kategorie",
"q_reject": "Odrzucono",
"quarantine_category": "Kategoria powiadomień o kwarantannie",
"quarantine_category_info": "Kategoria powiadomień „Odrzucone” obejmuje wiadomości, które zostały odrzucone, natomiast „Folder spam” powiadamia użytkownika o wiadomościach umieszczonych w folderze spam.",
"quarantine_notification_info": "Po wysłaniu powiadomienia elementy zostaną oznaczone jako „powiadomione” i żadne kolejne powiadomienia nie zostaną wysłane dla danego elementu.",
"recent_successful_connections": "Zarejestrowano udane połączenia",
"running": "Uruchomiony",
"save": "Zapisz zmiany",
"sender_acl_disabled": "<span class=\"badge fs-6 bg-danger\">Sprawdzenie nadawcy jest wyłączone</span>",
"spam_score_reset": "Przywróć domyślne ustawienia serwera",
"status": "Status",
"syncjob_check_log": "Sprawdź log",
"syncjob_last_run_result": "Wynik ostatniego uruchomienia",
"syncjob_EX_OK": "Sukces",
"syncjob_EXIT_CONNECTION_FAILURE": "Problem z połączeniem",
"syncjob_EXIT_TLS_FAILURE": "Problem z szyfrowanym połączeniem",
"syncjob_EXIT_AUTHENTICATION_FAILURE": "Problem uwierzytelniania",
"syncjob_EXIT_OVERQUOTA": "Docelowa skrzynka pocztowa przekroczyła limit pojemności",
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Nie można połączyć się ze zdalnym serwerem",
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "Niewłaściwa nazwa użytkownika lub hasło",
"text": "Tekst",
"tfa_info": "Uwierzytelnianie dwuskładnikowe pomaga chronić Twoje konto.\nJeśli je włączysz, będziesz potrzebować haseł aplikacji, aby logować się do programów lub usług, które nie obsługują uwierzytelniania dwuskładnikowego (np. klientów poczty).",
"title": "Tytuł",
"value": "Wartość",
"verify": "Zweryfikuj",
"waiting": "Oczekuje",
"with_app_password": "z hasłem aplikacji",
"year": "rok",
"years": "lata"
},
"warning": {
"session_ua": "Nieprawidłowy token formularza: Błąd walidacji User-Agent",
"cannot_delete_self": "Nie można usunąć zalogowanego użytkownika",
"domain_added_sogo_failed": "Dodano domenę, ale nie udało się ponownie uruchomić SOGo, sprawdź logi serwera.",
"dovecot_restart_failed": "Nie udało się ponownie uruchomić Dovecota, sprawdź logi",
"fuzzy_learn_error": "Błąd uczenia fuzzy hash: %s",
"hash_not_found": "Hash nie został odnaleziony lub został już usunięty",
"ip_invalid": "Pominięto nieprawidłowe IP: %s",
"is_not_primary_alias": "Pominięto alias niebędący głównym: %s",
"no_active_admin": "Nie można dezaktywować ostatniego aktywnego administratora",
"quota_exceeded_scope": "Przekroczono limit pojemności domeny: w tym zakresie domeny można tworzyć tylko skrzynki o nieograniczonej pojemności.",
"session_token": "Nieprawidłowy token formularza: niedopasowanie tokenów"
},
"datatables": {
"collapse_all": "Zwiń wszystko",
"decimal": ".",
"emptyTable": "Brak danych w tabeli",
"expand_all": "Rozszerz wszystko",
"info": "Wyświetlanie od START do END z TOTAL wpisów.",
"infoEmpty": "Wyświetlanie od 0 do 0 z 0 wpisów",
"infoFiltered": "(filtrowane z _MAX_ suma wpisów)",
"thousands": ",",
"lengthMenu": "Pokaż wpisy _MENU_",
"loadingRecords": "Ładowanie...",
"processing": "Proszę czekać...",
"search": "Szukaj:",
"zeroRecords": "Nie znaleziono pasujących rekordów",
"paginate": {
"first": "Pierwszy",
"last": "Ostatni",
"next": "Następny",
"previous": "Poprzedni"
},
"aria": {
"sortAscending": "Aktywuj, aby posortować kolumnę rosnąco",
"sortDescending": "Aktywuj, aby posortować kolumnę malejąco"
}
},
"debug": {
"architecture": "Architektura",
"chart_this_server": "Wykres (ten serwer)",
"containers_info": "Informacje o kontenerze",
"container_running": "uruchomiony",
"container_disabled": "Kontener zatrzymany lub wyłączony",
"container_stopped": "Zatrzymany",
"cores": "rdzenie",
"current_time": "Czas systemowy",
"disk_usage": "Użycie dysku",
"docs": "Dokumentacja",
"error_show_ip": "Nie można ustalić publicznych adresów IP.",
"external_logs": "Logi zewnętrzne",
"history_all_servers": "Historia (wszystkie serwery)",
"in_memory_logs": "Logi w pamięci",
"last_modified": "Ostatnia modyfikacja",
"log_info": "<p>mailcow <b>logi w pamięci</b> są gromadzone na listach Redis i przycinane do wartości <code>LOG_LINES</code> (%d) co minutę, aby ograniczyć nadmierne obciążenie systemu.</p> <p>Logi w pamięci nie są przeznaczone do trwałego przechowywania. Wszystkie aplikacje, które zapisują logi w pamięci, wysyłają je również do daemon Dockera, a więc do domyślnego sterownika logowania.</p> <p>Ten typ logów należy wykorzystywać do <b>debugowania drobnych problemów z kontenerami</b>.</p> <p><b>Logi zewnętrzne</b> są zbierane za pośrednictwem API danej aplikacji.</p> <p><b>Logi statyczne</b> to głównie dzienniki aktywności, które nie są zapisywane przez Dockerd, ale powinny być trwałe (z wyjątkiem logów API).</p>",
"login_time": "Czas",
"logs": "Logi",
"memory": "Pamięć",
"online_users": "Użytkownik online",
"restart_container": "Restart",
"service": "Usługa",
"show_ip": "Pokaż publiczne IP",
"size": "Rozmiar",
"started_at": "Zaczęło się od",
"started_on": "Zaczęło się od",
"static_logs": "Logi statyczne",
"success": "Sukces",
"system_containers": "System i kontenery",
"timezone": "Strefa czasowa",
"uptime": "Czas pracy",
"update_available": "Dostępna jest aktualizacja",
"no_update_available": "System jest w najnowszej wersji",
"update_failed": "Nie można było sprawdzić aktualizacji",
"username": "Nazwa użytkownika",
"wip": "Obecnie praca w toku"
},
"diagnostics": {
"cname_from_a": "Wartość pochodzi z rekordu A/AAAA. Obsługiwane, o ile rekord wskazuje na prawidłowy zasób.",
"dns_records": "Rekordy DNS",
"dns_records_24hours": "Pamiętaj, że zmiany wprowadzone w DNS mogą zająć nawet do 24 godzin, zanim ich aktualny stan zostanie poprawnie odzwierciedlony na tej stronie.\nTa sekcja ma na celu ułatwienie Ci konfiguracji rekordów DNS oraz sprawdzenie, czy wszystkie rekordy zostały prawidłowo zapisane w DNS.",
"dns_records_data": "Poprawne dane",
"dns_records_docs": "Proszę skonsultuj również <a target=\"_blank\" href=\"https://docs.mailcow.email/getstarted/prerequisite-dns\">dokumnetację</a>",
"dns_records_name": "Nazwa",
"dns_records_status": "Aktualny stan",
"dns_records_type": "Typ",
"optional": "Ten rekord jest opcjonalny."
"weeks": "Tygodnie"
}
}

View File

@@ -1,7 +1,7 @@
{
"acl": {
"alias_domains": "Adicionar alias de domínios",
"app_passwds": "Gerenciar senhas de app",
"alias_domains": "Adicionar domínios alias",
"app_passwds": "Gerenciar senhas de aplicativos",
"bcc_maps": "Mapas BCC",
"delimiter_action": "Ação delimitadora",
"domain_desc": "Alterar descrição do domínio",
@@ -9,7 +9,7 @@
"eas_reset": "Redefinir dispositivos EAS",
"extend_sender_acl": "Permitir estender a ACL do remetente por endereços externos",
"filters": "Filtros",
"login_as": "Fazer login como usuário da mailbox",
"login_as": "Faça login como usuário da mailbox",
"mailbox_relayhost": "Alterar relayhost para uma mailbox",
"prohibited": "Proibido pela ACL",
"protocol_access": "Alterar o acesso ao protocolo",
@@ -109,9 +109,7 @@
"username": "Nome de usuário",
"validate": "Validar",
"validation_success": "Validado com sucesso",
"dry": "Simular sincronização",
"internal": "Interno",
"internal_info": "Aliases internos são acessíveis apenas a partir do próprio domínio ou alias de domínio."
"dry": "Simular sincronização"
},
"admin": {
"access": "Acesso",
@@ -366,52 +364,7 @@
"iam_client_secret": "Senha de cliente",
"iam_auth_flow": "Fluxo de autenticação",
"iam_client_scopes": "Escopo do cliente",
"iam_default_template": "Template Padrão",
"admin_quicklink": "Ocultar link rápido para página de login do administrador",
"app_hide": "Ocultar para login",
"login_page": "Página de login",
"domainadmin_quicklink": "Ocultar link rápido para página de login do administrador de domínio",
"filter": "Filtro",
"force_sso_text": "Se um provedor OIDC externo for configurado, esta opção oculta os formulários de login padrão do mailcow e mostra apenas o botão de single sign-on",
"force_sso": "Desabilitar login do mailcow e mostrar apenas single sign-on",
"iam": "Provedor de identidade",
"iam_attribute_field": "Campo de atributo",
"iam_authorize_url": "Endpoint de autorização",
"iam_auth_flow_info": "Além do fluxo de código de autorização (fluxo padrão no Keycloak), que é usado para login de single sign-on, o mailcow também suporta fluxo de autenticação com credenciais diretas. O fluxo Mailpassword tenta validar as credenciais do usuário usando a API REST do administrador do Keycloak. O mailcow recupera a senha hash do atributo <code>mailcow_password</code>, que é mapeado no Keycloak.",
"iam_basedn": "DN base",
"iam_default_template_description": "Se nenhum template for atribuído a um usuário, o template padrão será usado para criar a caixa de correio, mas não para atualizar a caixa de correio.",
"iam_description": "Configure um provedor externo para autenticação<br>As caixas de correio dos usuários serão criadas automaticamente no primeiro login, desde que um mapeamento de atributos tenha sido definido.",
"iam_extra_permission": "Para que as configurações a seguir funcionem, o cliente mailcow no Keycloak precisa de uma <code>conta de serviço</code> e a permissão para <code>visualizar usuários</code>.",
"iam_host": "Host",
"iam_host_info": "Digite um ou mais hosts LDAP, separados por vírgulas.",
"iam_import_users": "Importar usuários",
"iam_login_provisioning": "Criar usuários automaticamente no login",
"iam_mapping": "Mapeamento de atributos",
"iam_bindpass": "Senha de vinculação",
"iam_periodic_full_sync": "Sincronização completa periódica",
"iam_port": "Porta",
"iam_realm": "Realm",
"iam_redirect_url": "URL de redirecionamento",
"iam_rest_flow": "Fluxo Mailpassword",
"iam_server_url": "URL do servidor",
"iam_sso": "Single sign-on",
"iam_sync_interval": "Intervalo de sincronização/importação (min)",
"iam_test_connection": "Testar conexão",
"iam_token_url": "Endpoint de token",
"iam_userinfo_url": "Endpoint de informações do usuário",
"iam_username_field": "Campo de nome de usuário",
"iam_binddn": "DN de vinculação",
"iam_use_ssl": "Usar SSL",
"iam_use_ssl_info": "Se habilitar SSL e a porta estiver definida como 389, ela será automaticamente substituída para usar 636.",
"iam_use_tls": "Usar StartTLS",
"iam_use_tls_info": "Se habilitar TLS, você deve usar a porta padrão para seu servidor LDAP (389). Portas SSL não podem ser usadas.",
"iam_version": "Versão",
"ignore_ssl_error": "Ignorar erros SSL",
"needs_restart": "precisa reiniciar",
"quicklink_text": "Mostrar ou ocultar links rápidos para outras páginas de login abaixo do formulário de login",
"task": "Tarefa",
"user_link": "Link do usuário",
"user_quicklink": "Ocultar link rápido para página de login do usuário"
"iam_default_template": "Template Padrão"
},
"danger": {
"access_denied": "Acesso negado ou dados de formulário inválidos",
@@ -548,15 +501,7 @@
"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",
"authsource_in_use": "O provedor de identidade não pode ser alterado ou excluído pois está sendo usado por um ou mais usuários.",
"generic_server_error": "Ocorreu um erro inesperado no servidor. Entre em contato com seu administrador.",
"iam_test_connection": "Falha na conexão",
"max_age_invalid": "Idade máxima %s é inválida",
"mode_invalid": "Modo %s é inválido",
"mx_invalid": "Registro MX %s é inválido",
"required_data_missing": "Dados obrigatórios %s estão ausentes",
"version_invalid": "Versão %s é inválida"
"yotp_verification_failed": "Falha na verificação do Yubico OTP: %s"
},
"datatables": {
"collapse_all": "Recolher tudo",
@@ -763,25 +708,7 @@
"title": "Editar objeto",
"unchanged_if_empty": "Se inalterado, deixe em branco",
"username": "Nome de usuário",
"validate_save": "Validar e salvar",
"internal": "Interno",
"internal_info": "Aliases internos são acessíveis apenas a partir do próprio domínio ou domínios alias.",
"mailbox_rename": "Renomear caixa de correio",
"mailbox_rename_agree": "Eu criei um backup.",
"mailbox_rename_warning": "IMPORTANTE! Crie um backup antes de renomear a caixa de correio.",
"mailbox_rename_alias": "Criar alias automaticamente",
"mailbox_rename_title": "Novo nome da caixa de correio local",
"mta_sts": "MTA-STS",
"mta_sts_info": "<a href='https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#SMTP_MTA_Strict_Transport_Security' target='_blank'>MTA-STS</a> é um padrão que força a entrega de email entre servidores de email para usar TLS com certificados válidos. <br>É usado quando <a target='_blank' href='https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities'>DANE</a> não é possível devido ao DNSSEC ausente ou não suportado.<br><b>Nota</b>: Se o domínio de recepção suporta DANE com DNSSEC, DANE é <b>sempre</b> preferido MTA-STS atua apenas como fallback.",
"mta_sts_version": "Versão",
"mta_sts_version_info": "Define a versão do padrão MTA-STS atualmente apenas <code>STSv1</code> é válido.",
"mta_sts_mode": "Modo",
"mta_sts_mode_info": "Há três modos para escolher:<ul><li><em>testing</em> política é apenas monitorada, violações não têm impacto.</li><li><em>enforce</em> política é rigorosamente aplicada, conexões sem TLS válido são rejeitadas.</li><li><em>none</em> política é publicada mas não aplicada.</li></ul>",
"mta_sts_max_age": "Idade máxima",
"mta_sts_max_age_info": "Tempo em segundos que servidores de email de recepção podem armazenar esta política em cache até buscar novamente.",
"mta_sts_mx": "Servidor MX",
"mta_sts_mx_info": "Permite envio apenas para nomes de host de servidor de email explicitamente listados; o MTA de envio verifica se o nome do host DNS MX corresponde à lista de políticas e permite entrega apenas com certificado TLS válido (protege contra MITM).",
"mta_sts_mx_notice": "Múltiplos servidores MX podem ser especificados (separados por vírgulas)."
"validate_save": "Valide e salve"
},
"fido2": {
"confirm": "Confirme",
@@ -844,15 +771,7 @@
"password": "Senha",
"reset_password": "Recuperar a senha",
"request_reset_password": "Solicitar troca de senha",
"username": "Nome de usuário",
"login_linkstext": "Login incorreto?",
"login_usertext": "Entrar como usuário",
"login_domainadmintext": "Entrar como administrador de domínio",
"login_admintext": "Entrar como administrador",
"login_user": "Login de usuário",
"login_dadmin": "Login como administrador de domínio",
"login_admin": "Login como administrador",
"email": "Endereço de email"
"username": "Nome de usuário"
},
"mailbox": {
"action": "Ação",
@@ -1027,9 +946,7 @@
"username": "Nome de usuário",
"waiting": "Esperando",
"weekly": "Semanalmente",
"yes": "✓",
"iam": "Provedor de Identidade",
"internal": "Interno"
"yes": "✓"
},
"oauth2": {
"access_denied": "Faça login como proprietário da mailbox para conceder acesso via OAuth2.",
@@ -1044,8 +961,8 @@
"action": "Ação",
"atts": "Anexos",
"check_hash": "Arquivo de pesquisa hash @ VT",
"confirm": "Confirmar",
"confirm_delete": "Confirmar exclusão desse elemento.",
"confirm": "Confirme",
"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 mailbox” e um “tamanho máximo” para os elementos de quarentena.",
@@ -1206,15 +1123,12 @@
"verified_fido2_login": "Login FIDO2 verificado",
"verified_totp_login": "Login TOTP verificado",
"verified_webauthn_login": "Login verificado do WebAuthn",
"verified_yotp_login": "Login OTP verificado do Yubico",
"custom_login_modified": "Personalização de login foi salva com sucesso",
"iam_test_connection": "Conexão bem-sucedida",
"mailbox_renamed": "Caixa de correio foi renomeada de %s para %s"
"verified_yotp_login": "Login OTP verificado do Yubico"
},
"tfa": {
"authenticators": "Autenticadores",
"api_register": "%s usa a API Yubico Cloud. Obtenha uma chave de API para sua chave <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">aqui</a>",
"confirm": "Confirmar",
"confirm": "Confirme",
"confirm_totp_token": "Confirme suas alterações inserindo o token gerado",
"delete_tfa": "Desativar o TFA",
"disable_tfa": "Desative o TFA até o próximo login bem-sucedido",
@@ -1227,7 +1141,7 @@
"reload_retry": "- (recarregue o navegador se o erro persistir)",
"scan_qr_code": "Escaneie o código a seguir com seu aplicativo autenticador ou insira o código manualmente.",
"select": "Por favor, selecione",
"set_tfa": "Método de autenticação de dois fatores",
"set_tfa": "Defina o método de autenticação de dois fatores",
"start_webauthn_validation": "Iniciar validação",
"tfa": "Autenticação de dois fatores",
"tfa_token_invalid": "Token TFA inválido",
@@ -1404,11 +1318,7 @@
"weeks": "semanas",
"with_app_password": "com senha do aplicativo",
"year": "ano",
"years": "anos",
"authentication": "Autenticação",
"overview": "Visão geral",
"protocols": "Protocolos",
"tfa_info": "A autenticação de dois fatores ajuda a proteger sua conta. Se você habilitá-la, precisará de senhas de aplicativo para fazer login em aplicativos ou serviços que não suportam autenticação de dois fatores (por exemplo, clientes de email)."
"years": "anos"
},
"warning": {
"cannot_delete_self": "Não é possível excluir o usuário conectado",

View File

@@ -42,7 +42,7 @@
"app_name": "Ime aplikacije",
"app_password": "Dodaj geslo aplikacije",
"app_passwd_protocols": "Dovoljeni protokoli za geslo aplikacije",
"automap": "Poskusi samodejno preslikati mape (\"Poslani elementi\", \"Poslano\" => \"Poslano\" ipd.)",
"automap": "Poskusi samodejno preslikati mape (\"Sent items\", \"Sent\" => \"Poslano\" ipd.)",
"backup_mx_options": "Možnosti posredovanja (relay)",
"comment_info": "Zasebni komentarji niso vidni uporabnikom, javni komentarji pa so prikazani kot opis, ko se z miško postavimo nad uporabnika v pregledu",
"custom_params": "Parametri po meri",
@@ -109,9 +109,7 @@
"relay_transport_info": "<div class=\"badge fs-6 bg-info\">Info</div> Definirate lahko preslikave transportov za cilj po meri za to domeno. Če ni nastavljena, se ustvari MX poizvedba.",
"syncjob_hint": "Pozor! Gesla se morajo shraniti v golo besedilo!",
"timeout2": "Časovna omejitev za povezavo do lokalnega gostitelja",
"dry": "Simuliraj sinhronizacijo",
"internal": "Notranje",
"internal_info": "Notranji vzdevki so dostopni samo iz lastne domene ali vzdevkov domen."
"dry": "Simuliraj sinhronizacijo"
},
"admin": {
"access": "Dostop",
@@ -152,7 +150,7 @@
"customize": "Prilagodi",
"destination": "Cilj",
"dkim_add_key": "Dodaj ARC/DKIM ključ",
"dkim_domains_selector": "Izbirnik",
"dkim_domains_selector": "Izbira",
"dkim_domains_wo_keys": "Izberi domene z manjkajočimi ključi",
"dkim_from": "Od",
"dkim_from_title": "Izvorna domena od katere prekopiram podatke",
@@ -178,8 +176,8 @@
"f2b_filter": "Regex filtri",
"f2b_max_attempts": "Največ poskusov",
"f2b_max_ban_time": "Maksimalno trajanje blokade (s)",
"f2b_netban_ipv4": "velikost podomrežja IPv4 za blokiranje (8-32)",
"f2b_netban_ipv6": "Velikost podomrežja IPv6 za blokiranje (8-128)",
"f2b_netban_ipv4": "velikost subneta IPv4 za blokiranje (8-32)",
"f2b_netban_ipv6": "Velikost subneta IPv6 za blokiranje (8-128)",
"f2b_parameters": "Fail2ban parametri",
"f2b_regex_info": "Upoštevajo se dnevniki SOGo, Postfix, Dovecot, PHP-FPM.",
"f2b_retry_window": "Upoštevan čas (s) za največ poskusov",
@@ -189,41 +187,41 @@
"generate": "ustvari",
"guid": "GUID - enolični ID instance",
"guid_and_license": "GUID & licenca",
"hash_remove_info": "Odstranitev zgoščene vrednosti za omejitev (če obstaja) bo povsem ponastavilo njen števec.<br>\n Vsaka zgoščena vrednost je prikazana z individualno barvo.",
"help_text": "Preglasi besedilo za pomoč pod masko za prijavo (HTML je dovoljen)",
"hash_remove_info": "Odstranitev hasha za omejitev (če obstaja) bo povsem ponastavilo njen števec.<br>\n Vsak hash je prikazan z individualno barvo.",
"help_text": "Zamenjaj tekst za pomoč pod masko za prijavo (HTML je dovoljen)",
"host": "Gostitelj",
"html": "HTML",
"import": "Uvozi",
"import_private_key": "Uvozi zasebni ključ",
"in_use_by": "V uporabi od",
"in_use_by": "V uporabi",
"inactive": "Neaktivno",
"include_exclude": "Vključi/Izključi",
"include_exclude_info": "Privzeto - če ni izbire - so vključeni <b>vsi poštni predali</b>",
"includes": "Vključi te prejemnike",
"ip_check": "Preverjanje IP-ja",
"ip_check_disabled": "Preverjanje IP-ja je onemogočeno. Lahko ga omogočite pod <br/> <strong>Sistem > Konfiguracija > Možnosti > Prilagodi</strong>",
"ip_check_opt_in": "Prijavite se za uporabo storitev tretjih oseb <strong>ipv4.mailcow.email</strong> in <strong>ipv6.mailcow.email</strong> za razreševanje zunanjih IP naslovov.",
"is_mx_based": "Glede na MX zapis",
"last_applied": "Nazadnje uporabljeno",
"ip_check": "Kontrola IP",
"ip_check_disabled": "Kontrola IP je onemogočena. Lahko jo omogočite pod <br/> <strong>Sistem > Konfiguracija > Možnosti > Prilagodi</strong>",
"ip_check_opt_in": "Opt-in za uporabo zunanje storitve <strong>ipv4.mailcow.email</strong> in <strong>ipv6.mailcow.email</strong> za razreševanje zunanjih IP.",
"is_mx_based": "Glede na MX",
"last_applied": "Nazadnje aplicirano",
"link": "Povezava",
"loading": "Prosim počakajte...",
"login_time": "Čas prijave",
"logo_info": "Vaša slika bo pomanjšana na višino 40 slikovnih pik za zgornjo navigacijsko vrstico in na največjo širino 250 slikovnih pik za začetno stran. Zelo priporočljiva je skalabilna grafika.",
"logo_info": "Vaša slika bo pomanjšana na velikost 40px za zgornjo navigacijo in največjo velikost 250px za začetno stran. Zelo priporočena je uporaba grafike brez izgube kakovosti ob spremembi velikosti.",
"message": "Sporočilo",
"message_size": "Velikost sporočila",
"nexthop": "Naslednji skok",
"no": "&#10005;",
"no_active_bans": "Ni aktivnih blokad",
"no_new_rows": "Nadaljnjih vrstic ni na voljo",
"no_new_rows": "Ni dodatnih vrstic",
"no_record": "Ni zapisa",
"oauth2_apps": "OAuth2 aplikacije",
"oauth2_add_client": "Dodaj OAuth2 klienta",
"oauth2_client_id": "ID odjemalca",
"oauth2_client_secret": "Skrivnost odjemalca",
"oauth2_client_id": "ID klienta",
"oauth2_client_secret": "Skrivnost (secret)",
"oauth2_redirect_uri": "URI za preusmeritev",
"oauth2_renew_secret": "Generiraj novo skrivnost odjemalca",
"oauth2_revoke_tokens": "Prekliči vse žetone odjemalca",
"optional": "neobvezno",
"oauth2_renew_secret": "Generiraj nov client secret",
"oauth2_revoke_tokens": "Zavrni vse tokene klientov",
"optional": "opcijsko",
"options": "Možnosti",
"password": "Geslo",
"password_length": "Dolžina gesla",
@@ -238,21 +236,21 @@
"private_key": "Zasebni ključ",
"quarantine": "Karantena",
"quarantine_bcc": "Pošlji kopijo vseh obvestil (BCC) temu prejemniku:<br><small>Pustite prazno za izklop te funkcije. <b>Nepodpisana, nepreverjena pošta. Uporabljalo naj bi se samo za interno dostavo.</b></small>",
"quarantine_exclude_domains": "Izključi domene in vzdevke domen",
"quarantine_max_age": "Najvišja starost v dneh<br><small>Vrednost mora biti enaka ali večja od 1 dneva.</small>",
"quarantine_max_score": "Zavrzi obvestilo, če je ocena neželene pošte višja od te vrednosti:<br><small>Privzeto 9999,0</small>",
"quarantine_max_size": "Največja velikost v MiB (večji elementi so zavrženi):<br><small>0 <b>ne</b> pomeni neomejeno.</small>",
"quarantine_notification_html": "Predloga za obvestilo po e-pošti:<br><small>Pustite prazno, če želite obnoviti privzeto predlogo.</small>",
"quarantine_notification_sender": "Pošiljatelj obvestil po e-pošti",
"quarantine_notification_subject": "Zadeva e-poštnega obvestila",
"quarantine_release_format": "Oblika izdanih elementov",
"quarantine_exclude_domains": "Izključi domene in alias-domene",
"quarantine_max_age": "Maksimalna starost v dnevnih<br><small>Vrednost mora biti večja ali enaka 1 dnevu</small>",
"quarantine_max_score": "Opusti obvestilo, če je ocena spama večja od te vrednosti:<br><small>Privzeto 9999.0</small>",
"quarantine_max_size": "Največja velikost v MiB (Večji elementi so zavrženi):<br><small>0 <b>ne</b> pomeni neomejeno.</small>",
"quarantine_notification_html": "Predloga sporočila za obvestilo:<br><small>Pustite prazno za obnovitev privzete predloge.</small>",
"quarantine_notification_sender": "Pošiljatelj obvestila",
"quarantine_notification_subject": "Naslov obvestila",
"quarantine_release_format": "Oblika sproščenih elementov",
"quarantine_release_format_att": "Kot priponka",
"quarantine_release_format_raw": "Nespremenjen izvirnik",
"quarantine_retention_size": "Hrambe na poštni predal:<br><small>0 pomeni <b>neaktivno</b>.</small>",
"quarantine_release_format_raw": "Nespremenjen original",
"quarantine_retention_size": "Število zadržanj na poštni predal: <br><small>0 pomeni <b>neaktivno</b>,</small>",
"quota_notification_sender": "Pošiljatelj obvestila",
"quota_notification_subject": "Predmet obvestila",
"quota_notifications": "Obvestila o kvotah",
"quota_notifications_info": "Obvestila o kvoti se uporabnikom pošljejo enkrat, ko presežejo 80 % in enkrat, ko presežejo 95 % porabe.",
"quota_notifications": "Obvestila o omejitvi",
"quota_notifications_info": "Obvestila o omejitvi so poslana uporabnikom enkrat, ko presežejo 80% in enkrat ko presežejo 95% zasedenosti.",
"queue_unban": "odblokiraj",
"r_active": "Aktivne omejitve",
"r_inactive": "Neaktivne omejitve",
@@ -268,8 +266,8 @@
"remove": "Odstrani",
"remove_row": "Odstrani vrstico",
"reset_default": "Ponastavi na privzeto",
"reset_limit": "Odstrani zgoščeno vrednost",
"routing": "Usmerjanje",
"reset_limit": "Odstrani hash",
"routing": "Routing",
"rsetting_add_rule": "Dodaj pravilo",
"rsetting_content": "Vsebina pravila",
"rsetting_desc": "Kratek opis",
@@ -277,10 +275,10 @@
"rsetting_none": "Ni pravil na voljo",
"rsettings_insert_preset": "Vstavi prednastavljen primer \"%s\"",
"rsettings_preset_1": "Onemogoči vse razen DKIM in omejitve za prijavljene uporabnike",
"rsettings_preset_2": "Poštni upravitelji želijo neželeno pošto",
"rsettings_preset_3": "Dovoli samo določene pošiljatelje za poštni predal (tj. uporabo samo kot notranji poštni predal)",
"rsettings_preset_2": "Postmasterji želijo spam",
"rsettings_preset_3": "Dovoli samo specifične pošiljatelje za poštni predal (npr. uporaba samo kot interni poštni predal)",
"rsettings_preset_4": "Onemogoči Rspamd za domeno",
"rspamd_com_settings": "Ime nastavitve bo samodejno ustvarjeno, oglejte si spodnje primere prednastavitev. Za več podrobnosti glejte <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">dokumentacijo Rspamd</a>",
"rspamd_com_settings": "Ime nastavitve bo samodejno generirano. Prosim oglejte si primere nastavitev spodaj. Za več informacij si oglejte <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">dokumentacijo Rspamd</a>",
"rspamd_global_filters": "Globalne preslikave filtrov",
"rspamd_global_filters_agree": "Previden bom!",
"rspamd_global_filters_info": "Globalni filtri vsebujejo različne vrste globalnih seznamov zavrnjenih in dovoljenih vsebin.",
@@ -295,30 +293,30 @@
"f2b_list_info": "Gostitelj ali omrežje na seznamu zavrnjenih bo vedno imelo prednost pred entiteto na seznamu dovoljenih. <b>Posodobitve seznama bodo trajale nekaj sekund, da se uporabijo.</b>",
"forwarding_hosts": "Gostitelji za posredovanje",
"forwarding_hosts_add_hint": "Lahko vpišete IPv4/IPv6 naslove, mreže v CIDR obliki, imena gostiteljev (kateri se prevedejo v IP naslove) ali imena domen (katera se prevedejo v IP naslove glede na poizvedbo po SPF zapisih, v primeru manjkajočih zapisov pa MX zapisih).",
"forwarding_hosts_hint": "Dohodna sporočila so brezpogojno sprejeta od katerih koli gostiteljev v tem seznamu. Ti gostitelji se ne bodo preverjali po DNSBL seznamih in ne bodo dodani v listo sivih. Prejeta neželena pošta s teh gostiteljev ni nikoli zavrnjena, opcijsko pa se lahko premakne v mapo neželene pošte. Najpogostejša uporaba za to je navedba poštnih strežnikov, iz katerih ste nastavili pravilo za posredovanje pošte na vaš mailcow strežnik.",
"license_info": "Licenca ni zahtevana, a pomaga pri nadaljnjem razvoju. <br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"Naročilo SAL\">Registrirajte svoj GUID tukaj</a> ali <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Naročilo podpore\">Kupite podporo za svojo namestitev Mailcow.</a>",
"lookup_mx": "Cilj je regularni izraz, ki se ujema z imenom MX (<code>.*\\.google\\.com</code> za usmerjanje vse pošte, usmerjene na MX, ki se konča na google.com, prek tega skoka).",
"forwarding_hosts_hint": "Dohodna sporočila so brezpogojno sprejeta od katerih koli gostiteljev v tem seznamu. Ti gostitelji se ne bodo preverjali po DNSBL seznamih in ne bodo dodani v greyliste. Prejeti spam s teh gostiteljev ni nikoli zavrnjen, opcijsko pa se lahko premakne v mapo neželene pošte. Najpogostejša uporaba za to je navedba poštnih strežnikov, iz katerih ste nastavili pravilo za posredovanje pošte na vaš mailcow strežnik.",
"license_info": "Licenca ni zahtevana, a pomaga pri nadaljnjem razvoju. <br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"Naročilo SAL\">Registrirajte svoj GUID tukaj</a> ali <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Naročilo podpora\">Kupite podporo za svojo namestitev Mailcow.</a>",
"lookup_mx": "Cilj je regular expression za ujemanje MX zapisov (<code>.*\\.google\\.com</code> za usmeritev vse pošte na MX, ki se konča z google.com, preko tega skoka)",
"main_name": "Naziv \"mailcow UI\"",
"merged_vars_hint": "Sive vrstice so združene iz <code>vars.(local.)inc.php</code> in jih ni mogoče spremeniti.",
"oauth2_info": "Implementacija OAuth2 podpira vrsto odobritve »Avtorizacijska koda« in izda osvežilne žetone.<br>\nStrežnik samodejno izda tudi nove osvežilne žetone, ko je žeton za osvežitev uporabljen.<br><br>\n&#8226; Privzeti obseg je <i>profile</i>. Prek OAuth2 je mogoče overiti samo uporabnike poštnega predala. Če parameter obsega izpustite, se vrne na <i>profile</i>.<br>\n&#8226; Parameter <i>state</i> mora odjemalec poslati kot del zahteve za avtorizacijo.<br><br>\nPoti za zahteve do API-ja OAuth2: <br>\n<ul>\n<li>Končna točka avtorizacije: <code>/oauth/authorize</code></li>\n<li>Končna točka žetona: <code>/oauth/token</code></li>\n<li>Stran z viri: <code>/oauth/profile</code></li>\n</ul>\nPonovno ustvarjanje skrivnosti odjemalca ne bo poteklo obstoječih kod za avtorizacijo, vendar ne bo obnovilo žetona.<br><br>\nPreklic žetonov odjemalca bo povzročil takojšnjo prekinitev vseh aktivnih sej. Vse stranke se morajo ponovno overiti.",
"quarantine_redirect": "<b>Preusmerite vsa obvestila</b> temu prejemniku:<br><small>Pustite prazno, če želite onemogočiti. <b>Nepodpisana, nepreverjena pošta. Dostavljeno samo interno.</b></small>",
"oauth2_info": "OAuth2 implementacija omogoča grant vrste \"Authorization code\" in izdaja refresh tokene.<br>\nStrežnik prav tako izda nove refresh tokene, ko je bil refresh token uporabljen<br><br>\n&#8226; Privzeti obseg je <i>profile</i>. Samo uporabniki poštnih predalov se lahko prijavijo s pomočjo OAuth2. Če parameter obsega ni vnesen, se nastavi na <i>profile</i>.<br>\n&#8226; Parameter <i>state</i> mora biti poslan s strani klienta kot del zahtevka za avtorizacijo .<br><br>\nPoti za OAuth2 API: <br>\n<ul>\n <li>Endpoint za avtorizacijo: <code>/oauth/authorize</code></li>\n <li>Endpoint za tokene: <code>/oauth/token</code></li>\n <li>Stran vira: <code>/oauth/profile</code></li>\n</ul>\nPonovno generiranje client secret ne bo razveljavilo obstoječih avtorizacijskih kod, ne bodo pa mogle obnoviti svoje tokene.<br><br>\nZavrnitev client tokenov bo povzročilo tekojčno prekinitev aktivnih sej. Vsi klienti se bodo morali ponovno prijaviti.",
"quarantine_redirect": "<b>Preusmeri vsa obvestila</b> k temu prejemniku:<br><small>Pustite prazno, da onemogočite. <b>Nepodpisana, nepreverjena pošta. Uporabljalo bi se naj samo za interno dostavo.</b></small>",
"quota_notification_html": "Predloga sporočila za obvestilo:<br><small>Pustite prazno za obnovitev privzete predloge.</small>",
"quota_notifications_vars": "{{percent}} je enako trenutni kvoti uporabnika<br>{{username}} je ime poštnega predala",
"r_info": "Sivi/onemogočeni elementi v seznamu aktivnih omejitev niso znane kot veljavne omejitve za mailcow in ne morejo biti premaknjene. Neznane omejitve bodo kljub temu nastavljene po vrstnem redu pojavljanja. <br>Nove elemente lahko dodate v <code>inc/vars.local.inc.php</code> da jih lahko vklopite ali izklopite.",
"relayhosts_hint": "Določite transporte, odvisne od pošiljatelja, da jih boste lahko izbrali v pogovornem oknu za konfiguracijo domen.<br>\n Transportna storitev je vedno »smtp:« in bo zato poskusila s TLS, ko bo ponujena. Zaviti TLS (SMTPS) ni podprt. Upošteva se individualna nastavitev pravilnika za odhodni TLS uporabnika.<br>\n Vpliva na izbrane domene, vključno z vzdevki domen.",
"transport_dest_format": "Regex ali sintaksa: example.org, .example.org, *, box@example.org (več vrednosti je lahko ločenih z vejicami)",
"transport_test_rcpt_info": "&#8226; Za preizkus posredovanja v tujino uporabite null@hosted.mailcow.de.",
"rspamd_global_filters_regex": "Njihova imena pojasnjujejo njihov namen. Vsa vsebina mora vsebovati veljaven regularni izraz v obliki »/vzorec/možnosti« (npr. <code>/.+@domena\\.tld/i</code>).<br>\n Čeprav se v vsaki vrstici regularnega izraza izvajajo osnovna preverjanja, je lahko funkcionalnost Rspamdsa pokvarjena, če sintakse ne prebere pravilno.<br>\n Rspamd bo poskušal prebrati vsebino zemljevida, ko se bo spremenila. Če pride do težav, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">znova zaženite Rspamd</a>, da uveljavite ponovno nalaganje zemljevida.<br>Elementi na seznamu zavrnjenih so izključeni iz karantene.",
"quota_notifications_vars": "{{percent}} pomeni trenutna omejitev uporabnika<br>{{username}} je ime poštnega predala",
"r_info": "Sivi/onemogočeni elementi v seznamu aktivnih omejitev niso znane kot veljavne omejitve za mailcow in ne morejo biti premaknjene. Neznane omejitve bodo kljub temu nastavljene po vrstnem redu pojavitve. <br>Nove elemente lahko dodate v <code>inc/vars.local.inc.php</code> da jih lahko vklopite ali izklopite.",
"relayhosts_hint": "Določite transporte glede na pošiljatelja, da jih lahko izberete v konfiguraciji domene.<br>\nTransportni servis je vedno \"smtp:\" in bo poskušal s TLS ko bo na voljo. Wrapped TLS (SMTPS) ni podprto. Upošteva se uporabnikova politika odhodnega TLS.<br>\nVpliva na izbrane domene vključno z alias domenami.",
"transport_dest_format": "Regex ali sintaksa: example.org, .example.org, *, box@example.org (več vrednosti ločite z vejico)",
"transport_test_rcpt_info": "&#8226; Uporabite null@hosted.mailcow.de za testiranje relaya na drugo destinacijo.",
"rspamd_global_filters_regex": "Njihovi nazivi pojasnijo njihov namen. Vsa vsebina mora imeti veljaven regular expression v obliki \"/pattern/options\" (npr. <code>/.+@domain\\.tld/i</code>).<br>\nČeprav se v vsaki vrstici regexa izvedejo osnovni pregledi, je lahko funkcionalnost programa Rspamd motena, če sintaksa ni pravilna.<br>\nRspamd bo poskušal prebrati vsebino preslikave, ko bo spremenjena. Če imate težave, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">ponovno zaženite Rspamd</a>, da prisilite ponovno nalaganje preslikav.<br> Elementi na seznamu zavrnjenih so izključeni iz karantene.",
"rspamd_settings_map": "Preslikava nastavitev Rspamd",
"sal_level": "Moo stopnja",
"save": "Shrani spremembe",
"search_domain_da": "Išči domene",
"send": "Pošlji",
"sender": "Pošiljatelj",
"service": "Storitev",
"service_id": "ID storitve",
"service": "Servis",
"service_id": "ID servisa",
"source": "Vir",
"spamfilter": "Filter neželene pošte",
"spamfilter": "Spam filter",
"subject": "Predmet",
"success": "Uspešno",
"sys_mails": "Sistemska pošta",
@@ -328,7 +326,7 @@
"title_name": "Naziv spletnega mesta \"mailcow UI\"",
"to_top": "Nazaj na vrh",
"transport_maps": "Preslikave transportov",
"transports_hint": "&#8226; Vnos preslikave transporta <b>preglasi</b> preslikavo transporta, ki je odvisen od pošiljatelja.<br>\n&#8226; Po možnosti se uporabljajo transporti, ki temeljijo na MX.<br>\n&#8226; Nastavitve pravilnika TLS za odhodne uporabnike se prezrejo in jih je mogoče uveljaviti le z vnosi v zemljevidu pravilnika TLS.<br>\n&#8226; Storitev transporta za definirane transporte je vedno »smtp:« in bo zato poskusila s TLS, ko bo ponujena. Zaviti TLS (SMTPS) ni podprt.<br>\n&#8226; Naslovi, ki se ujemajo z \"/localhost$/\" bodo vedno preneseni preko \"local:\", in zato cilj \"*\" ne bo veljal za te naslove.<br>\n&#8226; Za določitev poverilnic za zgledni naslednji skok \"[host]:25\", Postfix <b>vedno</b> poišče \"host\" preden poišče \"[host]:25\". Zaradi tega vedenja je nemogoče hkrati uporabljati \"host\" in \"[host]:25\".",
"transports_hint": "&#8226; Vpis preslikave transporta <b>nadredi</b> preslikavo transporta odvisno od pošiljatelja.<br>\n&#8226; Preferenčno se uporabljajo transporti glede na MX zapise.<br>\n&#8226; Izhodne TLS politike na uporabnika so ignorirane in se lahko vsilijo samo s preslikavami TLS politik.<br>\n&#8226; Transportni servis za definirane transporte je vedno \"smtp:\" in bo posledično poskušal TLS ko bo ponujeno. Wrapped TLS (SMTPS) ni podprto.<br>\n&#8226; Naslovi, ki se ujemajo z \"/localhost$/\" bodo vedno preneseni preko \"local:\", in zato destinacija \"*\" ne bo vplivala na te naslove.<br>\n&#8226; Za določitev poverilnic za naslednji skok (npr. \"[host]:25\"), Postfix <b>vedno</b> preveri \"host\" preden išče \"[host]:25\". Zaradi takšnega obnašanja je nemogoče hkrati uporabiti \"host\" in \"[host]:25\".",
"ui_footer": "Noga (HTML dovoljen)",
"ui_header_announcement": "Obvestila",
"ui_header_announcement_active": "Nastavi obvestilo kot aktivno",
@@ -340,7 +338,7 @@
"ui_header_announcement_type_info": "Info",
"ui_header_announcement_type_warning": "Pomembno",
"ui_texts": "Oznake in besedila UI",
"unban_pending": "odblokada v teku",
"unban_pending": "unban v postopku",
"unchanged_if_empty": "Če je nespremenjeno, pustite prazno",
"upload": "Naloži",
"username": "Uporabniško ime",
@@ -395,7 +393,7 @@
"iam_token_url": "Končna točka žetona",
"iam_userinfo_url": "Končna točka z uporabniškimi podatki",
"iam_username_field": "Polje z uporabniškim imenom",
"iam_binddn": "Vezava DN",
"iam_binddn": "Povezava DN",
"iam_use_ssl": "Uporabi SSL",
"iam_use_tls": "Uporabi StartTLS",
"iam_version": "Različica",
@@ -414,9 +412,9 @@
"needs_restart": "potreben je ponovni zagon"
},
"danger": {
"alias_goto_identical": "Vzdevek in ciljni naslov se ne smeta ujemati.",
"aliasd_targetd_identical": "Vzdevek domene ne sme biti enak ciljni domeni: %s",
"bcc_exists": "Za tip %s obstaja BCC preslikava %s",
"alias_goto_identical": "Alias in goto naslov morata biti identična",
"aliasd_targetd_identical": "Alias domena ne sme biti enaka ciljni domeni: %s",
"bcc_exists": "BCC preslikava obstaja za vrsto %s",
"dkim_domain_or_sel_exists": "DKIM ključ za \"%s\" obstaja in ne bo prepisan",
"domain_quota_m_in_use": "Kvota domene mora biti večja ali enaka %s MiB",
"extra_acl_invalid_domain": "Zunanji pošiljatelj \"%s\" uporablja neveljavno domeno",
@@ -425,71 +423,71 @@
"invalid_nexthop": "Oblika naslednjega skoka ni veljavna",
"invalid_nexthop_authenticated": "Naslednji skok obstaja z drugačnimi poverilnicami. Prosim najprej posodobite obstoječe poverilnice za ta naslednji skok.",
"demo_mode_enabled": "Demo način je omogočen",
"access_denied": "Dostop zavrnjen ali neveljavni podatki obrazca",
"alias_domain_invalid": "Vzdevek domene %s ni veljaven",
"alias_empty": "Naslov vzdevka ne sme biti prazen",
"alias_invalid": "Naslov vzdevka %s ni veljaven",
"aliases_in_use": "Največje število vzdevkov mora biti večje ali enako %d",
"app_name_empty": "Ime aplikacije ne sme biti prazno",
"app_passwd_id_invalid": "ID gesla za aplikacijo %s neveljaven",
"bcc_empty": "Polje za prejemnika BCC ne sme biti prazno",
"bcc_must_be_email": "Cilj BCC %s ni veljaven e-poštni naslov",
"access_denied": "Dostop zavrnjen ali pa so podatki obrazca napačni",
"alias_domain_invalid": "Alias domena %s ni veljavna",
"alias_empty": "Alias naslov ne sme biti prazen",
"alias_invalid": "Alias naslov %s ni veljaven",
"aliases_in_use": "Max. aliasov mora biti večje ali enako %d",
"app_name_empty": "Naziv aplikacije ne more biti prazno",
"app_passwd_id_invalid": "ID gesla aplikacije %s je neveljaven",
"bcc_empty": "BCC cilj ne more biti prazen",
"bcc_must_be_email": "BCC cilj %s ni veljaven e-poštni naslov",
"comment_too_long": "Komentar je predolg, dovoljeno je največ 160 znakov",
"defquota_empty": "Privzeta kvota na poštni predal ne more biti 0.",
"description_invalid": "Opis vira za %s je neveljaven",
"description_invalid": "Opis resursa za %s ni veljaven",
"dkim_domain_or_sel_invalid": "Domena ali izbirnik DKIM ni veljaven: %s",
"domain_cannot_match_hostname": "Domena se ne more ujemati z imenom gostitelja",
"domain_exists": "Domena %s že obstaja",
"domain_invalid": "Ime domene je prazno ali neveljavno",
"domain_not_empty": "Neprazne domene %s ni mogoče odstraniti",
"domain_invalid": "Manjka ali napačno ime domene",
"domain_not_empty": "Ne morem odstraniti ne-prazno domeno %s",
"domain_not_found": "Domene %s ni bilo mogoče najti",
"extended_sender_acl_denied": "manjka ACL za določitev naslovov zunanjih pošiljateljev",
"extra_acl_invalid": "Naslov zunanjega pošiljatelja \"%s\" ni veljaven",
"fido2_verification_failed": "Preverjanje FIDO2 ni uspelo: %s",
"file_open_error": "Datoteke ni mogoče odpreti za pisanje",
"file_open_error": "Datoteka ne more biti odprta za urejanje",
"filter_type": "Napačna vrsta filtra",
"from_invalid": "Polje za pošiljatelja ne sme biti prazno",
"from_invalid": "Pošiljatelj ne sme biti prazno",
"global_filter_write_error": "Ni mogoče zapisati datoteke filtra: %s",
"global_map_invalid": "ID globalne preslikave %s ni veljaven",
"goto_empty": "Naslov vzdevka mora vsebovati vsaj en veljaven ciljni naslov",
"goto_invalid": "Ciljni naslov %s ni veljaven",
"goto_empty": "Alias naslov mora vsebovati vsaj en veljaven goto naslov",
"goto_invalid": "Goto naslov %s ni veljaven",
"ham_learn_error": "Napaka pri učenju Ham: %s",
"imagick_exception": "Napaka: Izjema Imagick med branjem slike",
"imagick_exception": "Napaka: Imagick napaka pri branju slike",
"img_invalid": "Ni možno preveriti slikovne datoteke",
"invalid_bcc_map_type": "Neveljavna vrsta preslikave BCC",
"invalid_destination": "Ciljna oblika \"%s\" ni veljavna",
"invalid_filter_type": "Neveljavna vrsta filtra",
"invalid_host": "Naveden je neveljaven gostitelj (host): %s",
"invalid_mime_type": "Neveljavna vrsta MIME",
"invalid_mime_type": "Neveljaven mime type",
"max_quota_in_use": "Kvota poštnega predala mora biti večja ali enaka %d MB",
"password_complexity": "Geslo ne ustreza varnostni politiki",
"pushover_credentials_missing": "Manjka žeton in/ali ključ Pushover",
"pushover_credentials_missing": "Manjka Pushover token ali ključ",
"release_send_failed": "Sporočila ni bilo mogoče sprostiti: %s",
"tls_policy_map_dest_invalid": "Cilj pravilnika je neveljaven",
"tls_policy_map_dest_invalid": "Cilj politike ni veljaven",
"webauthn_authenticator_failed": "Izbrani avtentikator ni bil najden",
"reset_f2b_regex": "Regex filter ni bilo možno ponastaviti v ustreznem času. Prosim poskusite ponovno ali počakajte nekaj sekund in ponovno naložite stran.",
"target_domain_invalid": "Ciljna domena %s ni veljavna",
"validity_missing": "Prosim določite obdobje veljavnosti",
"validity_missing": "Prosim nastavite obdobje veljavnosti",
"invalid_recipient_map_old": "Naveden neveljaven izvirni prejemnik: %s",
"ip_list_empty": "Seznam dovoljenih IP-jev ne sme biti prazen",
"is_alias": "%s je že znan kot naslov vzdevka",
"is_alias_or_mailbox": "%s je že znan kot vzdevek, poštni predal ali naslov vzdevka, razširjen iz vzdevka domene.",
"is_spam_alias": "%s je že znan kot začasni vzdevek (neželeni vzdevek)",
"ip_list_empty": "Seznam dovoljenih IPjev ne sme biti prazen",
"is_alias": "%s je že znan kot alias naslov",
"is_alias_or_mailbox": "%s je že znan kot alias, poštni naslov, ali alias izveden iz alias domene.",
"is_spam_alias": "%s že obstaja kot začasen alias (spam alias naslov)",
"last_key": "Zadnji ključ ne more biti izbrisan, prosim raje deaktivirajte dvofaktorsko avtentikacijo (TFA).",
"login_failed": "Prijava ni uspela",
"mailbox_defquota_exceeds_mailbox_maxquota": "Privzeta kvota presega najvišjo omejitev",
"mailbox_invalid": "Ime poštnega predala ni veljavno",
"mailbox_quota_exceeded": "Kvota presega omejitev domene (največ %d MB)",
"mailbox_quota_exceeded": "Kvota presega omejitev domene (maksimalno %d MB)",
"mailbox_quota_exceeds_domain_quota": "Najvišja kvota presega omejitev domene",
"mailbox_quota_left_exceeded": "Ni dovolj prostora (preostali prostor: %d MB)",
"mailboxes_in_use": "Največje število poštnih predalov mora biti večje ali enako %d",
"malformed_username": "Nepravilno oblikovano uporabniško ime",
"map_content_empty": "Preslikava vsebine ne more biti prazna",
"max_alias_exceeded": "Preseženo največje število vzdevkov",
"max_alias_exceeded": "Preseženo največje število aliasov",
"max_mailbox_exceeded": "Preseženo največje število poštnih predalov (%d od %d)",
"maxquota_empty": "Največja kvota na poštni predal ne more biti 0.",
"mysql_error": "Napaka MySQL: %s",
"network_host_invalid": "Nepravilno omrežje ali gostitelj: %s",
"network_host_invalid": "Nepravilno omrežje ali gostitel: %s",
"next_hop_interferes": "% moti naslednji skok %s",
"next_hop_interferes_any": "Obstoječi naslednji skok moti %s",
"nginx_reload_failed": "Ponovni zagon Nginx ni uspel: %s",
@@ -502,30 +500,30 @@
"policy_list_from_invalid": "Zapis ima nepravilno obliko",
"private_key_error": "Napaka zasebnega ključa: %s",
"pushover_key": "Pushover ključ ni v pravilni obliki",
"pushover_token": "Pushover žeton ni v pravilni obliki",
"quota_not_0_not_numeric": "Kvota mora biti numerična in >= 0",
"pushover_token": "Pushover token ni v pravilni obliki",
"quota_not_0_not_numeric": "Quota mora biti število in večje ali enako 0",
"recipient_map_entry_exists": "Preslikava prejemnika \"%s\" že obstaja",
"redis_error": "Napaka Redis: %s",
"relayhost_invalid": "Vnos preslikave %s ni pravilen",
"resource_invalid": "Ime vira %s je neveljavno",
"rl_timeframe": "Časovni okvir omejitve je nepravilen",
"resource_invalid": "Ime vira je neveljavno",
"rl_timeframe": "Časovni okvir za rate limit je nepravilen",
"rspamd_ui_pw_length": "Rspamd UI geslo mora biti dolgo vsaj 6 znakov",
"script_empty": "Skripta ne sme biti prazna",
"script_empty": "Script ne more biti prazen",
"sender_acl_invalid": "Vrednost ACL pošiljatelja %s ni veljavna",
"set_acl_failed": "Ni uspelo nastaviti ACL",
"settings_map_invalid": "ID preslikave nastavitev %s ni veljaven",
"sieve_error": "Napaka Sieve razčlenjevalnika: %s",
"spam_learn_error": "Napaka pri učenju neželene pošte: %s",
"subject_empty": "Zadeva ne sme biti prazna",
"sieve_error": "Napaka Sieve parserja: %s",
"spam_learn_error": "Napaka pri učenju spama: %s",
"subject_empty": "Predmet ne sme biti prazno",
"targetd_not_found": "Ciljna domena %s ni bila najdena",
"targetd_relay_domain": "Ciljna domena %s je posredovalna domena",
"targetd_relay_domain": "Ciljna domena %s je relay domena",
"template_exists": "Predloga %s že obstaja",
"template_id_invalid": "ID predloge %s ni veljaven",
"template_name_invalid": "Ime predloge ni veljavno",
"text_empty": "Besedilo ne sme biti prazno",
"tfa_token_invalid": "Neveljaven TFA žeton",
"tls_policy_map_entry_exists": "Vnos pravilnika preslikave TLS \"%s\" obstaja",
"tls_policy_map_parameter_invalid": "Parameter pravilnika je neveljaven",
"tfa_token_invalid": "Neveljaven token TFA",
"tls_policy_map_entry_exists": "Vpis preslikave TLS \"%s\" že obstaja",
"tls_policy_map_parameter_invalid": "Parameter politike ni pravilen",
"totp_verification_failed": "Neuspešno preverjanje TOTP",
"transport_dest_exists": "Cilj transporta \"%s\" že obstaja",
"webauthn_verification_failed": "Preverjanje WebAuthn ni uspelo: %s",
@@ -559,7 +557,7 @@
"version_invalid": "Različica %s je neveljavna"
},
"debug": {
"containers_info": "Informacije o zabojniku",
"containers_info": "Informacije o vsebniku (containerju)",
"architecture": "Arhitektura",
"chart_this_server": "Diagram (ta strežnik)",
"container_running": "Aktiven",
@@ -573,23 +571,23 @@
"external_logs": "Zunanji dnevniki",
"last_modified": "Nazadnje spremenjeno",
"history_all_servers": "Zgodovina (vsi strežniki)",
"in_memory_logs": "Dnevniki v pomnilniku",
"service": "Storitev",
"in_memory_logs": "In-memory dnevniki",
"service": "Servis",
"show_ip": "Prikaži javni IP",
"size": "Velikost",
"started_at": "Zagnano ob",
"started_on": "Zagnano na",
"static_logs": "Statični dnevniki",
"success": "Uspešno",
"system_containers": "Sistem in zabojniki",
"system_containers": "Sistem in Containerji",
"timezone": "Časovni pas",
"uptime": "Čas delovanja",
"update_available": "Posodobitev je na voljo",
"no_update_available": "Sistem je na najnovejši verziji",
"update_failed": "Ni mogoče preveriti za posodobitve",
"username": "Uporabniško ime",
"wip": "Trenutno delo v teku",
"log_info": "<p>Dnevniki v pomnilniku mailcow se zbirajo na seznamih Redis in vsako minuto skrajšajo na LOG_LINES (%d), da se zmanjša preobremenitev.\n <br>Dnevniki v pomnilniku niso namenjeni trajnemu beleženju. Vse aplikacije, ki se beležijo v pomnilnik, se beležijo tudi v Dockerjev demon in s tem v privzeti gonilnik beleženja.</p>\n </p>Vrsta dnevnika v pomnilniku se mora uporabljati za odpravljanje manjših težav s kontejnerji.</p>\n <p><b>Zunanji dnevniki</b> se zbirajo prek API-ja dane aplikacije.</p>\n <p><b>Statični dnevniki</b> so večinoma dnevniki dejavnosti, ki se ne beležijo v Dockerd, vendar morajo biti še vedno trajni (razen dnevnikov API-ja).</p>",
"wip": "Trenutno v delu",
"log_info": "<p>mailcow <b>in-memory dnevniki</b> se zbirajo v Redis seznamih in se vsako minuto omejijo na LOG_LINES (%d) da se zmanjša obremenitev.\n <br>In-memory dnevniki niso namenjeni trajnemu shranjevanju. Vse aplikacije, ki beležijo dnevnike in-memory, tudi beležijo v Docker daemon in posledično v privzeti gonilnik za dnevnik.\n <br>In-memory dnevniki se naj uporabljajo za odpravljanje manjših napak s containerji.</p>\n <p><b>Eksterni dnevniki</b> se zbirajo preko API-ja posamezne aplikacije.</p>\n <p><b>Statični dnevniki</b> so večinoma dnevniki aktivnosti, ki se ne beležijo v Dockerd, a jih je vseeno treba hraniti (razen API dnevnikov).</p>",
"login_time": "Čas",
"logs": "Dnevniki",
"memory": "Spomin",
@@ -600,7 +598,7 @@
"infoFiltered": "(filtrirano od _MAX_ skupaj zapisov)",
"collapse_all": "Strni vse",
"decimal": ",",
"emptyTable": "V tabeli ni na voljo podatkov",
"emptyTable": "Ni podatkov",
"expand_all": "Razširi vse",
"info": "Prikazano _START_ do _END_ od _TOTAL_ zapisov",
"infoEmpty": "Prikazano 0 do 0 od 0 zapisov",
@@ -622,9 +620,9 @@
}
},
"diagnostics": {
"cname_from_a": "Vrednost, izpeljana iz zapisa A/AAAA. To je podprto, če zapis kaže na pravilen vir.",
"cname_from_a": "Vrednost pridobljena iz A/AAAA zapisa. To je podprto, če zapis kaže na pravilen resurs.",
"dns_records": "DNS zapisi",
"dns_records_24hours": "Upoštevajte, da se lahko spremembe DNS-a pravilno odrajo na tej strani v 24 urah. Namenjena je temu, da si preprosto ogledate, kako konfigurirati zapise DNS, in preverite, ali so vsi vaši zapisi pravilno shranjeni v DNS-u.",
"dns_records_24hours": "Prosim upoštevajte, da lahko traja do 24 ur da se spremembe v DNS pravilno prikejo 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 <a target=\"_blank\" href=\"https://docs.mailcow.email/getstarted/prerequisite-dns\">dokumentacijo</a>.",
"dns_records_name": "Ime",
@@ -635,60 +633,60 @@
"edit": {
"acl": "ACL (Dovoljenje)",
"active": "Aktivno",
"allow_from_smtp": "Dovoli samo tem IP naslovom uporabo <b>SMTP</b>",
"bcc_dest_format": "Ciljna stran za polje SKP (BCC) mora biti en veljaven e-poštni naslov.<br>Če morate kopijo poslati na več naslovov, ustvarite vzdevek in ga uporabite tukaj.",
"automap": "Poskusite samodejno preslikati mape (\"Poslani predmeti\", \"Poslano\" => \"Poslano\" itd.)",
"allow_from_smtp": "Dovoli samo tem IP naslovom da uporabijo <b>SMTP</b>",
"bcc_dest_format": "Cilj BCC mora biti en veljaven email naslov.<br>Če morate poslati kopijo na več naslovov, ustvarite alias in ga uporabite tukaj.",
"automap": "Poskušaj samodejno preslikati mape (\"Sent items\", \"Sent\" => \"Poslano\" ipd.)",
"admin": "Uredi skrbnika",
"domain_footer_info_vars": {
"custom": "{= foo =} - Če ima poštni predal atribut po meri \"foo\" z vrednostjo \"bar\", vrne \"bar\"",
"auth_user": "{= auth_user =} - Preverjeno uporabniško ime, ki ga določi MTA",
"from_user": "{= from_user =} - Iz uporabniškega dela ovojnice, npr. za \"moo@mailcow.tld\" vrne \"moo\"",
"from_name": "{= from_name =} - Iz imena ovojnice, npr. za \"Mailcow &lt;moo@mailcow.tld&gt;\" vrne \"Mailcow\"",
"from_addr": "{= from_addr =} - Del ovojnice z naslovom od",
"from_domain": "{= from_domain =} - Iz domenskega dela ovojnice"
"custom": "{= foo =} - Če ima poštni predal atribut po meri \"foo\" z vrednostjo \"bar\", spremenljivka vrne \"bar\"",
"auth_user": "{= auth_user =} - Prijavljeno uporabniško ime, ki ga določi MTA",
"from_user": "{= from_user =} - leva stran email naslova uporabnika, npr. za \"moo@mailcow.tld\" vrne \"moo\"",
"from_name": "{= from_name =} - Prikazno ime, npr. za \"Mailcow &lt;moo@mailcow.tld&gt;\" vrne \"Mailcow\"",
"from_addr": "{= from_addr =} - e-poštni naslov \"Od\"",
"from_domain": "{= from_domain =} - domena e-poštnega naslova \"Od\""
},
"dont_check_sender_acl": "Onemogoči preverjanje pošiljatelja za domeno %s (+ vzdevki domen)",
"dont_check_sender_acl": "Onemogoči kontrolo pošiljatelja za domeno %s (+ alias domene)",
"pushover_title": "Naslov obvestila",
"domains": "Domene",
"extended_sender_acl_info": "Uvoziti je treba ključ domene DKIM, če je na voljo.<br>\n Ne pozabite dodati tega strežnika v ustrezni zapis SPF TXT.<br>\n Kadar koli je temu strežniku dodana domena ali vzdevek domene, ki se prekriva z zunanjim naslovom, se zunanji naslov odstrani.<br>\n Uporabite @domain.tld, da omogočite pošiljanje kot *@domain.tld.",
"lookup_mx": "Cilj je regularni izraz, ki se ujema z imenom MX (<code>.*\\.google\\.com</code> za usmerjanje vse pošte, usmerjene na MX, ki se konča na google.com, prek tega skoka).",
"maxbytespersecond": "Največ bajtov na sekundo <br><small>(0 = neomejeno)</small>",
"extended_sender_acl_info": "Če je DKIM domenski ključ na voljo, ga uvozite.<br>\n Ne pozabite dodati ta strežnik k ustreznemu SPF TXT zapisu.<br>\n Kadar koli je domena ali alias domena dodana k tem strežniku, ki se prekriva z zunanjim naslovom, je zunanji naslov odstranjen.<br>\n uporabite @domain.tld da dovolite pošiljanje kot *@domain.tld.",
"lookup_mx": "Cilj je regular expression za ujemanje MX zapisov (<code>.*\\.google\\.com</code> za usmeritev vse pošte na MX, ki se konča z google.com, preko tega skoka)",
"maxbytespersecond": "Največ bytov na sekundo <br><small>(0 = neomejeno)</small>",
"pushover_sender_array": "Upoštevaj samo sledeče e-poštne naslove pošiljateljev <small>(ločeni z vejico)</small>",
"mbox_rl_info": "Ta omejitev se uporabi za prijavno ime SASL in se ujema z naslovom \"od\", ki ga uporablja prijavljeni uporabnik. Omejitev poštnega nabiralnika preglasi omejitev za celotno domeno.",
"mbox_rl_info": "Ta omejitev velja za SASL uporabniško ime, preverja se ujemanje s katerim koli \"from\" naslovom, ki ga uporablja prijavljeni uporabnik. Omejitev pošiljanja za poštni predal preglasi pravilo omejitve za domeno.",
"kind": "Tip",
"client_secret": "Skrivnost odjemalca",
"comment_info": "Zasebni komentar ni viden uporabniku, javni komentar pa se prikaže kot opis orodja, ko nanj v pregledu uporabnika zadržite miško",
"created_on": "Ustvarjeno",
"custom_attributes": "Atributi po meri",
"delete1": "Izbriši iz vira, ko je končano",
"delete2": "Izbriši sporočila na cilju, ki niso na izvoru",
"delete1": "Izbriši na viru, ko je končano",
"delete2": "Izbriši sporočila na cilju, ki ne obstajajo na viru",
"delete2duplicates": "Izbriši dvojnike na cilju",
"delete_ays": "Prosim potrdite proces izbrisa.",
"description": "Opis",
"disable_login": "Onemogoči prijavo (dohodna pošta je še vedno sprejeta)",
"domain": "Uredi domeno",
"domain_admin": "Uredi skrbnika domene",
"domain_admin": "Uredi domenskega skrbnika",
"domain_footer": "Noga za celo domeno",
"domain_footer_html": "HTML noga",
"pushover_vars": "Če filter pošiljatelja ni definiran, bodo upoštevana vsa e-poštna sporočila.<br>Filtre regularnih izrazov in natančna preverjanja pošiljateljev je mogoče definirati posamno in bodo obravnavana zaporedno. Niso odvisna drug od drugega.<br>Uporabne spremenljivke za besedilo in naslov (upoštevajte pravilnike o varstvu podatkov)",
"pushover_vars": "Če ni definiran noben filter pošiljatelja, bodo upoštevana vsa sporočila.<br>Regex filtre in natančna preverjanja pošiljateljev je mogoče definirati posamezno in bodo obravnavani v nadaljevanju. Niso odvisni drug od drugega.<br>Uporabne spremenljivke za besedilo in naslov (prosimo, upoštevajte politike varstva podatkov)",
"pushover_verify": "Preveri poverilnice",
"quota_mb": "Omejitev (MiB)",
"quota_warning_bcc": "Opozorilo o kvoti BCC",
"quota_warning_bcc": "BCC za sporočilo z opozorilom omejitve",
"quota_warning_bcc_info": "Opozorila bodo poslana kot ločene kopije naslednjim prejemnikom. Zadevi bo v oklepaju dodano ustrezno uporabniško ime, na primer: <code>Opozorilo o kvoti (uporabnik@example.com)</code>.",
"ratelimit": "Omejitev pošiljanja",
"advanced_settings": "Napredne nastavitve",
"allow_from_smtp_info": "Pustite prazno, da dovolite vse pošiljatelje.<br>Naslovi in omrežja IPv4/IPv6.",
"allow_from_smtp_info": "Pustite prazno da dovolite vse pošiljatelje.<br>IPv4/IPv6 naslovi in omrežja.",
"allowed_protocols": "Dovoljeni protokoli za neposreden dostop uporabnikov (ne vpliva na protokole za gesla aplikacij)",
"app_name": "Ime aplikacije",
"app_passwd": "Geslo aplikacije",
"app_passwd_protocols": "Dovoljeni protokoli za geslo aplikacije",
"backup_mx_options": "Možnosti posredovanja",
"client_id": "ID odjemalca",
"domain_footer_info": "Noge za celotno domeno so dodane vsem odhodnim e-poštnim sporočilom, povezanim z naslovom znotraj te domene. <br> Za nogo se lahko uporabijo naslednje spremenljivke:",
"domain_footer_plain": "NAVADNA noga",
"domain_footer_skip_replies": "Prezri nogo v odgovorih na e-poštna sporočila",
"domain_quota": "Kvota domene",
"edit_alias_domain": "Uredi vzdevek domene",
"backup_mx_options": "Možnosti posredovanja (relay)",
"client_id": "Client ID",
"domain_footer_info": "Noge za celo domeno so dodane k vsem izhodnim e-poštnim sporočilom v tej domeni.<br> V nogi se lahko uporabijo slede spremenljivke:",
"domain_footer_plain": "PLAIN noga",
"domain_footer_skip_replies": "Ne dodajaj noge v odgovorih na e-poštna sporočila",
"domain_quota": "Omejitev (kvota) domene",
"edit_alias_domain": "Uredi alias domeno",
"exclude": "Izključi objekte (regex)",
"extended_sender_acl": "Naslovi zunanjih pošiljateljev",
"force_pw_update": "Obvezna zamenjava gesla ob naslednji prijavi",
@@ -697,18 +695,18 @@
"full_name": "Polno ime",
"gal": "Globalni seznam naslovov (GAL)",
"gal_info": "GAL vsebuje vse objekte v domeni in jih uporabniki ne morejo urejati. Če je onemogočeno, ni podatkov o o zasedenosti objekta! <b>Ponovno zaženite SOGo za uveljavitev sprememb.</b>",
"generate": "ustvari",
"generate": "generiraj",
"grant_types": "Vrste dovoljenj",
"hostname": "Ime gostitelja",
"inactive": "Neaktivno",
"last_modified": "Nazadnje spremenjeno",
"mailbox": "Uredi poštni predal",
"mailbox_quota_def": "Privzeta kvota nabiralnika",
"mailbox_relayhost_info": "Uporablja se samo za poštni nabiralnik in neposredne vzdevke, preglasi gostitelja posredovalne domene.",
"max_aliases": "Največje število vzdevkov",
"max_mailboxes": "Največje možno število poštnih predalov",
"max_quota": "Največja kvota na poštni predal (MiB)",
"maxage": "Najvja starost sporočil v dnevih, ki bodo prebrana z oddaljenega strežnika<br><small>(0 = prezri starost)</small>",
"mailbox_quota_def": "Privzeta omejitev/kvota za poštni predal",
"mailbox_relayhost_info": "Velja samo za poštni predal in neposredne aliase. Ne prepiše domenskega relay gostitelja.",
"max_aliases": "Največ aliasov",
"max_mailboxes": "Največ možnih poštnih predalov",
"max_quota": "Največja omejitev/kvota na poštni predal (MiB)",
"maxage": "Najvja starost sporočil (v dnevih), po katerih bo poizvedeno iz oddaljenega vira <br><small>(0 = ne omejuj)</small>",
"mins_interval": "Interval (min)",
"multiple_bookings": "Več rezervacij",
"none_inherit": "Brez / podeduj",
@@ -726,7 +724,7 @@
"pushover_text": "Besedilo obvestila",
"pushover_sound": "Zvok",
"encryption": "Šifriranje",
"alias": "Uredi vzdevek",
"alias": "Uredi alias",
"relayhost": "Prenosi, odvisni od pošiljatelja",
"mailbox_rename_alias": "Samodejno ustvari vzdevek",
"sender_acl_info": "Če lahko uporabnik poštnega predala A pošilja kot uporabnik poštnega predala B, se naslov pošiljatelja v SOGo ne prikaže samodejno kot izbirno polje \"od\".<br>\n Uporabnik poštnega predala B mora v SOGo ustvariti pooblastilo, da lahko uporabnik poštnega predala A izbere svoj naslov kot pošiljatelja. Če želite pooblastiti poštni predal v SOGo, uporabite meni (tri pike) desno od imena vašega poštnega predala v zgornjem levem kotu v pogledu pošte. To vedenje ne velja za vzdevke.",
@@ -749,7 +747,7 @@
"sogo_access": "Neposredno posredovanje na SOGo",
"sogo_access_info": "Po prijavi je uporabnik samodejno preusmerjen na SOGo.",
"sogo_visible": "Vzdevek je viden v SOGo",
"sogo_visible_info": "Ta možnost vpliva samo na objekte, ki jih je mogoče prikazati v SOGo (naslovi vzdevkov v skupni rabi ali brez nje, ki kažejo na vsaj en lokalni poštni predal). Če je skrita, vzdevek ne bo prikazan kot izbirni pošiljatelj v SOGo.",
"sogo_visible_info": "Ta možnost vpliva samo na objekte, ki jih je mogoče prikazati v SOGo (naslovi aliasov v skupni rabi ali brez nje, ki kažejo na vsaj en lokalni poštni predal). Če je skrita, vzdevek ne bo prikazan kot izbirni pošiljatelj v SOGo.",
"spam_alias": "Ustvarjanje ali spreminjanje časovno omejenih vzdevkovnih naslovov",
"spam_filter": "Filter neželene pošte",
"spam_policy": "Dodajanje ali odstranjevanje elementov na seznam dovoljenih/zavrnjenih",
@@ -775,15 +773,13 @@
"mta_sts_mode": "Način",
"mta_sts_mode_info": "Na voljo so trije načini:<ul><li><em>testiranje</em> pravilnik se samo spremlja, kršitve nimajo vpliva.</li><li><em>uveljavljanje</em> pravilnik se strogo uveljavlja, povezave brez veljavnega TLS so zavrnjene.</li><li><em>brez</em> pravilnik je objavljen, vendar se ne uporablja.</li></ul>",
"mta_sts_max_age": "Najvišja starost",
"mta_sts_max_age_info": "Čas v sekundah, ki ga lahko prejemni poštni strežniki shranijo v predpomnilnik, dokler se ne naloži ponovno.",
"mta_sts_max_age_info": "Čas v sekundah, ki ga lahko prejemni poštni strežniki shranijo v predpomnilnik, dokler se ne ponovno naloži.",
"mta_sts_mx": "MX strežnik",
"mta_sts_mx_info": "Omogoča pošiljanje samo na izrecno navedena imena gostiteljskih strežnikov poštnih strežnikov; pošiljajoči MTA preveri, ali se ime gostitelja DNS MX ujema s seznamom pravilnikov, in dovoljuje dostavo le z veljavnim potrdilom TLS (zaščita pred MITM).",
"mta_sts_mx_notice": "Določiti je mogoče več strežnikov MX (ločenih z vejicami).",
"internal": "Notranje",
"internal_info": "Notranji vzdevki so dostopni samo iz lastne domene ali vzdevkov domen."
"mta_sts_mx_notice": "Določiti je mogoče več strežnikov MX (ločenih z vejicami)."
},
"footer": {
"restart_container_info": "<b>Pomembno:</b> Eleganten ponovni zagon lahko traja nekaj časa, zato počakajte, da se konča.",
"restart_container_info": "<b>Pomembno:</b> Ugoden ponovni zagon lahko traja nekaj časa, zato počakajte, da se konča.",
"delete_these_items": "Prosimo, potrdite spremembe naslednjega ID-ja objekta",
"confirm_delete": "Potrdi brisanje",
"delete_now": "Izbriši zdaj",
@@ -995,8 +991,7 @@
"yes": "&#10003;",
"weekly": "Tedensko",
"sieve_info": "Na uporabnika lahko shranite več filtrov, vendar je lahko hkrati aktiven le en predfilter in en postfilter.<br>\nVsak filter bo obdelan v opisanem vrstnem redu. Niti neuspešen skript niti izdan ukaz »keep;« ne bosta ustavila obdelave nadaljnjih skript. Spremembe globalnih skriptov sita bodo sprožile ponovni zagon Dovecota.<br><br>Globalni predfilter sita &#8226; Predfilter &#8226; Uporabniški skripti &#8226; Postfilter &#8226; Globalni postfilter sita",
"tls_policy_maps_info": "Ta preslikava pravilnikov preglasi pravila odhodnega prenosa TLS neodvisno od uporabnikovih nastavitev pravilnikov TLS.<br>\n Za več informacij preverite <a href=\"http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps\" target=\"_blank\">dokumentacijo »smtp_tls_policy_maps«</a>.",
"internal": "Notranje"
"tls_policy_maps_info": "Ta preslikava pravilnikov preglasi pravila odhodnega prenosa TLS neodvisno od uporabnikovih nastavitev pravilnikov TLS.<br>\n Za več informacij preverite <a href=\"http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps\" target=\"_blank\">dokumentacijo »smtp_tls_policy_maps«</a>."
},
"fido2": {
"known_ids": "Znani ID-ji",
@@ -1367,7 +1362,7 @@
"spamfilter_default_score": "Privzete vrednosti",
"spamfilter_green": "Zelena: to sporočilo ni neželena pošta",
"spamfilter_hint": "Prva vrednost opisuje »nizko oceno neželene pošte«, druga pa »visoko oceno neželene pošte«.",
"spamfilter_red": "Rdeča: To sporočilo je neželena pošta in ga bo strežnik zavrnil",
"spamfilter_red": "Rdeča: To sporočilo je neželena pošta in ga bo strežnik zavrnil.",
"spamfilter_table_action": "Dejanje",
"spamfilter_table_add": "Dodaj element",
"spamfilter_table_domain_policy": "ni na voljo (pravilnik domene)",
@@ -1412,7 +1407,7 @@
"warning": {
"cannot_delete_self": "Prijavljenega uporabnika ni mogoče izbrisati",
"domain_added_sogo_failed": "Domena je bila dodana, vendar ponovni zagon SOGo ni uspel. Preverite dnevnike strežnika.",
"dovecot_restart_failed": "Dovecota ni uspelo znova zagnati, preverite dnevnike",
"dovecot_restart_failed": "Dovecota ni uspelo znova zagnati, preverite dnevnike.",
"fuzzy_learn_error": "Napaka učenja mehkega zgoščevanja: %s",
"hash_not_found": "Zgoščena vrednost ni bila najdena ali je bila že izbrisana",
"ip_invalid": "Preskočen neveljaven IP: %s",

View File

@@ -1,697 +0,0 @@
{
"acl": {
"alias_domains": "Thêm tên miền bí danh",
"app_passwds": "Quản lý mật khẩu ứng dụng",
"bcc_maps": "Ánh xạ BCC",
"delimiter_action": "Hành động phân cách",
"domain_desc": "Thay đổi mô tả tên miền",
"domain_relayhost": "Thay đổi máy chủ chuyển tiếp cho tên miền",
"eas_reset": "Đặt lại thiết bị EAS",
"extend_sender_acl": "Cho phép mở rộng ACL người gửi bằng địa chỉ bên ngoài",
"filters": "Bộ lọc",
"login_as": "Đăng nhập với tư cách người dùng hộp thư",
"mailbox_relayhost": "Thay đổi máy chủ chuyển tiếp cho hộp thư",
"prohibited": "Bị cấm bởi ACL",
"protocol_access": "Thay đổi quyền truy cập giao thức",
"pushover": "Thông báo đẩy",
"pw_reset": "Cho phép đặt lại mật khẩu người dùng mailcow",
"quarantine": "Hành động cách ly",
"quarantine_attachments": "Cách ly tệp đính kèm",
"quarantine_category": "Thay đổi danh mục thông báo cách ly",
"quarantine_notification": "Thay đổi thông báo cách ly",
"ratelimit": "Giới hạn tốc độ",
"recipient_maps": "Ánh xạ người nhận",
"smtp_ip_access": "Thay đổi máy chủ được phép cho SMTP",
"sogo_access": "Cho phép quản lý truy cập SOGo",
"sogo_profile_reset": "Đặt lại hồ sơ SOGo",
"spam_alias": "Bí danh tạm thời",
"spam_policy": "Danh sách chặn/Danh sách cho phép",
"spam_score": "Điểm thư rác",
"syncjobs": "Công việc đồng bộ",
"tls_policy": "Chính sách TLS",
"unlimited_quota": "Hạn ngạch không giới hạn cho hộp thư"
},
"add": {
"activate_filter_warn": "Tất cả các bộ lọc khác sẽ bị vô hiệu hóa khi tùy chọn kích hoạt được chọn.",
"active": "Đang hoạt động",
"add": "Thêm",
"add_domain_only": "Chỉ thêm tên miền",
"add_domain_restart": "Thêm tên miền và khởi động lại SOGo",
"alias_address": "Địa chỉ bí danh",
"alias_address_info": "<small>Địa chỉ email đầy đủ hoặc @example.com để bắt tất cả thư cho một tên miền (phân cách bằng dấu phẩy). <b>Chỉ áp dụng cho tên miền mailcow</b>.</small>",
"alias_domain": "Tên miền bí danh",
"alias_domain_info": "<small>Chỉ cho phép tên miền hợp lệ (phân cách bằng dấu phẩy).</small>",
"app_name": "Tên ứng dụng",
"app_password": "Thêm mật khẩu ứng dụng",
"app_passwd_protocols": "Các giao thức được phép cho mật khẩu ứng dụng",
"automap": "Thử tự động ánh xạ thư mục (\"Mục đã gửi\", \"Đã gửi\" => \"Đã gửi\" v.v.)",
"backup_mx_options": "Tùy chọn chuyển tiếp",
"bcc_dest_format": "Địa chỉ BCC phải là một địa chỉ email hợp lệ duy nhất.<br>Nếu bạn cần gửi bản sao đến nhiều địa chỉ, hãy tạo một bí danh và sử dụng nó ở đây.",
"comment_info": "Bình luận riêng tư không hiển thị với người dùng, trong khi bình luận công khai được hiển thị dưới dạng chú thích khi di chuột qua trong tổng quan người dùng",
"custom_params": "Tham số tùy chỉnh",
"custom_params_hint": "Đúng: --param=xy, sai: --param xy",
"delete1": "Xóa từ nguồn khi hoàn thành",
"delete2": "Xóa thư ở đích không có ở nguồn",
"delete2duplicates": "Xóa các bản sao ở đích",
"description": "Mô tả",
"destination": "Đích",
"disable_login": "Không cho phép đăng nhập (vẫn nhận được thư đến)",
"domain": "Tên miền",
"domain_matches_hostname": "Tên miền %s khớp với tên máy chủ",
"domain_quota_m": "Tổng hạn ngạch tên miền (MiB)",
"dry": "Mô phỏng đồng bộ hóa",
"enc_method": "Phương thức mã hóa",
"exclude": "Loại trừ đối tượng (biểu thức chính quy)",
"full_name": "Tên đầy đủ",
"gal": "Danh sách địa chỉ toàn cục",
"gal_info": "GAL chứa tất cả các đối tượng của một tên miền và không thể được chỉnh sửa bởi bất kỳ người dùng nào. Thông tin rảnh/bận trong SOGo sẽ bị thiếu nếu vô hiệu hóa! <b>Khởi động lại SOGo để áp dụng thay đổi.</b>",
"generate": "Tạo",
"goto_ham": "\"Học là <span class=\"text-success\"><b>thư bình thường</b></span>",
"goto_null": "Loại bỏ thư một cách thầm lặng",
"goto_spam": "Học là <span class=\"text-danger\"><b>thư rác</b></span>",
"hostname": "Máy chủ",
"inactive": "Không hoạt động",
"internal": "Nội bộ",
"internal_info": "Bí danh nội bộ chỉ có thể truy cập từ tên miền sở hữu hoặc tên miền bí danh.",
"kind": "Loại",
"mailbox_quota_def": "Hạn ngạch hộp thư mặc định",
"mailbox_quota_m": "Hạn ngạch tối đa mỗi hộp thư (MiB)",
"mailbox_username": "Tên người dùng (phần bên trái của địa chỉ email)",
"max_aliases": "Số lượng bí danh tối đa có thể tạo",
"max_mailboxes": "Số lượng hộp thư tối đa có thể tạo",
"mins_interval": "Khoảng thời gian kiểm tra (phút)",
"multiple_bookings": "Đặt chỗ nhiều lần",
"nexthop": "Bước nhảy tiếp theo",
"password": "Mật khẩu",
"password_repeat": "Xác nhận mật khẩu (nhập lại)",
"port": "Cổng",
"post_domain_add": "Container SOGo, \\\"sogo-mailcow\\\", cần được khởi động lại sau khi thêm tên miền mới!<br><br>Ngoài ra, cấu hình DNS của tên miền cần được xem xét. Khi cấu hình DNS được phê duyệt, khởi động lại \\\"acme-mailcow\\\" để tự động tạo chứng chỉ cho tên miền mới của bạn (autoconfig.&lt;domain&gt;, autodiscover.&lt;domain&gt;).<br>Bước này là tùy chọn và sẽ được thử lại sau mỗi 24 giờ.",
"private_comment": "Bình luận riêng tư",
"public_comment": "Bình luận công khai",
"quota_mb": "Hạn ngạch (MiB)",
"relay_all": "Chuyển tiếp tất cả người nhận",
"relay_all_info": "↪ Nếu bạn chọn <b>không</b> chuyển tiếp tất cả người nhận, bạn sẽ cần thêm một hộp thư (\"ẩn\") cho từng người nhận cần được chuyển tiếp.",
"relay_domain": "Chuyển tiếp tên miền này",
"relay_transport_info": "<div class=\"badge fs-6 bg-info\">Thông tin</div> Bạn có thể định nghĩa ánh xạ vận chuyển cho đích tùy chỉnh cho tên miền này. Nếu không được đặt, tra cứu MX sẽ được thực hiện.",
"relay_unknown_only": "Chỉ chuyển tiếp hộp thư không tồn tại. Hộp thư hiện có sẽ được gửi cục bộ.",
"relayhost_wrapped_tls_info": "Vui lòng <b>không</b> sử dụng các cổng được bọc TLS (thường được sử dụng trên cổng 465).<br>\nSử dụng bất kỳ cổng không được bọc nào và sử dụng STARTTLS. Chính sách TLS để thực thi TLS có thể được tạo trong \"Ánh xạ chính sách TLS\".",
"select": "Vui lòng chọn...",
"select_domain": "Vui lòng chọn tên miền trước",
"sieve_desc": "Mô tả ngắn",
"sieve_type": "Loại bộ lọc",
"skipcrossduplicates": "Bỏ qua tin nhắn trùng lặp giữa các thư mục (ai đến trước được phục vụ trước)",
"subscribeall": "Đăng ký tất cả thư mục",
"syncjob": "Thêm công việc đồng bộ",
"syncjob_hint": "Lưu ý rằng mật khẩu cần được lưu dưới dạng văn bản thuần!",
"tags": "Thẻ",
"target_address": "Địa chỉ chuyển tiếp",
"target_address_info": "<small>Địa chỉ email đầy đủ (phân cách bằng dấu phẩy).</small>",
"target_domain": "Tên miền đích",
"timeout1": "Thời gian chờ kết nối đến máy chủ từ xa",
"timeout2": "Thời gian chờ kết nối đến máy chủ cục bộ",
"username": "Tên người dùng",
"validate": "Xác thực",
"validation_success": "Xác thực thành công"
},
"admin": {
"access": "Truy cập",
"action": "Hành động",
"activate_api": "Kích hoạt API",
"activate_send": "Kích hoạt nút gửi",
"active": "Đang hoạt động",
"active_rspamd_settings_map": "Ánh xạ cài đặt đang hoạt động",
"add": "Thêm",
"add_admin": "Thêm quản trị viên",
"add_domain_admin": "Thêm quản trị viên tên miền",
"add_forwarding_host": "Thêm máy chủ chuyển tiếp",
"add_relayhost": "Thêm vận chuyển phụ thuộc người gửi",
"add_relayhost_hint": "Vui lòng lưu ý rằng dữ liệu xác thực, nếu có, sẽ được lưu trữ dưới dạng văn bản thuần.",
"add_row": "Thêm hàng",
"add_settings_rule": "Thêm quy tắc cài đặt",
"add_transport": "Thêm vận chuyển",
"add_transports_hint": "Vui lòng lưu ý rằng dữ liệu xác thực, nếu có, sẽ được lưu trữ dưới dạng văn bản thuần.",
"additional_rows": " hàng bổ sung đã được thêm",
"admin": "Quản trị viên",
"admin_details": "Chỉnh sửa chi tiết quản trị viên",
"admin_domains": "Gán tên miền",
"admins": "Những quản trị viên",
"admins_ldap": "Quản trị viên LDAP",
"admin_quicklink": "Ẩn liên kết nhanh đến trang đăng nhập quản trị",
"advanced_settings": "Cài đặt nâng cao",
"allowed_methods": "Phương thức cho phép kiểm soát truy cập",
"allowed_origins": "Nguồn gốc cho phép kiểm soát truy cập",
"api_allow_from": "Cho phép truy cập API từ các IP/ký hiệu mạng CIDR này",
"api_info": "API đang được phát triển. Tài liệu có thể được tìm thấy tại <a href=\"/api\">/api</a>",
"api_key": "Khóa API",
"api_read_only": "Truy cập chỉ đọc",
"api_read_write": "Truy cập đọc-ghi",
"api_skip_ip_check": "Bỏ qua kiểm tra IP cho API",
"app_hide": "Ẩn khi đăng nhập",
"app_links": "Liên kết ứng dụng",
"app_name": "Tên ứng dụng",
"apps_name": "Tên \"Ứng dụng mailcow\"",
"arrival_time": "Thời gian đến (giờ máy chủ)",
"authed_user": "Người dùng đã xác thực",
"ays": "Bạn có chắc chắn muốn tiếp tục không?",
"ban_list_info": "Xem danh sách IP bị cấm bên dưới: <b>mạng (thời gian cấm còn lại) - [hành động]</b>.<br />IP trong hàng đợi bỏ cấm sẽ được xóa khỏi danh sách cấm hoạt động trong vài giây.<br />Nhãn đỏ cho biết lệnh cấm vĩnh viễn đang hoạt động bởi danh sách từ chối.",
"change_logo": "Thay đổi logo",
"logo_normal_label": "Bình thường",
"logo_dark_label": "Đảo ngược cho chế độ tối",
"configuration": "Cấu hình",
"convert_html_to_text": "Chuyển đổi HTML thành văn bản thuần",
"copy_to_clipboard": "Văn bản đã được sao chép vào bộ nhớ tạm!",
"cors_settings": "Cài đặt CORS",
"credentials_transport_warning": "<b>Cảnh báo</b>: Thêm một mục ánh xạ vận chuyển mới sẽ cập nhật thông tin xác thực cho tất cả các mục có cột bước nhảy tiếp theo khớp.",
"customer_id": "ID Khách hàng",
"customize": "Tùy chỉnh",
"login_page": "Trang đăng nhập",
"destination": "Đích đến",
"dkim_add_key": "Thêm khóa ARC/DKIM",
"dkim_domains_selector": "Bộ chọn",
"dkim_domains_wo_keys": "Chọn tên miền thiếu khóa",
"dkim_from": "Từ",
"dkim_from_title": "Tên miền nguồn để sao chép dữ liệu",
"dkim_key_length": "Độ dài khóa DKIM (bits)",
"dkim_key_missing": "Thiếu khóa",
"dkim_key_unused": "Khóa không được sử dụng",
"dkim_key_valid": "Khóa hợp lệ",
"dkim_keys": "Khóa ARC/DKIM",
"dkim_overwrite_key": "Ghi đè khóa DKIM hiện có",
"dkim_private_key": "Khóa riêng tư",
"dkim_to": "Đến",
"dkim_to_title": "Tên miền đích - sẽ bị ghi đè",
"domain": "Tên miền",
"domain_admin": "Quản trị viên tên miền",
"domain_admins": "Các quản trị viên tên miền",
"domainadmin_quicklink": "Ẩn liên kết nhanh đến trang đăng nhập quản trị viên tên miền",
"domain_s": "Tên miền/s",
"duplicate": "Nhân bản",
"duplicate_dkim": "Nhân bản bản ghi DKIM",
"edit": "Chỉnh sửa",
"empty": "Không có kết quả",
"excludes": "Loại trừ những người nhận này",
"f2b_ban_time": "Thời gian cấm (giây)",
"f2b_ban_time_increment": "Thời gian cấm tăng dần với mỗi lần cấm",
"f2b_blacklist": "Mạng/máy chủ bị từ chối",
"f2b_filter": "Bộ lọc biểu thức chính quy",
"f2b_list_info": "Một máy chủ hoặc mạng bị từ chối sẽ luôn có quyền ưu tiên cao hơn một thực thể trong danh sách cho phép. <b>Cập nhật danh sách sẽ mất vài giây để được áp dụng.</b>",
"f2b_manage_external": "Quản lý Fail2Ban từ bên ngoài",
"f2b_manage_external_info": "Fail2ban sẽ vẫn duy trì danh sách cấm, nhưng sẽ không chủ động đặt quy tắc để chặn lưu lượng. Sử dụng danh sách cấm được tạo bên dưới để chặn lưu lượng từ bên ngoài.",
"f2b_max_attempts": "Số lần thử tối đa",
"f2b_max_ban_time": "Thời gian cấm tối đa (giây)",
"f2b_netban_ipv4": "Kích thước mạng con IPv4 để áp dụng lệnh cấm (8-32)",
"f2b_netban_ipv6": "Kích thước mạng con IPv6 để áp dụng lệnh cấm (8-128",
"f2b_parameters": "Tham số Fail2ban",
"f2b_regex_info": "Nhật ký được xem xét: SOGo, Postfix, Dovecot, PHP-FPM.",
"f2b_retry_window": "Cửa sổ thử lại (giây) cho số lần thử tối đa",
"f2b_whitelist": "Mạng/máy chủ được cho phép",
"filter": "Bộ lọc",
"filter_table": "Bảng bộ lọc",
"force_sso_text": "Nếu nhà cung cấp OIDC bên ngoài được cấu hình, tùy chọn này sẽ ẩn biểu mẫu đăng nhập mailcow mặc định và chỉ hiển thị nút Đăng nhập một lần",
"force_sso": "Vô hiệu hóa đăng nhập mailcow và chỉ hiển thị Đăng nhập một lần",
"forwarding_hosts": "Máy chủ chuyển tiếp",
"forwarding_hosts_add_hint": "Bạn có thể chỉ định địa chỉ IPv4/IPv6, mạng theo ký hiệu CIDR, tên máy chủ (sẽ được phân giải thành địa chỉ IP), hoặc tên miền (sẽ được phân giải thành địa chỉ IP bằng cách truy vấn bản ghi SPF hoặc, nếu không có, bản ghi MX).",
"forwarding_hosts_hint": "Tin nhắn đến được chấp nhận vô điều kiện từ bất kỳ máy chủ nào được liệt kê ở đây. Các máy chủ này sau đó không bị kiểm tra với DNSBL hoặc danh sách xám. Thư rác nhận từ chúng không bao giờ bị từ chối, nhưng có thể được chuyển vào thư mục Rác. Công dụng phổ biến nhất cho việc này là chỉ định các máy chủ thư mà bạn đã thiết lập quy tắc chuyển tiếp email đến cho máy chủ mailcow của bạn.",
"from": "Từ",
"generate": "tạo",
"guid": "GUID - ID phiên bản duy nhất",
"guid_and_license": "GUID & Giấy phép",
"hash_remove_info": "Xóa một giá trị băm giới hạn tốc độ (nếu vẫn tồn tại) sẽ đặt lại hoàn toàn bộ đếm của nó.<br\n Mỗi giá trị băm được chỉ định bằng một màu riêng biệt.",
"help_text": "Ghi đè văn bản trợ giúp bên dưới mặt nạ đăng nhập (cho phép HTML)",
"host": "Máy chủ",
"html": "HTML",
"iam": "Nhà cung cấp danh tính",
"iam_attribute_field": "Trường thuộc tính",
"iam_authorize_url": "Điểm cuối ủy quyền",
"iam_auth_flow": "Luồng xác thực",
"iam_auth_flow_info": "Ngoài Luồng mã ủy quyền (Luồng chuẩn trong Keycloak), được sử dụng cho đăng nhập một lần, mailcow còn hỗ trợ Luồng xác thực với thông tin xác thực trực tiếp. Luồng mật khẩu thư cố gắng xác thực thông tin người dùng bằng cách sử dụng API REST quản trị Keycloak. mailcow lấy mật khẩu đã băm từ thuộc tính <code>mailcow_password</code>, được ánh xạ trong Keycloak.",
"iam_basedn": "DN cơ sở",
"iam_client_id": "ID khách hàng",
"iam_client_secret": "Bí mật khách hàng",
"iam_client_scopes": "Phạm vi khách hàng",
"iam_default_template": "Mẫu mặc định",
"iam_default_template_description": "Nếu không có mẫu nào được gán cho người dùng, mẫu mặc định sẽ được sử dụng để tạo hộp thư, nhưng không dùng để cập nhật hộp thư.",
"iam_description": "Cấu hình Nhà cung cấp bên ngoài cho Xác thực<br>Hộp thư của người dùng sẽ được tự động tạo khi họ đăng nhập lần đầu, với điều kiện ánh xạ thuộc tính đã được thiết lập.",
"iam_extra_permission": "Để các cài đặt sau hoạt động, ứng dụng khách mailcow trong Keycloak cần một <code>Tài khoản dịch vụ</code> và quyền <code>xem người dùng</code>.",
"iam_host": "Máy chủ",
"iam_host_info": "Nhập một hoặc nhiều máy chủ LDAP, phân cách bằng dấu phẩy.",
"iam_import_users": "Nhập người dùng",
"iam_login_provisioning": "Tự động tạo người dùng khi đăng nhập",
"iam_mapping": "Ánh xạ thuộc tính",
"iam_bindpass": "Mật khẩu ràng buộc",
"iam_periodic_full_sync": "Đồng bộ hóa đầy đủ định kỳ",
"iam_port": "Cổng",
"iam_realm": "Vùng",
"iam_redirect_url": "URL chuyển hướng",
"iam_rest_flow": "Luồng mật khẩu thư",
"iam_server_url": "URL máy chủ",
"iam_sso": "Đăng nhập một lần",
"iam_sync_interval": "Khoảng thời gian đồng bộ / nhập (phút)",
"iam_test_connection": "Kiểm tra kết nối",
"iam_token_url": "Điểm cuối token",
"iam_userinfo_url": "Điểm cuối thông tin người dùng",
"iam_username_field": "Trường tên người dùng",
"iam_binddn": "DN ràng buộc",
"iam_use_ssl": "Sử dụng SSL",
"iam_use_ssl_info": "Nếu bật SSL và cổng được đặt là 389, nó sẽ tự động được ghi đè để sử dụng cổng 636.",
"iam_use_tls": "Sử dụng StartTLS",
"iam_use_tls_info": "Nếu bật TLS, bạn phải sử dụng cổng mặc định cho máy chủ LDAP của bạn (389). Không thể sử dụng các cổng SSL.",
"iam_version": "Phiên bản",
"ignore_ssl_error": "Bỏ qua lỗi SSL",
"import": "Nhập",
"import_private_key": "Nhập khóa riêng tư",
"in_use_by": "Đang được sử dụng bởi",
"inactive": "Không hoạt động",
"include_exclude": "Bao gồm/Loại trừ",
"include_exclude_info": "Mặc định - khi không có lựa chọn - <b>tất cả hộp thư</b> được đề cập",
"includes": "Bao gồm những người nhận này",
"ip_check": "Kiểm tra IP",
"ip_check_disabled": "Kiểm tra IP đã bị vô hiệu hóa. Bạn có thể bật nó trong<br> <strong>Hệ thống > Cấu hình > Tùy chọn > Tùy chỉnh</strong>",
"ip_check_opt_in": "Chọn tham gia sử dụng dịch vụ bên thứ ba <strong>ipv4.mailcow.email</strong> và <strong>ipv6.mailcow.email</strong> để phân giải địa chỉ IP bên ngoài.",
"is_mx_based": "Dựa trên MX",
"last_applied": "Áp dụng lần cuối",
"license_info": "Giấy phép không bắt buộc nhưng giúp phát triển thêm.<br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"Đặt hàng SAL\">Đăng ký GUID của bạn tại đây</a> hoặc <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Đặt hàng hỗ trợ\">mua hỗ trợ cho cài đặt mailcow của bạn.</a>",
"link": "Liên kết",
"loading": "Vui lòng đợi...",
"login_time": "Thời gian đăng nhập",
"logo_info": "Hình ảnh của bạn sẽ được điều chỉnh theo chiều cao 40px cho thanh điều hướng trên cùng và chiều rộng tối đa 250px cho trang bắt đầu. Khuyến nghị sử dụng đồ họa có thể thay đổi kích thước.",
"lookup_mx": "Đích đến là một biểu thức chính quy để so khớp với tên MX (<code>.*.google.com</code> để định tuyến tất cả thư nhắm đến MX kết thúc bằng google.com qua bước nhảy này)",
"main_name": "Tên \"Giao diện mailcow\"",
"merged_vars_hint": "Các hàng bị mờ đã được hợp nhất từ <code>vars.(local.)inc.php</code> và không thể sửa đổi.",
"message": "Tin nhắn",
"message_size": "Kích thước tin nhắn",
"nexthop": "Bước nhảy tiếp theo",
"needs_restart": "cần khởi động lại",
"no_active_bans": "Không có lệnh cấm đang hoạt động",
"no_new_rows": "Không có hàng nào khác",
"no_record": "Không có bản ghi",
"oauth2_apps": "Ứng dụng OAuth2",
"oauth2_add_client": "Thêm ứng dụng khách OAuth2",
"oauth2_client_id": "ID ứng dụng khách",
"oauth2_client_secret": "Bí mật ứng dụng khách",
"oauth2_info": "Triển khai OAuth2 hỗ trợ loại cấp phép \"Mã ủy quyền\" và cấp token làm mới.<br>\nMáy chủ cũng tự động cấp token làm mới mới sau khi token làm mới đã được sử dụng.<br><br>\n&#8226; Phạm vi mặc định là <i>profile</i>. Chỉ người dùng hộp thư mới có thể được xác thực qua OAuth2. Nếu tham số phạm vi bị bỏ qua, nó sẽ trở về <i>profile</i>.<br>\n&#8226; Tham số <i>state</i> phải được gửi bởi ứng dụng khách như một phần của yêu cầu ủy quyền.<br><br>\nĐường dẫn cho các yêu cầu đến API OAuth2: <br>\n<ul>\n<li>Điểm cuối ủy quyền: <code>/oauth/authorize</code></li>\n<li>Điểm cuối token: <code>/oauth/token</code></li>\n<li>Trang tài nguyên: <code>/oauth/profile</code></li>\n</ul>\nTạo lại bí mật ứng dụng khách sẽ không làm hết hạn các mã ủy quyền hiện có, nhưng chúng sẽ không thể làm mới token của họ.<br><br>\nThu hồi token ứng dụng khách sẽ gây ra việc chấm dứt ngay lập tức tất cả các phiên hoạt động. Tất cả ứng dụng khách cần xác thực lại.",
"oauth2_redirect_uri": "URI chuyển hướng",
"oauth2_renew_secret": "Tạo bí mật ứng dụng khách mới",
"oauth2_revoke_tokens": "Thu hồi tất cả token ứng dụng khách",
"optional": "tùy chọn",
"options": "Các tùy chọn",
"password": "Mật khẩu",
"password_length": "Độ dài mật khẩu",
"password_policy": "Chính sách mật khẩu",
"password_policy_chars": "Phải chứa ít nhất một ký tự chữ cái",
"password_policy_length": "Độ dài mật khẩu tối thiểu là %d",
"password_policy_lowerupper": "Phải chứa ký tự viết thường và viết hoa",
"password_policy_numbers": "Phải chứa ít nhất một số",
"password_policy_special_chars": "Phải chứa ký tự đặc biệt",
"password_repeat": "Xác nhận mật khẩu (nhập lại)",
"password_reset_info": "Nếu không cung cấp email khôi phục, chức năng này không thể được sử dụng.",
"password_reset_settings": "Cài đặt khôi phục mật khẩu",
"password_reset_tmpl_html": "Mẫu HTML",
"password_reset_tmpl_text": "Mẫu văn bản",
"password_settings": "Cài đặt mật khẩu",
"priority": "Độ ưu tiên",
"private_key": "Khóa riêng tư",
"quarantine": "Cách ly",
"quarantine_bcc": "Gửi một bản sao của tất cả thông báo (BCC) đến người nhận này:<br><small>Để trống để vô hiệu hóa. <b>Thư không ký, không kiểm tra. Chỉ nên gửi nội bộ.</b></small>",
"quarantine_exclude_domains": "Loại trừ tên miền và tên miền bí danh",
"quarantine_max_age": "Tuổi tối đa theo ngày<br><small>Giá trị phải bằng hoặc lớn hơn 1 ngày.</small>",
"quarantine_max_score": "Bỏ thông báo nếu điểm thư rác của một thư cao hơn giá trị này:<br><small>Mặc định là 9999.0</small>",
"quarantine_max_size": "Kích thước tối đa tính bằng MiB (các phần tử lớn hơn sẽ bị loại bỏ):<br><small>0 <b>không</b> có nghĩa là không giới hạn.</small>",
"quarantine_notification_html": "Mẫu email thông báo:<br><small>Để trống để khôi phục mẫu mặc định.</small>",
"quarantine_notification_sender": "Người gửi email thông báo",
"quarantine_notification_subject": "Chủ đề email thông báo",
"quarantine_redirect": "<b>Chuyển hướng tất cả thông báo</b> đến người nhận này:<br><small>Để trống để vô hiệu hóa. <b>Thư không ký, không kiểm tra. Chỉ nên gửi nội bộ.</b></small>",
"quarantine_release_format": "Định dạng của các mục được phát hành",
"quarantine_release_format_att": "Dưới dạng tệp đính kèm",
"quarantine_release_format_raw": "Bản gốc không sửa đổi",
"quarantine_retention_size": "ưu giữ cho mỗi hộp thư:<br><small>0 có nghĩa là <b>không hoạt động</b>.</small>",
"quicklink_text": "Hiển thị hoặc ẩn liên kết nhanh đến các trang đăng nhập khác dưới biểu mẫu đăng nhập",
"quota_notification_html": "Mẫu email thông báo:<br><small>Để trống để khôi phục mẫu mặc định.</small>",
"quota_notification_sender": "Người gửi email thông báo",
"quota_notification_subject": "Chủ đề email thông báo",
"quota_notifications": "Thông báo hạn ngạch",
"quota_notifications_info": "Thông báo hạn ngạch được gửi cho người dùng một lần khi vượt quá 80% và một lần khi vượt quá 95% mức sử dụng.",
"quota_notifications_vars": "{{percent}} bằng hạn ngạch hiện tại của người dùng<br>{{username}} là tên hộp thư",
"queue_unban": "bỏ cấm",
"r_active": "Hạn chế đang hoạt động",
"r_inactive": "Hạn chế không hoạt động",
"r_info": "Các phần tử bị mờ/vô hiệu hóa trong danh sách hạn chế đang hoạt động không được mailcow công nhận là hạn chế hợp lệ và không thể di chuyển. Các hạn chế không xác định sẽ vẫn được đặt theo thứ tự xuất hiện. <br>Bạn có thể thêm phần tử mới trong <code>inc/vars.local.inc.php</code> để có thể bật/tắt chúng.",
"rate_name": "Tên tỷ lệ",
"recipients": "Người nhận",
"refresh": "Làm mới",
"regen_api_key": "Tạo lại khóa API",
"regex_maps": "Ánh xạ biểu thức chính quy",
"relay_from": "Địa chỉ \"Từ:\"",
"relay_rcpt": "Địa chỉ \"Đến:\"",
"relay_run": "Chạy thử",
"relayhosts": "Vận chuyển phụ thuộc người gửi",
"relayhosts_hint": "Xác định vận chuyển phụ thuộc người gửi để có thể chọn chúng trong hộp thoại cấu hình tên miền.<br>\nDịch vụ vận chuyển luôn là \"smtp:\" và do đó sẽ thử TLS khi được cung cấp. TLS được bọc (SMTPS) không được hỗ trợ. Cài đặt chính sách TLS gửi đi riêng của người dùng được tính đến.<br>\nẢnh hưởng đến các tên miền được chọn bao gồm cả tên miền bí danh.",
"remove": "Xóa",
"remove_row": "Xóa hàng",
"reset_default": "Đặt lại về mặc định",
"reset_limit": "Xóa giá trị băm",
"reset_password_vars": "<code>{{link}}</code> Liên kết đặt lại mật khẩu đã tạo<br><code>{{username}}</code> Tên hộp thư của người dùng yêu cầu đặt lại mật khẩu<br><code>{{username2}}</code> Tên hộp thư khôi phục<br><code>{{date}}</code> Ngày yêu cầu đặt lại mật khẩu được thực hiện<br><code>{{token_lifetime}}</code> Thời gian sống của token tính bằng phút<br><code>{{hostname}}</code> Tên máy chủ mailcow",
"restore_template": "Để trống để khôi phục mẫu mặc định.",
"routing": "Định tuyến",
"rsetting_add_rule": "Thêm quy tắc",
"rsetting_content": "Nội dung quy tắc",
"rsetting_desc": "Mô tả ngắn",
"rsetting_no_selection": "Vui lòng chọn một quy tắc",
"rsetting_none": "Không có quy tắc nào",
"rsettings_insert_preset": "Chèn mẫu ví dụ \"%s\"",
"rsettings_preset_1": "Vô hiệu hóa tất cả trừ DKIM và giới hạn tốc độ cho người dùng đã xác thực",
"rsettings_preset_2": "Quản trị viên bưu điện muốn thư rác",
"rsettings_preset_3": "Chỉ cho phép người gửi cụ thể cho một hộp thư (ví dụ: sử dụng như hộp thư nội bộ)",
"rsettings_preset_4": "Vô hiệu hóa Rspamd cho một tên miền",
"rspamd_com_settings": "Tên cài đặt sẽ được tự động tạo, vui lòng xem các mẫu ví dụ bên dưới. Để biết thêm chi tiết, xem <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Tài liệu Rspamd</a>",
"rspamd_global_filters": "Ánh xạ bộ lọc toàn cục",
"rspamd_global_filters_agree": "Tôi sẽ cẩn thận!",
"rspamd_global_filters_info": "Ánh xạ bộ lọc toàn cục chứa các loại danh sách từ chối và cho phép toàn cục khác nhau.",
"rspamd_global_filters_regex": "Tên của chúng giải thích mục đích sử dụng. Tất cả nội dung phải chứa biểu thức chính quy hợp lệ theo định dạng \"/mẫu/tùy chọn\" (ví dụ: <code>/.+@domain.tld/i</code>).<br>\nMặc dù kiểm tra cơ bản được thực hiện trên mỗi dòng của regex, chức năng của Rspamd có thể bị hỏng nếu nó không đọc được cú pháp chính xác.<br>\nRspamd sẽ cố gắng đọc nội dung ánh xạ khi thay đổi. Nếu bạn gặp vấn đề, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">khởi động lại Rspamd</a> để bắt buộc tải lại ánh xạ.<br>Các phần tử trong danh sách từ chối được loại trừ khỏi cách ly.",
"rspamd_settings_map": "Ánh xạ cài đặt Rspamd",
"sal_level": "Cấp độ Moo",
"save": "Lưu thay đổi",
"search_domain_da": "Tìm kiếm tên miền",
"send": "Gửi",
"sender": "Người gửi",
"service": "Dịch vụ",
"service_id": "ID Dịch vụ",
"source": "Nguồn",
"spamfilter": "Bộ lọc thư rác",
"subject": "Chủ đề",
"success": "Thành công",
"sys_mails": "Thư hệ thống",
"task": "Nhiệm vụ",
"text": "Văn bản",
"time": "Thời gian",
"title": "Tiêu đề",
"title_name": "Tiêu đề trang web \"Giao diện mailcow\"",
"to_top": "Về đầu trang",
"transport_dest_format": "Regex hoặc cú pháp: example.org, .example.org, *, box@example.org (nhiều giá trị có thể được phân cách bằng dấu phẩy)",
"transport_maps": "Ánh xạ vận chuyển",
"transport_test_rcpt_info": "&#8226; Sử dụng null@hosted.mailcow.de để kiểm tra chuyển tiếp đến đích nước ngoài.",
"transports_hint": "&#8226; Một mục ánh xạ vận chuyển <b>ghi đè</b> một ánh xạ vận chuyển phụ thuộc người gửi</b>.<br>\n&#8226; Vận chuyển dựa trên MX được ưu tiên sử dụng.<br>\n&#8226; Cài đặt chính sách TLS gửi đi cho từng người dùng bị bỏ qua và chỉ có thể được thực thi bởi các mục ánh xạ chính sách TLS.<br>\n&#8226; Dịch vụ vận chuyển cho các vận chuyển đã định nghĩa luôn là \"smtp:\" và do đó sẽ thử TLS khi được cung cấp. TLS được bọc (SMTPS) không được hỗ trợ.<br>\n&#8226; Địa chỉ khớp với \"/localhost$/\" sẽ luôn được vận chuyển qua \"local:\", do đó đích \"*\" sẽ không áp dụng cho những địa chỉ đó.<br>\n&#8226; Để xác định thông tin xác thực cho bước nhảy tiếp theo ví dụ \"[host]:25\", Postfix <b>luôn</b> truy vấn \"host\" trước khi tìm kiếm \"[host]:25\". Hành vi này khiến không thể sử dụng \"host\" và \"[host]:25\" cùng một lúc.",
"ui_footer": "Chân trang (cho phép HTML)",
"ui_header_announcement": "Thông báo",
"ui_header_announcement_active": "Đặt thông báo hoạt động",
"ui_header_announcement_content": "Văn bản (cho phép HTML)",
"ui_header_announcement_help": "Thông báo hiển thị cho tất cả người dùng đã đăng nhập và trên màn hình đăng nhập của giao diện người dùng.",
"ui_header_announcement_select": "Chọn loại thông báo",
"ui_header_announcement_type": "Loại",
"ui_header_announcement_type_danger": "Rất quan trọng",
"ui_header_announcement_type_info": "Thông tin",
"ui_header_announcement_type_warning": "Quan trọng",
"ui_texts": "Nhãn và văn bản giao diện người dùng",
"unban_pending": "đang chờ bỏ cấm",
"unchanged_if_empty": "Nếu không thay đổi hãy để trống",
"upload": "Tải lên",
"username": "Tên người dùng",
"user_link": "Liên kết người dùng",
"user_quicklink": "Ẩn liên kết nhanh đến trang đăng nhập người dùng",
"validate_license_now": "Xác thực GUID với máy chủ giấy phép",
"verify": "Xác minh",
"yes": "&#10003;"
},
"danger": {
"access_denied": "Truy cập bị từ chối hoặc dữ liệu biểu mẫu không hợp lệ",
"alias_domain_invalid": "Tên miền bí danh %s không hợp lệ",
"alias_empty": "Địa chỉ bí danh không được để trống",
"alias_goto_identical": "Địa chỉ bí danh và địa chỉ chuyển tiếp không được giống nhau",
"alias_invalid": "Địa chỉ bí danh %s không hợp lệ",
"aliasd_targetd_identical": "Tên miền bí danh không được giống với tên miền đích: %s",
"aliases_in_use": "Số bí danh tối đa phải lớn hơn hoặc bằng %d",
"app_name_empty": "Tên ứng dụng không được để trống",
"app_passwd_id_invalid": "ID mật khẩu ứng dụng %s không hợp lệ",
"authsource_in_use": "Nhà cung cấp danh tính không thể thay đổi hoặc xóa vì hiện đang được sử dụng bởi một hoặc nhiều người dùng.",
"bcc_empty": "Đích BCC không được để trống",
"bcc_exists": "Một ánh xạ BCC %s đã tồn tại cho loại %s",
"bcc_must_be_email": "Đích BCC %s không phải là địa chỉ email hợp lệ",
"comment_too_long": "Bình luận quá dài, cho phép tối đa 160 ký tự",
"cors_invalid_method": "Phương thức Allow-Method được chỉ định không hợp lệ",
"cors_invalid_origin": "Allow-Origin được chỉ định không hợp lệ",
"defquota_empty": "Hạn ngạch mặc định cho mỗi hộp thư không được là 0.",
"demo_mode_enabled": "Chế độ Demo đang được bật",
"description_invalid": "Mô tả tài nguyên cho %s không hợp lệ",
"dkim_domain_or_sel_exists": "Một khóa DKIM cho \"%s\" đã tồn tại và sẽ không bị ghi đè",
"dkim_domain_or_sel_invalid": "Tên miền hoặc bộ chọn DKIM không hợp lệ: %s",
"domain_cannot_match_hostname": "Tên miền không thể trùng với tên máy chủ",
"domain_exists": "Tên miền %s đã tồn tại",
"domain_invalid": "Tên miền trống hoặc không hợp lệ",
"domain_not_empty": "Không thể xóa tên miền %s không trống",
"domain_not_found": "Không tìm thấy tên miền %s",
"domain_quota_m_in_use": "Hạn ngạch tên miền phải lớn hơn hoặc bằng %s MiB",
"extended_sender_acl_denied": "thiếu ACL để đặt địa chỉ người gửi bên ngoài",
"extra_acl_invalid": "Địa chỉ người gửi bên ngoài \"%s\" không hợp lệ",
"extra_acl_invalid_domain": "Người gửi bên ngoài \"%s\" sử dụng tên miền không hợp lệ",
"fido2_verification_failed": "Xác minh FIDO2 thất bại: %s",
"file_open_error": "Không thể mở tệp để ghi",
"filter_type": "Loại bộ lọc không đúng",
"from_invalid": "Người gửi không được để trống",
"generic_server_error": "Đã xảy ra lỗi máy chủ không mong đợi. Vui lòng liên hệ quản trị viên của bạn.",
"global_filter_write_error": "Không thể ghi tệp bộ lọc: %s",
"global_map_invalid": "ID ánh xạ toàn cục %s không hợp lệ",
"global_map_write_error": "Không thể ghi ID ánh xạ toàn cục %s: %s",
"goto_empty": "Một địa chỉ bí danh phải chứa ít nhất một địa chỉ chuyển tiếp hợp lệ",
"goto_invalid": "Địa chỉ chuyển tiếp %s không hợp lệ",
"ham_learn_error": "Lỗi học thư hợp lệ: %s",
"iam_test_connection": "Kết nối thất bại",
"imagick_exception": "Lỗi: Ngoại lệ Imagick khi đọc hình ảnh",
"img_dimensions_exceeded": "Hình ảnh vượt quá kích thước tối đa cho phép",
"img_invalid": "Không thể xác thực tệp hình ảnh",
"img_size_exceeded": "Hình ảnh vượt quá kích thước tệp tối đa",
"img_tmp_missing": "Không thể xác thực tệp hình ảnh: Không tìm thấy tệp tạm thời",
"invalid_bcc_map_type": "Loại ánh xạ BCC không hợp lệ",
"invalid_destination": "Định dạng đích \"%s\" không hợp lệ",
"invalid_filter_type": "Loại bộ lọc không hợp lệ",
"invalid_host": "Máy chủ được chỉ định không hợp lệ: %s",
"invalid_mime_type": "Kiểu MIME không hợp lệ",
"invalid_nexthop": "Định dạng bước nhảy tiếp theo không hợp lệ",
"invalid_nexthop_authenticated": "Bước nhảy tiếp theo tồn tại với thông tin xác thực khác, vui lòng cập nhật thông tin xác thực hiện có cho bước nhảy này trước.",
"invalid_recipient_map_new": "Người nhận mới được chỉ định không hợp lệ: %s",
"invalid_recipient_map_old": "Người nhận gốc được chỉ định không hợp lệ: %s",
"invalid_reset_token": "Token đặt lại không hợp lệ",
"ip_list_empty": "Danh sách IP được phép không được để trống",
"is_alias": "%s đã được biết đến như một địa chỉ bí danh",
"is_alias_or_mailbox": "%s đã được biết đến như một bí danh, một hộp thư hoặc một địa chỉ bí danh được mở rộng từ một tên miền bí danh.",
"is_spam_alias": "%s đã được biết đến như một địa chỉ bí danh tạm thời (địa chỉ bí danh thư rác)",
"last_key": "Không thể xóa khóa cuối cùng, vui lòng vô hiệu hóa TFA thay thế.",
"login_failed": "Đăng nhập không thành công",
"mailbox_defquota_exceeds_mailbox_maxquota": "Hạn ngạch mặc định vượt quá giới hạn hạn ngạch tối đa",
"mailbox_invalid": "Tên hộp thư không hợp lệ",
"mailbox_quota_exceeded": "Hạn ngạch vượt quá giới hạn tên miền (tối đa %d MiB)",
"mailbox_quota_exceeds_domain_quota": "Hạn ngạch tối đa vượt quá giới hạn hạn ngạch tên miền",
"mailbox_quota_left_exceeded": "Không đủ dung lượng còn lại (dung lượng còn lại: %d MiB)",
"mailboxes_in_use": "Số hộp thư tối đa phải lớn hơn hoặc bằng %d",
"malformed_username": "Tên người dùng không đúng định dạng",
"map_content_empty": "Nội dung ánh xạ không được để trống",
"max_age_invalid": "Tuổi tối đa %s không hợp lệ",
"max_alias_exceeded": "Vượt quá số bí danh tối đa",
"max_mailbox_exceeded": "Vượt quá số hộp thư tối đa (%d trên %d)",
"max_quota_in_use": "Hạn ngạch hộp thư phải lớn hơn hoặc bằng %d MiB",
"maxquota_empty": "Hạn ngạch tối đa cho mỗi hộp thư không được là 0.",
"mode_invalid": "Chế độ %s không hợp lệ",
"mx_invalid": "Bản ghi MX %s không hợp lệ",
"mysql_error": "Lỗi MySQL: %s",
"network_host_invalid": "Mạng hoặc máy chủ không hợp lệ: %s",
"next_hop_interferes": "%s xung đột với bước nhảy tiếp theo %s",
"next_hop_interferes_any": "Một bước nhảy tiếp theo hiện có xung đột với %s",
"nginx_reload_failed": "Tải lại Nginx thất bại: %s",
"no_user_defined": "Không có người dùng được định nghĩa",
"object_exists": "Đối tượng %s đã tồn tại",
"object_is_not_numeric": "Giá trị %s không phải là số",
"password_complexity": "Mật khẩu không đáp ứng chính sách",
"password_empty": "Mật khẩu không được để trống",
"password_mismatch": "Mật khẩu xác nhận không khớp",
"password_reset_invalid_user": "Không tìm thấy hộp thư hoặc không có email khôi phục được thiết lập",
"password_reset_na": "Tính năng khôi phục mật khẩu hiện không khả dụng. Vui lòng liên hệ quản trị viên của bạn.",
"policy_list_from_exists": "Một bản ghi với tên đã cho tồn tại",
"policy_list_from_invalid": "Bản ghi có định dạng không hợp lệ",
"private_key_error": "Lỗi khóa riêng tư: %s",
"pushover_credentials_missing": "Thiếu token hoặc khóa Pushover",
"pushover_key": "Khóa Pushover có định dạng không đúng",
"pushover_token": "Token Pushover có định dạng không đúng",
"quota_not_0_not_numeric": "Hạn ngạch phải là số và >= 0",
"recipient_map_entry_exists": "Mục ánh xạ người nhận \"%s\" đã tồn tại",
"recovery_email_failed": "Không thể gửi email khôi phục. Vui lòng liên hệ quản trị viên của bạn.",
"redis_error": "Lỗi Redis: %s",
"relayhost_invalid": "Mục ánh xạ %s không hợp lệ",
"release_send_failed": "Không thể phát hành thư: %s",
"required_data_missing": "Thiếu dữ liệu bắt buộc %s",
"reset_f2b_regex": "Không thể đặt lại bộ lọc biểu thức chính quy kịp thời, vui lòng thử lại hoặc đợi thêm vài giây và tải lại trang web.",
"reset_token_limit_exceeded": "Đã vượt quá giới hạn token đặt lại. Vui lòng thử lại sau.",
"resource_invalid": "Tên tài nguyên %s không hợp lệ",
"rl_timeframe": "Khung thời gian giới hạn tốc độ không chính xác",
"rspamd_ui_pw_length": "Mật khẩu giao diện Rspamd phải có ít nhất 6 ký tự",
"script_empty": "Tập lệnh không được để trống",
"sender_acl_invalid": "Giá trị ACL người gửi %s không hợp lệ",
"set_acl_failed": "Không thể thiết lập ACL",
"settings_map_invalid": "ID ánh xạ cài đặt %s không hợp lệ",
"sieve_error": "Lỗi phân tích cú pháp Sieve: %s",
"spam_learn_error": "Lỗi học thư rác: %s",
"subject_empty": "Tiêu đề không được để trống",
"target_domain_invalid": "Tên miền đích %s không hợp lệ",
"targetd_not_found": "Không tìm thấy tên miền đích %s",
"targetd_relay_domain": "Tên miền đích %s là tên miền chuyển tiếp",
"template_exists": "Mẫu %s đã tồn tại",
"template_id_invalid": "ID mẫu %s không hợp lệ",
"template_name_invalid": "Tên mẫu không hợp lệ",
"temp_error": "Lỗi tạm thời",
"text_empty": "Văn bản không được để trống",
"tfa_token_invalid": "Token xác thực hai yếu tố không hợp lệ",
"tls_policy_map_dest_invalid": "Đích chính sách TLS không hợp lệ",
"tls_policy_map_entry_exists": "Mục ánh xạ chính sách TLS \"%s\" đã tồn tại",
"tls_policy_map_parameter_invalid": "Tham số chính sách không hợp lệ",
"to_invalid": "Người nhận không được để trống",
"totp_verification_failed": "Xác thực TOTP thất bại",
"transport_dest_exists": "Đích vận chuyển \"%s\" đã tồn tại",
"webauthn_verification_failed": "Xác thực WebAuthn thất bại: %s",
"webauthn_authenticator_failed": "Không tìm thấy trình xác thực đã chọn",
"webauthn_publickey_failed": "Không có khóa công khai nào được lưu cho trình xác thực đã chọn",
"webauthn_username_failed": "Trình xác thực đã chọn thuộc về tài khoản khác",
"unknown": "Đã xảy ra lỗi không xác định",
"unknown_tfa_method": "Phương thức xác thực hai yếu tố không xác định",
"unlimited_quota_acl": "Hạn ngạch không giới hạn bị cấm bởi ACL",
"username_invalid": "Tên người dùng %s không thể sử dụng được",
"validity_missing": "Vui lòng gán thời hạn hiệu lực",
"value_missing": "Vui lòng cung cấp tất cả các giá trị",
"version_invalid": "Phiên bản %s không hợp lệ",
"yotp_verification_failed": "Xác thực Yubico OTP thất bại: %s"
},
"datatables": {
"collapse_all": "Thu gọn tất cả",
"emptyTable": "Không có dữ liệu trong bảng",
"expand_all": "Mở rộng tất cả",
"info": "Hiển thị từ _START_ đến _END_ của _TOTAL_ mục",
"infoEmpty": "Hiển thị 0 đến 0 của 0 mục",
"infoFiltered": "(được lọc từ tổng số _MAX_ mục)",
"lengthMenu": "Hiển thị _MENU_ mục",
"loadingRecords": "Đang tải...",
"processing": "Vui lòng đợi...",
"search": "Tìm kiếm:",
"zeroRecords": "Không tìm thấy bản ghi phù hợp",
"paginate": {
"first": "Đầu",
"last": "Cuối",
"next": "Tiếp",
"previous": "Trước"
},
"aria": {
"sortAscending": ": kích hoạt để sắp xếp cột tăng dần",
"sortDescending": ": kích hoạt để sắp xếp cột giảm dần"
}
},
"debug": {
"architecture": "Kiến trúc",
"chart_this_server": "Biểu đồ (máy chủ này)",
"containers_info": "Thông tin container",
"container_running": "Đang chạy",
"container_disabled": "Container đã dừng hoặc bị vô hiệu hóa",
"container_stopped": "Đã dừng",
"cores": "Nhân CPU",
"current_time": "Thời gian hệ thống",
"disk_usage": "Sử dụng ổ đĩa",
"docs": "Tài liệu",
"error_show_ip": "Không thể phân giải địa chỉ IP công khai",
"external_logs": "Nhật ký ngoài",
"history_all_servers": "Lịch sử (tất cả máy chủ)",
"in_memory_logs": "Nhật ký trong bộ nhớ",
"last_modified": "Sửa đổi lần cuối",
"log_info": "<p>mailcow <b>nhật ký trong bộ nhớ</b> được thu thập trong danh sách Redis và được cắt giảm xuống LOG_LINES (%d) mỗi phút để giảm tải.\n<br>Nhật ký trong bộ nhớ không nhằm mục đích lưu trữ lâu dài. Tất cả các ứng dụng ghi nhật ký trong bộ nhớ cũng ghi vào Docker daemon và do đó vào trình điều khiển ghi nhật ký mặc định.r\n<br>Loại nhật ký trong bộ nhớ nên được sử dụng để gỡ lỗi các vấn đề nhỏ với các container.</p>\n<p><b>Nhật ký bên ngoài</b> được thu thập thông qua API của ứng dụng đã cho.</p>\n<p><b>Nhật ký tĩnh</b> chủ yếu là nhật ký hoạt động, không được ghi vào Dockerd nhưng vẫn cần được lưu trữ lâu dài (ngoại trừ nhật ký API).</p>",
"login_time": "Thời gian",
"logs": "Nhật ký",
"memory": "Bộ nhớ",
"online_users": "Người dùng trực tuyến",
"restart_container": "Khởi động lại",
"service": "Dịch vụ",
"show_ip": "Hiển thị IP công khai",
"size": "Kích thước",
"started_at": "Bắt đầu lúc",
"started_on": "Bắt đầu vào",
"static_logs": "Nhật ký tĩnh",
"success": "Thành công",
"system_containers": "Hệ thống & Container",
"timezone": "Múi giờ",
"uptime": "Thời gian hoạt động",
"update_available": "Có bản cập nhật mới",
"no_update_available": "Hệ thống đang ở phiên bản mới nhất",
"update_failed": "Không thể kiểm tra cập nhật",
"username": "Tên người dùng",
"wip": "Đang trong quá trình phát triển"
},
"diagnostics": {
"cname_from_a": "Giá trị được lấy từ bản ghi A/AAAA. Điều này được hỗ trợ miễn là bản ghi trỏ đến tài nguyên chính xác.",
"dns_records": "Bản ghi DNS",
"dns_records_24hours": "Xin lưu ý rằng các thay đổi được thực hiện đối với DNS có thể mất tới 24 giờ để phản ánh chính xác trạng thái hiện tại của chúng trên trang này. Trang này nhằm giúp bạn dễ dàng xem cách cấu hình bản ghi DNS và kiểm tra xem tất cả bản ghi của bạn có được lưu trữ chính xác trong DNS hay không.",
"dns_records_data": "Dữ liệu chính xác",
"dns_records_docs": "Vui lòng tham khảo thêm <a target=\"_blank\" href=\"https://docs.mailcow.email/getstarted/prerequisite-dns\">tài liệu hướng dẫn</a>.",
"dns_records_name": "Tên",
"dns_records_status": "Trạng thái hiện tại",
"dns_records_type": "Loại",
"optional": "Bản ghi này là tùy chọn."
},
"edit": {
"acl": "ACL (Quyền hạn)",
"active": "Hoạt động",
"admin": "Chỉnh sửa quản trị viên",
"advanced_settings": "Cài đặt nâng cao",
"alias": "Chỉnh sửa bí danh",
"allow_from_smtp": "Chỉ cho phép các IP sau sử dụng <b>SMTP</b>",
"allow_from_smtp_info": "Để trống để cho phép tất cả người gửi.<br>Địa chỉ và mạng IPv4/IPv6.",
"allowed_protocols": "Các giao thức được phép truy cập trực tiếp của người dùng (không ảnh hưởng đến giao thức mật khẩu ứng dụng)",
"app_name": "Tên ứng dụng",
"app_passwd": "Mật khẩu ứng dụng",
"app_passwd_protocols": "Các giao thức được phép cho mật khẩu ứng dụng",
"automap": "Thử tự động ánh xạ thư mục (\"Mục đã gửi\", \"Đã gửi\" => \"Đã gửi\" v.v.)",
"backup_mx_options": "Tùy chọn chuyển tiếp",
"bcc_dest_format": "Đích BCC phải là một địa chỉ email hợp lệ duy nhất.<br>Nếu bạn cần gửi bản sao đến nhiều địa chỉ, hãy tạo một bí danh và sử dụng nó ở đây.",
"client_id": "ID khách hàng",
"client_secret": "Khóa bí mật khách hàng",
"comment_info": "Bình luận riêng tư không hiển thị với người dùng, trong khi bình luận công khai được hiển thị dưới dạng chú thích khi di chuột qua trong tổng quan người dùng",
"created_on": "Được tạo vào",
"custom_attributes": "Thuộc tính tùy chỉnh",
"delete1": "Xóa từ nguồn khi hoàn thành",
"delete2": "Xóa thư ở đích không có ở nguồn",
"delete2duplicates": "Xóa các bản sao ở đích",
"delete_ays": "Vui lòng xác nhận quá trình xóa.",
"description": "Mô tả",
"disable_login": "Không cho phép đăng nhập (vẫn nhận được thư đến)",
"domain": "Chỉnh sửa tên miền",
"domain_admin": "Chỉnh sửa quản trị viên tên miền",
"domain_footer": "Chân trang toàn tên miền",
"domain_footer_html": "Chân trang HTML",
"domain_footer_info": "Chân trang toàn tên miền được thêm vào tất cả các email gửi đi liên quan đến một địa chỉ trong tên miền này. <br> Các biến sau có thể được sử dụng cho chân trang:",
"domain_footer_info_vars": {
"auth_user": "{= auth_user =} - Tên người dùng đã xác thực được chỉ định bởi MTA",
"from_user": "{= from_user =} - Phần người dùng của phong bì, ví dụ \"moo@mailcow.tld\" sẽ trả về \"moo\"",
"from_name": "{= from_name =} - Tên từ phong bì, ví dụ \"Mailcow &lt;moo@mailcow.tld&gt;\" sẽ trả về \"Mailcow\"",
"from_addr": "{= from_addr =} - Phần địa chỉ của phong bì",
"from_domain": "{= from_domain =} - Phần tên miền của phong bì",
"custom": "{= foo =} - Nếu hộp thư có thuộc tính tùy chỉnh \"foo\" với giá trị \"bar\" sẽ trả về \"bar\""
},
"domain_footer_plain": "Chân trang văn bản thuần",
"domain_footer_skip_replies": "Bỏ qua chân trang trong email trả lời",
"domain_quota": "Hạn ngạch tên miền",
"domains": "Các tên miền",
"dont_check_sender_acl": "Tắt kiểm tra người gửi cho tên miền %s (+ tên miền bí danh)",
"edit_alias_domain": "Chỉnh sửa tên miền bí danh",
"encryption": "Mã hóa",
"exclude": "Loại trừ đối tượng (biểu thức chính quy)",
"extended_sender_acl": "Địa chỉ người gửi bên ngoài",
"extended_sender_acl_info": "Khóa tên miền DKIM nên được nhập vào, nếu có sẵn.<br>\n Nhớ thêm máy chủ này vào bản ghi SPF TXT tương ứng.<br>\n Khi một tên miền hoặc tên miền bí danh được thêm vào máy chủ này, mà trùng với một địa chỉ bên ngoài, địa chỉ bên ngoài sẽ bị xóa.<br>\n Sử dụng @domain.tld để cho phép gửi dưới dạng *@domain.tld.",
"force_pw_update": "Bắt buộc cập nhật mật khẩu trong lần đăng nhập tiếp theo",
"force_pw_update_info": "Người dùng này sẽ chỉ có thể đăng nhập vào %s. Mật khẩu ứng dụng vẫn có thể sử dụng được.",
"footer_exclude": "Loại trừ khỏi chân trang",
"full_name": "Tên đầy đủ",
"gal": "Danh sách địa chỉ toàn cục",
"gal_info": "GAL chứa tất cả các đối tượng của một tên miền và không thể được chỉnh sửa bởi bất kỳ người dùng nào. Thông tin rảnh/bận trong SOGo sẽ bị thiếu nếu vô hiệu hóa! <b>Khởi động lại SOGo để áp dụng thay đổi.</b>",
"generate": "tạo",
"grant_types": "Các loại cấp quyền",
"hostname": "Tên máy chủ",
"inactive": "Không hoạt động",
"internal": "Nội bộ",
"internal_info": "Bí danh nội bộ chỉ có thể truy cập từ tên miền sở hữu hoặc tên miền bí danh.",
"kind": "Loại",
"last_modified": "Sửa đổi lần cuối",
"lookup_mx": "Đích là một biểu thức chính quy để khớp với tên MX (<code>.*.google.com</code> để định tuyến tất cả thư nhắm đến MX kết thúc bằng google.com qua bước nhảy này)"
}
}

View File

@@ -24,7 +24,7 @@
"sogo_access": "允许管理 SOGo 访问权限",
"sogo_profile_reset": "重置 SOGo 个人资料",
"spam_alias": "临时别名",
"spam_policy": "阻止名单/允许名单",
"spam_policy": "名单/名单",
"spam_score": "垃圾邮件分数",
"syncjobs": "同步任务",
"tls_policy": "TLS 策略",
@@ -109,9 +109,7 @@
"username": "用户名",
"validate": "验证",
"validation_success": "验证成功",
"dry": "模拟同步Dry run",
"internal_info": "内部的别名只能在域内部或者别名域内部访问。",
"internal": "内部的"
"dry": "模拟同步Dry run"
},
"admin": {
"access": "权限管理",
@@ -149,7 +147,7 @@
"arrival_time": "到达时间 (服务器时间)",
"authed_user": "已认证用户",
"ays": "确定继续操作?",
"ban_list_info": "以下为被封禁的 IP 列表: <b>网络 (剩余封禁时间) - [操作]</b>。<br />被取消封禁的 IP 将会在几秒之内从封禁列表中移除<br />红色标签表示因阻止名单而导致的永久封禁。",
"ban_list_info": "以下为被封禁的 IP 列表: <b>网络 (剩余封禁时间) - [操作]</b>。<br />被取消封禁的 IP 将会在几秒之内从封禁列表中移除<br />红色标签表示因名单而导致的永久封禁。",
"change_logo": "更改 Logo",
"configuration": "配置",
"convert_html_to_text": "将 HTML 转换为纯文本内容",
@@ -181,16 +179,16 @@
"empty": "结果为空",
"excludes": "除了",
"f2b_ban_time": "封禁时间 (秒)",
"f2b_blacklist": "网络/主机阻止名单",
"f2b_blacklist": "网络/主机名单",
"f2b_filter": "正则表达式过滤器",
"f2b_list_info": "阻止名单的优先级总是高于允许名单。 <b>列表更新将会在几秒之后完成。</b>",
"f2b_list_info": "名单的优先级总是高于名单。 <b>列表更新将会在几秒之后完成。</b>",
"f2b_max_attempts": "最多尝试次数",
"f2b_netban_ipv4": "应用封禁的 IPv4 子网大小 (8-32)",
"f2b_netban_ipv6": "应用封禁的 IPv6 子网大小 (8-128)",
"f2b_parameters": "Fail2ban 参数",
"f2b_regex_info": "将会过滤这些应用的日志: SOGoPostfixDovecot 和 PHP-FPM。",
"f2b_retry_window": "最多尝试次数重试窗口 (秒)",
"f2b_whitelist": "网络/主机允许名单",
"f2b_whitelist": "网络/主机名单",
"filter_table": "筛选表格",
"forwarding_hosts": "转发主机",
"forwarding_hosts_add_hint": "你可以指定 IPv4/IPv6 地址、CIDR 表示的网络、主机名 (解析为 IP 地址),或者邮箱域名 (查询 SPF 记录或 MX 记录并解析为 IP 地址)。",
@@ -298,8 +296,8 @@
"rspamd_com_settings": "设置名称将会自动生成,请看参考下方的示例预设。查看<a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd 文档</a>以了解更多的细节",
"rspamd_global_filters": "全局过滤规则",
"rspamd_global_filters_agree": "我会小心谨慎的!",
"rspamd_global_filters_info": "全局过滤规则包含了不同类型的全局阻止名单和允许名单。",
"rspamd_global_filters_regex": "它们的名字解释了它们的用途。所有内容必须包含 \"/pattern/options\" 格式的合法表达式 (例如 <code>/.+@domain\\.tld/i</code>)。<br>\n 因为仅对正则表达式执行了基本的检查Rspamd 的功能仍可能因正则表达式语法问题出现错误。<br>\n Rspamd 会在规则更改后读取其内容。 如果你遇到了问题,<a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">重启 Rspamd</a> 以强制重载规则。<br>阻止名单中的项目会被系统排除。",
"rspamd_global_filters_info": "全局过滤规则包含了不同类型的全局名单和名单。",
"rspamd_global_filters_regex": "它们的名字解释了它们的用途。所有内容必须包含 \"/pattern/options\" 格式的合法表达式 (例如 <code>/.+@domain\\.tld/i</code>)。<br>\r\n 因为仅对正则表达式执行了基本的检查Rspamd 的功能仍可能因正则表达式语法问题出现错误。<br>\r\n Rspamd 会在规则更改后读取其内容。 如果你遇到了问题,<a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">重启 Rspamd</a> 以强制重载规则。<br>名单中的项目会被系统排除。",
"rspamd_settings_map": "Rspamd 设置",
"sal_level": "Moo 等级",
"save": "保存更改",
@@ -407,10 +405,7 @@
"user_quicklink": "隐藏指向用户登陆页面的快捷链接",
"admin_quicklink": "隐藏指向管理员登陆页面的快捷链接",
"force_sso": "强制要求单点登录SSO",
"user_link": "自定义链接",
"app_hide": "在登入界面隐藏",
"needs_restart": "需要重启",
"iam_use_tls_info": "如果使用了 TLS必须使用 LDAP 服务器的默认端口389。SSL 的端口不能使用。"
"user_link": "自定义链接"
},
"danger": {
"access_denied": "访问被拒绝或者表单数据无效",
@@ -551,11 +546,7 @@
"generic_server_error": "服务器错误。请联系您的管理员。",
"authsource_in_use": "由于当前有一个或多个用户正在使用该身份提供者IDP因此无法更改或删除。",
"iam_test_connection": "连接失败",
"required_data_missing": "缺少需要的 %s 数据",
"max_age_invalid": "最大有效时间 %s 无效",
"mode_invalid": "模式 %s 无效",
"mx_invalid": "MX 记录 %s 无效",
"version_invalid": "版本 %s 无效"
"required_data_missing": "缺少需要的 %s 数据"
},
"debug": {
"chart_this_server": "图表 (此服务器)",
@@ -741,20 +732,7 @@
"domain_footer_skip_replies": "在回信中忽略 footer",
"footer_exclude": "从 footer 中排除",
"last_modified": "上次修改时间",
"pushover_sound": "声音",
"internal": "内部的",
"internal_info": "内部的别名只能在域内部或者别名域内部访问。",
"mta_sts": "邮件传输代理严格传输安全协议MTA-STS",
"mta_sts_version": "版本",
"mta_sts_info": "<a href='https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#SMTP_MTA_Strict_Transport_Security' target='_blank'>MTA-STS</a> 是一项 MTA 标准,它强制要求 MTA 间传输必须使用 TLS 和有效的证书。<br>当因没有 DNSSEC 而无法使用 <a target='_blank' href='https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities'>DANE</a> 时,该标准将被启用。<br><b>注意</b>:若收件域支持基于 DNSSEC 的 DANE 协议,则系统将<b>始终</b>优先采用 DANE —— MTA-STS 仅作为备用机制存在。",
"mta_sts_version_info": "定义 MTA-STS 标准的版本——当前仅 <code>STSv1</code> 为有效版本。",
"mta_sts_mode": "模式",
"mta_sts_mode_info": "提供三种可选模式:<ul><li><em>测试模式</em>——仅监控策略执行情况,违反策略不会产生实际影响。</li><li><em>强制模式</em>——严格执行策略,拒绝所有未使用有效 TLS 加密的连接。</li><li><em>禁用模式</em>——发布策略但不生效。</li></ul>",
"mta_sts_max_age": "最长有效期",
"mta_sts_max_age_info": "接收方邮件服务器可缓存该策略的时长(秒),超出后需重新获取策略。",
"mta_sts_mx": "MX 服务器",
"mta_sts_mx_info": "仅允许向明确列出的邮件服务器发送邮件;发送方 MTA 会验证 DNS MX 记录的主机名是否与策略列表匹配,并仅允许携带有效 TLS 证书的投递(可防范中间人攻击)。",
"mta_sts_mx_notice": "可配置多个 MX 服务器(以逗号分隔)。"
"pushover_sound": "声音"
},
"fido2": {
"confirm": "确认",
@@ -824,8 +802,7 @@
"login_linkstext": "不是正确的登陆页面?",
"login_usertext": "以用户身份登陆",
"login_domainadmintext": "以域管理员身份登陆",
"login_admintext": "以管理员身份登陆",
"email": "邮箱地址"
"login_admintext": "以管理员身份登陆"
},
"mailbox": {
"action": "操作",
@@ -931,7 +908,7 @@
"recipient_map_new": "新收件人",
"recipient_map_new_info": "收件人映射的目标必须为合法的邮件地址或域名。",
"recipient_map_old": "原收件人",
"recipient_map_old_info": "原收件人必须为合法的邮箱地址或域名。",
"recipient_map_old_info": "原收件人必须为合法的邮箱地址。",
"recipient_maps": "收件人映射",
"relay_all": "中继所有收件人",
"remove": "删除",
@@ -1001,8 +978,7 @@
"relay_unknown": "转发未知信箱",
"templates": "模板",
"template": "模板",
"iam": "身份提供者IDP",
"internal": "内部的"
"iam": "身份提供者IDP"
},
"oauth2": {
"access_denied": "请作为邮箱所有者登录以使用 OAuth2 授权。",
@@ -1034,7 +1010,7 @@
"notified": "已发送通知",
"qhandler_success": "已成功向系统发送请求,现在你可以关闭这个窗口了。",
"qid": "Rspamd 队列IDQID",
"qinfo": "隔离系统会把已被拒绝接收的邮件以及作为拷贝发送到垃圾箱的邮件保存到数据库中 (发件人<em>不</em>会知道)。\n <br>\"学习为垃圾并删除\" 会根据贝叶斯定理将消息作为垃圾学习并计算其模糊特征以拒绝未来收到相似消息。\n <br>请注意,这取决于你的系统资源,学习多个消息可能会花费较长时间。<br>阻止名单中项目会被隔离系统排除。",
"qinfo": "隔离系统会把已被拒绝接收的邮件以及作为拷贝发送到垃圾箱的邮件保存到数据库中 (发件人<em>不</em>会知道)。\r\n <br>\"学习为垃圾并删除\" 会根据贝叶斯定理将消息作为垃圾学习并计算其模糊特征以拒绝未来收到相似消息。\r\n <br>请注意,这取决于你的系统资源,学习多个消息可能会花费较长时间。<br>名单中项目会被隔离系统排除。",
"qitem": "隔离项目",
"quarantine": "隔离",
"quick_actions": "操作",
@@ -1325,8 +1301,8 @@
"spam_score_reset": "重置为服务器默认值",
"spamfilter": "垃圾邮件过滤器",
"spamfilter_behavior": "分数",
"spamfilter_bl": "阻止名单",
"spamfilter_bl_desc": "阻止名单中地址<b>总是会</b>被标记为垃圾邮件。被拒绝的邮件<b>不会</b>进入隔离区。此处可以使用通配符 \"*\"。此过滤器也会应用到直接别名 (只指向一个目标邮箱),但不会应用到\"接收所有\"别名和邮箱地址本身。",
"spamfilter_bl": "名单",
"spamfilter_bl_desc": "名单中地址<b>总是会</b>被标记为垃圾邮件。被拒绝的邮件<b>不会</b>进入隔离区。此处可以使用通配符 \"*\"。此过滤器也会应用到直接别名 (只指向一个目标邮箱),但不会应用到\"接收所有\"别名和邮箱地址本身。",
"spamfilter_default_score": "默认值",
"spamfilter_green": "绿色: 此消息不是垃圾邮件",
"spamfilter_hint": "第一个值表示\"低垃圾邮件分数\",第二个值表示\"高垃圾邮件分数\"。",
@@ -1337,8 +1313,8 @@
"spamfilter_table_empty": "数据为空",
"spamfilter_table_remove": "删除",
"spamfilter_table_rule": "规则",
"spamfilter_wl": "允许名单",
"spamfilter_wl_desc": "允许名单中地址<b>永远不会</b>被标记为垃圾邮件。此处可以使用通配符 \"*\"。此过滤器也会应用到直接别名 (只指向一个目标邮箱),但不会应用到\"接收所有\"别名和邮箱地址本身。",
"spamfilter_wl": "名单",
"spamfilter_wl_desc": "名单中地址<b>永远不会</b>被标记为垃圾邮件。此处可以使用通配符 \"*\"。此过滤器也会应用到直接别名 (只指向一个目标邮箱),但不会应用到\"接收所有\"别名和邮箱地址本身。",
"spamfilter_yellow": "黄色: 此为垃圾邮件,会被标记为垃圾邮件并且移入垃圾邮件文件夹",
"status": "状态",
"sync_jobs": "同步任务",

View File

@@ -6,8 +6,7 @@ if (!isset($_SERVER['HTTP_HOST']) || strpos($_SERVER['HTTP_HOST'], 'mta-sts.') !
exit;
}
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
$domain = str_replace('mta-sts.', '', $host);
$domain = str_replace('mta-sts.', '', $_SERVER['HTTP_HOST']);
$mta_sts = mailbox('get', 'mta_sts', $domain);
if (count($mta_sts) == 0 ||

View File

@@ -64,7 +64,7 @@ elseif (isset($_GET['login'])) {
':remote_addr' => ($_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'])
));
// redirect to sogo (sogo will get the correct credentials via nginx auth_request
header("Location: /SOGo/so/");
header("Location: /SOGo/so/{$login}");
exit;
}
}
@@ -81,7 +81,10 @@ elseif (isset($_SERVER['HTTP_X_ORIGINAL_URI']) && strcasecmp(substr($_SERVER['HT
}
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/sessions.inc.php';
// extract email address from "/SOGo/so/user@domain/xy"
$url_parts = explode("/", $_SERVER['HTTP_X_ORIGINAL_URI']);
$email_list = array(
$url_parts[3], // Requested mailbox
($_SESSION['mailcow_cc_username'] ?? ''), // Current user
($_SESSION["dual-login"]["username"] ?? ''), // Dual login user
);

View File

@@ -13,15 +13,15 @@
</div>
</div>
<div class="row mb-2">
<label class="control-label col-sm-2" for="app_passwd">{{ lang.edit.password }} (<a href="#" class="generate_password">{{ lang.edit.generate }}</a>)</label>
<label class="control-label col-sm-2" for="password">{{ lang.edit.password }} (<a href="#" class="generate_password">{{ lang.edit.generate }}</a>)</label>
<div class="col-sm-10">
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="app_passwd" placeholder="" autocomplete="new-password">
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="password" placeholder="" autocomplete="new-password">
</div>
</div>
<div class="row mb-4">
<label class="control-label col-sm-2" for="app_passwd2">{{ lang.edit.password_repeat }}</label>
<label class="control-label col-sm-2" for="password2">{{ lang.edit.password_repeat }}</label>
<div class="col-sm-10">
<input type="password" data-pwgen-field="true" class="form-control" name="app_passwd2" autocomplete="new-password">
<input type="password" data-pwgen-field="true" class="form-control" name="password2" autocomplete="new-password">
</div>
</div>
<div class="row mb-2">

View File

@@ -39,7 +39,7 @@
<div class="row mb-2" data-acl="{{ acl.domain_desc }}">
<label class="control-label col-sm-2" for="description">{{ lang.edit.description }}</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="description" value="{{ result.description }}"{% if acl.domain_desc == '0' %} readonly{% endif %}>
<input type="text" class="form-control" name="description" value="{{ result.description }}">
</div>
</div>
<div class="row mb-4">
@@ -58,7 +58,6 @@
</div>
</div>
</div>
{% if acl.domain_relayhost == '1' %}
<div class="row mb-2">
<label class="control-label col-sm-2" for="relayhost">{{ lang.edit.relayhost }}</label>
<div class="col-sm-10">
@@ -77,7 +76,6 @@
</select>
</div>
</div>
{% endif %}
{% if mailcow_cc_role == 'admin' %}
<div class="row mb-2">
<label class="control-label col-sm-2" for="aliases">{{ lang.edit.max_aliases }}</label>
@@ -149,7 +147,7 @@
<div class="row">
<div class="offset-sm-2 col-sm-10">
<small class="fst-italic d-block">{{ lang.edit.created_on }}: {{ result.created }}</small>
<small class="fst-italic d-block">{{ lang.edit.last_modified }}: {{ result.modified|default(lang.user.never) }}</small>
<small class="fst-italic d-block">{{ lang.edit.last_modified }}: {{ result.modified }}</small>
</div>
</div>
</form>
@@ -295,7 +293,7 @@
<input type="hidden" value="0" name="active">
<input type="hidden" value="{{ domain }}" name="domain">
<div class="row mb-2">
<label class="control-label col-sm-2" for="version">
<label class="control-label col-sm-2" for="version">
<i style="font-size: 16px; cursor: pointer;" class="bi bi-patch-question-fill m-2 ms-0" data-bs-toggle="tooltip" data-bs-html="true" data-bs-placement="bottom" title="{{ lang.edit.mta_sts_version_info|raw }}"></i>
{{ lang.edit.mta_sts_version }}
</label>

View File

@@ -114,7 +114,6 @@
<small class="text-muted d-block">{{ lang.edit.sender_acl_info|raw }}</small>
</div>
</div>
{% if acl.mailbox_relayhost == '1' %}
<div class="row mb-2">
<label class="control-label col-sm-2" for="relayhost">{{ lang.edit.relayhost }}</label>
<div class="col-sm-10">
@@ -135,7 +134,6 @@
<small class="text-muted d-block mb-4">{{ lang.edit.mailbox_relayhost_info }}</small>
</div>
</div>
{% endif %}
<div class="row mb-2">
<label class="control-label col-sm-2">{{ lang.user.tag_handling }}</label>
<div class="col-sm-10">
@@ -327,7 +325,7 @@
<div class="row">
<div class="offset-sm-2 col-sm-10">
<small class="fst-italic d-block">{{ lang.edit.created_on }}: {{ result.created }}</small>
<small class="fst-italic d-block">{{ lang.edit.last_modified }}: {{ result.modified|default(lang.user.never) }}</small>
<small class="fst-italic d-block">{{ lang.edit.last_modified }}: {{ result.modified }}</small>
</div>
</div>
</form>

View File

@@ -326,12 +326,6 @@
<small class="text-muted">{{ lang.user.password_reset_info }}</small>
</div>
</div>
<div class="row mb-4">
<label class="control-label col-sm-3" for="user_old_pass">{{ lang.user.password_now }}</label>
<div class="col-sm-9">
<input type="password" class="form-control" name="user_old_pass" autocomplete="off" required>
</div>
</div>
<div class="row">
<div class="offset-sm-3 col-sm-9">
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="pw_recovery_change" data-item="null" data-api-url='edit/self' data-api-attr='{}' href="#">{{ lang.user.save }}</button>

View File

@@ -42,7 +42,7 @@ services:
- mysql
redis-mailcow:
image: redis:7.4.6-alpine
image: redis:7.4.2-alpine
entrypoint: ["/bin/sh","/redis-conf.sh"]
volumes:
- redis-vol-1:/data/
@@ -84,7 +84,7 @@ services:
- clamd
rspamd-mailcow:
image: ghcr.io/mailcow/rspamd:2.4
image: ghcr.io/mailcow/rspamd:2.3
stop_grace_period: 30s
depends_on:
- dovecot-mailcow
@@ -117,7 +117,7 @@ services:
- rspamd
php-fpm-mailcow:
image: ghcr.io/mailcow/phpfpm:1.94
image: ghcr.io/mailcow/phpfpm:1.93
command: "php-fpm -d date.timezone=${TZ} -d expose_php=0"
depends_on:
- redis-mailcow
@@ -200,7 +200,7 @@ services:
- phpfpm
sogo-mailcow:
image: ghcr.io/mailcow/sogo:1.136
image: ghcr.io/mailcow/sogo:1.134
environment:
- DBNAME=${DBNAME}
- DBUSER=${DBUSER}
@@ -213,7 +213,6 @@ services:
- ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n}
- IPV4_NETWORK=${IPV4_NETWORK:-172.22.1}
- SOGO_EXPIRE_SESSION=${SOGO_EXPIRE_SESSION:-480}
- SOGO_URL_ENCRYPTION_KEY=${SOGO_URL_ENCRYPTION_KEY:-SOGoSuperSecret0}
- SKIP_SOGO=${SKIP_SOGO:-n}
- MASTER=${MASTER:-y}
- REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-}
@@ -419,7 +418,7 @@ services:
- php-fpm-mailcow
- sogo-mailcow
- rspamd-mailcow
image: ghcr.io/mailcow/nginx:1.05
image: ghcr.io/mailcow/nginx:1.04
dns:
- ${IPV4_NETWORK:-172.22.1}.254
environment:
@@ -502,7 +501,7 @@ services:
- acme
netfilter-mailcow:
image: ghcr.io/mailcow/netfilter:1.63
image: ghcr.io/mailcow/netfilter:1.62
stop_grace_period: 30s
restart: always
privileged: true

View File

@@ -1,26 +1,5 @@
#!/usr/bin/env bash
# Ensure the script is run from the directory that contains a link of .env
# Resolve the directory this script lives in for consistent behavior when invoked from elsewhere
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" >/dev/null 2>&1 && pwd)"
# Ensure script is executed in the mailcow installation directory by checking for a .env symlink that points to mailcow.conf
if [ ! -L "${PWD}/.env" ]; then
echo -e "\e[33mPlease run this script from the mailcow installation directory.\e[0m"
echo -e " \e[36mcd /path/to/mailcow && ./generate_config.sh\e[0m"
exit 1
fi
# Verify the .env symlink points to a mailcow.conf file
env_target="$(readlink -f "${PWD}/.env" 2>/dev/null || true)"
if [ -z "$env_target" ] || [ "$(basename "$env_target")" != "mailcow.conf" ]; then
echo -e "\e[31mThe found .env symlink does not point to a mailcow.conf file.\e[0m"
echo -e "\e[33mPlease create a symbolic link .env -> mailcow.conf inside the mailcow directory and run this script there.\e[0m"
echo -e "\e[33mNote: 'ln -s mailcow.conf .env' will create the symlink even if mailcow.conf does not yet exist.\e[0m"
echo -e " \e[36mcd /path/to/mailcow && ln -s mailcow.conf .env && ./generate_config.sh\e[0m"
exit 1
fi
# Load mailcow Generic Scripts
source _modules/scripts/core.sh
source _modules/scripts/ipv6_controller.sh
@@ -172,6 +151,7 @@ cat << EOF > mailcow.conf
# example.org is _not_ a valid hostname, use a fqdn here.
# Default admin user is "admin"
# Default password is "moohoo"
MAILCOW_HOSTNAME=${MAILCOW_HOSTNAME}
# Password hash algorithm
@@ -182,16 +162,19 @@ MAILCOW_PASS_SCHEME=BLF-CRYPT
# ------------------------------
# SQL database configuration
# ------------------------------
DBNAME=mailcow
DBUSER=mailcow
# Please use long, random alphanumeric strings (A-Za-z0-9)
DBPASS=$(LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 2> /dev/null | head -c 28)
DBROOT=$(LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 2> /dev/null | head -c 28)
# ------------------------------
# REDIS configuration
# ------------------------------
REDISPASS=$(LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 2> /dev/null | head -c 28)
# ------------------------------
@@ -206,6 +189,7 @@ REDISPASS=$(LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 2> /dev/null | head -c 28)
# Example: HTTP_BIND=1.2.3.4
# For IPv4 leave it as it is: HTTP_BIND= & HTTPS_PORT=
# For IPv6 see https://docs.mailcow.email/post_installation/firststeps-ip_bindings/
HTTP_PORT=80
HTTP_BIND=
@@ -213,13 +197,14 @@ HTTPS_PORT=443
HTTPS_BIND=
# Redirect HTTP connections to HTTPS - y/n
HTTP_REDIRECT=y
HTTP_REDIRECT=n
# ------------------------------
# Other bindings
# ------------------------------
# You should leave that alone
# Format: 11.22.33.44:25 or 12.34.56.78:465 etc.
SMTP_PORT=25
SMTPS_PORT=465
SUBMISSION_PORT=587
@@ -235,22 +220,25 @@ REDIS_PORT=127.0.0.1:7654
# Your timezone
# See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for a list of timezones
# Use the column named 'TZ identifier' + pay attention for the column named 'Notes'
TZ=${MAILCOW_TZ}
# Fixed project name
# Please use lowercase letters only
COMPOSE_PROJECT_NAME=mailcowdockerized
# Used Docker Compose version
# Switch here between native (compose plugin) and standalone
# For more information take a look at the mailcow docs regarding the configuration options.
# For more informations take a look at the mailcow docs regarding the configuration options.
# Normally this should be untouched but if you decided to use either of those you can switch it manually here.
# Please be aware that at least one of those variants should be installed on your machine or mailcow will fail.
DOCKER_COMPOSE_VERSION=${COMPOSE_VERSION}
# Set this to "allow" to enable the anyone pseudo user. Disabled by default.
# When enabled, ACL can be created, that apply to "All authenticated users"
# This should probably only be activated on mail hosts, that are used exclusively by one organisation.
# This should probably only be activated on mail hosts, that are used exclusivly by one organisation.
# Otherwise a user might share data with too many other users.
ACL_ANYONE=disallow
@@ -258,6 +246,7 @@ ACL_ANYONE=disallow
# Deleted domains and mailboxes are moved to /var/vmail/_garbage/timestamp_sanitizedstring
# How long should objects remain in the garbage until they are being deleted? (value in minutes)
# Check interval is hourly
MAILDIR_GC_TIME=7200
# Additional SAN for the certificate
@@ -272,6 +261,8 @@ MAILDIR_GC_TIME=7200
#ADDITIONAL_SAN=srv1.example.net
# ...or combine wildcard and static names:
#ADDITIONAL_SAN=imap.*,srv1.example.com
#
ADDITIONAL_SAN=
# Obtain certificates for autodiscover.* and autoconfig.* domains.
@@ -288,52 +279,65 @@ AUTODISCOVER_SAN=y
# If the server name does not match a known site, Nginx decides by best-guess and may redirect users to the wrong web root.
# You can understand this as server_name directive in Nginx.
# Comma separated list without spaces! Example: ADDITIONAL_SERVER_NAMES=a.b.c,d.e.f
ADDITIONAL_SERVER_NAMES=
# Skip running ACME (acme-mailcow, Let's Encrypt certs) - y/n
SKIP_LETS_ENCRYPT=n
# Create separate certificates for all domains - y/n
# Create seperate certificates for all domains - y/n
# this will allow adding more than 100 domains, but some email clients will not be able to connect with alternative hostnames
# see https://doc.dovecot.org/admin_manual/ssl/sni_support
ENABLE_SSL_SNI=n
# Skip IPv4 check in ACME container - y/n
SKIP_IP_CHECK=n
# Skip HTTP verification in ACME container - y/n
SKIP_HTTP_VERIFICATION=n
# Skip Unbound (DNS Resolver) Healthchecks (NOT Recommended!) - y/n
SKIP_UNBOUND_HEALTHCHECK=n
# Skip ClamAV (clamd-mailcow) anti-virus (Rspamd will auto-detect a missing ClamAV container) - y/n
SKIP_CLAMD=${SKIP_CLAMD}
# Skip Olefy (olefy-mailcow) anti-virus for Office documents (Rspamd will auto-detect a missing Olefy container) - y/n
SKIP_OLEFY=n
# Skip SOGo: Will disable SOGo integration and therefore webmail, DAV protocols and ActiveSync support (experimental, unsupported, not fully implemented) - y/n
SKIP_SOGO=n
# Skip FTS (Fulltext Search) for Dovecot on low-memory, low-threaded systems or if you simply want to disable it.
# Dovecot inside mailcow use Flatcurve as FTS Backend.
SKIP_FTS=n
# Dovecot Indexing (FTS) Process maximum heap size in MB, there is no recommendation, please see Dovecot docs.
# Flatcurve (Xapian backend) is used as the FTS Indexer. It is supposed to be efficient in CPU and RAM consumption.
# However: Please always monitor your Resource consumption!
FTS_HEAP=128
# Controls how many processes the Dovecot indexing process can spawn at max.
# Too many indexing processes can use a lot of CPU and Disk I/O.
# Please visit: https://doc.dovecot.org/configuration_manual/service_configuration/#indexer-worker for more information
# Please visit: https://doc.dovecot.org/configuration_manual/service_configuration/#indexer-worker for more informations
FTS_PROCS=1
# Allow admins to log into SOGo as email user (without any password)
ALLOW_ADMIN_EMAIL_LOGIN=n
# Enable watchdog (watchdog-mailcow) to restart unhealthy containers
USE_WATCHDOG=y
# Send watchdog notifications by mail (sent from watchdog@MAILCOW_HOSTNAME)
@@ -342,6 +346,7 @@ USE_WATCHDOG=y
# 2. Mails are sent unsigned (no DKIM)
# 3. If you use DMARC, create a separate DMARC policy ("v=DMARC1; p=none;" in _dmarc.MAILCOW_HOSTNAME)
# Multiple rcpts allowed, NO quotation marks, NO spaces
#WATCHDOG_NOTIFY_EMAIL=a@example.com,b@example.com,c@example.com
#WATCHDOG_NOTIFY_EMAIL=
@@ -372,20 +377,25 @@ WATCHDOG_EXTERNAL_CHECKS=n
WATCHDOG_VERBOSE=n
# Max log lines per service to keep in Redis logs
LOG_LINES=9999
# Internal IPv4 /24 subnet, format n.n.n (expands to n.n.n.0/24)
# Use private IPv4 addresses only, see https://en.wikipedia.org/wiki/Private_network#Private_IPv4_addresses
IPV4_NETWORK=172.22.1
# Internal IPv6 subnet in fc00::/7
# Use private IPv6 addresses only, see https://en.wikipedia.org/wiki/Private_network#Private_IPv6_addresses
IPV6_NETWORK=fd4d:6169:6c63:6f77::/64
# Use this IPv4 for outgoing connections (SNAT)
#SNAT_TO_SOURCE=
# Use this IPv6 for outgoing connections (SNAT)
#SNAT6_TO_SOURCE=
# Create or override an API key for the web UI
@@ -405,10 +415,6 @@ MAILDIR_SUB=Maildir
# SOGo session timeout in minutes
SOGO_EXPIRE_SESSION=480
# SOGo URL encryption key (exactly 16 characters, limited to AZ, az, 09)
# This key is used to encrypt email addresses within SOGo URLs
SOGO_URL_ENCRYPTION_KEY=$(LC_ALL=C </dev/urandom tr -dc A-Za-z0-9 2>/dev/null | head -c 16)
# DOVECOT_MASTER_USER and DOVECOT_MASTER_PASS must both be provided. No special chars.
# Empty by default to auto-generate master user and password on start.
# User expands to DOVECOT_MASTER_USER@mailcow.local
@@ -514,4 +520,4 @@ else
echo ' $MAILCOW_UPDATEDAT='$(date +%s)';' >> data/web/inc/app_info.inc.php
echo '?>' >> data/web/inc/app_info.inc.php
echo -e "\e[33mCannot determine current git repository version...\e[0m"
fi
fi

View File

@@ -117,7 +117,7 @@ fi
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source "${SCRIPT_DIR}/../mailcow.conf"
COMPOSE_FILE="${SCRIPT_DIR}/../docker-compose.yml"
CMPS_PRJ=$(echo ${COMPOSE_PROJECT_NAME} | tr -cd '0-9A-Za-z-_')
CMPS_PRJ=$(echo ${COMPOSE_PROJECT_NAME} | tr -cd 'A-Za-z-_')
SQLIMAGE=$(grep -iEo '(mysql|mariadb)\:.+' "${COMPOSE_FILE}")
preflight_local_checks
@@ -169,7 +169,7 @@ if ! ssh -o StrictHostKeyChecking=no \
-i "${REMOTE_SSH_KEY}" \
${REMOTE_SSH_HOST} \
-p ${REMOTE_SSH_PORT} \
"cd \"${SCRIPT_DIR}/../\" && ${COMPOSE_COMMAND} create 2>&1" ; then
${COMPOSE_COMMAND} -f "${SCRIPT_DIR}/../docker-compose.yml" create 2>&1 ; then
>&2 echo -e "\e[31m[ERR]\e[0m - Could not create networks, volumes and containers on remote"
fi
@@ -284,7 +284,7 @@ echo "OK"
-i "${REMOTE_SSH_KEY}" \
${REMOTE_SSH_HOST} \
-p ${REMOTE_SSH_PORT} \
"cd \"${SCRIPT_DIR}/../\" && ${COMPOSE_COMMAND} pull --quiet 2>&1" ; then
${COMPOSE_COMMAND} -f "${SCRIPT_DIR}/../docker-compose.yml" pull --quiet 2>&1 ; then
>&2 echo -e "\e[31m[ERR]\e[0m - Could not pull images on remote"
fi
@@ -293,7 +293,7 @@ if ! ssh -o StrictHostKeyChecking=no \
-i "${REMOTE_SSH_KEY}" \
${REMOTE_SSH_HOST} \
-p ${REMOTE_SSH_PORT} \
"cd \"${SCRIPT_DIR}/../\" && ./update.sh -f --gc" ; then
${SCRIPT_DIR}/../update.sh -f --gc ; then
>&2 echo -e "\e[31m[ERR]\e[0m - Could not cleanup old images on remote"
fi

View File

@@ -25,6 +25,6 @@ services:
- /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock
mysql-mailcow:
image: alpine:3.22
image: alpine:3.20
command: /bin/true
restart: "no"

View File

@@ -7,8 +7,8 @@ services:
environment:
MAILCOW_EXPORTER_HOST: "<your-mail-domain>" # Replace with your Mailcow hostname
MAILCOW_EXPORTER_API_KEY: "<your-API-Key>" # Replace with your API key
MAILCOW_EXPORTER_SECURITY_TOKEN: "<your-secure-token>" # Replace with your secure key
# MAILCOW_EXPORTER_SECURITY_DISABLE_ACCESS_PROTECTION: "true" # Uncomment only if it is safe to disable token authentication (e.g., internal network only)
MAILCOW_EXPORTER_TOKEN: "<your-secure-token>" # Replace with your secure key
# MAILCOW_EXPORTER_TOKEN_DISABLE: "true" # Uncomment only if it is safe to disable token authentication (e.g., internal network only)
dns:
- ${IPV4_NETWORK:-172.22.1}.254
networks:

View File

@@ -3,20 +3,6 @@
############## Begin Function Section ##############
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAILCOW_CONF="${SCRIPT_DIR}/mailcow.conf"
# Ensure the script is run from the directory that contains mailcow.conf
if [ ! -f "${PWD}/mailcow.conf" ]; then
if [ -f "${SCRIPT_DIR}/mailcow.conf" ]; then
echo -e "\e[33mPlease run this script directly from the mailcow installation directory:\e[0m"
echo -e " \e[36mcd ${SCRIPT_DIR} && ./update.sh\e[0m"
exit 1
else
echo -e "\e[31mmailcow.conf not found in current directory or script directory (\e[36m${SCRIPT_DIR}\e[31m).\e[0m"
echo -e "\e[33mRun this script directly from your mailcow installation directory.\e[0m"
exit 1
fi
fi
BRANCH="$(cd "${SCRIPT_DIR}" && git rev-parse --abbrev-ref HEAD)"
MODULE_DIR="${SCRIPT_DIR}/_modules"
@@ -41,6 +27,8 @@ if [ "$(id -u)" -ne "0" ]; then
exit 1
fi
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Run pre-update-hook
if [ -f "${SCRIPT_DIR}/pre_update_hook.sh" ]; then
bash "${SCRIPT_DIR}/pre_update_hook.sh"