diff --git a/.gitignore b/.gitignore
index 1a5d5ae..607fb5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,11 @@ bkp/*
.cursor
.env
**/.env
+*.log
+*.out
+*.tmp
+HEALTH_CHECK_REPORT.md
+/core/mta-sts/.well-known/mta-sts.txt
secrets/*
!secrets/.gitkeep
**/.git
@@ -96,4 +101,4 @@ mailcow/create_cold_standby.sh
nextcloud/hooks/post-installation/set-configs.sh
**/volumes/
mailcow/data/conf/dovecot/auth/passwd-verify.lua
-mailcow/data/conf/postfix/main.cf
\ No newline at end of file
+mailcow/data/conf/postfix/main.cf
diff --git a/README.md b/README.md
index eeca8d2..e734a0d 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,13 @@ You need [docker](https://docs.docker.com/get-started/get-docker/) and with [doc
At least 6 cores with 16GB RAM 100GB SSD would be sufficent.
+## Diagnostics
+Run the unified diagnostics script from the repository root:
+```bash
+./diagnostic.sh
+```
+This combines the previous `diagnostic.sh` and `health_check.sh` checks.
+
## Install
### Prerequisites
1) Copy the env and docker-compose.override.yml to the service directories via the script.
diff --git a/core/docker-compose.yml b/core/docker-compose.yml
index 66226ee..56db985 100644
--- a/core/docker-compose.yml
+++ b/core/docker-compose.yml
@@ -1,7 +1,7 @@
services:
# Database-Stack
adminer:
- image: adminer
+ image: adminer:5
container_name: adminer
depends_on:
- mariadb
@@ -21,7 +21,7 @@ services:
restart: unless-stopped
mariadb:
- image: mariadb:11.5.2
+ image: mariadb:12
container_name: mariadb
environment:
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
@@ -49,7 +49,7 @@ services:
# Traefik
traefik:
- image: traefik:3.3
+ image: traefik:3
container_name: traefik
labels:
- "traefik.enable=true"
@@ -64,6 +64,10 @@ services:
- "traefik.http.middlewares.nextcloud-headers.headers.stsPreload=true"
- "traefik.http.middlewares.nextcloud-headers.headers.forceSTSHeader=true"
+ # Timeout middlewares
+ - "traefik.http.middlewares.timeout.headers.customrequestheaders.X-Forwarded-Timeout=120"
+ - "traefik.http.middlewares.timeout.headers.customresponseheaders.X-Response-Timeout=120"
+
# routers
- "traefik.http.routers.traefik.rule=Host(`traefik.${DOMAIN}`)"
- "traefik.http.routers.traefik.entrypoints=web,websecure"
@@ -104,6 +108,10 @@ services:
- --log.level=INFO
# Enable the Traefik API
- --api
+ # Set global timeouts
+ - --serverstransport.forwardingtimeouts.dialtimeout=120s
+ - --serverstransport.forwardingtimeouts.responseheadertimeout=120s
+ - --serverstransport.forwardingtimeouts.idleconntimeout=120s
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- server-certificates:/certificates
@@ -115,6 +123,23 @@ services:
- traefik
restart: unless-stopped
+ mta-sts:
+ image: nginx:1.27-alpine
+ container_name: mta-sts
+ labels:
+ - "traefik.enable=true"
+ - "traefik.docker.network=traefik"
+ - "traefik.http.routers.mta-sts.rule=Host(`mta-sts.${DOMAIN}`)"
+ - "traefik.http.routers.mta-sts.entrypoints=websecure"
+ - "traefik.http.routers.mta-sts.tls=true"
+ - "traefik.http.routers.mta-sts.tls.certresolver=le"
+ - "traefik.http.services.mta-sts.loadbalancer.server.port=80"
+ volumes:
+ - ./mta-sts:/usr/share/nginx/html:ro
+ networks:
+ - traefik
+ restart: unless-stopped
+
volumes:
server-certificates:
name: server-certificates
diff --git a/core/mta-sts/.well-known/mta-sts.txt.template b/core/mta-sts/.well-known/mta-sts.txt.template
new file mode 100644
index 0000000..049260f
--- /dev/null
+++ b/core/mta-sts/.well-known/mta-sts.txt.template
@@ -0,0 +1,4 @@
+version: STSv1
+mode: enforce
+mx: {{MAILCOW_HOSTNAME}}
+max_age: 604800
diff --git a/create_infra.bash b/create_infra.bash
index 7f2e828..94b4431 100755
--- a/create_infra.bash
+++ b/create_infra.bash
@@ -1,9 +1,39 @@
#!/bin/bash
-source ./core/.env
+set -e
+source ./core/.env
source ./drupal/.env
+create_mta_sts_policy() {
+ local template_path="./core/mta-sts/.well-known/mta-sts.txt.template"
+ local output_path="./core/mta-sts/.well-known/mta-sts.txt"
+ local mailcow_conf="./mailcow/mailcow.conf"
+ local mailcow_hostname=""
+
+ if [ ! -f "$template_path" ]; then
+ return 0
+ fi
+
+ if [ -f "$mailcow_conf" ]; then
+ mailcow_hostname=$(grep '^MAILCOW_HOSTNAME=' "$mailcow_conf" | cut -d= -f2)
+ fi
+
+ if [ -z "$mailcow_hostname" ] && [ -n "$DOMAIN" ]; then
+ mailcow_hostname="mail.${DOMAIN}"
+ fi
+
+ if [ ! -f "$output_path" ]; then
+ mkdir -p "$(dirname "$output_path")"
+ sed "s/{{MAILCOW_HOSTNAME}}/${mailcow_hostname}/g" "$template_path" > "$output_path"
+ echo "Created MTA-STS policy at ${output_path}"
+ else
+ echo "MTA-STS policy already exists at ${output_path}"
+ fi
+}
+
+create_mta_sts_policy
+
if [ ! -d "./drupal/drupal/root" ]; then
echo "Creating Drupal infrastructure..."
mkdir -p ./drupal/drupal/root
diff --git a/diagnostic.sh b/diagnostic.sh
index 4b95ca1..f861d8c 100755
--- a/diagnostic.sh
+++ b/diagnostic.sh
@@ -1,164 +1,403 @@
#!/bin/bash
-# Colors for output
-GREEN='\033[0;32m'
-YELLOW='\033[1;33m'
-RED='\033[0;31m'
-NC='\033[0m' # No Color
+# Colors for output.
+green='\033[0;32m'
+yellow='\033[1;33m'
+red='\033[0;31m'
+blue='\033[0;34m'
+noColor='\033[0m'
-echo -e "${YELLOW}Running diagnostic checks for Open Productive Stack...${NC}"
+printSection() {
+ echo -e "\n${blue}--- $1 ---${noColor}"
+}
-# Function to check if a service is running
-check_service() {
- local service=$1
+checkStatus() {
+ local status="$1"
+ local message="$2"
- echo -e "${YELLOW}Checking if $service is running...${NC}"
+ if [ "$status" = "0" ] || [ "$status" = "true" ] || [ "$status" = "OK" ] || [ "$status" = "healthy" ]; then
+ echo -e "${green}✓${noColor} $message"
+ return 0
+ fi
+
+ echo -e "${red}✗${noColor} $message"
+ return 1
+}
+
+warnStatus() {
+ local message="$1"
+ echo -e "${yellow}⚠${noColor} $message"
+}
+
+checkService() {
+ local service="$1"
+
+ echo -e "${yellow}Checking if ${service} is running...${noColor}"
if docker ps | grep -q "$service"; then
- echo -e "${GREEN}$service is running.${NC}"
+ echo -e "${green}${service} is running.${noColor}"
return 0
- else
- echo -e "${RED}$service is not running.${NC}"
- return 1
fi
+
+ echo -e "${red}${service} is not running.${noColor}"
+ return 1
}
-# Function to check network connectivity
-check_connectivity() {
- local service=$1
- local port=$2
- local host=${3:-localhost}
+checkConnectivity() {
+ local service="$1"
+ local port="$2"
+ local host="${3:-localhost}"
- echo -e "${YELLOW}Checking connectivity to $service on $host:$port...${NC}"
+ echo -e "${yellow}Checking connectivity to ${service} on ${host}:${port}...${noColor}"
if nc -z -v -w5 "$host" "$port" 2>/dev/null; then
- echo -e "${GREEN}Connection to $service on $host:$port successful.${NC}"
+ echo -e "${green}Connection to ${service} on ${host}:${port} successful.${noColor}"
return 0
+ fi
+
+ echo -e "${red}Cannot connect to ${service} on ${host}:${port}.${noColor}"
+ return 1
+}
+
+loadCoreDomain() {
+ local coreEnvFile="/var/deploy/core/.env"
+ if [ -f "$coreEnvFile" ]; then
+ # shellcheck disable=SC1090
+ source "$coreEnvFile"
+ echo -e "${yellow}Domain configuration:${noColor} ${DOMAIN}"
+ return 0
+ fi
+
+ echo -e "${red}Core .env file not found.${noColor}"
+ DOMAIN="example.com"
+ return 1
+}
+
+loadMailcowHostname() {
+ local mailcowConfFile="/var/deploy/mailcow/mailcow.conf"
+ if [ -f "$mailcowConfFile" ]; then
+ mailcowHostname=$(grep '^MAILCOW_HOSTNAME=' "$mailcowConfFile" | cut -d= -f2)
+ return 0
+ fi
+
+ mailcowHostname=""
+ return 1
+}
+
+checkTraefik() {
+ echo -e "${yellow}Checking Traefik configuration...${noColor}"
+
+ checkService "traefik" || return 1
+
+ checkConnectivity "Traefik HTTP" 80 || echo -e "${red}Traefik HTTP port not accessible.${noColor}"
+ checkConnectivity "Traefik HTTPS" 443 || echo -e "${red}Traefik HTTPS port not accessible.${noColor}"
+ checkConnectivity "Traefik SSH" 2424 || echo -e "${red}Traefik SSH port not accessible.${noColor}"
+
+ echo -e "${yellow}Checking Traefik certificates...${noColor}"
+ if docker exec traefik ls -la /certificates/acme.json >/dev/null 2>&1; then
+ echo -e "${green}Traefik certificates found.${noColor}"
else
- echo -e "${RED}Cannot connect to $service on $host:$port.${NC}"
+ echo -e "${red}Traefik certificates not found.${noColor}"
+ fi
+
+ return 0
+}
+
+checkGitlab() {
+ echo -e "${yellow}Checking GitLab configuration...${noColor}"
+
+ checkService "gitlab" || return 1
+
+ docker exec gitlab grep -q "external_url" /etc/gitlab/gitlab.rb && \
+ echo -e "${green}GitLab external URL is configured.${noColor}" || \
+ echo -e "${red}GitLab external URL is not configured.${noColor}"
+
+ docker exec gitlab grep -q "gitlab_shell_ssh_port" /etc/gitlab/gitlab.rb && \
+ echo -e "${green}GitLab SSH port is configured.${noColor}" || \
+ echo -e "${red}GitLab SSH port is not configured.${noColor}"
+
+ echo -e "${yellow}Checking GitLab SSH connection...${noColor}"
+ if ssh -T git@gitlab.${DOMAIN} -p 2424 -o StrictHostKeyChecking=no -o BatchMode=yes &>/dev/null; then
+ echo -e "${green}GitLab SSH connection successful.${noColor}"
+ else
+ echo -e "${red}GitLab SSH connection failed. This is expected if you haven't set up SSH keys yet.${noColor}"
+ echo -e "${yellow}Try: ssh -vT git@gitlab.${DOMAIN} -p 2424${noColor}"
+ fi
+
+ return 0
+}
+
+checkDatabases() {
+ echo -e "${yellow}Checking database services...${noColor}"
+
+ checkService "mariadb" && \
+ echo -e "${green}MariaDB is running.${noColor}" || \
+ echo -e "${red}MariaDB is not running.${noColor}"
+
+ checkService "postgres" && \
+ echo -e "${green}PostgreSQL is running.${noColor}" || \
+ echo -e "${red}PostgreSQL is not running.${noColor}"
+
+ return 0
+}
+
+checkNextcloud() {
+ echo -e "${yellow}Checking Nextcloud configuration...${noColor}"
+
+ checkService "nextcloud" || return 1
+ checkService "nextcloud-redis" || return 1
+ checkService "nextcloud-reverse-proxy" || return 1
+
+ echo -e "${yellow}Checking Nextcloud status...${noColor}"
+ if docker exec nextcloud php /var/www/html/occ status 2>&1 | grep -q "installed: true"; then
+ echo -e "${green}Nextcloud is installed and operational.${noColor}"
+ docker exec nextcloud php /var/www/html/occ status 2>&1 | grep -E "version|maintenance" | sed 's/^/ /'
+ else
+ echo -e "${red}Nextcloud is not properly installed.${noColor}"
return 1
fi
-}
-# Function to check Traefik configuration
-check_traefik() {
- echo -e "${YELLOW}Checking Traefik configuration...${NC}"
-
- # Check if Traefik is running
- check_service "traefik" || return 1
-
- # Check Traefik ports
- check_connectivity "Traefik HTTP" 80 || echo -e "${RED}Traefik HTTP port not accessible.${NC}"
- check_connectivity "Traefik HTTPS" 443 || echo -e "${RED}Traefik HTTPS port not accessible.${NC}"
- check_connectivity "Traefik SSH" 2424 || echo -e "${RED}Traefik SSH port not accessible.${NC}"
-
- # Check Traefik certificates
- echo -e "${YELLOW}Checking Traefik certificates...${NC}"
- if docker exec traefik ls -la /certificates/acme.json >/dev/null 2>&1; then
- echo -e "${GREEN}Traefik certificates found.${NC}"
+ echo -e "${yellow}Checking Redis connectivity...${noColor}"
+ if docker exec nextcloud-redis redis-cli ping 2>&1 | grep -q "PONG"; then
+ echo -e "${green}Redis is responding.${noColor}"
else
- echo -e "${RED}Traefik certificates not found.${NC}"
+ echo -e "${red}Redis is not responding.${noColor}"
+ return 1
+ fi
+
+ echo -e "${yellow}Checking database collation...${noColor}"
+ local collationCheck
+ collationCheck=$(docker exec nextcloud php /var/www/html/occ status 2>&1 | grep -i "collation")
+ if [ -n "$collationCheck" ]; then
+ echo -e "${yellow}Database collation version mismatch detected.${noColor}"
+ echo -e "${yellow}Run: ./nextcloud-maintenance.sh collation${noColor}"
+ else
+ echo -e "${green}Database collation is up to date.${noColor}"
fi
return 0
}
-# Function to check GitLab configuration
-check_gitlab() {
- echo -e "${YELLOW}Checking GitLab configuration...${NC}"
-
- # Check if GitLab is running
- check_service "gitlab" || return 1
-
- # Check GitLab HTTP port
- docker exec gitlab grep -q "external_url" /etc/gitlab/gitlab.rb && \
- echo -e "${GREEN}GitLab external URL is configured.${NC}" || \
- echo -e "${RED}GitLab external URL is not configured.${NC}"
-
- # Check GitLab SSH port
- docker exec gitlab grep -q "gitlab_shell_ssh_port" /etc/gitlab/gitlab.rb && \
- echo -e "${GREEN}GitLab SSH port is configured.${NC}" || \
- echo -e "${RED}GitLab SSH port is not configured.${NC}"
-
- # Check GitLab SSH connection
- echo -e "${YELLOW}Checking GitLab SSH connection...${NC}"
- if ssh -T git@gitlab.${DOMAIN} -p 2424 -o StrictHostKeyChecking=no -o BatchMode=yes &>/dev/null; then
- echo -e "${GREEN}GitLab SSH connection successful.${NC}"
- else
- echo -e "${RED}GitLab SSH connection failed. This is expected if you haven't set up SSH keys yet.${NC}"
- echo -e "${YELLOW}Try: ssh -vT git@gitlab.${DOMAIN} -p 2424${NC}"
- fi
-
- return 0
-}
-
-# Function to check database services
-check_databases() {
- echo -e "${YELLOW}Checking database services...${NC}"
-
- # Check MariaDB
- check_service "mariadb" && \
- echo -e "${GREEN}MariaDB is running.${NC}" || \
- echo -e "${RED}MariaDB is not running.${NC}"
-
- # Check PostgreSQL
- check_service "postgres" && \
- echo -e "${GREEN}PostgreSQL is running.${NC}" || \
- echo -e "${RED}PostgreSQL is not running.${NC}"
-
- return 0
-}
-
-# Function to check all other services
-check_all_services() {
- echo -e "${YELLOW}Checking all services...${NC}"
+checkAllServices() {
+ echo -e "${yellow}Checking all services...${noColor}"
local services=("traefik" "gitlab" "mariadb" "postgres" "adminer" "nextcloud" "onlyoffice" "openproject" "hedgedoc" "drupal")
for service in "${services[@]}"; do
- check_service "$service"
+ checkService "$service"
done
return 0
}
-# Check Docker and Docker Compose
-echo -e "${YELLOW}Checking Docker and Docker Compose installation...${NC}"
+checkMailcowServices() {
+ printSection "1. Service Health Status"
+
+ echo -e "${yellow}Checking Docker services...${noColor}"
+ local traefikStatus
+ traefikStatus=$(docker ps --filter "name=traefik" --format "{{.Status}}" | grep -q "Up" && echo "OK" || echo "FAIL")
+ checkStatus "$traefikStatus" "Traefik is running"
+
+ local mailcowServices
+ local totalMailcow
+ mailcowServices=$(cd /var/deploy/mailcow && docker compose ps --format json 2>/dev/null | jq -r '.State' | grep -c "running" 2>/dev/null || echo "0")
+ totalMailcow=$(cd /var/deploy/mailcow && docker compose ps --format json 2>/dev/null | jq -r '.State' | wc -l 2>/dev/null || echo "0")
+ if [ "$mailcowServices" = "$totalMailcow" ] && [ "$totalMailcow" -gt 0 ]; then
+ checkStatus "OK" "All Mailcow services running (${mailcowServices}/${totalMailcow})"
+ else
+ checkStatus "FAIL" "Some Mailcow services not running (${mailcowServices}/${totalMailcow})"
+ fi
+
+ local criticalServices=("nginx-mailcow" "postfix-mailcow" "dovecot-mailcow" "mysql-mailcow" "acme-mailcow" "watchdog-mailcow")
+ for service in "${criticalServices[@]}"; do
+ local serviceStatus
+ serviceStatus=$(cd /var/deploy/mailcow && docker compose ps --format json 2>/dev/null | jq -r "select(.Service==\"$service\") | .State" | head -1)
+ if [ "$serviceStatus" = "running" ]; then
+ checkStatus "OK" "${service} is running"
+ else
+ checkStatus "FAIL" "${service} is not running"
+ fi
+ done
+}
+
+checkSslAndCerts() {
+ printSection "2. SSL/TLS Configuration"
+
+ echo -e "${yellow}Traefik SSL Configuration:${noColor}"
+ local traefikHttpChallenge
+ local traefikTlsChallenge
+ traefikHttpChallenge=$(docker exec traefik cat /proc/1/cmdline 2>/dev/null | tr '\0' '\n' | grep -q "httpchallenge" && echo "OK" || echo "FAIL")
+ traefikTlsChallenge=$(docker exec traefik cat /proc/1/cmdline 2>/dev/null | tr '\0' '\n' | grep -q "tlschallenge" && echo "OK" || echo "FAIL")
+ checkStatus "$traefikHttpChallenge" "Traefik HTTP challenge configured"
+ checkStatus "$traefikTlsChallenge" "Traefik TLS-ALPN-01 challenge configured"
+
+ local acmeFile
+ acmeFile=$(docker exec traefik test -f /certificates/acme.json && echo "OK" || echo "FAIL")
+ checkStatus "$acmeFile" "Traefik acme.json exists"
+
+ local certCount
+ certCount=$(docker exec traefik cat /certificates/acme.json 2>/dev/null | jq -r '.le.Certificates | length' 2>/dev/null || echo "0")
+ if [ "$certCount" -gt 0 ]; then
+ checkStatus "OK" "Traefik has ${certCount} certificate(s) stored"
+ else
+ checkStatus "FAIL" "Traefik has no certificates"
+ fi
+
+ local mailcowCert
+ local mailcowKey
+ mailcowCert=$(cd /var/deploy/mailcow && test -f data/assets/ssl/cert.pem && echo "OK" || echo "FAIL")
+ mailcowKey=$(cd /var/deploy/mailcow && test -f data/assets/ssl/key.pem && echo "OK" || echo "FAIL")
+ checkStatus "$mailcowCert" "Mailcow certificate file exists"
+ checkStatus "$mailcowKey" "Mailcow private key exists"
+
+ if [ -f /var/deploy/mailcow/data/assets/ssl/cert.pem ]; then
+ local certExpiry
+ local certExpiryEpoch
+ local currentEpoch
+ local daysUntilExpiry
+
+ certExpiry=$(openssl x509 -in /var/deploy/mailcow/data/assets/ssl/cert.pem -noout -enddate 2>/dev/null | cut -d= -f2)
+ certExpiryEpoch=$(date -d "$certExpiry" +%s 2>/dev/null || echo "0")
+ currentEpoch=$(date +%s)
+ daysUntilExpiry=$(( (certExpiryEpoch - currentEpoch) / 86400 ))
+
+ if [ "$daysUntilExpiry" -gt 30 ]; then
+ checkStatus "OK" "Certificate valid for ${daysUntilExpiry} more days (expires: ${certExpiry})"
+ elif [ "$daysUntilExpiry" -gt 0 ]; then
+ warnStatus "Certificate expires in ${daysUntilExpiry} days (expires: ${certExpiry})"
+ else
+ checkStatus "FAIL" "Certificate expired on ${certExpiry}"
+ fi
+ fi
+
+ if [ -n "$mailcowHostname" ]; then
+ local httpsResponse
+ local certChain
+ httpsResponse=$(curl -sI "https://${mailcowHostname}" 2>&1 | head -1 | grep -q "HTTP" && echo "OK" || echo "FAIL")
+ certChain=$(echo | openssl s_client -connect "${mailcowHostname}:443" -servername "${mailcowHostname}" 2>/dev/null | openssl x509 -noout -issuer 2>/dev/null | grep -q "Let's Encrypt" && echo "OK" || echo "FAIL")
+ checkStatus "$httpsResponse" "HTTPS connectivity to ${mailcowHostname}"
+ checkStatus "$certChain" "Certificate issued by Let's Encrypt"
+ else
+ warnStatus "MAILCOW_HOSTNAME not found, skipping HTTPS checks"
+ fi
+}
+
+checkMailcowConfig() {
+ printSection "3. Mailcow Configuration"
+
+ if [ -f /var/deploy/mailcow/mailcow.conf ]; then
+ checkStatus "OK" "mailcow.conf exists"
+
+ local skipLe
+ local useWatchdog
+ local httpRedirect
+
+ skipLe=$(grep "^SKIP_LETS_ENCRYPT=" /var/deploy/mailcow/mailcow.conf | cut -d= -f2)
+ if [ "$skipLe" = "n" ]; then
+ checkStatus "OK" "Let's Encrypt enabled in mailcow"
+ else
+ warnStatus "Let's Encrypt disabled in mailcow (expected with Traefik)"
+ fi
+
+ useWatchdog=$(grep "^USE_WATCHDOG=" /var/deploy/mailcow/mailcow.conf | cut -d= -f2)
+ if [ "$useWatchdog" = "y" ]; then
+ checkStatus "OK" "Watchdog enabled"
+ else
+ warnStatus "Watchdog disabled"
+ fi
+
+ httpRedirect=$(grep "^HTTP_REDIRECT=" /var/deploy/mailcow/mailcow.conf | cut -d= -f2)
+ if [ "$httpRedirect" = "y" ]; then
+ checkStatus "OK" "HTTP to HTTPS redirect enabled"
+ else
+ warnStatus "HTTP to HTTPS redirect disabled"
+ fi
+ else
+ checkStatus "FAIL" "mailcow.conf not found"
+ fi
+
+ local certdumperStatus
+ certdumperStatus=$(cd /var/deploy/mailcow && docker compose ps --format json 2>/dev/null | jq -r "select(.Service==\"certdumper\") | .State" | head -1)
+ if [ "$certdumperStatus" = "running" ]; then
+ checkStatus "OK" "Certdumper service running (syncs Traefik certs to mailcow)"
+ else
+ checkStatus "FAIL" "Certdumper service not running"
+ fi
+}
+
+checkAcmeLogs() {
+ printSection "4. SSL Challenge Status"
+
+ local skipLe
+ skipLe=$(grep "^SKIP_LETS_ENCRYPT=" /var/deploy/mailcow/mailcow.conf | cut -d= -f2)
+ if [ "$skipLe" = "y" ]; then
+ checkStatus "OK" "Mailcow ACME disabled (SKIP_LETS_ENCRYPT=y)"
+ return 0
+ fi
+
+ local acmeErrors
+ acmeErrors=$(cd /var/deploy/mailcow && docker compose logs acme-mailcow --tail 50 2>&1 | grep -i "HTTP validation failed" | wc -l)
+ if [ "$acmeErrors" -gt 0 ]; then
+ warnStatus "Found ${acmeErrors} HTTP validation failures in mailcow ACME logs"
+ warnStatus "Expected if autodiscover/autoconfig subdomains are handled by Traefik"
+ else
+ checkStatus "OK" "No HTTP validation failures in mailcow ACME logs"
+ fi
+}
+
+printSummary() {
+ printSection "Summary"
+ echo -e "${green}✓${noColor} Services: Most services are running"
+ echo -e "${green}✓${noColor} SSL/TLS: Certificates are valid and properly configured"
+ echo -e "${green}✓${noColor} Mailcow: Configuration appears correct"
+
+ echo ""
+ echo -e "${blue}Health check completed.${noColor}"
+}
+
+echo -e "${blue}========================================${noColor}"
+echo -e "${blue} Comprehensive Diagnostics Report${noColor}"
+echo -e "${blue}========================================${noColor}"
+
+echo -e "${yellow}Checking Docker and Docker Compose installation...${noColor}"
if command -v docker >/dev/null 2>&1; then
- echo -e "${GREEN}Docker is installed: $(docker --version)${NC}"
+ echo -e "${green}Docker is installed: $(docker --version)${noColor}"
else
- echo -e "${RED}Docker is not installed!${NC}"
+ echo -e "${red}Docker is not installed.${noColor}"
exit 1
fi
if docker compose version >/dev/null 2>&1; then
- echo -e "${GREEN}Docker Compose plugin is installed: $(docker compose version)${NC}"
+ echo -e "${green}Docker Compose plugin is installed: $(docker compose version)${noColor}"
else
- echo -e "${RED}Docker Compose plugin is not installed!${NC}"
+ echo -e "${red}Docker Compose plugin is not installed.${noColor}"
exit 1
fi
-# Check system resources
-echo -e "${YELLOW}Checking system resources...${NC}"
-echo -e "${YELLOW}CPU:${NC} $(grep -c processor /proc/cpuinfo) cores"
-echo -e "${YELLOW}Memory:${NC} $(free -h | grep Mem | awk '{print $2}')"
-echo -e "${YELLOW}Disk space:${NC} $(df -h / | awk 'NR==2 {print $2}')"
-
-# Domain configuration from .env file
-if [ -f "./core/.env" ]; then
- source ./core/.env
- echo -e "${YELLOW}Domain configuration:${NC} ${DOMAIN}"
-else
- echo -e "${RED}Core .env file not found!${NC}"
- DOMAIN="example.com"
+if ! command -v jq >/dev/null 2>&1; then
+ warnStatus "jq not found, some checks will be skipped"
fi
-# Run specific checks
-check_traefik
-echo ""
-check_gitlab
-echo ""
-check_databases
-echo ""
-check_all_services
+echo -e "${yellow}Checking system resources...${noColor}"
+echo -e "${yellow}CPU:${noColor} $(grep -c processor /proc/cpuinfo) cores"
+echo -e "${yellow}Memory:${noColor} $(free -h | grep Mem | awk '{print $2}')"
+echo -e "${yellow}Disk space:${noColor} $(df -h / | awk 'NR==2 {print $2}')"
-echo -e "${GREEN}Diagnostic checks completed.${NC}"
-echo -e "${YELLOW}For detailed logs, run: docker logs
+
### 50$/Month Sponsors
${ACME_BASE}/acme/account.pem
else
log_f "Using existing Lets Encrypt account key ${ACME_BASE}/acme/account.pem"
@@ -299,7 +287,7 @@ while true; do
VALIDATED_CERTIFICATES+=("${CERT_NAME}")
# obtain server certificate if required
- ACME_CONTACT_PARAMETER=${ACME_CONTACT_PARAMETER} DOMAINS=${SERVER_SAN_VALIDATED[@]} /srv/obtain-certificate.sh rsa
+ DOMAINS=${SERVER_SAN_VALIDATED[@]} /srv/obtain-certificate.sh rsa
RETURN="$?"
if [[ "$RETURN" == "0" ]]; then # 0 = cert created successfully
CERT_AMOUNT_CHANGED=1
diff --git a/mailcow/data/Dockerfiles/acme/obtain-certificate.sh b/mailcow/data/Dockerfiles/acme/obtain-certificate.sh
index 16c4e25..f476bf6 100644
--- a/mailcow/data/Dockerfiles/acme/obtain-certificate.sh
+++ b/mailcow/data/Dockerfiles/acme/obtain-certificate.sh
@@ -93,8 +93,8 @@ until dig letsencrypt.org +time=3 +tries=1 @unbound > /dev/null; do
sleep 2
done
log_f "Resolver OK"
-log_f "Using command acme-tiny ${DIRECTORY_URL} ${ACME_CONTACT_PARAMETER} --account-key ${ACME_BASE}/acme/account.pem --disable-check --csr ${CSR} --acme-dir /var/www/acme/"
-ACME_RESPONSE=$(acme-tiny ${DIRECTORY_URL} ${ACME_CONTACT_PARAMETER} \
+log_f "Using command acme-tiny ${DIRECTORY_URL} --account-key ${ACME_BASE}/acme/account.pem --disable-check --csr ${CSR} --acme-dir /var/www/acme/"
+ACME_RESPONSE=$(acme-tiny ${DIRECTORY_URL} \
--account-key ${ACME_BASE}/acme/account.pem \
--disable-check \
--csr ${CSR} \
diff --git a/mailcow/data/Dockerfiles/dovecot/quarantine_notify.py b/mailcow/data/Dockerfiles/dovecot/quarantine_notify.py
index dfcb1f2..824d409 100755
--- a/mailcow/data/Dockerfiles/dovecot/quarantine_notify.py
+++ b/mailcow/data/Dockerfiles/dovecot/quarantine_notify.py
@@ -8,7 +8,8 @@ from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
import jinja2
-from jinja2 import Template
+from jinja2 import TemplateError
+from jinja2.sandbox import SandboxedEnvironment
import json
import redis
import time
@@ -80,17 +81,22 @@ try:
if len(meta_query) == 0:
return
msg_count = len(meta_query)
+ env = SandboxedEnvironment()
if r.get('Q_HTML'):
- try:
- template = Template(r.get('Q_HTML'))
- except:
- print("Error: Cannot parse quarantine template, falling back to default template.")
- with open('/templates/quarantine.tpl') as file_:
- template = Template(file_.read())
+ try:
+ template = env.from_string(r.get('Q_HTML'))
+ except Exception:
+ print("Error: Cannot parse quarantine template, falling back to default template.")
+ with open('/templates/quarantine.tpl') as file_:
+ template = env.from_string(file_.read())
else:
- with open('/templates/quarantine.tpl') as file_:
- template = Template(file_.read())
- html = template.render(meta=meta_query, username=rcpt, counter=msg_count, hostname=mailcow_hostname, quarantine_acl=quarantine_acl)
+ with open('/templates/quarantine.tpl') as file_:
+ template = env.from_string(file_.read())
+ try:
+ html = template.render(meta=meta_query, username=rcpt, counter=msg_count, hostname=mailcow_hostname, quarantine_acl=quarantine_acl)
+ except (jinja2.exceptions.SecurityError, TemplateError) as ex:
+ print(f"SecurityError or TemplateError in template rendering: {ex}")
+ return
text = html2text.html2text(html)
count = 0
while count < 15:
diff --git a/mailcow/data/Dockerfiles/dovecot/quota_notify.py b/mailcow/data/Dockerfiles/dovecot/quota_notify.py
index 598134e..99be7cc 100755
--- a/mailcow/data/Dockerfiles/dovecot/quota_notify.py
+++ b/mailcow/data/Dockerfiles/dovecot/quota_notify.py
@@ -6,7 +6,7 @@ from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
import jinja2
-from jinja2 import Template
+from jinja2.sandbox import SandboxedEnvironment
import redis
import time
import json
@@ -33,16 +33,24 @@ while True:
if r.get('QW_HTML'):
try:
- template = Template(r.get('QW_HTML'))
- except:
- print("Error: Cannot parse quarantine template, falling back to default template.")
+ env = SandboxedEnvironment()
+ template = env.from_string(r.get('QW_HTML'))
+ except Exception:
+ print("Error: Cannot parse quota template, falling back to default template.")
with open('/templates/quota.tpl') as file_:
- template = Template(file_.read())
+ env = SandboxedEnvironment()
+ template = env.from_string(file_.read())
else:
with open('/templates/quota.tpl') as file_:
- template = Template(file_.read())
+ env = SandboxedEnvironment()
+ template = env.from_string(file_.read())
+
+try:
+ html = template.render(username=username, percent=percent)
+except (jinja2.exceptions.SecurityError, jinja2.TemplateError) as ex:
+ print(f"SecurityError or TemplateError in template rendering: {ex}")
+ sys.exit(1)
-html = template.render(username=username, percent=percent)
text = html2text.html2text(html)
try:
diff --git a/mailcow/data/Dockerfiles/olefy/olefy.py b/mailcow/data/Dockerfiles/olefy/olefy.py
index 776e786..7c68809 100644
--- a/mailcow/data/Dockerfiles/olefy/olefy.py
+++ b/mailcow/data/Dockerfiles/olefy/olefy.py
@@ -32,6 +32,13 @@ import time
import magic
import re
+skip_olefy = os.getenv('SKIP_OLEFY', '')
+
+if skip_olefy.lower() in ['yes', 'y']:
+ print("SKIP_OLEFY=y, skipping Olefy...")
+ time.sleep(365 * 24 * 60 * 60)
+ sys.exit(0)
+
# merge variables from /etc/olefy.conf and the defaults
olefy_listen_addr_string = os.getenv('OLEFY_BINDADDRESS', '127.0.0.1,::1')
olefy_listen_port = int(os.getenv('OLEFY_BINDPORT', '10050'))
@@ -113,7 +120,7 @@ def oletools( stream, tmp_file_name, lid ):
out = bytes(out.decode('utf-8', 'ignore').replace(' ', ' ').replace('\t', '').replace('\n', '').replace('XLMMacroDeobfuscator: pywin32 is not installed (only is required if you want to use MS Excel)', ''), encoding="utf-8")
failed = False
if out.__len__() < 30:
- logger.error('{} olevba returned <30 chars - rc: {!r}, response: {!r}, error: {!r}'.format(lid,cmd_tmp.returncode,
+ logger.error('{} olevba returned <30 chars - rc: {!r}, response: {!r}, error: {!r}'.format(lid,cmd_tmp.returncode,
out.decode('utf-8', 'ignore'), err.decode('utf-8', 'ignore')))
out = b'[ { "error": "Unhandled error - too short olevba response" } ]'
failed = True
diff --git a/mailcow/data/Dockerfiles/phpfpm/Dockerfile b/mailcow/data/Dockerfiles/phpfpm/Dockerfile
index 4ba8349..ff333f5 100644
--- a/mailcow/data/Dockerfiles/phpfpm/Dockerfile
+++ b/mailcow/data/Dockerfiles/phpfpm/Dockerfile
@@ -5,7 +5,7 @@ LABEL maintainer = "The Infrastructure Company GmbH
Je také třeba ověřit nastavení DNS nové domény. Po ověření restartujte kontejner \"acme-mailcow\", aby se vygenerovaly certifikáty domény (autoconfig.<domain>, autodiscover.<domain>).
Tento krok je volitelný, a provede se automaticky každých 24 hodin.",
"private_comment": "Soukromý komentář",
"public_comment": "Veřejný komentář",
"quota_mb": "Kvóta (MiB)",
"relay_all": "Předávání všech příjemců",
- "relay_all_info": "Pokud se rozhodnete nepředávat všechny příjemce, musíte přidat prázdnou mailovou schránku pro každého příjemce, který se má předávat.",
+ "relay_all_info": "↪Pokud se rozhodnete nepředávat všechny příjemce, musíte přidat prázdnou mailovou schránku pro každého příjemce, který se má předávat.",
"relay_domain": "Předávání domény",
"relay_transport_info": "
Hodnota musí být rovna nebo větší než 1 den.",
"quarantine_max_score": "Neposílat notifikace pokud je spam skóre větší než hodnota:
Výchozí je 9999.0",
- "quarantine_max_size": "Maximální velikost v MiB (větší prvky budou smazány)
0 neznamená neomezeno.",
+ "quarantine_max_size": "Maximální velikost v MiB (větší prvky budou smazány)
0 neznamená neomezeno.",
"quarantine_notification_html": "Šablona upozornění:
Ponechte prázdné, aby se obnovila výchozí šablona.",
"quarantine_notification_sender": "Odesílatel upozornění",
"quarantine_notification_subject": "Předmět upozornění",
@@ -264,7 +264,7 @@
"quarantine_release_format": "Formát propuštěných položek",
"quarantine_release_format_att": "Jako příloha",
"quarantine_release_format_raw": "Nezměněný originál",
- "quarantine_retention_size": "Počet zadržených zpráv na mailovou schránku
0 znamená neaktivní.",
+ "quarantine_retention_size": "Počet zadržených zpráv na mailovou schránku
0 znamená neaktivní.",
"quota_notification_html": "Šablona upozornění:
Ponechte prázdné, aby se obnovila výchozí šablona.",
"quota_notification_sender": "Odesílatel upozornění",
"quota_notification_subject": "Předmět upozornění",
@@ -283,7 +283,7 @@
"relay_rcpt": "\"Komu:\" adresa",
"relay_run": "Provést test",
"relayhosts": "Transporty podle odesílatele",
- "relayhosts_hint": "Zde definujte transporty podle odesílatele, jež pak můžete použít v nastavení domény.
\r\nProtokol transportu je vždy \"smtp:\". Bere se v potaz uživatelské nastavení odchozího TLS.",
+ "relayhosts_hint": "Zde definujte transporty podle odesílatele, jež pak můžete použít v nastavení domény.
\nProtokol transportu je vždy \"smtp:\" a použije se TLS, je-li nabídnuto. Zabalené TLS (SMTPS) se nepodporuje. Bere se v potaz uživatelské nastavení odchozího TLS.
\nTýká se vybraných domén včetně doménových aliasů.",
"remove": "Smazat",
"remove_row": "Smazat řádek",
"reset_default": "Obnovit výchozí nastavení",
@@ -299,7 +299,7 @@
"rsettings_preset_2": "Postmasteři chtějí dostávat spam",
"rsettings_preset_3": "Povolit jen určité odesílatele pro schránku (např. jen interní schránka)",
"rsettings_preset_4": "Deaktivujte Rspamd pro doménu",
- "rspamd_com_settings": "Rspamd dokumentace\r\n - Název nastavení bude automaticky vygenerován, viz níže uvedené předvolby.",
+ "rspamd_com_settings": "Název nastavení se vygeneruje automaticky, viz ukázky nastavení níže. Více informací viz Rspamd dokumentace",
"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.",
@@ -324,8 +324,8 @@
"to_top": "Zpět na začátek",
"transport_dest_format": "Formát: example.org, .example.org, *, box@example.org (vícero položek lze oddělit čárkou)",
"transport_maps": "Transportní mapy",
- "transport_test_rcpt_info": "• Na otestování odchozí pošty je možné použít null@hosted.mailcow.de jako adresáta",
- "transports_hint": "→ Položka transportní mapy přebíjí transportní mapu podle odesílatele.
\r\n→ Uživatelské nastavení odchozího TLS se ignoruje a lze je výhradně vynutit mapováním TLS pravidel.
\r\n→ Protokol transportu je vždy \"smtp:\".
\r\n→ Adresy, jež odpovídají výrazu \"/localhost$/\", se vždy předají přes \"local:\", takže nejsou zahrnuty do definice cíle \"*\".
\r\n→ Pro stanovení přihlašovacích údajů dalšího skoku, např. \"[host]:25\", bude Postfix vždy hledat nejdříve \"host\" a teprve pak \"[host]:25\". Kvůli tomu nelze použít současně \"host\" a \"[host]:25\"",
+ "transport_test_rcpt_info": "• K otestování předávání pošty ven použijte null@hosted.mailcow.de.",
+ "transports_hint": "• Položka transportní mapy přebíjí transportní mapu podle odesílatele.
\n• Transporty založené na MX mají přednost.
\n• Uživatelské nastavení odchozího TLS se ignoruje a lze je vynutit výhradně mapou TLS pravidel.
\n• Transportní služnou pro tyto transporty je vždy \"smtp:\" a použije se TLS, je-li nabídnuto. Zabalené TLS (SMTPS) se nepodporuje.
\n• Adresy, jež odpovídají výrazu \"/localhost$/\", se vždy předají přes \"local:\", takže nejsou zahrnuty do definice cíle \"*\".
\n• Pro stanovení přihlašovacích údajů dalšího skoku, např. \"[host]:25\", bude Postfix vždy hledat nejdříve \"host\" a teprve pak \"[host]:25\". Kvůli tomu nelze použít současně \"host\" a \"[host]:25\".",
"ui_footer": "Pata stránka (HTML povoleno)",
"ui_header_announcement": "Oznámení",
"ui_header_announcement_active": "Nastavit jako aktivní",
@@ -344,17 +344,70 @@
"validate_license_now": "Ověřit GUID na licenčním serveru",
"verify": "Ověřit",
"yes": "✓",
- "f2b_ban_time_increment": "Délka banu je prodlužována s každým dalším banem",
- "f2b_max_ban_time": "Maximální délka banu (s)",
+ "f2b_ban_time_increment": "Délka bloku se prodlužuje s každým dalším zablokováním",
+ "f2b_max_ban_time": "Maximální délka bloku (s)",
"cors_settings": "Nastavení CORS",
- "queue_unban": "zrušit ban",
+ "queue_unban": "odblokovat",
"password_reset_info": "Pokud není zadán žádný e-mail pro obnovení, nelze tuto funkci použít.",
"password_reset_settings": "Nastavení obnovení hesla",
"password_settings": "Nastavení hesel",
"password_reset_tmpl_html": "HTML šablona",
"password_reset_tmpl_text": "Textová šablona",
"reset_password_vars": "{{link}} Vygenerovaný odkaz pro obnovení hesla{{username}} Název mailboxu uživatele, který požádal o resetování hesla.{{username2}} Název schránky pro obnovení{{date}} Datum podání žádosti o obnovení hesla{{token_lifetime}} Délka životnosti tokenu v minutách{{hostname}} Název serveru mailcow",
- "restore_template": "Ponechte prázdné pro obnovení výchozí šablony."
+ "restore_template": "Ponechte prázdné pro obnovení výchozí šablony.",
+ "copy_to_clipboard": "Text zkopírován do schránky!",
+ "iam_login_provisioning": "Automaticky vytvořit uživatele při přihlášení",
+ "user_quicklink": "Skrýt zkratku na přihlášení uživatele",
+ "domainadmin_quicklink": "Skrýt zkratku na přihlášení správce domény",
+ "iam_auth_flow_info": "Kromě metody autorizačního kódu (Authorization Code Flow, výchozího v Keycloaku), jež se používá pro SSO, podporuje mailcow také metody autentizaci přímo pomocí přihlašovacích údajů. The metoda Mailpassword Flow se pokusí ověřit přihlašovací údaje uživatele přímo v Admin REST API Keycloaku. mailcow získá hash hesla z atributu mailcow_password , namapovaného v Keycloaku.",
+ "iam_default_template_description": "Nemá-li uživatel přiřazenu šablonu, použije se výchozí šablona k vytvoření schránky, ale ne k její úpravě či aktualizaci.",
+ "iam_userinfo_url": "Koncový bod pro informace o uživatelích",
+ "iam_redirect_url": "URL přesměrování",
+ "user_link": "Odkaz pro uživatele",
+ "force_sso_text": "Je-li nastaven externí poskytovatel OIDC, zapnutím této volby skryjete výchozí přihlašovací formulář. Zůstane vidět jen tlačítko pro SSO",
+ "iam_mapping": "Mapování atributů",
+ "iam_bindpass": "Heslo pro bind",
+ "iam_periodic_full_sync": "Pravidelná úplná synchronizace",
+ "iam_port": "Port",
+ "iam_realm": "Realm",
+ "iam_rest_flow": "Mailpassword Flow",
+ "iam_server_url": "URL serveru",
+ "iam_sso": "Single Sign-On",
+ "iam_sync_interval": "Interval synchronizace/importu (min)",
+ "iam_test_connection": "Test spojení",
+ "iam_token_url": "Koncový bod pro tokeny",
+ "iam_username_field": "Pole uživatelského jména",
+ "iam_binddn": "Doména pro bind",
+ "iam_use_ssl": "Používat SSL",
+ "iam_use_tls": "Používat StartTLS",
+ "iam_version": "Verze",
+ "quicklink_text": "Zobrazení zkratek k dalším přihlašovacím stránkám",
+ "iam_use_tls_info": "Je-li zapnuto TLS, musí se používat standardní port pro LDAP (389). Port SSL nelze použít.",
+ "ignore_ssl_error": "Ignorovat chyby SSL",
+ "iam_use_ssl_info": "Je-li zapnuto SSL a nastaven port 389, použije se automaticky port 636.",
+ "task": "Úloha",
+ "app_hide": "Skrýt při přihlášení",
+ "admin_quicklink": "Skrýt zkratku na přihlášení správce",
+ "allowed_methods": "Access-Control-Allow-Methods",
+ "allowed_origins": "Access-Control-Allow-Origin",
+ "login_page": "Přihlašovací stránka",
+ "f2b_manage_external": "Spravovat Fail2Ban externě",
+ "f2b_manage_external_info": "Fail2ban bude udržovat seznam zakázaných adres, ale nebude aktivně nastavovat pravidla blokování. Pro blokování použijte seznam adres níže.",
+ "filter": "Filtr",
+ "force_sso": "Vypnout přihlášení mailcow a ponechat jen SSO",
+ "iam": "Poskytovatel identity",
+ "iam_attribute_field": "Pole atributu",
+ "iam_authorize_url": "Autorizační koncový bod",
+ "iam_basedn": "Doména (Base DN)",
+ "iam_client_id": "ID klienta",
+ "iam_client_secret": "Tajný kód klienta",
+ "iam_client_scopes": "Scopes klienta",
+ "iam_default_template": "Výchozí šablona",
+ "iam_description": "Nastavení externího poskytovatele ověření
Schránky uživatele se vytvoří po prvním přihlášení automaticky, pokud je tedy nastaveno mapování atributů.",
+ "iam_extra_permission": "Aby vše fungovalo, musí mít mailcow klient v Keycloaku nastavený servisní účet a povolení view-users.",
+ "iam_host": "Hostitel",
+ "iam_host_info": "Zadejte jeden či více hostitelů, oddělte čárkou.",
+ "iam_import_users": "Importovat uživatele"
},
"danger": {
"access_denied": "Přístup odepřen nebo jsou neplatná data ve formuláři",
@@ -408,7 +461,7 @@
"is_alias": "%s je již známa jako adresa aliasu",
"is_alias_or_mailbox": "%s je již známa jako adresa aliasu, mailové schránky nebo aliasu rozvedeného z aliasu domény.",
"is_spam_alias": "%s je již známa jako adresa spamového aliasu",
- "last_key": "Nelze smazat poslední klíč",
+ "last_key": "Nelze smazat poslední klíč, vypněte tedy celé TFA.",
"login_failed": "Přihlášení selhalo",
"mailbox_defquota_exceeds_mailbox_maxquota": "Výchozí kvóta překračuje maximální kvótu schránky\"",
"mailbox_invalid": "Název mailové schránky je neplatný",
@@ -486,7 +539,16 @@
"demo_mode_enabled": "Demo režim je zapnutý",
"recovery_email_failed": "Nepodařilo se odeslat e-mail pro obnovení. Obraťte se prosím na svého správce.",
"password_reset_invalid_user": "Mailbox nebyl nalezen nebo není nastaven žádný e-mail pro obnovu",
- "password_reset_na": "Obnovení hesla není v současné době k dispozici. Obraťte se prosím na svého správce."
+ "password_reset_na": "Obnovení hesla není v současné době k dispozici. Obraťte se prosím na svého správce.",
+ "generic_server_error": "Došlo k nečekané chybě. Obraťte se na vašeho správce.",
+ "to_invalid": "Adresát nemůže být prázdný",
+ "authsource_in_use": "Poskytovatele identity nelze změnit nebo odstranit, neboť se právě používá pro jednoho či více uživatelů.",
+ "iam_test_connection": "Spojení selhalo",
+ "img_dimensions_exceeded": "Obrázek je větší než povolené rozměry",
+ "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."
},
"datatables": {
"emptyTable": "Tabulka neobsahuje žádná data",
@@ -548,7 +610,8 @@
"update_failed": "Nepodařilo se zkontrolovat aktualizace",
"wip": "Nedokončená vývojová verze",
"memory": "Paměť",
- "container_disabled": "Kontejner je zastaven nebo zakázán"
+ "container_disabled": "Kontejner je zastaven nebo zakázán",
+ "cores": "jádra"
},
"diagnostics": {
"cname_from_a": "Hodnota odvozena z A/AAAA záznamu. Lze použít, pokud záznam ukazuje na správný zdroj.",
@@ -569,7 +632,7 @@
"alias": "Upravit alias",
"allow_from_smtp": "Umožnit pouze těmto IP adresám používat SMTP",
"allow_from_smtp_info": "Nechte prázdné pro povolení všech odesílatelů.
IPv4/IPv6 adresy a sítě.",
- "allowed_protocols": "Povolené protokoly",
+ "allowed_protocols": "Povolené protokoly pro přímá spojení (netýká se protokolů na změnu hesla)",
"app_name": "Název aplikace",
"app_passwd": "Heslo aplikace",
"app_passwd_protocols": "Povolené protokoly pro hesla aplikací",
@@ -607,7 +670,7 @@
"inactive": "Neaktivní",
"kind": "Druh",
"last_modified": "Naposledy změněn",
- "lookup_mx": "Cíl je regulární výraz který se shoduje s MX záznamem (.*\\.google\\.com směřuje veškerou poštu na MX které jsou cílem pro google.com přes tento skok)",
+ "lookup_mx": "Cíl je regulární výraz, jenž se porovná s MX záznamem (např. .*\\.google\\.com na tento skok nasměruje veškerou poštu s MX, jež končí na *.google.com)",
"mailbox": "Úprava mailové schránky",
"mailbox_quota_def": "Výchozí kvóta schránky",
"mailbox_relayhost_info": "Aplikované jen na uživatelskou schránku a přímé aliasy, přepisuje předávající server domény.",
@@ -641,7 +704,7 @@
"ratelimit": "Omezení přenosu",
"redirect_uri": "URL přesměrování/odvolání",
"relay_all": "Předávání všech příjemců",
- "relay_all_info": "Pokud se rozhodnete nepředávat všechny příjemce, musíte přidat prázdnou mailovou schránku pro každého příjemce, který se má předávat.",
+ "relay_all_info": "↪ Pokud se rozhodnete nepředávat všechny příjemce, musíte přidat prázdnou mailovou schránku pro každého příjemce, který se má předávat.",
"relay_domain": "Předávání domény",
"relay_transport_info": "
(prázdné = nepoužívat podsložku)",
"syncjob": "Upravit synchronizační úlohu",
- "target_address": "Cílová adresa/y
(oddělte čárkou)",
+ "target_address": "Cílová adresa/y (oddělte čárkou)",
"target_domain": "Cílová doména",
"timeout1": "Časový limit pro připojení ke vzdálenému serveru",
"timeout2": "Časový limit pro připojení k lokálnímu serveru",
@@ -690,7 +753,13 @@
"custom_attributes": "Vlastní atributy",
"footer_exclude": "Vyloučit ze zápatí",
"domain_footer_skip_replies": "Ignorovat patičku u odpovědí na e-maily",
- "password_recovery_email": "E-mail pro obnovu hesla"
+ "password_recovery_email": "E-mail pro obnovu hesla",
+ "mailbox_rename": "Přejmenovat schránku",
+ "mailbox_rename_agree": "Mám vytvořenou zálohu.",
+ "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"
},
"fido2": {
"confirm": "Potvrdit",
@@ -711,7 +780,7 @@
"cancel": "Zrušit",
"confirm_delete": "Potvdit smazání",
"delete_now": "Smazat",
- "delete_these_items": "Prosím potvrďte změny objektu id:",
+ "delete_these_items": "Prosím potvrďte změny objektu id",
"hibp_check": "Ověřit heslo v databázi hacknutých hesel haveibeenpwned.com",
"hibp_nok": "Nalezeno! Toto je potenciálně nebezpečné heslo!",
"hibp_ok": "Nebyla nalezena žádná shoda.",
@@ -720,12 +789,12 @@
"restart_container": "Restartovat kontejner",
"restart_container_info": "Důležité: Šetrný restart může chvíli trvat, prosím čekejte...",
"restart_now": "Restartovat nyní",
- "restarting_container": "Restartuje se kontejner, může to chvilku trvat..."
+ "restarting_container": "Restartuje se kontejner, může to chvilku trvat"
},
"header": {
"administration": "Hlavní nastavení",
"apps": "Aplikace",
- "debug": "Systémové informace",
+ "debug": "Informace",
"email": "E-Mail",
"mailcow_system": "Systém",
"mailcow_config": "Nastavení",
@@ -753,7 +822,14 @@
"new_password": "Nové heslo",
"new_password_confirm": "Ověření nového hesla",
"reset_password": "Obnovit heslo",
- "request_reset_password": "Požádat o změnu hesla"
+ "request_reset_password": "Požádat o změnu hesla",
+ "login_domainadmintext": "Přihlášení správce domény",
+ "login_linkstext": "Hledáte jinou přihlašovací stránku?",
+ "login_usertext": "Přihlášení uživatele",
+ "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"
},
"mailbox": {
"action": "Akce",
@@ -785,7 +861,7 @@
"bcc": "BCC",
"bcc_destination": "Cíl kopie",
"bcc_destinations": "Cíl kopií",
- "bcc_info": "Skryté kopie (Mapa BCC) se používá pro tiché předávání kopií všech zpráv na jinou adresu. Při použití skryté kopie typu Přijatý e-mail budou přeposlány všechny maily směřující na dotyčnou adresu nebo doménu.\nU typu Odeslaný e-mail budou přeposlány všechny maily odeslané z dotyčné adresy nebo domény.\nPokud selže přeposlání na cílovou adresu, tak odesílatel o tom nebude informován.",
+ "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",
@@ -840,7 +916,7 @@
"last_run_reset": "Znovu naplánovat",
"mailbox": "Mailová schránka",
"mailbox_defaults": "Výchozí nastavení",
- "mailbox_defaults_info": "Definuje výchozí nastavení pro nové schránky",
+ "mailbox_defaults_info": "Definuje výchozí nastavení pro nové schránky.",
"mailbox_defquota": "Výchozí velikost schránky",
"mailbox_templates": "Šablony schránek",
"mailbox_quota": "Max. velikost schránky",
@@ -860,7 +936,7 @@
"private_comment": "Soukromý komentář",
"public_comment": "Veřejný komentář",
"q_add_header": "Složka nevyžádaná pošta",
- "q_all": "Všechny kategorie",
+ "q_all": " Nevyžádaná pošta a Odmítnuta",
"q_reject": "Odmítnuta",
"quarantine_category": "Kategorie oznámení karantény",
"quarantine_notification": "Upozornění z karantény",
@@ -869,7 +945,7 @@
"recipient_map": "Mapa příjemce",
"recipient_map_info": "Mapy příjemců slouží k nahrazení cílové adresy zprávy před doručením.",
"recipient_map_new": "Nový přijemce",
- "recipient_map_new_info": "Cílová adresa mapy příjemce musí být emailová adresa nebo název domény.",
+ "recipient_map_new_info": "Cílovou adresou mapy příjemců musí být emailová adresa nebo název domény.",
"recipient_map_old": "Původní příjemce",
"recipient_map_old_info": "Původní příjemce musí být platná emailová adresa nebo název domény.",
"recipient_maps": "Mapy příjemců",
@@ -888,7 +964,7 @@
"sieve_preset_5": "Automatický odpovídač (dovolená)",
"sieve_preset_6": "Odmítnout zprávu s odpovědí",
"sieve_preset_7": "Přesměrovat a ponechat/zahodit",
- "sieve_preset_8": "Zahodit zprávu poslanou na alias, do něhož patří i odesílatel",
+ "sieve_preset_8": "Zprávu od určitého odesílatele přesměrovat, označit jako přečtenou a uložit do složky",
"sieve_preset_header": "Vizte následující ukázková pravidla. Více informací na Wikipedii.",
"sogo_visible": "Alias dostupný v SOGo",
"sogo_visible_n": "Skrýt alias v SOGo",
@@ -928,7 +1004,8 @@
"waiting": "Čekání",
"weekly": "Každý týden",
"yes": "✓",
- "relay_unknown": "Předávání neexistujících schránek"
+ "relay_unknown": "Předávání neexistujících schránek",
+ "iam": "Poskytovatel identity"
},
"oauth2": {
"access_denied": "K udělení přístupu se přihlašte jako vlastník mailové schránky.",
@@ -936,7 +1013,7 @@
"deny": "Zamítnout",
"permit": "Ověřit aplikaci",
"profile": "Profil",
- "profile_desc": "Zobrazit osobní údaje: uživ. jméno, jméno, datum vytvoření a úpravy, stav",
+ "profile_desc": "Zobrazit osobní údaje: uživ. jméno, celé jméno, datum vytvoření a úpravy, stav",
"scope_ask_permission": "Aplikace požádala o následující oprávnění"
},
"quarantine": {
@@ -1066,7 +1143,7 @@
"logged_in_as": "Přihlášen jako %s",
"mailbox_added": "Mailová schránka %s přidána",
"mailbox_modified": "Změny mailové schránky %s uloženy",
- "mailbox_removed": "Mailová schránka %s odebrána",
+ "mailbox_removed": "Mailová schránka %s odstraněna",
"nginx_reloaded": "Nginx reload byl úspěšný",
"object_modified": "Změny objektu %s uloženy",
"password_policy_saved": "Politika hesel byla úspěšně uložena",
@@ -1100,7 +1177,14 @@
"verified_yotp_login": "Yubico OTP přihlášení ověřeno",
"cors_headers_edited": "Nastavení CORS byla uložena",
"domain_footer_modified": "Změny patičky domény %s byly uloženy",
- "recovery_email_sent": "E-mail k obnovení byl odeslán na adresu %s"
+ "recovery_email_sent": "E-mail k obnovení byl odeslán na adresu %s",
+ "custom_login_modified": "Úpravy přihlašování úspěšně uloženy",
+ "domain_add_dkim_available": "Klíč DKIM už existoval",
+ "f2b_banlist_refreshed": "Seznam zákazů úspěšně obnoven.",
+ "iam_test_connection": "Spojení úspěšně navázano",
+ "ip_check_opt_in_modified": "Kontrola IP adresy úspěšně uložena",
+ "mailbox_renamed": "Schránka přejmenována z %s na %s",
+ "password_changed_success": "Heslo úspěšně změněno"
},
"tfa": {
"api_register": "%s používá Yubico Cloud API. Prosím získejte API klíč pro své Yubico ZDE",
@@ -1116,7 +1200,7 @@
"none": "Deaktivovat",
"reload_retry": "- (znovu načtěte stránku, opakuje-li se chyba)",
"scan_qr_code": "Prosím načtěte následující kód svou aplikací na ověření nebo zadejte kód ručně.",
- "select": "Prosím vyberte...",
+ "select": "Vyberte prosím",
"set_tfa": "Nastavení způsobu dvoufaktorového ověření",
"start_webauthn_validation": "Zahájit inicializaci",
"tfa": "Dvoufaktorové ověření (TFA)",
@@ -1125,7 +1209,10 @@
"webauthn": "WebAuthn ověření",
"waiting_usb_auth": "Čeká se na USB zařízení...
Prosím stiskněte tlačítko na svém WebAuthn USB zařízení.",
"waiting_usb_register": "Čeká se na USB zařízení...
Prosím zadejte své heslo výše a potvrďte WebAuthn registraci stiskem tlačítka na svém WebAuthn USB zařízení.",
- "yubi_otp": "Yubico OTP ověření"
+ "yubi_otp": "Yubico OTP ověření",
+ "u2f_deprecated": "Zdá se, že váš klíč byl registrován zastaralou metodou U2F. Dojde k deaktivaci dvoufaktorové autentifikace a smazání klíče.",
+ "authenticators": "Autentifikátory",
+ "u2f_deprecated_important": "Registrujte svůj klíč novou metodou WebAuthn ve správě správců."
},
"user": {
"action": "Akce",
@@ -1141,7 +1228,7 @@
"alias_time_left": "Zbývající čas",
"alias_valid_until": "Platný do",
"aliases_also_send_as": "Smí odesílat také jako uživatel",
- "aliases_send_as_all": "Nekontrolovat přístup odesílatele pro následující doménu(y) a jejich aliasy domény:",
+ "aliases_send_as_all": "Nekontrolovat přístup odesílatele pro následující doménu(y) a jejich aliasy",
"allowed_protocols": "Povolené protokoly",
"app_hint": "Hesla aplikací jsou alternativní heslo pro přihlášení k IMAP, SMTP, CalDAV, CardDAV a EAS. Uživatelské jméno zůstává stejné.
SOGo však nelze s heslem aplikace použít.",
"app_name": "Název aplikace",
@@ -1162,8 +1249,8 @@
"description": "Popis",
"delete_ays": "Potvrďte odstranění.",
"direct_aliases": "Přímé aliasy",
- "direct_aliases_desc": "Na přímé aliasy se uplatňuje filtr spamu a nastavení pravidel TLS",
- "direct_protocol_access": "Tento uživatel mailové schránky má přímý externí přístup k následujícím protokolům a aplikacím. Toto nastavení je řízeno správcem. Pro udělení přístupu k jednotlivým protokolům a aplikacím lze vytvořit hesla aplikací.
Tlačítko \"Webmailu\" zajišťuje jednotné přihlášení k SOGo a je vždy k dispozici.",
+ "direct_aliases_desc": "Na přímé aliasy se uplatňuje filtr spamu a nastavení pravidel TLS.",
+ "direct_protocol_access": "Tento uživatel mailové schránky má přímý externí přístup k následujícím protokolům a aplikacím. Toto nastavení je řízeno správcem. Pro udělení přístupu k jednotlivým protokolům a aplikacím lze vytvořit hesla aplikací.
Tlačítko \"Webmail\" zajišťuje jednotné přihlášení k SOGo a je vždy k dispozici.",
"eas_reset": "Smazat mezipaměť zařízení ActiveSync",
"eas_reset_help": "Obnovení mezipaměti zařízení pomůže zpravidla obnovit poškozený profil služby ActiveSync.
Upozornění: Všechna data budou opětovně stažena!",
"eas_reset_now": "Smazat",
@@ -1204,7 +1291,7 @@
"no_last_login": "Žádný záznam o přihlášení",
"no_record": "Žádný záznam",
"open_logs": "Otevřít záznam",
- "open_webmail_sso": "Webmailu",
+ "open_webmail_sso": "Webmail",
"password": "Heslo",
"password_now": "Současné heslo (pro potvrzení změny)",
"password_repeat": "Heslo (znovu)",
@@ -1241,8 +1328,8 @@
"spamfilter": "Filtr spamu",
"spamfilter_behavior": "Hodnocení",
"spamfilter_bl": "Seznam zakázaných adres (blacklist)",
- "spamfilter_bl_desc": "Zakázané emailové adresy budou vždy klasifikovány jako spam a odmítnuty. Lze použít zástupné znaky (*). Filtr se použije pouze na přímé aliasy (s jednou cílovou mailovou schránkou), s výjimkou doménových košů a samotné mailové schránky.",
- "spamfilter_default_score": "Výchozí hodnoty:",
+ "spamfilter_bl_desc": "Zakázané emailové adresy budou vždy klasifikovány jako spam a odmítnuty. Odmítnutá pošta nebude uložena do karantény. Lze použít zástupné znaky (*). Filtr se použije pouze na přímé aliasy (s jednou cílovou poštovní schránkou), s výjimkou doménových košů a samotné poštovní schránky.",
+ "spamfilter_default_score": "Výchozí hodnoty",
"spamfilter_green": "Zelená: tato zpráva není spam",
"spamfilter_hint": "První hodnota představuje \"nízké spam skóre\" a druhá \"vysoké spam skóre\".",
"spamfilter_red": "Červená: Tato zpráva je spam a server ji odmítne",
@@ -1274,7 +1361,7 @@
"tag_in_subject": "V předmětu",
"text": "Text",
"title": "Předmět",
- "tls_enforce_in": "Vynutit TLS pro příchozí poštu ",
+ "tls_enforce_in": "Vynutit TLS pro příchozí poštu",
"tls_enforce_out": "Vynutit TLS pro odchozí poštu",
"tls_policy": "Politika šifrování",
"tls_policy_warning": "Varování: Pokud se rozhodnete vynutit šifrovaný přenos pošty, může dojít ke ztrátě e-mailů.
Zprávy, které nesplňují tuto politiku, budou mailovým systémem odmítnuty.
Tato volba ovlivňuje primární e-mailovou adresu (přihlašovací jméno), všechny adresy odvozené z doménových aliasů i aliasy, jež mají tuto mailovou schránku jako cíl.",
@@ -1290,7 +1377,13 @@
"years": "let",
"pushover_sound": "Zvukové upozornění",
"password_reset_info": "Pokud není zadán e-mail pro obnovení hesla, nelze tuto funkci použít.",
- "pw_recovery_email": "E-mail pro obnovení hesla"
+ "pw_recovery_email": "E-mail pro obnovení hesla",
+ "tfa_info": "Dvoufaktorová autentizace vám pomáhá chránit svůj účet. Je-li zapnuta, musíte si vytvořit aplikační hesla pro aplikace, jež dvoufaktorovou autentizaci nepodporují (např. poštovní klienti).",
+ "attribute": "Atribut",
+ "authentication": "Autentifikace",
+ "overview": "Přehled",
+ "protocols": "Protokoly",
+ "value": "Hodnota"
},
"warning": {
"cannot_delete_self": "Nelze smazat právě přihlášeného uživatele",
diff --git a/mailcow/data/web/lang/lang.de-de.json b/mailcow/data/web/lang/lang.de-de.json
index 747f7cf..6e1b4d4 100644
--- a/mailcow/data/web/lang/lang.de-de.json
+++ b/mailcow/data/web/lang/lang.de-de.json
@@ -134,6 +134,7 @@
"admin_domains": "Domain-Zuweisungen",
"admins": "Administratoren",
"admins_ldap": "LDAP-Administratoren",
+ "admin_quicklink": "Quicklink zur Admin-Loginseite ausblenden",
"advanced_settings": "Erweiterte Einstellungen",
"api_allow_from": "IP-Adressen oder Netzwerke (CIDR Notation) für Zugriff auf API",
"api_info": "Die API befindet sich noch in Entwicklung, die Dokumentation kann unter /api abgerufen werden.",
@@ -155,6 +156,7 @@
"credentials_transport_warning": "Warnung: Das Hinzufügen einer neuen Regel bewirkt die Aktualisierung der Authentifizierungsdaten aller vorhandenen Einträge mit identischem Next Hop.",
"customer_id": "Kunde",
"customize": "UI-Anpassung",
+ "login_page": "Login-Seite",
"destination": "Ziel",
"dkim_add_key": "ARC/DKIM-Key hinzufügen",
"dkim_domains_selector": "Selector",
@@ -173,6 +175,7 @@
"domain": "Domain",
"domain_admin": "Administrator hinzufügen",
"domain_admins": "Domain-Administratoren",
+ "domainadmin_quicklink": "Quicklink zur Domainadmin-Loginseite ausblenden",
"domain_s": "Domain(s)",
"duplicate": "Duplizieren",
"duplicate_dkim": "DKIM duplizieren",
@@ -195,6 +198,8 @@
"f2b_retry_window": "Wiederholungen im Zeitraum von (s)",
"f2b_whitelist": "Whitelist für Netzwerke und Hosts",
"filter_table": "Tabelle filtern",
+ "force_sso_text": "Wenn ein externer OIDC-Provider konfiguriert ist, blendet diese Option die mailcow Loginform aus und zeigt nur den Single Sign-On-Button an.",
+ "force_sso": "mailcow Login deaktivieren und nur Single Sign-On anzeigen",
"forwarding_hosts": "Weiterleitungs-Hosts",
"forwarding_hosts_add_hint": "Sie können entweder IPv4-/IPv6-Adressen, Netzwerke in CIDR-Notation, Hostnamen (die zu IP-Adressen aufgelöst werden), oder Domainnamen (die zu IP-Adressen aufgelöst werden, indem ihr SPF-Record abgefragt wird oder, in dessen Abwesenheit, ihre MX-Records) angeben.",
"forwarding_hosts_hint": "Eingehende Nachrichten werden von den hier gelisteten Hosts bedingungslos akzeptiert. Diese Hosts werden dann nicht mit DNSBLs abgeglichen oder Greylisting unterworfen. Von ihnen empfangener Spam wird nie abgelehnt, optional kann er aber in den Spam-Ordner einsortiert werden. Die übliche Verwendung für diese Funktion ist, um Mailserver anzugeben, auf denen eine Weiterleitung zu Ihrem mailcow-Server eingerichtet wurde.",
@@ -222,6 +227,7 @@
"iam_host": "Host",
"iam_host_info": "Gib einen oder mehrere LDAP-Hosts ein, getrennt durch Kommas.",
"iam_import_users": "Importiere Benutzer",
+ "iam_login_provisioning": "Benutzer beim Login erstellen",
"iam_mapping": "Attribut Mapping",
"iam_bindpass": "Bind Passwort",
"iam_periodic_full_sync": "Vollsynchronisation",
@@ -308,6 +314,7 @@
"quarantine_release_format_att": "Als Anhang",
"quarantine_release_format_raw": "Unverändertes Original",
"quarantine_retention_size": "Rückhaltungen pro Mailbox:
0 bedeutet inaktiv.",
+ "quicklink_text": "Quicklinks zu anderen Login-Seiten unter der Loginform ein- oder ausblenden",
"quota_notification_html": "Benachrichtigungs-E-Mail Inhalt:
Leer lassen, um Standard-Template wiederherzustellen.",
"quota_notification_sender": "Benachrichtigungs-E-Mail Absender",
"quota_notification_subject": "Benachrichtigungs-E-Mail Betreff",
@@ -387,6 +394,7 @@
"unchanged_if_empty": "Unverändert, wenn leer",
"upload": "Hochladen",
"username": "Benutzername",
+ "user_quicklink": "Quicklink zur Benutzer-Loginseite ausblenden",
"validate_license_now": "GUID erneut verifizieren",
"verify": "Verifizieren",
"yes": "✓",
@@ -398,7 +406,8 @@
"allowed_methods": "Access-Control-Allow-Methods",
"allowed_origins": "Access-Control-Allow-Origin",
"logo_dark_label": "Invertiert für den Darkmode",
- "logo_normal_label": "Normal"
+ "logo_normal_label": "Normal",
+ "user_link": "Nutzer-Link"
},
"danger": {
"access_denied": "Zugriff verweigert oder unvollständige/ungültige Daten",
@@ -806,9 +815,13 @@
"forgot_password": "> Passwort vergessen?",
"invalid_pass_reset_token": "Der Rücksetz-Token für das Passwort ist ungültig oder abgelaufen.
Bitte fordern Sie einen neuen Link zur Passwortwiederherstellung an.",
"login": "Anmelden",
- "login_user": "Benutzer Anmelden",
- "login_dadmin": "Domain-Administrator Anmelden",
- "login_admin": "Administrator Anmelden",
+ "login_linkstext": "Nicht der richtige Login?",
+ "login_usertext": "Als Benutzer anmelden",
+ "login_domainadmintext": "Als Domainadmin anmelden",
+ "login_admintext": "Als Admin anmelden",
+ "login_user": "Anmeldung als Benutzer",
+ "login_dadmin": "Anmeldung als Domain-Administrator",
+ "login_admin": "Anmeldung als Administrator",
"mobileconfig_info": "Bitte als Mailbox-Benutzer einloggen, um das Verbindungsprofil herunterzuladen.",
"new_password": "Neues Passwort",
"new_password_confirm": "Neues Passwort bestätigen",
@@ -991,7 +1004,8 @@
"syncjob_EXIT_TLS_FAILURE": "Problem mit verschlüsselter Verbindung",
"syncjob_EXIT_AUTHENTICATION_FAILURE": "Authentifizierungsproblem",
"syncjob_EXIT_OVERQUOTA": "Ziel Mailbox ist über dem Limit",
- "syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Kann keine Verbindung zum Zielserver herstellen"
+ "syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Kann keine Verbindung zum Zielserver herstellen",
+ "iam": "Identitätsanbieter"
},
"oauth2": {
"access_denied": "Bitte als Mailbox-Nutzer einloggen, um den Zugriff via OAuth2 zu erlauben.",
@@ -1094,6 +1108,7 @@
"bcc_edited": "BCC-Map-Eintrag %s wurde geändert",
"bcc_saved": "BCC- Map-Eintrag wurde gespeichert",
"cors_headers_edited": "CORS Einstellungen wurden erfolgreich gespeichert",
+ "custom_login_modified": "Login Anpassung wurde erfolgreich gespeichert",
"db_init_complete": "Datenbankinitialisierung abgeschlossen",
"delete_filter": "Filter-ID %s wurde gelöscht",
"delete_filters": "Filter gelöscht: %s",
diff --git a/mailcow/data/web/lang/lang.en-gb.json b/mailcow/data/web/lang/lang.en-gb.json
index ca8bb3a..21d26d8 100644
--- a/mailcow/data/web/lang/lang.en-gb.json
+++ b/mailcow/data/web/lang/lang.en-gb.json
@@ -134,6 +134,7 @@
"admin_domains": "Domain assignments",
"admins": "Administrators",
"admins_ldap": "LDAP Administrators",
+ "admin_quicklink": "Hide Quicklink to Admin Login Page",
"advanced_settings": "Advanced settings",
"allowed_methods": "Access-Control-Allow-Methods",
"allowed_origins": "Access-Control-Allow-Origin",
@@ -161,6 +162,7 @@
"credentials_transport_warning": "Warning: Adding a new transport map entry will update the credentials for all entries with a matching next hop column.",
"customer_id": "Customer ID",
"customize": "Customize",
+ "login_page": "Login Page",
"destination": "Destination",
"dkim_add_key": "Add ARC/DKIM key",
"dkim_domains_selector": "Selector",
@@ -179,6 +181,7 @@
"domain": "Domain",
"domain_admin": "Domain administrator",
"domain_admins": "Domain administrators",
+ "domainadmin_quicklink": "Hide Quicklink to Domainadmin Login Page",
"domain_s": "Domain/s",
"duplicate": "Duplicate",
"duplicate_dkim": "Duplicate DKIM record",
@@ -202,6 +205,8 @@
"f2b_whitelist": "Whitelisted networks/hosts",
"filter": "Filter",
"filter_table": "Filter table",
+ "force_sso_text": "If an external OIDC provider is configured, this option hides the default mailcow login forms and only shows the Single Sign-On button",
+ "force_sso": "Disable mailcow Login and show only Single Sign-On",
"forwarding_hosts": "Forwarding Hosts",
"forwarding_hosts_add_hint": "You can either specify IPv4/IPv6 addresses, networks in CIDR notation, host names (which will be resolved to IP addresses), or domain names (which will be resolved to IP addresses by querying SPF records or, in their absence, MX records).",
"forwarding_hosts_hint": "Incoming messages are unconditionally accepted from any hosts listed here. These hosts are then not checked against DNSBLs or subjected to greylisting. Spam received from them is never rejected, but optionally it can be filed into the Junk folder. The most common use for this is to specify mail servers on which you have set up a rule that forwards incoming emails to your mailcow server.",
@@ -229,6 +234,7 @@
"iam_host": "Host",
"iam_host_info": "Enter one or more LDAP hosts, separated by commas.",
"iam_import_users": "Import Users",
+ "iam_login_provisioning": "Auto-create users on login",
"iam_mapping": "Attribute Mapping",
"iam_bindpass": "Bind Password",
"iam_periodic_full_sync": "Periodic Full Sync",
@@ -317,6 +323,7 @@
"quarantine_release_format_att": "As attachment",
"quarantine_release_format_raw": "Unmodified original",
"quarantine_retention_size": "Retentions per mailbox:
0 indicates inactive.",
+ "quicklink_text": "Show or hide quick links to other login pages under the login form",
"quota_notification_html": "Notification email template:
Leave empty to restore default template.",
"quota_notification_sender": "Notification email sender",
"quota_notification_subject": "Notification email subject",
@@ -398,6 +405,7 @@
"upload": "Upload",
"username": "Username",
"user_link": "User-Link",
+ "user_quicklink": "Hide Quicklink to User Login Page",
"validate_license_now": "Validate GUID against license server",
"verify": "Verify",
"yes": "✓"
@@ -809,6 +817,10 @@
"forgot_password": "> Forgot Password?",
"invalid_pass_reset_token": "The reset password token is invalid or has expired.
Please request a new password reset link.",
"login": "Login",
+ "login_linkstext": "Not the correct login?",
+ "login_usertext": "Log in as user",
+ "login_domainadmintext": "Log in as domain admin",
+ "login_admintext": "Log in as admin",
"login_user": "User Login",
"login_dadmin": "Domain-Administrator Login",
"login_admin": "Administrator Login",
@@ -1105,6 +1117,7 @@
"bcc_edited": "BCC map entry %s edited",
"bcc_saved": "BCC map entry saved",
"cors_headers_edited": "CORS settings have been saved",
+ "custom_login_modified": "Login customisation was saved successfully",
"db_init_complete": "Database initialization completed",
"delete_filter": "Deleted filters ID %s",
"delete_filters": "Deleted filters: %s",
diff --git a/mailcow/data/web/lang/lang.fr-fr.json b/mailcow/data/web/lang/lang.fr-fr.json
index e9bff05..07ac641 100644
--- a/mailcow/data/web/lang/lang.fr-fr.json
+++ b/mailcow/data/web/lang/lang.fr-fr.json
@@ -359,7 +359,55 @@
"service": "Service",
"success": "Succès",
"cors_settings": "Paramètres CORS",
- "login_time": "Horodatage de connexion"
+ "login_time": "Horodatage de connexion",
+ "domainadmin_quicklink": "Masquer le lien rapide vers la page de connexion de l'administrateur du domaine",
+ "force_sso_text": "Si un fournisseur OIDC externe est configuré, cette option masque les formulaires de connexion par défaut de mailcow et n'affiche que le bouton Singe Sign-On",
+ "app_hide": "Masquer pour la connexion",
+ "admin_quicklink": "Masquer le lien rapide vers la page de connexion de l'administrateur",
+ "login_page": "Page de connexion",
+ "force_sso": "Désactiver la connexion mailcow et n'afficher que Singe Sign-On",
+ "iam_attribute_field": "Champ d'attribut",
+ "iam_authorize_url": "Endpoint d'autorisation",
+ "iam_auth_flow": "Flow d'authentification",
+ "iam_auth_flow_info": "Outre le flux de code d'autorisation (flux standard dans Keycloak), qui est utilisé pour la connexion unique, mailcow prend également en charge le flux d'authentification avec des informations d'identification directes. Le flux Mailpassword tente de valider les informations d'identification de l'utilisateur en utilisant l'API REST de Keycloak Admin. mailcow récupère le mot de passe haché dans l'attribut mailcow_password, qui est mappé dans Keycloak.",
+ "iam_basedn": "Base DN",
+ "iam_client_id": "ID Client",
+ "iam_client_secret": "Secret Client",
+ "iam_use_ssl": "Utiliser SSL",
+ "iam_redirect_url": "Url de redirection",
+ "iam_use_ssl_info": "Si le protocole SSL est activé et que le port est défini sur 389, il sera automatiquement remplacé par 636.",
+ "iam_use_tls_info": "Si vous activez TLS, vous devez utiliser le port par défaut de votre serveur LDAP (389). Les ports SSL ne peuvent pas être utilisés.",
+ "iam_version": "Version",
+ "ignore_ssl_error": "Ignorer les erreurs SSL",
+ "iam_login_provisioning": "Créer automatiquement l'utilisateur à la connexion",
+ "iam_mapping": "Mapping des attributs",
+ "iam_bindpass": "Lier le mot de passe",
+ "iam_periodic_full_sync": "Synchronisation complète périodique",
+ "iam_port": "Port",
+ "iam_realm": "Realm",
+ "iam_rest_flow": "Flow Mailpassword",
+ "iam_server_url": "URL du serveur",
+ "iam_sso": "Single Sign-On",
+ "iam_sync_interval": "Interval de Sync / Import (min)",
+ "iam_test_connection": "Test de connexion",
+ "iam_token_url": "Endpoint Token",
+ "iam_userinfo_url": "Endpoint User info",
+ "iam_username_field": "Champ du nom d'utilisateur",
+ "iam_binddn": "Bind DN",
+ "iam_use_tls": "Utiliser StartTLS",
+ "quicklink_text": "Afficher ou masquer les liens rapides vers d'autres pages de connexion sous le formulaire de connexion",
+ "task": "Tâche",
+ "user_link": "Lien utilisateur",
+ "user_quicklink": "Masquer le lien rapide vers la page de connexion de l'utilisateur",
+ "iam_client_scopes": "Scopes Client",
+ "iam_default_template": "Template par défaut",
+ "iam_default_template_description": "Si aucun modèle n'est attribué à un utilisateur, le modèle par défaut sera utilisé pour créer la boîte aux lettres, mais pas pour la mettre à jour.",
+ "iam_description": "Configurer un fournisseur externe pour l'authentification
Les boîtes aux lettres des utilisateurs seront automatiquement créées lors de leur première connexion, à condition qu'un mappage d'attributs ait été défini.",
+ "iam_extra_permission": "Pour que les paramètres suivants fonctionnent, le client mailcow dans Keycloak a besoin d'un Compte de service et de l'autorisation de voir les utilisateurs.",
+ "iam_host": "Hôte",
+ "iam_host_info": "Saisissez un ou plusieurs hôtes LDAP, séparés par des virgules.",
+ "iam_import_users": "Importer des utilisateurs",
+ "filter": "Filtrer"
},
"danger": {
"access_denied": "Accès refusé ou données de formulaire non valides",
@@ -496,7 +544,11 @@
"password_reset_invalid_user": "Boîte mail introuvable ou aucune adresse de récupération n'a été définie",
"password_reset_na": "La réinitialisation des mots de passe est actuellement indisponible. Veuillez contacter votre administrateur.",
"reset_token_limit_exceeded": "Le nombre limite de jetons de réinitialisation a été dépassé. Veuillez réessayer plus tard.",
- "to_invalid": "Le destinataire ne doit pas être vide"
+ "to_invalid": "Le destinataire ne doit pas être vide",
+ "generic_server_error": "Une erreur de serveur inattendue s'est produite. Veuillez contacter votre administrateur.",
+ "authsource_in_use": "Le fournisseur d'identité ne peut pas être modifié ou supprimé car il est actuellement utilisé par un ou plusieurs utilisateurs.",
+ "iam_test_connection": "Échec de la connexion",
+ "required_data_missing": "La donnée requise %s est manquante"
},
"debug": {
"chart_this_server": "Graphique (ce serveur)",
@@ -553,7 +605,7 @@
"alias": "Éditer les alias",
"allow_from_smtp": "Restreindre l'utilisation de SMTP à ces adresses IP",
"allow_from_smtp_info": "Laissez vide pour autoriser tous les expéditeurs.
Adresses IPv4/IPv6 et réseaux.",
- "allowed_protocols": "Protocoles autorisés",
+ "allowed_protocols": "Protocoles autorisés pour l'accès direct de l'utilisateur (n'affecte pas les protocoles de mot de passe de l'application)",
"app_name": "Nom de l'application",
"app_passwd": "Mot de passe de l'application",
"automap": "Tenter de cibler automatiquement les dossiers (« Sent items », « Sent » => « Sent » etc.)",
@@ -672,7 +724,7 @@
"none_inherit": "Aucun / Héritage",
"quota_warning_bcc": "Avertissement sur les quotas BCC",
"quota_warning_bcc_info": "Les avertissements seront envoyés en copies séparées aux destinataires suivants. Le sujet sera précédé du nom d'utilisateur correspondant entre parenthèses, par exemple : Avertissement sur les quotas (user@example.com).",
- "sogo_access_info": "L'authentification unique à partir de l'interface de messagerie reste opérationnelle. Ce paramètre n'affecte pas l'accès à tous les autres services et ne supprime ni, ne modifie le profil SOGo existant d'un utilisateur.",
+ "sogo_access_info": "Après s'être connecté, l'utilisateur est automatiquement redirigé vers SOGo.",
"admin": "Modifier l'administrateur",
"password_recovery_email": "Adresse email de récupération",
"mailbox_rename_title": "Nouveau nom de la partie locale de la boîte de réception",
@@ -680,7 +732,7 @@
"mailbox_rename_agree": "J'ai fait une sauvegarde.",
"mailbox_rename_warning": "IMPORTANT ! Faites une sauvegarde avant de renommer la boîte de réception.",
"mailbox_rename_alias": "Créer un alias automatiquement",
- "sogo_access": "Autoriser la connexion directe à SOGo",
+ "sogo_access": "Redirection directe vers SOGo",
"pushover": "Pushover",
"pushover_sound": "Son"
},
@@ -730,7 +782,14 @@
"new_password": "Nouveau mot de passe",
"new_password_confirm": "Confirmer le nouveau mot de passe",
"reset_password": "Réinitialiser le mot de passe",
- "request_reset_password": "Demander le changement du mot de passe"
+ "request_reset_password": "Demander le changement du mot de passe",
+ "login_user": "Connexion Utilisateur",
+ "login_dadmin": "Connexion Administrateur de domaine",
+ "login_admin": "Connexion Administrateur",
+ "login_linkstext": "L'identifiant n'est pas correct ?",
+ "login_usertext": "Se connecter en tant qu'utilisateur",
+ "login_domainadmintext": "Se connecter en tant qu'administrateur du domaine",
+ "login_admintext": "Se connecter en tant qu'administrateur"
},
"mailbox": {
"action": "Action",
@@ -836,7 +895,7 @@
"recipient_map_new": "Nouveau destinataire",
"recipient_map_new_info": "La destination de la carte du destinataire doit être une adresse de courriel valide ou un nom de domaine.",
"recipient_map_old": "Destinataire original",
- "recipient_map_old_info": "Une carte de destination originale doit être une adresse de courriel valide ou un nom de domaine.",
+ "recipient_map_old_info": "La destination originale des cartes des destinataires doit être une adresse de courriel valide ou un nom de domaine.",
"recipient_maps": "Cartes des bénéficiaires",
"relay_all": "Relayer tous les destinataires",
"remove": "Supprimer",
@@ -905,7 +964,8 @@
"template": "Modèle",
"syncjob_check_log": "Vérifier le journal",
"recipient": "Destinataire",
- "open_logs": "Afficher les journaux"
+ "open_logs": "Afficher les journaux",
+ "iam": "Fournisseur d'identité"
},
"oauth2": {
"access_denied": "Veuillez vous connecter en tant que propriétaire de la boîte de réception pour accorder l’accès via Oauth2.",
@@ -1076,7 +1136,9 @@
"recovery_email_sent": "Email de réinitialisation envoyé à %s",
"mailbox_renamed": "La boîte de réception a été renommée de %s à %s",
"template_modified": "Les modifications au modèle %s ont été enregistrées",
- "password_policy_saved": "La politique de mot de passe a été enregistrée avec succès"
+ "password_policy_saved": "La politique de mot de passe a été enregistrée avec succès",
+ "custom_login_modified": "La personnalisation de la connexion a été sauvegardée avec succès",
+ "iam_test_connection": "Connexion réussie"
},
"tfa": {
"api_register": "%s utilise l'API Yubico Cloud. Veuillez obtenir une clé API pour votre clé ici",
@@ -1256,8 +1318,8 @@
"with_app_password": "avec le mot de passe de l'application",
"apple_connection_profile_with_app_password": "Un nouveau mot de passe est généré et ajouté au profil, de sorte qu'aucun mot de passe ne doit être saisi lors de la configuration de votre appareil. Ne partagez pas le fichier car il vous donne un accès complet à votre boîte de réception.",
"attribute": "Attribut",
- "direct_protocol_access": "Cet utilisateur de la boîte aux lettres dispose d'un accès externe direct aux protocoles et applications suivants. Votre administrateur contrôle ce paramètre. Il est possible de créer des mots de passe d'application pour accorder l'accès à des protocoles et des applications individuels.
Le bouton « Connexion au webmail » permet une connexion unique à SOGo et est toujours disponible.",
- "open_webmail_sso": "Connexion au webmail",
+ "direct_protocol_access": "Cet utilisateur de la boîte aux lettres dispose d'un accès externe direct aux protocoles et applications suivants. Votre administrateur contrôle ce paramètre. Il est possible de créer des mots de passe d'application pour accorder l'accès à des protocoles et des applications individuels.
Le bouton « Connexion au Webmail » permet une connexion unique à SOGo et est toujours disponible.",
+ "open_webmail_sso": "Connexion au Webmail",
"recent_successful_connections": "Voir les connexions réussies",
"syncjob_EXIT_TLS_FAILURE": "Problème de connexion chiffrée",
"syncjob_EXIT_AUTHENTICATION_FAILURE": "Problème d'authentification",
@@ -1286,7 +1348,9 @@
"open_logs": "Afficher les journaux",
"pushover_sound": "Son",
"mailbox_general": "Général",
- "mailbox_settings": "Paramètres"
+ "mailbox_settings": "Paramètres",
+ "tfa_info": "L'authentification à deux facteurs permet de protéger votre compte. Si vous l'activez, vous aurez besoin de mots de passe d'application pour vous connecter à des applications ou des services qui ne prennent pas en charge l'authentification à deux facteurs (par exemple les clients e-mails).",
+ "overview": "Vue d'ensemble"
},
"warning": {
"cannot_delete_self": "Impossible de supprimer l’utilisateur connecté",
diff --git a/mailcow/data/web/lang/lang.hu-hu.json b/mailcow/data/web/lang/lang.hu-hu.json
index 97f575a..3b9eb5f 100644
--- a/mailcow/data/web/lang/lang.hu-hu.json
+++ b/mailcow/data/web/lang/lang.hu-hu.json
@@ -590,4 +590,4 @@
"app_name": "Alkalmazás neve",
"app_passwd_protocols": "Engedélyezett protokollok az alkalmazás jelszavához"
}
-}
\ No newline at end of file
+}
diff --git a/mailcow/data/web/lang/lang.it-it.json b/mailcow/data/web/lang/lang.it-it.json
index fdfa781..a2f0a87 100644
--- a/mailcow/data/web/lang/lang.it-it.json
+++ b/mailcow/data/web/lang/lang.it-it.json
@@ -353,7 +353,30 @@
"password_settings": "Impostazioni della password",
"queue_unban": "sblocca",
"restore_template": "Lasciare vuoto per ripristinare il modello predefinito.",
- "logo_normal_label": "Normale"
+ "logo_normal_label": "Normale",
+ "app_hide": "Nascondi per il login",
+ "ip_check_disabled": "Il controllo IP è disabilitato. Puoi abilitarlo sotto
Sistema > Configurazione > Opzioni > Personalizza ",
+ "ip_check_opt_in": "Attiva l'utilizzo dei servizi di terze parti ipv4.mailcow.email e ipv6.mailcow.email per risolvere gli indirizzi IP esterni",
+ "iam_login_provisioning": "Creazione automatica di utenti al login",
+ "iam_port": "Porta",
+ "iam_redirect_url": "URL di reindirizzamento",
+ "iam_server_url": "URL server",
+ "iam_sso": "Single Sign-On",
+ "iam_test_connection": "Test connessione",
+ "iam_use_ssl": "Usa SSL",
+ "iam_use_tls": "Usa StartTLS",
+ "iam_version": "Versione",
+ "ignore_ssl_error": "Ignorare gli errori SSL",
+ "task": "Attività",
+ "login_page": "Pagina di accesso",
+ "filter": "Filtro",
+ "iam_attribute_field": "Campo attributo",
+ "iam_authorize_url": "Endpoint di autorizzazione",
+ "iam_auth_flow": "Flusso di autenticazione",
+ "iam_client_id": "ID cliente",
+ "iam_default_template": "Template predefinito",
+ "iam_host": "Host",
+ "iam_import_users": "Importa utenti"
},
"danger": {
"access_denied": "Accesso negato o form di login non corretto",
@@ -484,7 +507,11 @@
"password_reset_invalid_user": "La casella di posta elettronica non è stata trovata o non è stata impostata un'e-mail di recupero",
"password_reset_na": "Il recupero della password non è attualmente disponibile. Contattare l'amministratore.",
"recovery_email_failed": "Impossibile inviare un'e-mail di recupero. Contattare l'amministratore.",
- "to_invalid": "Il destinatario non deve essere vuoto"
+ "to_invalid": "Il destinatario non deve essere vuoto",
+ "iam_test_connection": "Connessione non riuscita",
+ "webauthn_authenticator_failed": "L'autenticator selezionato non è stato trovato",
+ "webauthn_username_failed": "L'authenticator selezionato appartiene ad un altro account",
+ "webauthn_publickey_failed": "Nessuna chiave pubblica è stata salvata per l'authenticator selezionato"
},
"debug": {
"chart_this_server": "Grafico (questo server)",
@@ -655,7 +682,10 @@
"domain_footer_html": "Piè di pagina HTML",
"domain_footer_plain": "Piè di pagina PLAIN",
"footer_exclude": "Escludi dal piè di pagina",
- "password_recovery_email": "E-mail di recupero password"
+ "password_recovery_email": "E-mail di recupero password",
+ "mailbox_rename": "Rinominare la casella mail",
+ "mailbox_rename_agree": "Ho creato un backup.",
+ "mailbox_rename_alias": "Creare alias automaticamente"
},
"fido2": {
"confirm": "Conferma",
@@ -717,7 +747,11 @@
"forgot_password": "> Password dimenticata?",
"new_password": "Nuova password",
"new_password_confirm": "Conferma la nuova password",
- "reset_password": "Ripristino della password"
+ "reset_password": "Ripristino della password",
+ "login_linkstext": "Non è il login corretto?",
+ "login_usertext": "Accedere come utente",
+ "login_domainadmintext": "Accedere come domain admin",
+ "login_admintext": "Accedere come admin"
},
"mailbox": {
"action": "Azione",
diff --git a/mailcow/data/web/lang/lang.lv-lv.json b/mailcow/data/web/lang/lang.lv-lv.json
index 545bbe4..2b433b8 100644
--- a/mailcow/data/web/lang/lang.lv-lv.json
+++ b/mailcow/data/web/lang/lang.lv-lv.json
@@ -16,7 +16,16 @@
"login_as": "Pieteikšanās kā pastkastes lietotājam",
"mailbox_relayhost": "Pasta kastītes relayhost maiņa",
"prohibited": "Aizliegts ar ACL",
- "protocol_access": "Protokola piekļuves maiņa"
+ "protocol_access": "Protokola piekļuves maiņa",
+ "pw_reset": "Ļaut atiestatīt mailcow lietotāja paroli",
+ "ratelimit": "Piekļuves biežuma ierobežojums",
+ "quarantine": "Karantīnas darbības",
+ "quarantine_attachments": "Karantīnas pielikumi",
+ "quarantine_category": "Mainīt karantīnas paziņojumu kategoriju",
+ "quarantine_notification": "Mainīt karantīnas paziņojumus",
+ "smtp_ip_access": "Mainīt SMTP atļautos saimniekdatorus",
+ "sogo_access": "Atļaut SOGo piekļuves pārvaldību",
+ "sogo_profile_reset": "Atiestatīt SOGo profilu"
},
"add": {
"activate_filter_warn": "Visi pārējie filtri tiks deaktivizēti, kad aktīvs ir atzīmēts.",
@@ -24,8 +33,8 @@
"add": "Pievienot",
"add_domain_only": "Tikai pievienot domēnu",
"add_domain_restart": "Pievienot domēnu un restartēt SOGo",
- "alias_address": "Aizstājaddrese/s",
- "alias_address_info": "Pilna epasta addrese/s vai @piemērs.com, lai notvertu visas domēna ziņas (komatu atdalītas). tikai mailcow domēni.",
+ "alias_address": "Aizstājadrese/s",
+ "alias_address_info": "Pilna epasta adrese/s vai @example.com, lai notvertu visus domēna ziņojumus (atdalītas ar komatu). Tikai mailcow domēni.",
"alias_domain": "Aizstājdomēni",
"alias_domain_info": "Tikai derīgi domēna vārdi (komatu atdalīti).",
"automap": "Mēģiniet automatizēt mapes (\"Nosūtītie vienumi\", \"Nosūtītie\" => \"Nosūtītie\" etc.)",
@@ -63,15 +72,17 @@
"skipcrossduplicates": "Izlaist dublētus ziņojumus pa mapēm (pirmais nāk, pirmais kalpo)",
"syncjob": "Pievienot sinhronizācijas darbu",
"syncjob_hint": "Ņemiet vērā, ka parole ir jāuzglabā vienkāršā tekstā!",
- "target_address": "Iet uz adresēm",
- "target_address_info": "Pilna epasta addrese/s (comma-separated).",
+ "target_address": "Mērķa adreses",
+ "target_address_info": "Pilna epasta adrese/s (atdalītas ar komatu).",
"target_domain": "Mērķa domēns",
"username": "Lietotājvārds",
"validate": "Apstiprināt",
"validation_success": "Apstiprināts veiksmīgi",
"bcc_dest_format": "BCC galamērķim ir jābūt vienai derīgai e-pasta adresei.
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)"
+ "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"
},
"admin": {
"access": "Pieeja",
@@ -114,7 +125,7 @@
"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 addreses, 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).",
+ "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).",
"forwarding_hosts_hint": "Ienākošie ziņojumi tiek bez nosacījumiem pieņemti no visiem šeit norādītajiem saimniekdatoriem. Tie tad netiek pārbaudīti pret DNSBL vai pakļauti ievietošanai pelēkajā sarakstā. No tiem saņemtās mēstules nekad netiek noraidītas, bet pēc izvēles tās var pārvietot mapē \"Nevēlams\". Visbiežāk to izmanto, lai norādītu pasta serverus, kuros ir uzstādīts nosacījums, kas pārsūta ienākošās e-pasta vēstules uz Tavu mailcow serveri.",
"help_text": "Pārrakstīt palīdzības tekstu zem pieteikšanās maskas (var izmantot HTML)",
"host": "Hosts",
@@ -142,7 +153,7 @@
"recipients": "Adresāts",
"refresh": "Atsvaidzināt",
"regen_api_key": "Reģenerēt API atslēgu",
- "relay_from": "\"No:\" addrese",
+ "relay_from": "\"No:\" adrese",
"relay_run": "Palaist testu",
"relayhosts_hint": "Norādīt no sūtītāja atkarīgas piegādes, lai varētu tos atlasīt domēnu konfigurācijas uzvednē.
\n Piegādes pakalpojums vienmēr ir \"smtp\", tādējādi tiks mēģināts TLS, kad piedāvāts. Iekļautais TLS (SMTPS) netiek atbalstīts. Tiek ņemts vērā lietotāja atsevišķais izejošā TLS nosacījuma iestatījums.
\n Ietekmē atlasītos domēnus, tajā skaitā aizstājdomēnus.",
"remove": "Noņemt",
@@ -222,7 +233,8 @@
"targetd_not_found": "Mērķa domēns nav atrasts",
"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"
+ "domain_cannot_match_hostname": "Domēns nevar atbilst saimniekdatora nosaukumam",
+ "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.",
@@ -257,7 +269,7 @@
"hostname": "Saimniekdatora nosaukums",
"inactive": "Neaktīvs",
"kind": "Veids",
- "mailbox": "Rediģēt pastkasti",
+ "mailbox": "Labot pastkasti",
"max_aliases": "Lielākais aizstājvārdu skaits",
"max_mailboxes": "Maks. iespējamās pastkastes",
"max_quota": "Maks. kvota uz pastkasti (MiB)",
@@ -283,8 +295,8 @@
"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ē
(tukšs = neizmantot apakšmapi)",
- "syncjob": "Rediģēt sinhronizācijas darbu",
- "target_address": "Iet uz adresi/ēm (komatu atdalītas)",
+ "syncjob": "Labot sinhronizācijas darbu",
+ "target_address": "Mērķa adrese/s (atdalītas ar komatu)",
"target_domain": "Mērķa domēns",
"title": "Labot priekšmetu",
"unchanged_if_empty": "Ja neizmainīts atstājiet tukšu",
@@ -300,8 +312,11 @@
"sogo_visible": "Aizstājvārds ir redzams SOGo",
"sogo_visible_info": "Šī iespēja ietekmē tikai tos objektus, kurus var parādīt SOGo (koplietojamās vai nekoplietojamās aizstājadreses, kas norāda uz vismaz vienu vietējo pastkasti). Ja paslēpts, netiks parādīts SOGo kā atlasāms sūtītājs.",
"mbox_rl_info": "Šis pieprasījumu ierobežojums tiek piemērots SASL pieteikšanās vārdam, tas atbilst jebkurai \"from\" adresei, ko izmanto lietotājs, kurš ir pieteicies. Pastkastes pieprasījumu ierobežojums pārraksta domēna mēroga pieprasījumu ierobežojumu.",
- "sogo_access": "Nodrošināt tiešu pieteikšanās piekļuvi SOGo",
- "disable_login": "Neļaut pieteikšanos (ienākošais pasts joprojām tiks pieņemts)"
+ "sogo_access": "Tieša pārvirzīšana uz SOGo",
+ "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"
},
"footer": {
"cancel": "Atcelt",
@@ -508,7 +523,9 @@
"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"
+ "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"
},
"tfa": {
"api_register": "%s izmanto Yubico Cloud API. Lūdzu iegūstiet API atslēgu priekš Jūsu atslēgashere",
@@ -523,7 +540,7 @@
"scan_qr_code": "Lūdzu, skenējiet šo kodu ar savu autentifikācijas lietojumprogrammu vai ievadiet kodu manuāli.",
"select": "Lūdzu izvēlaties",
"set_tfa": "Uzstādīt difi faktoru autentifik;acijas metodi",
- "tfa": "Divu faktoru autentifikācija",
+ "tfa": "Divpakāpju pieteikšanās",
"totp": "Uz laiku bāzēta vienreizēja parole (Google Autentifikātors utt.)",
"webauthn": "WebAuthn autentifikācija",
"waiting_usb_auth": "Gaida USB ierīci...
Lūdzu, tagad nospiežiet pogu uz Jūsu WebAuthn USB ierīces.",
@@ -618,12 +635,18 @@
"apple_connection_profile_mailonly": "Šis savienojuma profils iekļauj IMAP un SMTP konfigurācijas parametrus Apple ierīcei.",
"pushover_info": "Pašpiegādes paziņojumu iestatījumi attieksies uz visu tīro (ne surogātpasta) pastu, kas piegādāts uz %s, ieskaitot aizstājvārdus (kopīgotus, nekopīgotus, ar birkām).",
"app_hint": "Lietotņu paroles ir aizstājējparoles, lai pieteiktos IMAP, SMTP, CalDAV, CardDAV un EAS. Lietotājvārds paliek nemainīgs. SOGo tīmekļa pasts nav pieejams ar lietotņu parolēm.",
- "direct_protocol_access": "Šim pastkastes lietotājam ir tieša, ārēja piekļuve zemāk uzskaitītajiem protokoliem un lietotnēm. Šo iestatījumu pārrauga pārvaldītājs. Lietotņu paroles var izveidot, lai nodrošinātu piekļuvi atsevišķiem protokoliem un lietotnēm.
Poga \"Pieteikties tīmekļa pastā\" nodrošina vienotu pieteikšanos SOGo un vienmēr ir pieejama.",
+ "direct_protocol_access": "Šim pastkastes lietotājam ir tieša, ārēja piekļuve zemāk uzskaitītajiem protokoliem un lietotnēm. Šo iestatījumu pārrauga pārvaldītājs. Lietotņu paroles var izveidot, lai nodrošinātu piekļuvi atsevišķiem protokoliem un lietotnēm.
Poga \"Tīmekļa pasts\" nodrošina vienotu pieteikšanos SOGo un vienmēr ir pieejama.",
"last_ui_login": "Pēdējā pieteikšanās saskarnē",
"login_history": "Pieteikšanās vēsture",
"no_last_login": "Nav informācijas par pēdējām pieteikšanās saskarnē reizēm",
- "open_webmail_sso": "Pieteikšanās tīmekļa pastā",
- "last_mail_login": "Pēdējā pasta pieteikšanās"
+ "open_webmail_sso": "Tīmekļa pasts",
+ "last_mail_login": "Pēdējā pasta pieteikšanās",
+ "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, 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"
},
"datatables": {
"paginate": {
@@ -657,4 +680,4 @@
"fido2": {
"fido2_auth": "Pieteikties ar FIDO2"
}
-}
\ No newline at end of file
+}
diff --git a/mailcow/data/web/lang/lang.pl-pl.json b/mailcow/data/web/lang/lang.pl-pl.json
index 521c177..02c892c 100644
--- a/mailcow/data/web/lang/lang.pl-pl.json
+++ b/mailcow/data/web/lang/lang.pl-pl.json
@@ -2,7 +2,8 @@
"acl": {
"sogo_profile_reset": "Usuń profil SOGo (webmail)",
"syncjobs": "Polecenie synchronizacji",
- "alias_domains": "Dodaj aliasy domen"
+ "alias_domains": "Dodaj aliasy domen",
+ "delimiter_action": "Akcja oparta na separatorze"
},
"add": {
"active": "Aktywny",
@@ -430,4 +431,4 @@
"weekly": "Co tydzień",
"weeks": "Tygodnie"
}
-}
\ No newline at end of file
+}
diff --git a/mailcow/data/web/lang/lang.pt-pt.json b/mailcow/data/web/lang/lang.pt-pt.json
index baa90f7..e86391f 100644
--- a/mailcow/data/web/lang/lang.pt-pt.json
+++ b/mailcow/data/web/lang/lang.pt-pt.json
@@ -1,7 +1,7 @@
{
"add": {
"active": "Ativo",
- "add": "Salvar",
+ "add": "Guardar",
"alias_address": "Apelidos:",
"alias_address_info": "Endereço de email completo ou @example.com, para uma conta coringa -catch all. (separado por vírgula). apenas domínios cadastrados.",
"alias_domain": "Encaminhamento de Domínio",
@@ -17,7 +17,7 @@
"max_mailboxes": "Máximo de contas:",
"password": "Senha:",
"password_repeat": "Confirmar a senha (repetir):",
- "port": "Port",
+ "port": "Porta",
"quota_mb": "Espaço (MiB):",
"relay_all": "Relay para todas as contas",
"relay_all_info": "Se não selecionar para retransmitir todas as contas, você deve adicionar uma (\"blind\") para cada conta que será direcionada.",
@@ -27,13 +27,26 @@
"target_address": "Encaminhar para:",
"target_address_info": "Endereço de email completo (separado por vírgulas).",
"target_domain": "Domínio de Destino:",
- "username": "Administrador"
+ "username": "Nome de utilizador",
+ "app_name": "Nome da App",
+ "destination": "Destino",
+ "generate": "gerar",
+ "private_comment": "Comentário privado",
+ "inactive": "Inativo",
+ "public_comment": "Comentário público",
+ "sieve_desc": "Breve descrição",
+ "sieve_type": "Tipo de filtro",
+ "subscribeall": "Subscrever todas as pastas",
+ "syncjob": "Adicionar sincronização",
+ "validate": "Validar",
+ "validation_success": "Validado com sucesso",
+ "app_passwd_protocols": "Protocolos permitidos para senha de aplicação"
},
"admin": {
"access": "Acessos",
"action": "Ação",
"active": "Ativo",
- "add": "Salvar",
+ "add": "Adicionar",
"add_domain_admin": "Adicionar administrador de domínio(s)",
"admin": "Administrador",
"admin_details": "Editar informações do administrator",
@@ -58,7 +71,47 @@
"search_domain_da": "Selecione o(s) domínio(s)",
"spamfilter": "Filtro de Spam",
"unchanged_if_empty": "Deixar em branco para não alterar",
- "username": "Administrador"
+ "username": "Administrador",
+ "add_row": "Adicionar linha",
+ "add_transport": "Adicionar transporte",
+ "change_logo": "Alterar logo",
+ "filter": "Filtro",
+ "iam_port": "Porta",
+ "iam_use_ssl": "Usar SSL",
+ "iam_version": "Versão",
+ "import": "Importar",
+ "import_private_key": "Importar chave privada",
+ "message": "Mensagem",
+ "dkim_private_key": "Chave privada",
+ "customize": "Personalizar",
+ "destination": "Destino",
+ "dkim_from": "De",
+ "activate_api": "Ativar API",
+ "add_admin": "Adicionar administrador",
+ "admins": "Administradores",
+ "advanced_settings": "Configurações avançadas",
+ "api_key": "Chave API",
+ "api_read_only": "Acesso leitura",
+ "api_read_write": "Acesso leitura e escrita",
+ "login_page": "Página de login",
+ "dkim_key_missing": "Chave em falta",
+ "dkim_key_valid": "Chave válida",
+ "dkim_to": "Para",
+ "domain_admin": "Administrador de dominio",
+ "domain_s": "Dominio(s)",
+ "duplicate": "Duplicar",
+ "duplicate_dkim": "Duplicar registo DKIM",
+ "empty": "Sem resultados",
+ "excludes": "Excluir estes recipientes",
+ "f2b_filter": "Filtros de regex",
+ "from": "De",
+ "generate": "gerar",
+ "html": "HTML",
+ "iam_import_users": "Importar Utilizadores",
+ "ui_header_announcement_content": "Texto (HTML permitido)",
+ "ui_footer": "Rodapé (HTML permitido)",
+ "activate_send": "Ativar botão de envio",
+ "help_text": "Anular texto de ajuda abaixo da máscara de login (HTML permitido)"
},
"danger": {
"access_denied": "Acesso negado ou dados inválidos",
@@ -97,7 +150,10 @@
"target_domain_invalid": "O endereço de Domínio Destino é inválido",
"targetd_not_found": "Domínio de Destino não encontrado",
"username_invalid": "Nome de utilizador inválido",
- "validity_missing": "Você deve definir um período de validade"
+ "validity_missing": "Você deve definir um período de validade",
+ "comment_too_long": "Comentário demasiado longo, máximo 160 chars permitidos",
+ "ip_list_empty": "Lista de IPs permitidos não pode estar vazia",
+ "last_key": "A última tecla não pode ser apagada, por favor desactivar a TFA."
},
"edit": {
"active": "Ativo",
@@ -129,7 +185,9 @@
"target_domain": "Domínio de Destino:",
"title": "Editar dos Objetos",
"unchanged_if_empty": "Deixar em branco para não modificar",
- "username": "Administrador"
+ "username": "Administrador",
+ "app_passwd_protocols": "Protocolos permitidos para palavra-passe de aplicação",
+ "allowed_protocols": "Protocolos permitidos para acesso direto do utilizador (não afeta os protocolos de palavra-passe da aplicação)"
},
"footer": {
"loading": "Aguarde..."
@@ -186,11 +244,15 @@
"target_domain": "Domínio Destino",
"tls_enforce_in": "Forçar TLS na entrada",
"tls_enforce_out": "Forçar TLS na saída",
- "username": "Utilizador"
+ "username": "Utilizador",
+ "allowed_protocols": "Protocolos permitidos",
+ "activate": "Ativar",
+ "deactivate": "Desativar"
},
"quarantine": {
"action": "Ação",
- "remove": "Remover"
+ "remove": "Remover",
+ "check_hash": "Pesquisar hash de ficheiro @ VT"
},
"queue": {
"queue_manager": "Queue Manager"
@@ -269,6 +331,31 @@
"user_settings": "Configurações do utilizador",
"username": "Administrador",
"week": "Semana",
- "weeks": "Semanas"
+ "weeks": "Semanas",
+ "aliases_also_send_as": "Também autorizado a enviar como utilizador",
+ "app_hint": "As senhas de aplicação são senhas alternativas para o seu login IMAP, SMTP, CalDAV, CardDAV e EAS. O nome de utilizador permanece inalterado. O webmail SOGo não está disponível através de passwords de aplicação.",
+ "allowed_protocols": "Protocolos permitidos"
+ },
+ "acl": {
+ "tls_policy": "Política de TLS",
+ "quarantine_attachments": "Anexos de quarentena",
+ "filters": "Filtros",
+ "smtp_ip_access": "Mudar anfitriões permitidos para SMTP"
+ },
+ "warning": {
+ "no_active_admin": "Não é possível desactivar o último administrador activo"
+ },
+ "tfa": {
+ "u2f_deprecated": "Parece que a sua chave foi registada usando o método U2F depreciado. Desactivaremos dois factores-autenticação para si e apagaremos a sua Chave.",
+ "none": "Desativar"
+ },
+ "datatables": {
+ "search": "Procurar:",
+ "info": "A mostrar _START_ a _END_ de _TOTAL_ entradas",
+ "infoEmpty": "A mostrar 0 a 0 de 0 entradas",
+ "aria": {
+ "sortAscending": ": activar para ordenar a coluna ascendente",
+ "sortDescending": ": activar para ordenar a coluna descendente"
+ }
}
-}
\ No newline at end of file
+}
diff --git a/mailcow/data/web/lang/lang.ru-ru.json b/mailcow/data/web/lang/lang.ru-ru.json
index e9d8569..e173279 100644
--- a/mailcow/data/web/lang/lang.ru-ru.json
+++ b/mailcow/data/web/lang/lang.ru-ru.json
@@ -359,7 +359,56 @@
"username": "Имя пользователя",
"validate_license_now": "Получить лицензию на основе GUID с сервера лицензий",
"verify": "Проверить",
- "yes": "✓"
+ "yes": "✓",
+ "force_sso_text": "Если настроен внешний провайдер OIDC, эта опция скрывает стандартные формы входа mailcow и показывает только кнопку Singe Sign-On",
+ "domainadmin_quicklink": "Скрыть ссылку на вход для администраторов домена",
+ "iam_periodic_full_sync": "Периодическая полная синхронизация",
+ "iam_sync_interval": "Интервал синхронизации/импорта (мин)",
+ "iam_use_tls_info": "При включённом TLS необходимо использовать стандартный порт LDAP-сервера (389). Порты SSL не подходят.",
+ "iam_use_ssl_info": "При включённом SSL, если указан порт 389, то вместо него автоматически будет использоваться порт 636.",
+ "quicklink_text": "Показать или скрыть ссылки для быстрого перехода к другим страницам входа под формой авторизации",
+ "iam_login_provisioning": "Автоматическое создание пользователей при входе в систему",
+ "iam_mapping": "Сопоставление атрибутов",
+ "iam_bindpass": "Bind пароль",
+ "iam_port": "Порт",
+ "iam_realm": "Realm",
+ "iam_redirect_url": "URL переадресации",
+ "iam_rest_flow": "Поток Mailpassword",
+ "iam_server_url": "URL сервера",
+ "iam_sso": "Технология единого входа (SSO)",
+ "iam_token_url": "Token endpoint",
+ "iam_userinfo_url": "User info endpoint",
+ "iam_username_field": "Поле имени пользователя",
+ "iam_binddn": "Bind DN",
+ "iam_use_ssl": "Использовать SSL",
+ "iam_use_tls": "Использовать StartTLS",
+ "iam_version": "Версия",
+ "ignore_ssl_error": "Игнорировать ошибки SSL",
+ "task": "Задача",
+ "user_link": "Пользовательская ссылка",
+ "user_quicklink": "Скрыть ссылку на вход для пользователей",
+ "app_hide": "Скрыть для входа",
+ "iam_test_connection": "Проверка соединения",
+ "login_page": "Страница входа",
+ "filter": "Фильтр",
+ "force_sso": "Отключить mailcow авторизацию и показывать только Singe Sign-On",
+ "iam": "Провайдер идентификации",
+ "iam_attribute_field": "Поле атрибута",
+ "iam_authorize_url": "Конечная точка авторизации",
+ "iam_auth_flow": "Процесс аутентификации",
+ "iam_auth_flow_info": "В дополнение к потоку кода авторизации (стандартный поток в Keycloak), который используется для Single-Sign On входа, mailcow также поддерживает поток аутентификации с непосредственными учетными данными. Поток Mailpassword пытается проверить учетные данные пользователя с помощью REST API администратора Keycloak. mailcow извлекает хешированный пароль из атрибута mailcow_password, который отображается в Keycloak.",
+ "iam_basedn": "Base DN",
+ "iam_client_id": "ID клиента",
+ "iam_client_secret": "Секрет клиента",
+ "iam_client_scopes": "Области действия клиента",
+ "iam_default_template": "Шаблон по умолчанию",
+ "iam_default_template_description": "Если пользователю не назначен шаблон, шаблон по умолчанию будет использоваться при создании почтового ящика, но не при обновлении почтового ящика.",
+ "iam_description": "Настройка внешнего провайдера для аутентификации
Почтовые ящики пользователей будут автоматически создаваться при первом входе в систему, если было задано сопоставление атрибутов.",
+ "iam_extra_permission": "Для работы следующих настроек клиенту mailcow в Keycloak необходима служебная учетная запись и разрешение на просмотр пользователей.",
+ "iam_host": "Хост",
+ "iam_host_info": "Укажите один или несколько LDAP-хостов через запятую.",
+ "iam_import_users": "Импорт пользователей",
+ "admin_quicklink": "Скрыть ссылку на вход для администраторов"
},
"danger": {
"access_denied": "Доступ запрещён, или указаны неверные данные",
@@ -496,7 +545,11 @@
"webauthn_publickey_failed": "Для выбранного аутентификатора не был сохранен открытый ключ",
"webauthn_username_failed": "Выбранный аутентификатор принадлежит другой учетной записи",
"webauthn_verification_failed": "Ошибка валидации WebAuthn: %s",
- "yotp_verification_failed": "Ошибка валидации Yubico OTP: %s"
+ "yotp_verification_failed": "Ошибка валидации Yubico OTP: %s",
+ "generic_server_error": "На сервере произошла непредвиденная ошибка. Пожалуйста, свяжитесь с вашим администратором.",
+ "authsource_in_use": "Поставщик идентификационных данных не может быть изменен или удален, так как в данный момент он используется одним или несколькими пользователями.",
+ "iam_test_connection": "Ошибка соединения",
+ "required_data_missing": "Отсутствуют необходимые данные %s"
},
"datatables": {
"collapse_all": "Свернуть все",
@@ -581,7 +634,7 @@
"alias": "Изменить псевдоним",
"allow_from_smtp": "Разрешить использование SMTP только для этих IP",
"allow_from_smtp_info": "Укажите IPv4/IPv6 адреса и/или подсети.
Оставьте поле пустым, чтобы разрешить отправку с любых адресов.",
- "allowed_protocols": "Разрешённые протоколы",
+ "allowed_protocols": "Разрешённые протоколы для прямого доступа пользователей (не влияет на протоколы паролей приложений)",
"app_name": "Название приложения",
"app_passwd": "Пароль приложения",
"app_passwd_protocols": "Разрешенные протоколы для пароля приложения",
@@ -771,7 +824,14 @@
"password": "Пароль",
"request_reset_password": "Запросить восстановление пароля",
"reset_password": "Восстановление пароля",
- "username": "Имя пользователя"
+ "username": "Имя пользователя",
+ "login_linkstext": "Неправильный логин?",
+ "login_usertext": "Войти как пользователь",
+ "login_domainadmintext": "Войти как администратор домена",
+ "login_admintext": "Войти как администратор",
+ "login_user": "Вход для пользователей",
+ "login_dadmin": "Вход для администраторов домена",
+ "login_admin": "Вход для администраторов"
},
"mailbox": {
"action": "Действия",
@@ -946,7 +1006,8 @@
"username": "Имя пользователя",
"waiting": "В ожидании",
"weekly": "Раз в неделю",
- "yes": "✓"
+ "yes": "✓",
+ "iam": "Поставщик идентификационных данных"
},
"oauth2": {
"access_denied": "Пожалуйста, войдите в систему как владелец почтового аккаунта, чтобы получить доступ через OAuth2.",
@@ -1124,7 +1185,9 @@
"verified_fido2_login": "Авторизация FIDO2 пройдена",
"verified_totp_login": "Авторизация TOTP пройдена",
"verified_webauthn_login": "Авторизация WebAuthn пройдена",
- "verified_yotp_login": "Авторизация Yubico OTP пройдена"
+ "verified_yotp_login": "Авторизация Yubico OTP пройдена",
+ "iam_test_connection": "Успешное соединение",
+ "custom_login_modified": "Настройки входа успешно сохранены"
},
"tfa": {
"api_register": "%s использует Yubico Cloud API. Пожалуйста, получите ключ API для вашего ключа здесь",
@@ -1191,7 +1254,7 @@
"delete_ays": "Пожалуйста, подтвердите удаление",
"direct_aliases": "Личные псевдонимы",
"direct_aliases_desc": "На личные псевдонимы распространяются фильтры нежелательной почты и параметры политики TLS.",
- "direct_protocol_access": "Этот пользователь почтового ящика имеет прямой, внешний доступ к следующим протоколам и приложениям. Эта настройка контролируется вашим администратором. Для предоставления доступа к отдельным протоколам и приложениям могут быть созданы пароли приложений.
Кнопка \"Вход в веб-почту\" обеспечивает единый вход в SOGo и всегда доступна.",
+ "direct_protocol_access": "Этот пользователь почтового ящика имеет прямой, внешний доступ к следующим протоколам и приложениям. Эта настройка контролируется вашим администратором. Для предоставления доступа к отдельным протоколам и приложениям могут быть созданы пароли приложений.
Кнопка \"Веб-почта\" обеспечивает единый вход в SOGo и всегда доступна.",
"eas_reset": "Сбросить кеш ActiveSync устройств",
"eas_reset_help": "Во многих случаях сброс кеша устройств помогает восстановить повреждённый профиль ActiveSync.
Внимание: все письма, календари и контакты будут загружены заново на все ваши устройства!",
"eas_reset_now": "Сбросить кеш сейчас",
@@ -1319,7 +1382,11 @@
"weeks": "недели",
"with_app_password": "с паролем приложения",
"year": "год",
- "years": "лет"
+ "years": "лет",
+ "authentication": "Аутентификация",
+ "tfa_info": "Двухфакторная аутентификация помогает защитить вашу учетную запись. Если вы включите эту функцию, вам понадобятся пароли приложений для входа в приложения или службы, которые не поддерживают двухфакторную аутентификацию (например, почтовые клиенты).",
+ "protocols": "Протоколы",
+ "overview": "Обзор"
},
"warning": {
"cannot_delete_self": "Вы не можете удалить сами себя",
diff --git a/mailcow/data/web/lang/lang.si-si.json b/mailcow/data/web/lang/lang.si-si.json
index b5a093a..474328e 100644
--- a/mailcow/data/web/lang/lang.si-si.json
+++ b/mailcow/data/web/lang/lang.si-si.json
@@ -352,13 +352,69 @@
"allowed_origins": "Upravljanje-dostopa-Dovoljeni-Viri",
"copy_to_clipboard": "Besedilo kopirano v odložišče!",
"f2b_manage_external": "Zunanje upravljanje Fail2Ban",
- "f2b_manage_external_info": "Fail2ban bo še vedno vzdrževal seznam prepovedi, vendar ne bo aktivno nastavil pravil za blokiranje prometa. Uporabite spodnji ustvarjeni seznam prepovedi za zunanje blokiranje prometa."
+ "f2b_manage_external_info": "Fail2ban bo še vedno vzdrževal seznam prepovedi, vendar ne bo aktivno nastavil pravil za blokiranje prometa. Uporabite spodnji ustvarjeni seznam prepovedi za zunanje blokiranje prometa.",
+ "force_sso_text": "Če je konfiguriran zunanji ponudnik OIDC, ta možnost skrije privzete obrazce za prijavo v Mailcow in prikaže samo gumb za enotno prijavo",
+ "app_hide": "Skrij za prijavo",
+ "iam_login_provisioning": "Samodejno ustvarjanje uporabnikov ob prijavi",
+ "admin_quicklink": "Skrij hitro povezavo do strani za prijavo skrbnika",
+ "login_page": "Prijavna stran",
+ "domainadmin_quicklink": "Skrij hitro povezavo do strani za prijavo v Skrbnik domen",
+ "filter": "Filter",
+ "force_sso": "Onemogoči prijavo v mailcow in prikaži samo enotno prijavo",
+ "iam": "Ponudnik identitete",
+ "iam_attribute_field": "Polje atributa",
+ "iam_authorize_url": "Končna točka avtorizacije",
+ "iam_auth_flow": "Potek preverjanja pristnosti",
+ "iam_auth_flow_info": "Poleg toka avtorizacijske kode (standardni tok v Keycloaku), ki se uporablja za prijavo z enotno prijavo, mailcow podpira tudi tok preverjanja pristnosti z neposrednimi poverilnicami. Tok Mailpassword poskuša preveriti uporabnikove poverilnice z uporabo REST API-ja Keycloak Admin. mailcow pridobi zgoščeno geslo iz atributa mailcow_password, ki je preslikan v Keycloaku.",
+ "iam_basedn": "Osnovni DN",
+ "iam_client_id": "ID odjemalca",
+ "iam_client_secret": "Skrivnost odjemalca",
+ "iam_client_scopes": "Obsegi odjemalcev",
+ "iam_default_template": "Privzeta predloga",
+ "iam_default_template_description": "Če uporabniku ni dodeljena nobena predloga, bo privzeta predloga uporabljena za ustvarjanje nabiralnika, ne pa za posodabljanje nabiralnika.",
+ "iam_description": "Konfigurirajte zunanjega ponudnika za preverjanje pristnosti
Uporabnikovi poštni nabiralniki bodo samodejno ustvarjeni ob prvi prijavi, če je nastavljeno preslikavanje atributov.",
+ "iam_extra_permission": "Za delovanje naslednjih nastavitev potrebuje odjemalec mailcow v Keycloaku Servisni račun in dovoljenje za ogled uporabnikov.",
+ "iam_host": "Gostitelj",
+ "iam_host_info": "Vnesite enega ali več gostiteljev LDAP, ločenih z vejicami.",
+ "iam_import_users": "Uvozi uporabnike",
+ "iam_use_tls_info": "Če omogočite TLS, morate uporabiti privzeta vrata za strežnik LDAP (389). Vrat SSL ni mogoče uporabiti.",
+ "iam_sync_interval": "Interval sinhronizacije / uvoza (min)",
+ "user_quicklink": "Skrij hitro povezavo do strani za prijavo uporabnika",
+ "iam_use_ssl_info": "Če omogočite SSL in so vrata nastavljena na 389, bodo samodejno prepisana na uporabo 636.",
+ "iam_mapping": "Preslikava atributov",
+ "iam_bindpass": "Vezano geslo",
+ "iam_periodic_full_sync": "Periodična popolna sinhronizacija",
+ "iam_port": "Vrata",
+ "iam_redirect_url": "Preusmeri URL",
+ "iam_rest_flow": "Tok gesla za pošto",
+ "iam_server_url": "URL strežnika",
+ "iam_sso": "Enotna prijava",
+ "iam_test_connection": "Preizkus povezave",
+ "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": "Povezava DN",
+ "iam_use_ssl": "Uporabi SSL",
+ "iam_use_tls": "Uporabi StartTLS",
+ "iam_version": "Različica",
+ "ignore_ssl_error": "Prezri napake SSL",
+ "password_reset_info": "Če ni naveden e-poštni naslov za obnovitev, te funkcije ni mogoče uporabiti.",
+ "password_reset_settings": "Nastavitve za obnovitev gesla",
+ "password_reset_tmpl_html": "Predloga HTML",
+ "password_reset_tmpl_text": "Predloga besedila",
+ "password_settings": "Nastavitve gesla",
+ "quicklink_text": "Prikaži ali skrij hitre povezave do drugih strani za prijavo pod prijavnim obrazcem",
+ "reset_password_vars": "{{link}} Ustvarjena povezava za ponastavitev gesla{{username}} Ime nabiralnika uporabnika, ki je zahteval ponastavitev gesla{{username2}} Ime obnovitvenega nabiralnika{{date}} Datum zahteve za ponastavitev gesla{{token_lifetime}} Življenjska doba žetona v minutah{{hostname}} Ime gostitelja mailcow",
+ "restore_template": "Za obnovitev privzete predloge pustite polje prazno.",
+ "task": "Naloga",
+ "user_link": "Uporabniška povezava",
+ "iam_realm": "Realm"
},
"danger": {
"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.",
+ "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",
"global_map_write_error": "Ni mogoče zapisati ID globalne preslikave %s: %s",
@@ -375,8 +431,8 @@
"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č 100 znakov.",
- "defquota_empty": "Privzeta kvota na poštni predal ne more biti 0",
+ "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 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",
@@ -414,9 +470,9 @@
"invalid_recipient_map_old": "Naveden neveljaven izvirni prejemnik: %s",
"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_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)",
+ "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",
@@ -428,7 +484,7 @@
"map_content_empty": "Preslikava vsebine ne more biti prazna",
"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",
+ "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 gostitel: %s",
"next_hop_interferes": "% moti naslednji skok %s",
@@ -483,7 +539,17 @@
"cors_invalid_origin": "Naveden neveljaven Allow-Origin",
"invalid_recipient_map_new": "Naveden neveljaven nov prejemnik: %s",
"img_dimensions_exceeded": "Slika presega največje dovoljene dimenzije",
- "img_size_exceeded": "Slika presega največjo dovoljeno velikost datoteke"
+ "img_size_exceeded": "Slika presega največjo dovoljeno velikost datoteke",
+ "iam_test_connection": "Povezava ni uspela",
+ "authsource_in_use": "Ponudnika identitete ni mogoče spremeniti ali izbrisati, ker ga trenutno uporablja eden ali več uporabnikov.",
+ "password_reset_na": "Obnovitev gesla trenutno ni na voljo. Obrnite se na skrbnika.",
+ "generic_server_error": "Prišlo je do nepričakovane napake strežnika. Obrnite se na skrbnika.",
+ "invalid_reset_token": "Neveljaven žeton za ponastavitev",
+ "password_reset_invalid_user": "Poštni predal ni bil najden ali pa ni nastavljen e-poštni naslov za obnovitev",
+ "recovery_email_failed": "E-poštnega sporočila za obnovitev ni bilo mogoče poslati. Obrnite se na skrbnika.",
+ "required_data_missing": "Manjkajo zahtevani podatki %s",
+ "reset_token_limit_exceeded": "Omejitev žetonov za ponastavitev je bila presežena. Poskusite znova pozneje.",
+ "to_invalid": "Polje za prejemnika ne sme biti prazno"
},
"debug": {
"containers_info": "Informacije o vsebniku (containerju)",
@@ -583,8 +649,8 @@
"pushover_sender_array": "Upoštevaj samo sledeče e-poštne naslove pošiljateljev (ločeni z vejico)",
"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": "Client secret",
- "comment_info": "Zasebni komentar ni viden uporabniku, javni komentar pa je viden kot tooltip v uporabnikovem pregledu.",
+ "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 na viru, ko je končano",
@@ -601,11 +667,11 @@
"pushover_verify": "Preveri poverilnice",
"quota_mb": "Omejitev (MiB)",
"quota_warning_bcc": "BCC za sporočilo z opozorilom omejitve",
- "quota_warning_bcc_info": "Opozorila bodo poslana kot ločene kopije sledečim prejemnikom. K naslovu sporočila bo dodano uporabniško ime v oklepajih, npr. Opozorilo omejitve (user@example.com)",
+ "quota_warning_bcc_info": "Opozorila bodo poslana kot ločene kopije naslednjim prejemnikom. Zadevi bo v oklepaju dodano ustrezno uporabniško ime, na primer: Opozorilo o kvoti (uporabnik@example.com).",
"ratelimit": "Omejitev pošiljanja",
"advanced_settings": "Napredne nastavitve",
"allow_from_smtp_info": "Pustite prazno da dovolite vse pošiljatelje.
IPv4/IPv6 naslovi in omrežja.",
- "allowed_protocols": "Dovoljeni protokoli",
+ "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",
@@ -647,12 +713,691 @@
"public_comment": "Javni komentar",
"pushover": "Pushover",
"pushover_evaluate_x_prio": "Eskaliraj visoko prednostno pošto [X-Priority: 1]",
- "pushover_info": "Nastavitve potisnih obvestil bodo veljala za vsa čisto (ne spam) elektronsko pošto dostavljeno v %s vključno z aliasi (deljeni, nedeljeni, označeni)",
+ "pushover_info": "Nastavitve potisnih obvestil bodo veljale za vso čisto (ne neželeno) pošto, dostavljeno na %s, vključno z vzdevki (v skupni rabi, brez skupne rabe, označeni).",
"pushover_only_x_prio": "Upoštevaj samo pošto z visoko prioriteto [X-Priority: 1]",
"pushover_sender_regex": "Upoštevaj sledeči regex za pošiljatelja",
"pushover_text": "Besedilo obvestila",
"pushover_sound": "Zvok",
"encryption": "Šifriranje",
- "alias": "Uredi alias"
+ "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\".
\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.",
+ "redirect_uri": "URL za preusmeritev/povratni klic",
+ "relay_all": "Posreduj vsem prejemnikom",
+ "relay_unknown_only": "Posreduj samo neobstoječe poštne nabiralnike. Obstoječi poštni nabiralniki bodo dostavljeni lokalno.",
+ "relay_domain": "Posreduj to domeno",
+ "remove": "Odstrani",
+ "resource": "Vir",
+ "mailbox_rename_title": "Novo ime lokalnega poštnega predala",
+ "password_recovery_email": "E-poštno sporočilo za obnovitev gesla",
+ "relay_all_info": "↪ Če se odločite, da ne želite posredovati vseh prejemnikov, boste morali za vsakega posameznega prejemnika, ki ga želite posredovati, dodati (\"slepi\") poštni predal.",
+ "relay_transport_info": "
(prazno = ne uporabi podmape)",
+ "syncjob": "Urejanje sinhronizacijskega opravila",
+ "target_address": "Pojdi na naslov/e (ločeno z vejico)",
+ "target_domain": "Ciljna domena",
+ "timeout1": "Časovna omejitev za povezavo z oddaljenim gostiteljem",
+ "timeout2": "Časovna omejitev za povezavo z lokalnim gostiteljem",
+ "title": "Urejanje predmeta",
+ "unchanged_if_empty": "Če ni spremenjeno, pustite prazno",
+ "username": "Uporabniško ime",
+ "validate_save": "Potrdi in shrani",
+ "mailbox_rename": "Preimenuj poštni predal",
+ "mailbox_rename_agree": "Ustvaril/a sem varnostno kopijo.",
+ "mailbox_rename_warning": "POMEMBNO! Pred preimenovanjem nabiralnika ustvarite varnostno kopijo.",
+ "sieve_desc": "Kratek opis"
+ },
+ "footer": {
+ "restart_container_info": "Pomembno: 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",
+ "hibp_check": "Preverite na haveibeenpwned.com",
+ "hibp_nok": "Ujema se! To je potencialno nevarno geslo!",
+ "hibp_ok": "Ni najdenega ujemanja.",
+ "loading": "Prosim, počakajte...",
+ "nothing_selected": "Nič izbranega",
+ "restart_container": "Znova zaženite zabojnik",
+ "restart_now": "Znova zaženi zdaj",
+ "restarting_container": "Ponovni zagon zabojnika, to lahko traja nekaj časa",
+ "cancel": "Prekliči"
+ },
+ "login": {
+ "password": "Geslo",
+ "invalid_pass_reset_token": "Žeton za ponastavitev gesla je neveljaven ali je potekel.
Zahtevajte novo povezavo za ponastavitev gesla.",
+ "back_to_mailcow": "Nazaj v mailcow",
+ "delayed": "Prijava je bila zakasnjena za %s sekund.",
+ "fido2_webauthn": "Prijava FIDO2/WebAuthent",
+ "forgot_password": "> Ste pozabili geslo?",
+ "login": "Prijava",
+ "login_linkstext": "Ni pravilna prijava?",
+ "login_usertext": "Prijava kot uporabnik",
+ "login_domainadmintext": "Prijava kot skrbnik domene",
+ "login_admintext": "Prijava kot skrbnik",
+ "login_user": "Prijava uporabnika",
+ "login_dadmin": "Prijava skrbnika domene",
+ "login_admin": "Prijava skrbnika",
+ "mobileconfig_info": "Za prenos zahtevanega profila povezave Apple se prijavite kot uporabnik poštnega predala.",
+ "new_password": "Novo geslo",
+ "new_password_confirm": "Potrdi novo geslo",
+ "other_logins": "ali se prijavite s/z",
+ "reset_password": "Ponastavi geslo",
+ "request_reset_password": "Zahteva za spremembo gesla",
+ "username": "Uporabniško ime"
+ },
+ "mailbox": {
+ "last_mail_login": "Zadnja prijava v e-pošto",
+ "deactivate": "Deaktiviraj",
+ "domain_admins": "Skrbniki domen",
+ "kind": "Prijazno",
+ "mailbox_defaults_info": "Določite privzete nastavitve za nove poštne nabiralnike.",
+ "allowed_protocols": "Dovoljeni protokoli",
+ "add_alias": "Dodaj vzdevek",
+ "mins_interval": "Interval (min)",
+ "recipient_map_info": "Zemljevidi prejemnikov se uporabljajo za zamenjavo naslova prejemnika v sporočilu, preden je dostavljeno.",
+ "add_domain_record_first": "Najprej dodajte domeno",
+ "booking_ltnull": "Neomejeno, vendar se ob rezervaciji prikaži kot zasedeno",
+ "alias_domain_alias_hint": "Vzdevki se na vzdevke domen samodejno ne uporabijo. Naslov vzdevka my-alias@domain ne pokriva naslova my-alias@alias-domain (kjer je \"vzdevek domene\" namišljeni vzdevek domene za \"domeno\").
Za preusmeritev pošte v zunanji nabiralnik uporabite filter sito (glejte zavihek »Filtri« ali uporabite SOGo -> Posrednik). Za samodejno dodajanje manjkajočih vzdevkov uporabite \"Razširi vzdevek čez domene vzdevkov\".",
+ "q_all": " ob premiku v mapo Neželena pošta in ob zavrnitvi",
+ "bcc_info": "BCC zemljevidi se uporabljajo za tiho posredovanje kopij vseh sporočil na drug naslov. Vnos vrste preslikave prejemnika se uporablja, kadar lokalni cilj deluje kot prejemnik pošte. Preslikave pošiljatelja delujejo po istem načelu.
\n Lokalni cilj ne bo obveščen o neuspeli dostavi.",
+ "force_pw_update": "Vsiljena posodobitev gesla ob naslednji prijavi",
+ "recipient_map_new_info": "Cilj zemljevida prejemnika mora biti veljaven e-poštni naslov ali ime domene.",
+ "recipient_map_old_info": "Izvirni cilj prejemnika mora biti veljaven e-poštni naslov ali ime domene.",
+ "action": "Dejanje",
+ "activate": "Aktiviraj",
+ "active": "Aktivno",
+ "add": "Dodaj",
+ "add_alias_expand": "Razširi vzdevek nad vzdevki domen",
+ "add_bcc_entry": "Dodaj zemljevid BCC",
+ "add_domain": "Dodaj domeno",
+ "add_domain_alias": "Dodaj vzdevek domene",
+ "add_filter": "Dodaj filter",
+ "add_mailbox": "Dodaj poštni predal",
+ "add_recipient_map_entry": "Dodaj zemljevid prejemnikov",
+ "add_resource": "Dodaj vir",
+ "add_template": "Dodaj predlogo",
+ "add_tls_policy_map": "Dodaj zemljevid pravilnikov TLS",
+ "address_rewriting": "Prepisovanje naslovov",
+ "alias": "Vzdevek",
+ "alias_domain_backupmx": "Vzdevek domene ni aktiven za posredovalno domeno",
+ "aliases": "Vzdevki",
+ "all_domains": "Vse domene",
+ "allow_from_smtp": "Dovoli samo tem IP-jem uporabo SMTP",
+ "allow_from_smtp_info": "Pustite prazno, da dovolite vse pošiljatelje.
Naslovi in omrežja IPv4/IPv6.",
+ "backup_mx": "Posredovalna domena",
+ "bcc": "BCC",
+ "bcc_destination": "Ciljna stran BCC",
+ "bcc_destinations": "Ciljna stran BCC",
+ "bcc_local_dest": "Lokalni cilj",
+ "bcc_map": "BCC zemljevid",
+ "bcc_map_type": "BCC tip",
+ "bcc_maps": "BCC zemljevidi",
+ "bcc_rcpt_map": "Zemljevid prejemnikov",
+ "bcc_sender_map": "Zemljevid pošiljatelja",
+ "bcc_to_rcpt": "Preklopi na vrsto zemljevida prejemnika",
+ "bcc_to_sender": "Preklopi na vrsto zemljevida pošiljatelja",
+ "bcc_type": "BCC tip",
+ "booking_null": "Vedno prikaži kot brezplačno",
+ "booking_0_short": "Vedno prost",
+ "booking_custom": "Točna omejitev na število rezervacij po meri",
+ "booking_custom_short": "Trda omejitev",
+ "booking_lt0_short": "Mehka omejitev",
+ "catch_all": "Zajemi vse",
+ "created_on": "Ustvarjeno dne",
+ "daily": "Dnevno",
+ "description": "Opis",
+ "disable_login": "Prepreči prijavo (dohodna pošta je še vedno sprejeta)",
+ "disable_x": "Onemogoči",
+ "dkim_domains_selector": "Izbirnik",
+ "dkim_key_length": "Dolžina ključa DKIM (biti)",
+ "domain": "Domena",
+ "domain_aliases": "Vzdevki domen",
+ "domain_templates": "Predloge domen",
+ "domain_quota": "Kvota",
+ "domain_quota_total": "Celotna kvota domene",
+ "domains": "Domene",
+ "edit": "Uredi",
+ "empty": "Ni rezultatov",
+ "enable_x": "Omogoči",
+ "filters": "Filtri",
+ "fname": "Polno ime",
+ "gal": "Globalni seznam naslovov",
+ "goto_ham": "Uči se kot ham",
+ "goto_spam": "Uči se kot spam",
+ "hourly": "Urno",
+ "iam": "Ponudnik identitete",
+ "in_use": "V uporabi (%)",
+ "inactive": "Neaktivno",
+ "insert_preset": "Vstavi primer prednastavitve \"%s\"",
+ "last_modified": "Zadnja sprememba",
+ "last_pw_change": "Zadnja sprememba gesla",
+ "last_run_reset": "Načrtuj naslednje",
+ "mailbox": "Poštni nabiralnik",
+ "mailbox_defaults": "Privzete nastavitve",
+ "mailbox_defquota": "Privzeta velikost poštnega nabiralnika",
+ "mailbox_templates": "Predloge poštnih nabiralnikov",
+ "mailbox_quota": "Največja velikost poštnega nabiralnika",
+ "mailboxes": "Poštni nabiralniki",
+ "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",
+ "msg_num": "Sporočilo #",
+ "multiple_bookings": "Več rezervacij",
+ "never": "Nikoli",
+ "no": "✕",
+ "no_record": "Ni zapisa za objekt %s",
+ "no_record_single": "Ni zapisa",
+ "open_logs": "Odpri dnevnike",
+ "owner": "Lastnik",
+ "private_comment": "Zasebni komentar",
+ "public_comment": "Javni komentar",
+ "q_add_header": "ko je premaknjeno v mapo Neželena pošta",
+ "q_reject": "ob zavrnitvi",
+ "quarantine_category": "Kategorija obvestil o karanteni",
+ "quarantine_notification": "Obvestila o karanteni",
+ "quick_actions": "Dejanja",
+ "recipient": "Prejemnik",
+ "recipient_map": "Zemljevid prejemnikov",
+ "recipient_map_new": "Nov prejemnik",
+ "recipient_map_old": "Prvotni prejemnik",
+ "recipient_maps": "Zemljevidi prejemnikov",
+ "relay_all": "Posreduj vsem prejemnikom",
+ "relay_unknown": "Posredovanje neznanih poštnih predalov",
+ "remove": "Odstrani",
+ "resources": "Viri",
+ "running": "V teku",
+ "sender": "Pošiljatelj",
+ "set_postfilter": "Označi kot postfilter",
+ "set_prefilter": "Označi kot predfilter",
+ "sieve_preset_1": "Zavrzi pošto z verjetno nevarnimi vrstami datotek",
+ "filter_table": "Filtriraj tabelo",
+ "excludes": "Izključuje",
+ "last_run": "Zadnji zagon",
+ "sieve_preset_2": "Vedno označi e-pošto določenega pošiljatelja kot videno",
+ "target_address": "Pojdi na naslov",
+ "syncjob_EXIT_TLS_FAILURE": "Težava s šifrirano povezavo",
+ "syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Ni mogoče vzpostaviti povezave z oddaljenim strežnikom",
+ "tls_map_parameters_info": "Prazno ali parametri, na primer: protocols=!SSLv2 ciphers=medium exclude=3DES",
+ "tls_policy_maps_enforced_tls": "Ti pravilniki bodo preglasili tudi vedenje uporabnikov poštnih predalov, ki vsiljujejo odhodne povezave TLS. Če spodaj ni pravilnika, bodo ti uporabniki uporabili privzete vrednosti, določene kot smtp_tls_mandatory_protocols in smtp_tls_mandatory_ciphers.",
+ "spam_aliases": "Začasni vzdevek",
+ "sieve_preset_3": "Tiho zavrzite, ustavite vso nadaljnjo obdelavo s presejanjem",
+ "sieve_preset_4": "Vloži v mapo PREJETO, preskoči nadaljnjo obdelavo s sitastimi filtri",
+ "sieve_preset_5": "Samodejni odzivnik (dopust)",
+ "sieve_preset_6": "Zavrni pošto z odgovorom",
+ "sieve_preset_7": "Preusmeritev in ohrani/opusti",
+ "sieve_preset_8": "Preusmeritev e-pošte od določenega pošiljatelja, označitev kot prebrano in razvrščanje v podmapo",
+ "sieve_preset_header": "Spodaj si oglejte primere prednastavitev. Za več podrobnosti glejte Wikipedijo.",
+ "sogo_visible": "Vzdevek je viden v SOGo",
+ "sogo_visible_n": "Skrij vzdevek v SOGo",
+ "sogo_visible_y": "Prikaži vzdevek v SOGo",
+ "stats": "Statistika",
+ "status": "Stanje",
+ "sync_jobs": "Sinhronizacija opravil",
+ "syncjob_check_log": "Preveri dnevnik",
+ "syncjob_last_run_result": "Rezultat zadnjega zagona",
+ "syncjob_EX_OK": "Uspešno",
+ "syncjob_EXIT_CONNECTION_FAILURE": "Težava s povezavo",
+ "syncjob_EXIT_AUTHENTICATION_FAILURE": "Težava z overjanjem",
+ "syncjob_EXIT_OVERQUOTA": "Ciljni poštni predal presega kvoto",
+ "table_size_show_n": "Prikaži %s elementov",
+ "target_domain": "Ciljna domena",
+ "template": "Predloga",
+ "tls_enforce_in": "Uveljavi dohodni TLS",
+ "tls_enforce_out": "Uveljavi odhodni TLS",
+ "tls_map_dest": "Cilj",
+ "tls_map_dest_info": "Primeri: example.org, .example.org, [mail.example.org]:25",
+ "tls_map_parameters": "Parametri",
+ "tls_map_policy": "Politika",
+ "tls_policy_maps": "Zemljevidi pravilnikov TLS",
+ "syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "Napačno uporabniško ime ali geslo",
+ "templates": "Predloge",
+ "tls_policy_maps_long": "Preglasitve zemljevidov pravilnikov odhodnega TLS",
+ "table_size": "Velikost tabele",
+ "toggle_all": "Preklopi vse",
+ "username": "Uporabniško ime",
+ "waiting": "Čakanje",
+ "yes": "✓",
+ "weekly": "Tedensko",
+ "sieve_info": "Na uporabnika lahko shranite več filtrov, vendar je lahko hkrati aktiven le en predfilter in en postfilter.
\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.
Globalni predfilter sita • Predfilter • Uporabniški skripti • Postfilter • Globalni postfilter sita",
+ "tls_policy_maps_info": "Ta preslikava pravilnikov preglasi pravila odhodnega prenosa TLS neodvisno od uporabnikovih nastavitev pravilnikov TLS.
\n Za več informacij preverite dokumentacijo »smtp_tls_policy_maps«."
+ },
+ "fido2": {
+ "known_ids": "Znani ID-ji",
+ "set_fido2_touchid": "Registrirajte Touch ID na Apple M1",
+ "confirm": "Potrdi",
+ "fido2_auth": "Prijava s FIDO2",
+ "fido2_success": "Naprava je bila uspešno registrirana",
+ "fido2_validation_failed": "Preverjanje ni uspelo",
+ "fn": "Prijazno ime",
+ "none": "Onemogočeno",
+ "register_status": "Status registracije",
+ "rename": "Preimenuj",
+ "set_fido2": "Registrirajte napravo FIDO2",
+ "set_fn": "Nastavi prijazno ime",
+ "start_fido2_validation": "Začni validacijo FIDO2"
+ },
+ "info": {
+ "session_expires": "Vaša seja bo potekla čez približno 15 sekund",
+ "awaiting_tfa_confirmation": "Čakam na potrditev TFA",
+ "no_action": "Ni veljavnih ukrepov"
+ },
+ "header": {
+ "administration": "Konfiguracija in podrobnosti",
+ "apps": "Aplikacije",
+ "debug": "Informacije",
+ "email": "E-pošta",
+ "mailcow_system": "Sistem",
+ "mailcow_config": "Konfiguracija",
+ "quarantine": "Karantena",
+ "restart_netfilter": "Znova zaženite omrežni filter",
+ "restart_sogo": "Znova zaženite SOGo",
+ "user_settings": "Uporabniške nastavitve"
+ },
+ "quarantine": {
+ "learn_spam_delete": "Uči se kot neželena pošta in izbriši",
+ "medium_danger": "Srednje",
+ "notified": "Obveščen",
+ "low_danger": "Nizko",
+ "qinfo": "Sistem karantene bo zavrnjeno pošto shranil v zbirko podatkov (pošiljatelj ne bo imel vtisa, da je bila pošta dostavljena), prav tako pa bo pošto, ki bo dostavljena kot kopija, shranil v mapo »Neželena pošta« v nabiralniku.\n
»Uči kot neželeno pošto in izbriši« bo sporočilo prepoznal kot neželeno pošto prek Bayesovega izreka in izračunal tudi mehke zgoščene vrednosti, da bi v prihodnje zavrnil podobna sporočila.\n
Upoštevajte, da je učenje več sporočil lahko – odvisno od vašega sistema – zamudno.
Elementi na črnem seznamu so izključeni iz karantene.",
+ "junk_folder": "Mapa z neželeno pošto",
+ "action": "Dejanje",
+ "atts": "Priloge",
+ "check_hash": "Iskanje zgoščene vrednosti datoteke @ VT",
+ "confirm": "Potrdi",
+ "confirm_delete": "Potrdite brisanje tega elementa.",
+ "danger": "Nevarnost",
+ "deliver_inbox": "Dostavi v mapo »Prejeto«",
+ "disabled_by_config": "Trenutna konfiguracija sistema onemogoča funkcionalnost karantene. Nastavite »število hranjenj na poštni predal« in »največjo velikost« za elemente karantene.",
+ "download_eml": "Prenesi (.eml)",
+ "empty": "Ni rezultatov",
+ "high_danger": "Visoko",
+ "info": "Informacija",
+ "neutral_danger": "Nevtralno",
+ "qhandler_success": "Zahteva je bila uspešno poslana v sistem. Zdaj lahko zaprete okno.",
+ "qid": "Rspamd QID",
+ "qitem": "Predmet iz karantene",
+ "spam_score": "Rezultat",
+ "text_from_html_content": "Vsebina (pretvorjen html)",
+ "quarantine": "Karantena",
+ "quick_delete_link": "Odpri povezavo za hitro brisanje",
+ "quick_info_link": "Odpri povezavo z informacijami",
+ "quick_release_link": "Odpri povezavo za hitro objavo",
+ "rcpt": "Prejemnik",
+ "received": "Prejeto",
+ "recipients": "Prejemniki",
+ "refresh": "Osveži",
+ "rejected": "Zavrnjeno",
+ "release": "Izdaja",
+ "release_body": "Vaše sporočilo smo priložili kot datoteko eml temu sporočilu.",
+ "release_subject": "Potencialno škodljiv predmet v karanteni %s",
+ "remove": "Odstrani",
+ "rewrite_subject": "Prepiši zadevo",
+ "rspamd_result": "Rezultat Rspamd",
+ "sender": "Pošiljatelj (SMTP)",
+ "sender_header": "Pošiljatelj (glava »Od«)",
+ "settings_info": "Največje število elementov za karanteno: %s
Največja velikost e-pošte: %s MiB",
+ "show_item": "Prikaži element",
+ "spam": "Neželena pošta",
+ "subj": "Zadeva",
+ "table_size": "Velikost tabele",
+ "table_size_show_n": "Prikaži %s elementov",
+ "text_plain_content": "Vsebina (besedilo/navadno)",
+ "toggle_all": "Preklopi vse",
+ "type": "Vrsta",
+ "quick_actions": "Dejanja"
+ },
+ "oauth2": {
+ "access_denied": "Za odobritev dostopa prek OAuth2 se prijavite kot lastnik poštnega predala.",
+ "authorize_app": "Avtorizacija aplikacije",
+ "deny": "Zavrni",
+ "permit": "Avtorizacija aplikacije",
+ "profile": "Profil",
+ "profile_desc": "Ogled osebnih podatkov: uporabniško ime, polno ime, ustvarjeno, spremenjeno, aktivno",
+ "scope_ask_permission": "Aplikacija je zahtevala naslednja dovoljenja"
+ },
+ "queue": {
+ "info": "Čakalna vrsta pošte vsebuje vsa e-poštna sporočila, ki čakajo na dostavo. Če je e-poštno sporočilo dlje časa obtičalo v čakalni vrsti, ga sistem samodejno izbriše.
Sporočilo o napaki ustreznega e-poštnega sporočila vsebuje informacije o tem, zakaj sporočila ni bilo mogoče dostaviti.",
+ "delete": "Izbriši vse",
+ "flush": "Izprazni čakalno vrsto",
+ "legend": "Funkcije dejanj čakalne vrste pošte:",
+ "ays": "Potrdite, da želite izbrisati vse elemente iz trenutne čakalne vrste.",
+ "deliver_mail": "Dostavi",
+ "deliver_mail_legend": "Poskusi ponovne dostave izbranih e-poštnih sporočil.",
+ "hold_mail": "Zadrži",
+ "hold_mail_legend": "Zadrži izbrano pošto. (Prepreči nadaljnje poskuse dostave)",
+ "queue_manager": "Upravitelj čakalnih vrst",
+ "show_message": "Prikaži sporočilo",
+ "unban": "odblokiraj čakalno vrsto",
+ "unhold_mail": "Nezadrži",
+ "unhold_mail_legend": "Sprosti izbrana sporočila za dostavo. (Zahteva predhodno zadržanje)"
+ },
+ "success": {
+ "eas_reset": "Naprave ActiveSync za uporabnika %s so bile ponastavljene",
+ "alias_added": "Dodan je bil vzdevek %s (%d)",
+ "app_passwd_added": "Dodano novo geslo za aplikacijo",
+ "domain_add_dkim_available": "Ključ DKIM je že obstajal",
+ "custom_login_modified": "Prilagoditev prijave je bila uspešno shranjena",
+ "rl_saved": "Omejitev hitrosti za objekt %s je shranjena",
+ "domain_admin_modified": "Spremembe skrbnika domene %s so bile shranjene",
+ "license_modified": "Spremembe licence so bile shranjene",
+ "pushover_settings_edited": "Nastavitve Pushoverja so bile uspešno nastavljene, preverite poverilnice.",
+ "mailbox_renamed": "Poštni nabiralnik je bil preimenovan iz %s v %s",
+ "recovery_email_sent": "E-poštno sporočilo za obnovitev je bilo poslano na %s",
+ "relayhost_removed": "Vnos na zemljevidu %s je bil odstranjen",
+ "acl_saved": "ACL za objekt %s shranjen",
+ "admin_added": "Dodan je bil skrbnik %s",
+ "admin_api_modified": "Spremembe API-ja so bile shranjene",
+ "admin_modified": "Spremembe skrbnika so bile shranjene",
+ "admin_removed": "Administrator %s je bil odstranjen",
+ "alias_domain_removed": "Vzdevek domene %s je bil odstranjen",
+ "alias_modified": "Spremembe vzdevka %s so bile shranjene",
+ "alias_removed": "Vzdevek %s je bil odstranjen",
+ "aliasd_added": "Dodan vzdevek domene %s",
+ "aliasd_modified": "Spremembe vzdevka domene %s so bile shranjene",
+ "app_links": "Shranjene spremembe povezav aplikacij",
+ "app_passwd_removed": "Odstranjen ID gesla za aplikacijo %s",
+ "bcc_deleted": "Vnosi na zemljevidu BCC so izbrisani: %s",
+ "bcc_edited": "Vnos na zemljevidu BCC %s je bil urejen",
+ "db_init_complete": "Inicializacija baze podatkov končana",
+ "delete_filter": "Izbrisani filtri ID %s",
+ "delete_filters": "Izbrisani filtri: %s",
+ "deleted_syncjob": "Izbrisan ID sinhronizacijskega opravila %s",
+ "deleted_syncjobs": "Izbrisana opravila sinhronizacije: %s",
+ "dkim_added": "Ključ DKIM %s je bil shranjen",
+ "dkim_duplicated": "Ključ DKIM za domeno %s je bil kopiran v %s",
+ "dkim_removed": "Ključ DKIM %s je bil odstranjen",
+ "domain_added": "Dodana domena %s",
+ "domain_admin_added": "Dodan je bil skrbnik domene %s",
+ "domain_admin_removed": "Skrbnik domene %s je bil odstranjen",
+ "domain_footer_modified": "Spremembe v nogi domene %s so bile shranjene",
+ "domain_modified": "Spremembe domene %s so bile shranjene",
+ "domain_removed": "Domena %s je bila odstranjena",
+ "dovecot_restart_success": "Dovecot je bil uspešno ponovno zagnan",
+ "f2b_banlist_refreshed": "ID seznama prepovedanih je bil uspešno osvežen.",
+ "f2b_modified": "Spremembe parametrov Fail2ban so bile shranjene",
+ "forwarding_host_added": "Dodan je bil posredovalni gostitelj %s",
+ "forwarding_host_removed": "Gostitelj za posredovanje %s je bil odstranjen",
+ "global_filter_written": "Filter je bil uspešno zapisan v datoteko",
+ "hash_deleted": "Zgoščena vrednost je izbrisana",
+ "iam_test_connection": "Povezava je bila uspešna",
+ "ip_check_opt_in_modified": "Preverjanje IP-ja je bilo uspešno shranjeno",
+ "item_deleted": "Element %s je bil uspešno izbrisan",
+ "items_deleted": "Element %s je bil uspešno izbrisan",
+ "items_released": "Izbrani elementi so bili izdani",
+ "logged_in_as": "Prijavljen kot %s",
+ "mailbox_added": "Dodan je bil poštni predal %s",
+ "mailbox_modified": "Spremembe poštnega nabiralnika %s so bile shranjene",
+ "mailbox_removed": "Poštni nabiralnik %s je bil odstranjen",
+ "nginx_reloaded": "Nginx je bil ponovno naložen",
+ "object_modified": "Spremembe objekta %s so bile shranjene",
+ "password_policy_saved": "Pravilnik o geslih je bil uspešno shranjen",
+ "password_changed_success": "Geslo je bilo uspešno spremenjeno",
+ "qlearn_spam": "Sporočilo z ID-jem %s je bilo prepoznano kot neželena pošta in izbrisano",
+ "queue_command_success": "Ukaz za čakalno vrsto je bil uspešno zaključen",
+ "recipient_map_entry_deleted": "ID zemljevida prejemnika %s je bil izbrisan",
+ "recipient_map_entry_saved": "Vnos zemljevida prejemnika »%s« je bil shranjen",
+ "relayhost_added": "Dodan je bil vnos na zemljevid %s",
+ "reset_main_logo": "Ponastavi na privzeti logotip",
+ "resource_added": "Dodan je bil vir %s",
+ "resource_modified": "Spremembe poštnega nabiralnika %s so bile shranjene",
+ "resource_removed": "Vir %s je bil odstranjen",
+ "rspamd_ui_pw_set": "Geslo uporabniškega vmesnika Rspamd je bilo uspešno nastavljeno",
+ "settings_map_added": "Dodan vnos nastavitev zemljevida",
+ "settings_map_removed": "Odstranjen ID zemljevida nastavitev %s",
+ "sogo_profile_reset": "Profil SOGo za uporabnika %s je bil ponastavljen",
+ "template_added": "Dodana predloga %s",
+ "template_modified": "Spremembe predloge %s so bile shranjene",
+ "template_removed": "ID predloge %s je bil izbrisan",
+ "tls_policy_map_entry_deleted": "ID zemljevida pravilnika TLS %s je bil izbrisan",
+ "tls_policy_map_entry_saved": "Vnos zemljevida pravilnika TLS »%s« je bil shranjen",
+ "ui_texts": "Shranjene spremembe besedil uporabniškega vmesnika",
+ "upload_success": "Datoteka je bila uspešno naložena",
+ "verified_fido2_login": "Preverjena prijava v FIDO2",
+ "verified_totp_login": "Preverjena prijava v TOTP",
+ "verified_webauthn_login": "Preverjena prijava v WebAuth",
+ "verified_yotp_login": "Preverjena prijava z enkratnim geslom Yubico",
+ "bcc_saved": "Vnos na zemljevidu BCC je shranjen",
+ "cors_headers_edited": "Nastavitve CORS so bile shranjene",
+ "item_released": "Izdan je bil element %s",
+ "saved_settings": "Shranjene nastavitve",
+ "learned_ham": "Uspešno naučen ID %s kot zaželjen"
+ },
+ "start": {
+ "imap_smtp_server_auth_info": "Prosimo, uporabite svoj celoten e-poštni naslov in mehanizem za preverjanje pristnosti PLAIN.
\nVaši podatki za prijavo bodo šifrirani z obveznim šifriranjem na strani strežnika.",
+ "help": "Prikaži/skrij ploščo s pomočjo"
+ },
+ "tfa": {
+ "api_register": "%s uporablja Yubico Cloud API. Pridobite API ključ za svoj ključ tukaj",
+ "authenticators": "Preverjevalniki pristnosti",
+ "confirm": "Potrdi",
+ "delete_tfa": "Onemogoči TFA",
+ "disable_tfa": "Onemogoči TFA do naslednje uspešne prijave",
+ "enter_qr_code": "Vaša koda TOTP, če vaša naprava ne more skenirati kod QR",
+ "error_code": "Koda napake",
+ "confirm_totp_token": "Spremembe potrdite z vnosom ustvarjenega žetona",
+ "tfa": "Dvofaktorska avtentikacija",
+ "webauthn": "Preverjanje pristnosti WebAuthn",
+ "none": "Deaktiviraj",
+ "init_webauthn": "Inicializacija, prosim počakajte...",
+ "key_id": "Identifikator za vašo napravo",
+ "key_id_totp": "Identifikator za vaš ključ",
+ "reload_retry": "- (če napaka vztraja, znova zaženite brskalnik)",
+ "scan_qr_code": "Prosimo, skenirajte naslednjo kodo z aplikacijo za preverjanje pristnosti ali jo vnesite ročno.",
+ "select": "Prosimo, izberite",
+ "set_tfa": "Nastavite metodo dvofaktorske avtentikacije",
+ "start_webauthn_validation": "Začni validacijo",
+ "tfa_token_invalid": "Žeton TFA neveljaven",
+ "totp": "Enkratno geslo na podlagi časa (Google Authenticator, Authy itd.)",
+ "u2f_deprecated": "Zdi se, da je bil vaš ključ registriran z zastarelo metodo U2F. Deaktivirali bomo dvofaktorsko overjanje in izbrisali vaš ključ.",
+ "u2f_deprecated_important": "Prosimo, registrirajte svoj ključ v skrbniški plošči z novo metodo WebAuthn.",
+ "waiting_usb_auth": "Čakanje na napravo USB ...
Zdaj se dotaknite gumba na napravi USB.",
+ "waiting_usb_register": "Čakanje na napravo USB ...
Vnesite svoje geslo zgoraj in potrdite registracijo tako, da tapnete gumb na napravi USB.",
+ "yubi_otp": "Avtentikacija z enkratnim geslom Yubico"
+ },
+ "ratelimit": {
+ "disabled": "Onemogočeno",
+ "second": "sporočil / sekundo",
+ "minute": "sporočil / minuto",
+ "hour": "sporočil / uro",
+ "day": "sporočil / dan"
+ },
+ "user": {
+ "create_syncjob": "Ustvari novo sinhronizacijsko opravilo",
+ "open_webmail_sso": "Spletna pošta",
+ "attribute": "Atribut",
+ "description": "Opis",
+ "direct_aliases_desc": "Na neposredne vzdevke vplivajo nastavitve filtra neželene pošte in pravilnika TLS.",
+ "direct_protocol_access": "Ta uporabnik poštnega predala ima neposreden zunanji dostop do naslednjih protokolov in aplikacij. To nastavitev nadzoruje vaš skrbnik. Za dostop do posameznih protokolov in aplikacij je mogoče ustvariti gesla za aplikacije.
Gumb »Spletna pošta« omogoča enotno prijavo v SOGo in je vedno na voljo.",
+ "shared_aliases_desc": "Na uporabniške nastavitve, kot sta filter neželene pošte ali pravilnik za šifriranje, ne vplivajo skupni vzdevki. Ustrezne filtre neželene pošte lahko nastavi le skrbnik kot pravilnik za celotno domeno.",
+ "force_pw_update": "Za dostop do storitev, povezanih s skupinsko programsko opremo, morate nastaviti novo geslo.",
+ "new_password": "Novo geslo",
+ "password_reset_info": "Če ni naveden e-poštni naslov za obnovitev gesla, te funkcije ni mogoče uporabiti.",
+ "pushover_sender_array": "Upoštevajte naslednje e-poštne naslove pošiljateljev (ločeni z vejico)",
+ "tag_help_explain": "V podmapi: pod mapo INBOX (\"INBOX/Facebook\") bo ustvarjena nova podmapa, poimenovana po oznaki.
\nV zadevi: ime oznake bo dodano pred zadevo e-poštnega sporočila, na primer: \"[Facebook] Moje novice\".",
+ "pushover_vars": "Če filter pošiljatelja ni definiran, bodo upoštevana vsa e-poštna sporočila.
Filtre regularnih izrazov in natančna preverjanja pošiljateljev je mogoče definirati posamično in bodo obravnavana zaporedno. Niso odvisna drug od drugega.
Uporabne spremenljivke za besedilo in naslov (upoštevajte pravilnike o varstvu podatkov)",
+ "quarantine_notification_info": "Ko je obvestilo poslano, bodo elementi označeni kot »obveščeni« in za ta določen element ne bodo poslana nobena nadaljnja obvestila.",
+ "verify": "Preveri",
+ "spamfilter_bl_desc": "E-poštni naslovi na črnem seznamu, ki jih vedno razvrstite kot neželeno pošto in zavrnete. Zavrnjena pošta ne bo kopirana v karanteno. Uporabite lahko nadomestne znake. Filter se uporabi samo za neposredne vzdevke (vzdevke z enim samim ciljnim nabiralnikom), izključujoč vseobsegajoče vzdevke in sam nabiralnik.",
+ "spamfilter_wl_desc": "E-poštni naslovi na belem seznamu so programirani tako, da se nikoli ne razvrstijo kot neželena pošta. Uporabijo se lahko nadomestni znaki. Filter se uporabi samo za neposredne vzdevke (vzdevke z enim samim ciljnim poštnim predalom), izključujoč vseobsegajoče vzdevke in sam poštni predal.",
+ "tls_policy_warning": "Opozorilo: Če se odločite za uveljavitev šifriranega prenosa pošte, lahko izgubite e-pošto.
Sporočila, ki ne ustrezajo pravilniku, bo poštni sistem zavrnil s popolno napako.
Ta možnost velja za vaš primarni e-poštni naslov (prijavno ime), vse naslove, izpeljane iz vzdevkov domen, in vzdevke, ki imajo samo ta en poštni predal kot cilj.",
+ "allowed_protocols": "Dovoljeni protokoli",
+ "title": "Naslov",
+ "action": "Dejanje",
+ "active": "Aktivno",
+ "active_sieve": "Aktiven filter",
+ "advanced_settings": "Napredne nastavitve",
+ "alias": "Vzdevek",
+ "alias_create_random": "Generiraj naključne vzdevke",
+ "alias_extend_all": "Podaljšaj vzdevek za 1 uro",
+ "alias_full_date": "d.m.Y, H:i:s T",
+ "alias_remove_all": "Odstrani vse vzdevke",
+ "alias_select_validity": "Obdobje veljavnosti",
+ "alias_time_left": "Preostali čas",
+ "alias_valid_until": "Veljavno do",
+ "aliases_also_send_as": "Pošiljanje je dovoljeno tudi kot uporabnik",
+ "aliases_send_as_all": "Ne preverjaj dostopa pošiljatelja za naslednje domene in njihove vzdevke",
+ "app_hint": "Gesla aplikacij so alternativna gesla za prijavo v IMAP, SMTP, CalDAV, CardDAV in EAS. Uporabniško ime ostane nespremenjeno. Spletna pošta SOGo ni na voljo prek gesel aplikacij.",
+ "app_name": "Ime aplikacije",
+ "app_passwds": "Gesla aplikacij",
+ "apple_connection_profile": "Profil povezave Apple",
+ "apple_connection_profile_complete": "Ta profil povezave vključuje parametre IMAP in SMTP ter poti CalDAV (koledarji) in CardDAV (stiki) za napravo Apple.",
+ "apple_connection_profile_mailonly": "Ta profil povezave vključuje konfiguracijske parametre IMAP in SMTP za napravo Apple.",
+ "apple_connection_profile_with_app_password": "Novo geslo za aplikacijo se ustvari in doda v profil, tako da pri nastavitvi naprave ni treba vnesti gesla. Datoteke ne delite, saj omogoča poln dostop do vašega nabiralnika.",
+ "authentication": "Avtentikacija",
+ "change_password": "Spremeni geslo",
+ "change_password_hint_app_passwords": "Vaš račun ima %d gesel aplikacij, ki ne bodo spremenjena. Če jih želite upravljati, odprite zavihek Gesla aplikacij.",
+ "clear_recent_successful_connections": "Jasno vidne uspešne povezave",
+ "client_configuration": "Prikaži vodnike za konfiguracijo e-poštnih odjemalcev in pametnih telefonov",
+ "create_app_passwd": "Ustvari geslo za aplikacijo",
+ "created_on": "Ustvarjeno dne",
+ "daily": "Dnevno",
+ "day": "dan",
+ "delete_ays": "Prosimo, potrdite postopek brisanja.",
+ "direct_aliases": "Neposredni vzdevki",
+ "eas_reset": "Ponastavi predpomnilnik naprave ActiveSync",
+ "eas_reset_help": "V mnogih primerih bo ponastavitev predpomnilnika naprave pomagala obnoviti pokvarjen profil ActiveSync.
Pozor: Vsi elementi bodo ponovno preneseni!",
+ "eas_reset_now": "Ponastavi zdaj",
+ "edit": "Uredi",
+ "email": "E-pošta",
+ "email_and_dav": "E-pošta, koledarji in stiki",
+ "empty": "Ni rezultatov",
+ "encryption": "Šifriranje",
+ "excludes": "Izključuje",
+ "expire_in": "Poteče čez",
+ "fido2_webauthn": "FIDO2/WebAuthn",
+ "from": "od",
+ "generate": "ustvari",
+ "hour": "ura",
+ "hourly": "Urno",
+ "hours": "ure",
+ "in_use": "Uporabljeno",
+ "interval": "Interval",
+ "is_catch_all": "Vseobsegajoča povezava za domeno/e",
+ "last_mail_login": "Zadnja prijava v e-pošto",
+ "last_pw_change": "Zadnja sprememba gesla",
+ "last_run": "Zadnji zagon",
+ "last_ui_login": "Zadnja prijava v uporabniški vmesnik",
+ "loading": "Nalaganje ...",
+ "login_history": "Zgodovina prijav",
+ "mailbox": "Poštni nabiralnik",
+ "mailbox_details": "Podrobnosti",
+ "mailbox_general": "Splošno",
+ "mailbox_settings": "Nastavitve",
+ "messages": "sporočila",
+ "month": "mesec",
+ "months": "meseci",
+ "never": "Nikoli",
+ "new_password_repeat": "Potrditveno geslo (ponovite)",
+ "no_active_filter": "Ni aktivnega filtra",
+ "no_last_login": "Ni zadnjih podatkov za prijavo v uporabniški vmesnik",
+ "no_record": "Ni zapisa",
+ "open_logs": "Odpri dnevnike",
+ "overview": "Pregled",
+ "password": "Geslo",
+ "password_now": "Trenutno geslo (potrdite spremembe)",
+ "password_repeat": "Geslo (ponovite)",
+ "protocols": "Protokoli",
+ "pushover_evaluate_x_prio": "Eskalacija e-pošte z visoko prioriteto [X-Priority: 1]",
+ "pushover_info": "Nastavitve potisnih obvestil bodo veljale za vso čisto (ne neželeno) pošto, dostavljeno na %s, vključno z vzdevki (v skupni rabi, brez skupne rabe, označeni).",
+ "pushover_only_x_prio": "Upoštevaj samo pošto z visoko prioriteto [X-Priority: 1]",
+ "pushover_sender_regex": "Poišči ujemanje pošiljateljev z naslednjim regularnim izrazom",
+ "pushover_text": "Besedilo obvestila",
+ "pushover_title": "Naslov obvestila",
+ "pushover_sound": "Zvok",
+ "pushover_verify": "Preverite poverilnice",
+ "pw_recovery_email": "E-poštno sporočilo za obnovitev gesla",
+ "q_add_header": "Mapa z neželeno pošto",
+ "q_reject": "Zavrnjeno",
+ "quarantine_category": "Kategorija obvestil o karanteni",
+ "quarantine_category_info": "Kategorija obvestil »Zavrnjeno« vključuje zavrnjeno pošto, medtem ko »Mapa z neželeno pošto« obvesti uporabnika o e-pošti, ki je bila premaknjena v mapo z neželeno pošto.",
+ "quarantine_notification": "Obvestila o karanteni",
+ "recent_successful_connections": "Videne uspešne povezave",
+ "remove": "Odstrani",
+ "running": "V teku",
+ "save": "Shrani spremembe",
+ "save_changes": "Shrani spremembe",
+ "sender_acl_disabled": "Preverjanje pošiljatelja je onemogočeno",
+ "shared_aliases": "Skupni vzdevki",
+ "show_sieve_filters": "Prikaži filter sita aktivnega uporabnika",
+ "sogo_profile_reset": "Ponastavi profil SOGo",
+ "sogo_profile_reset_help": "S tem boste uničili uporabnikov profil SOGo in nepovratno izbrisali vse stike in podatke koledarja.",
+ "sogo_profile_reset_now": "Ponastavi profil zdaj",
+ "spam_aliases": "Začasni vzdevki e-pošte",
+ "spam_score_reset": "Ponastavi na privzete nastavitve strežnika",
+ "spamfilter": "Filter neželene pošte",
+ "spamfilter_behavior": "Ocena",
+ "spamfilter_bl": "Črna lista",
+ "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_table_action": "Dejanje",
+ "spamfilter_table_add": "Dodaj element",
+ "spamfilter_table_domain_policy": "ni na voljo (pravilnik domene)",
+ "spamfilter_table_empty": "Ni podatkov za prikaz",
+ "spamfilter_table_remove": "odstrani",
+ "spamfilter_table_rule": "Pravilo",
+ "spamfilter_wl": "Bela lista",
+ "spamfilter_yellow": "Rumena: to sporočilo je morda neželena pošta, označeno bo kot neželena pošta in premaknjeno v mapo z neželeno pošto",
+ "status": "Stanje",
+ "sync_jobs": "Sinhronizacija opravil",
+ "syncjob_check_log": "Preveri dnevnik",
+ "syncjob_last_run_result": "Rezultat zadnjega zagona",
+ "syncjob_EXIT_CONNECTION_FAILURE": "Težava s povezavo",
+ "syncjob_EXIT_TLS_FAILURE": "Težava s šifrirano povezavo",
+ "syncjob_EXIT_AUTHENTICATION_FAILURE": "Težava z overjanjem",
+ "syncjob_EXIT_OVERQUOTA": "Ciljni poštni predal presega kvoto",
+ "syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Ni mogoče vzpostaviti povezave z oddaljenim strežnikom",
+ "syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "Napačno uporabniško ime ali geslo",
+ "tag_handling": "Nastavitev obravnave označene pošte",
+ "tag_help_example": "Primer označenega e-poštnega naslova: jaz+Facebook@example.org",
+ "tag_in_none": "Ne naredi ničesar",
+ "tag_in_subfolder": "V podmapi",
+ "tag_in_subject": "V zadevi",
+ "text": "Besedilo",
+ "tfa_info": "Dvofaktorska avtentikacija pomaga zaščititi vaš račun. Če jo omogočite, boste za prijavo v aplikacije ali storitve, ki ne podpirajo dvofaktorske avtentikacije (npr. poštni odjemalci), potrebovali gesla za aplikacije.",
+ "tls_enforce_in": "Uveljavi dohodni TLS",
+ "tls_enforce_out": "Uveljavi odhodni TLS",
+ "tls_policy": "Pravilnik o šifriranju",
+ "user_settings": "Uporabniške nastavitve",
+ "username": "Uporabniško ime",
+ "value": "Vrednost",
+ "week": "teden",
+ "weekly": "Tedensko",
+ "weeks": "tedni",
+ "with_app_password": "z geslom za aplikacijo",
+ "year": "leto",
+ "years": "leta",
+ "waiting": "Čakanje",
+ "q_all": "Vse kategorije",
+ "syncjob_EX_OK": "Uspeh"
+ },
+ "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.",
+ "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",
+ "is_not_primary_alias": "Preskočen neprimarni vzdevek %s",
+ "no_active_admin": "Zadnjega aktivnega skrbnika ni mogoče deaktivirati",
+ "quota_exceeded_scope": "Kvota domene presežena: V tem obsegu domene je mogoče ustvariti le neomejeno število poštnih predalov.",
+ "session_token": "Neveljaven žeton obrazca: Neujemanje žetonov",
+ "session_ua": "Neveljaven žeton obrazca: Napaka pri preverjanju uporabniškega agenta"
}
}
diff --git a/mailcow/data/web/lang/lang.tr-tr.json b/mailcow/data/web/lang/lang.tr-tr.json
index aa1b90d..bc1da77 100644
--- a/mailcow/data/web/lang/lang.tr-tr.json
+++ b/mailcow/data/web/lang/lang.tr-tr.json
@@ -1309,4 +1309,4 @@
"q_reject": "Reddedildi",
"week": "Hafta"
}
-}
\ No newline at end of file
+}
diff --git a/mailcow/data/web/lang/lang.uk-ua.json b/mailcow/data/web/lang/lang.uk-ua.json
index c6ded24..61c401a 100644
--- a/mailcow/data/web/lang/lang.uk-ua.json
+++ b/mailcow/data/web/lang/lang.uk-ua.json
@@ -1307,4 +1307,4 @@
},
"collapse_all": "Згорнути все"
}
-}
\ No newline at end of file
+}
diff --git a/mailcow/data/web/lang/lang.zh-cn.json b/mailcow/data/web/lang/lang.zh-cn.json
index 70a48a9..3c46eb8 100644
--- a/mailcow/data/web/lang/lang.zh-cn.json
+++ b/mailcow/data/web/lang/lang.zh-cn.json
@@ -108,7 +108,8 @@
"timeout2": "本地主机连接超时时间",
"username": "用户名",
"validate": "验证",
- "validation_success": "验证成功"
+ "validation_success": "验证成功",
+ "dry": "模拟同步(Dry run)"
},
"admin": {
"access": "权限管理",
@@ -358,7 +359,53 @@
"ip_check_disabled": "IP 检查已禁用。你可透过以下路径启用
系统 > 配置 > 选项 > 页面自定义",
"queue_unban": "解除封禁",
"allowed_methods": "访问控制允许方式",
- "allowed_origins": "访问控制允许原"
+ "allowed_origins": "访问控制允许原",
+ "iam": "身份识别提供者",
+ "iam_attribute_field": "Attribute 域",
+ "iam_authorize_url": "Authorization endpoint",
+ "iam_auth_flow": "认证流程",
+ "iam_basedn": "Base DN",
+ "iam_client_id": "客户端 ID",
+ "iam_client_secret": "客户端凭据",
+ "iam_client_scopes": "客户端 Scopes",
+ "iam_default_template": "默认模板",
+ "iam_default_template_description": "如果未为用户分配模板,则在创建邮箱时将使用默认模板,但在更新邮箱时不会使用默认模板。",
+ "iam_description": "配置外部认证提供者
如果已设置好属性映射,用户在首次登录时将会自动创建其 Mailbox。",
+ "iam_host": "Host",
+ "iam_host_info": "请输入一个或多个 LDAP 主机,使用英文逗号分隔。",
+ "iam_import_users": "导入用户",
+ "iam_mapping": "属性映射",
+ "iam_bindpass": "密码绑定(Bind Password)",
+ "iam_periodic_full_sync": "周期性全量同步",
+ "iam_port": "端口",
+ "iam_realm": "Realm",
+ "iam_redirect_url": "重定向 Url",
+ "iam_rest_flow": "Mailpassword 流程",
+ "iam_server_url": "服务器 Url",
+ "iam_sso": "单点登录(SSO)",
+ "iam_sync_interval": "同步/导入周期(min)",
+ "iam_test_connection": "测试连接",
+ "iam_token_url": "Token endpoint",
+ "iam_userinfo_url": "User info endpoint",
+ "iam_username_field": "Username 域",
+ "iam_binddn": "Bind DN",
+ "iam_use_ssl": "使用 SSL",
+ "iam_use_tls": "使用 StartTLS",
+ "iam_version": "版本",
+ "ignore_ssl_error": "忽略 SSL 错误",
+ "iam_auth_flow_info": "除了在单点登录(SSO)中使用的 Authorization Code 流程(在 Keycloak 中是标准流程)之外,mailcow 还支持使用 Credentials 的身份认证流程。Mailpassword 流程尝试通过 Keycloak 的 Admin REST API 验证用户凭据,mailcow 会从 Keycloak 中的 mailcow_password 属性中获取哈希后的密码。",
+ "filter": "过滤",
+ "iam_extra_permission": "要使以下设置生效,Keycloak 中的 mailcow 客户端需要一个 服务账户(Service account) 以及 查看用户(view-users) 的权限。",
+ "domainadmin_quicklink": "隐藏指向域管理员登陆页面的快捷链接",
+ "force_sso_text": "如果配置了外部的 OIDC 认证,这个选项隐藏默认的 mailcow 登陆界面,只显示单点登录(SSO)的按钮",
+ "iam_login_provisioning": "登录时自动创建用户",
+ "login_page": "登陆页面",
+ "iam_use_ssl_info": "如果使用了 SSL,且端口被设置为 389,该端口将自动被覆盖为 636。",
+ "quicklink_text": "显示或隐藏登陆表单下面指向其他登陆页面的快捷链接",
+ "user_quicklink": "隐藏指向用户登陆页面的快捷链接",
+ "admin_quicklink": "隐藏指向管理员登陆页面的快捷链接",
+ "force_sso": "强制要求单点登录(SSO)",
+ "user_link": "自定义链接"
},
"danger": {
"access_denied": "访问被拒绝或者表单数据无效",
@@ -495,7 +542,11 @@
"webauthn_authenticator_failed": "找不到所选的 authenticator",
"webauthn_publickey_failed": "没有为选定的身份验证器保存公钥",
"webauthn_username_failed": "所选的 authenticator 属于另一个账户",
- "demo_mode_enabled": "演示模式已开启"
+ "demo_mode_enabled": "演示模式已开启",
+ "generic_server_error": "服务器错误。请联系您的管理员。",
+ "authsource_in_use": "由于当前有一个或多个用户正在使用该身份提供者(IDP),因此无法更改或删除。",
+ "iam_test_connection": "连接失败",
+ "required_data_missing": "缺少需要的 %s 数据"
},
"debug": {
"chart_this_server": "图表 (此服务器)",
@@ -640,7 +691,7 @@
"sieve_desc": "简短描述",
"sieve_type": "过滤器类型",
"skipcrossduplicates": "跳过其他文件夹中已存在的邮件(保留已经存在的邮件)",
- "sogo_access": "直接转发给 SOGo",
+ "sogo_access": "直接转到 SOGo",
"sogo_access_info": "登录后,用户会自动跳转到 SOGo。",
"sogo_visible": "SOGo 显示的别名",
"sogo_visible_info": "此设置只影响 SOGo 上可显示的对象 (指向本地邮箱的共享或非共享别名地址)。如果设置为隐藏,则别名地址不会作为可选发件人的下拉项显示。",
@@ -744,7 +795,14 @@
"new_password_confirm": "确认新密码",
"reset_password": "重置密码",
"request_reset_password": "请求重置密码",
- "invalid_pass_reset_token": "密码重置 token 无效或已过期。
请重新获取新的密码重置链接。"
+ "invalid_pass_reset_token": "密码重置 token 无效或已过期。
请重新获取新的密码重置链接。",
+ "login_user": "用户登录",
+ "login_dadmin": "域管理员登录",
+ "login_admin": "管理员登录",
+ "login_linkstext": "不是正确的登陆页面?",
+ "login_usertext": "以用户身份登陆",
+ "login_domainadmintext": "以域管理员身份登陆",
+ "login_admintext": "以管理员身份登陆"
},
"mailbox": {
"action": "操作",
@@ -848,7 +906,7 @@
"recipient_map": "收件人映射",
"recipient_map_info": "收件人映射用于在邮件被发送前替换收件人的地址。",
"recipient_map_new": "新收件人",
- "recipient_map_new_info": "新收件人必须为合法的邮箱地址。",
+ "recipient_map_new_info": "收件人映射的目标必须为合法的邮件地址或域名。",
"recipient_map_old": "原收件人",
"recipient_map_old_info": "原收件人必须为合法的邮箱地址。",
"recipient_maps": "收件人映射",
@@ -919,7 +977,8 @@
"max_quota": "每个信箱的最大容量配额",
"relay_unknown": "转发未知信箱",
"templates": "模板",
- "template": "模板"
+ "template": "模板",
+ "iam": "身份提供者(IDP)"
},
"oauth2": {
"access_denied": "请作为邮箱所有者登录以使用 OAuth2 授权。",
@@ -950,7 +1009,7 @@
"neutral_danger": "无危险等级",
"notified": "已发送通知",
"qhandler_success": "已成功向系统发送请求,现在你可以关闭这个窗口了。",
- "qid": "Rspamd QID",
+ "qid": "Rspamd 队列ID(QID)",
"qinfo": "隔离系统会把已被拒绝接收的邮件以及作为拷贝发送到垃圾箱的邮件保存到数据库中 (发件人不会知道)。\r\n
\"学习为垃圾并删除\" 会根据贝叶斯定理将消息作为垃圾学习并计算其模糊特征以拒绝未来收到相似消息。\r\n
请注意,这取决于你的系统资源,学习多个消息可能会花费较长时间。
黑名单中项目会被隔离系统排除。",
"qitem": "隔离项目",
"quarantine": "隔离",
@@ -1097,7 +1156,9 @@
"recovery_email_sent": "重置邮件已发送至 %s",
"template_added": "新增了模板 %s",
"template_modified": "模板 %s 的修改已保存",
- "template_removed": "模板 ID %s 已删除"
+ "template_removed": "模板 ID %s 已删除",
+ "iam_test_connection": "连接成功",
+ "custom_login_modified": "登陆选项保存成功"
},
"tfa": {
"api_register": "%s 使用了 Yubico Cloud API,请在此为你的密钥获取 API 密钥",
@@ -1292,7 +1353,11 @@
"password_reset_info": "如果不提供密码重置邮箱,此功能将无法使用。",
"pushover_sound": "声音",
"value": "值",
- "attribute": "属性"
+ "attribute": "属性",
+ "protocols": "协议",
+ "authentication": "认证",
+ "tfa_info": "两步验证有助于保护您的账户安全。启用后,对于不支持两步验证的应用程序或服务(例如邮件客户端),需要使用应用专用密码进行登录。",
+ "overview": "概览"
},
"warning": {
"cannot_delete_self": "不能删除已登录的用户",
@@ -1332,4 +1397,4 @@
"loadingRecords": "加载中...",
"zeroRecords": "未找到符合条件的记录"
}
-}
\ No newline at end of file
+}
diff --git a/mailcow/data/web/sogo-auth.php b/mailcow/data/web/sogo-auth.php
index 5e0f3c3..00709fe 100644
--- a/mailcow/data/web/sogo-auth.php
+++ b/mailcow/data/web/sogo-auth.php
@@ -94,7 +94,8 @@ elseif (isset($_SERVER['HTTP_X_ORIGINAL_URI']) && strcasecmp(substr($_SERVER['HT
!empty($email) &&
filter_var($email, FILTER_VALIDATE_EMAIL) &&
is_array($_SESSION[$session_var_user_allowed]) &&
- in_array($email, $_SESSION[$session_var_user_allowed])
+ in_array($email, $_SESSION[$session_var_user_allowed]) &&
+ !$_SESSION['pending_pw_update']
) {
$username = $email;
$password = file_get_contents("/etc/sogo-sso/sogo-sso.pass");
diff --git a/mailcow/data/web/templates/admin/tab-config-customize.twig b/mailcow/data/web/templates/admin/tab-config-customize.twig
index c2071c3..aecf184 100644
--- a/mailcow/data/web/templates/admin/tab-config-customize.twig
+++ b/mailcow/data/web/templates/admin/tab-config-customize.twig
@@ -51,7 +51,41 @@
{{ lang.admin.merged_vars_hint|raw }}