mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2026-02-19 07:36:23 +00:00
Compare commits
88 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a729d89bf | ||
|
|
74b4097ee0 | ||
|
|
e00d0d5f8d | ||
|
|
c5e399ebc2 | ||
|
|
cb9ca772b1 | ||
|
|
162f05ccda | ||
|
|
6c97c4f372 | ||
|
|
6d4fcacd83 | ||
|
|
1994f706c0 | ||
|
|
e34afd3fdd | ||
|
|
a6f71faf46 | ||
|
|
b26ccc2019 | ||
|
|
b1c1e403d2 | ||
|
|
8753ea2be6 | ||
|
|
9fee568082 | ||
|
|
294a406b91 | ||
|
|
8b933f1967 | ||
|
|
824a473fea | ||
|
|
7f790c5360 | ||
|
|
52431a3942 | ||
|
|
8017394e9d | ||
|
|
76194be7dd | ||
|
|
3b23afa0ff | ||
|
|
6e00d653ce | ||
|
|
b6c036496d | ||
|
|
5d7c9b20bc | ||
|
|
4b400eadb1 | ||
|
|
ab2abda8cc | ||
|
|
2fe21e9641 | ||
|
|
b7ed6982d8 | ||
|
|
fd927853cb | ||
|
|
c48f4f4ab8 | ||
|
|
a4c006828e | ||
|
|
b56291f62b | ||
|
|
0cdf7647c4 | ||
|
|
8fe1cc4961 | ||
|
|
bf050f17c4 | ||
|
|
edd85dea8d | ||
|
|
3bf90c1f73 | ||
|
|
292306b191 | ||
|
|
b3e0a66222 | ||
|
|
e994cf4d05 | ||
|
|
cc0dc2eae0 | ||
|
|
a001a0584f | ||
|
|
926af87cfb | ||
|
|
b0339372b5 | ||
|
|
e398cb91e9 | ||
|
|
6ee0303b0f | ||
|
|
68616c2d57 | ||
|
|
f8de520d29 | ||
|
|
10077ece31 | ||
|
|
c918726143 | ||
|
|
3885b07a99 | ||
|
|
fcf27d640d | ||
|
|
82fde23cc1 | ||
|
|
cbca306fc1 | ||
|
|
6a8986fe4f | ||
|
|
ff34eb12e2 | ||
|
|
fbecd60e56 | ||
|
|
c37bf0bb32 | ||
|
|
2208d7e6fb | ||
|
|
e426c3a7e7 | ||
|
|
03fccb28e9 | ||
|
|
8fbfd99dd6 | ||
|
|
7f7a869678 | ||
|
|
73257151c4 | ||
|
|
efb2572f0f | ||
|
|
66aa28b5de | ||
|
|
987a027339 | ||
|
|
eea81e21f6 | ||
|
|
a689109f44 | ||
|
|
58c0a46459 | ||
|
|
2dbe8bf4ca | ||
|
|
ef7ec06947 | ||
|
|
fc7ea7a247 | ||
|
|
9b478b3859 | ||
|
|
384e5a2e64 | ||
|
|
aadeeb0df3 | ||
|
|
f33d82ffc1 | ||
|
|
ffeeb179e1 | ||
|
|
8e2d3a6db5 | ||
|
|
70126e1f0c | ||
|
|
b9ae174a6a | ||
|
|
9715c57314 | ||
|
|
b9f8959d92 | ||
|
|
5c851f2935 | ||
|
|
914a8204d4 | ||
|
|
6dc0bdbfa3 |
12
.github/ISSUE_TEMPLATE/pr_to_nighty_template.yml
vendored
12
.github/ISSUE_TEMPLATE/pr_to_nighty_template.yml
vendored
@@ -1,13 +1,3 @@
|
||||
## :memo: Brief description
|
||||
<!-- Diff summary - START -->
|
||||
<!-- Diff summary - END -->
|
||||
|
||||
|
||||
## :computer: Commits
|
||||
<!-- Diff commits - START -->
|
||||
<!-- Diff commits - END -->
|
||||
|
||||
|
||||
## :file_folder: Modified files
|
||||
<!-- Diff files - START -->
|
||||
<!-- Diff files - END -->
|
||||
<!-- Diff files - END -->
|
||||
38
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
38
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
<!-- _Please make sure to review and check all of these items, otherwise we might refuse your PR:_ -->
|
||||
|
||||
## Contribution Guidelines
|
||||
|
||||
* [ ] I've read the [contribution guidelines](https://github.com/mailcow/mailcow-dockerized/blob/master/CONTRIBUTING.md) and wholeheartedly agree them
|
||||
|
||||
<!-- _NOTE: this tickbox is needed to fullfil on order to get your PR reviewed._ -->
|
||||
|
||||
## What does this PR include?
|
||||
|
||||
### Short Description
|
||||
|
||||
<!-- Please write a short description, what your PR does here. -->
|
||||
|
||||
### Affected Containers
|
||||
|
||||
<!-- Please list all affected Docker containers here, which you commited changes to -->
|
||||
|
||||
<!--
|
||||
|
||||
Please list them like this:
|
||||
|
||||
- container1
|
||||
- container2
|
||||
- container3
|
||||
etc.
|
||||
|
||||
-->
|
||||
|
||||
## Did you run tests?
|
||||
|
||||
### What did you tested?
|
||||
|
||||
<!-- Please write shortly, what you've tested (which components etc.). -->
|
||||
|
||||
### What were the final results? (Awaited, got)
|
||||
|
||||
<!-- Please write shortly, what your final tests results were. What did you awaited? Was the outcome the awaited one? -->
|
||||
@@ -1,33 +1,52 @@
|
||||
# Contribution Guidelines (Last modified on 18th December 2023)
|
||||
# Contribution Guidelines
|
||||
**_Last modified on 15th August 2024_**
|
||||
|
||||
First of all, thank you for wanting to provide a bugfix or a new feature for the mailcow community, it's because of your help that the project can continue to grow!
|
||||
|
||||
## Pull Requests (Last modified on 18th December 2023)
|
||||
As we want to keep mailcow's development structured we setup these Guidelines which helps you to create your issue/pull request accordingly.
|
||||
|
||||
**PLEASE NOTE, THAT WE MIGHT CLOSE ISSUES/PULL REQUESTS IF THEY DON'T FULLFIL OUR WRITTEN GUIDELINES WRITTEN INSIDE THIS DOCUMENT**. So please check this guidelines before you propose a Issue/Pull Request.
|
||||
|
||||
## Topics
|
||||
|
||||
- [Pull Requests](#pull-requests)
|
||||
- [Issue Reporting](#issue-reporting)
|
||||
- [Guidelines](#issue-reporting-guidelines)
|
||||
- [Issue Report Guide](#issue-report-guide)
|
||||
|
||||
## Pull Requests
|
||||
**_Last modified on 15th August 2024_**
|
||||
|
||||
However, please note the following regarding pull requests:
|
||||
|
||||
1. **ALWAYS** create your PR using the staging branch of your locally cloned mailcow instance, as the pull request will end up in said staging branch of mailcow once approved. Ideally, you should simply create a new branch for your pull request that is named after the type of your PR (e.g. `feat/` for function updates or `fix/` for bug fixes) and the actual content (e.g. `sogo-6.0.0` for an update from SOGo to version 6 or `html-escape` for a fix that includes escaping HTML in mailcow).
|
||||
2. Please **keep** this pull request branch **clean** and free of commits that have nothing to do with the changes you have made (e.g. commits from other users from other branches). *If you make changes to the `update.sh` script or other scripts that trigger a commit, there is usually a developer mode for clean working in this case.
|
||||
3. **Test your changes before you commit them as a pull request.** <ins>If possible</ins>, write a small **test log** or demonstrate the functionality with a **screenshot or GIF**. *We will of course also test your pull request ourselves, but proof from you will save us the question of whether you have tested your own changes yourself.*
|
||||
4. Please **ALWAYS** create the actual pull request against the staging branch and **NEVER** directly against the master branch. *If you forget to do this, our moobot will remind you to switch the branch to staging.*
|
||||
5. Wait for a merge commit: It may happen that we do not accept your pull request immediately or sometimes not at all for various reasons. Please do not be disappointed if this is the case. We always endeavor to incorporate any meaningful changes from the community into the mailcow project.
|
||||
6. If you are planning larger and therefore more complex pull requests, it would be advisable to first announce this in a separate issue and then start implementing it after the idea has been accepted in order to avoid unnecessary frustration and effort!
|
||||
2. **ALWAYS** report/request issues/features in the english language, even though mailcow is a german based company. This is done to allow other GitHub users to reply to your issues/requests too which did not speak german or other languages besides english.
|
||||
3. Please **keep** this pull request branch **clean** and free of commits that have nothing to do with the changes you have made (e.g. commits from other users from other branches). *If you make changes to the `update.sh` script or other scripts that trigger a commit, there is usually a developer mode for clean working in this case.*
|
||||
4. **Test your changes before you commit them as a pull request.** <ins>If possible</ins>, write a small **test log** or demonstrate the functionality with a **screenshot or GIF**. *We will of course also test your pull request ourselves, but proof from you will save us the question of whether you have tested your own changes yourself.*
|
||||
5. **Please use** the pull request template we provide once creating a pull request. *HINT: During editing you encounter comments which looks like: `<!-- CONTENT -->`. These can be removed or kept, as they will not rendered later on GitHub! Please only create actual content without the said comments.*
|
||||
6. Please **ALWAYS** create the actual pull request against the staging branch and **NEVER** directly against the master branch. *If you forget to do this, our moobot will remind you to switch the branch to staging.*
|
||||
7. Wait for a merge commit: It may happen that we do not accept your pull request immediately or sometimes not at all for various reasons. Please do not be disappointed if this is the case. We always endeavor to incorporate any meaningful changes from the community into the mailcow project.
|
||||
8. If you are planning larger and therefore more complex pull requests, it would be advisable to first announce this in a separate issue and then start implementing it after the idea has been accepted in order to avoid unnecessary frustration and effort!
|
||||
|
||||
---
|
||||
|
||||
## Issue Reporting (Last modified on 18th December 2023)
|
||||
## Issue Reporting
|
||||
**_Last modified on 15th August 2024_**
|
||||
|
||||
If you plan to report a issue within mailcow please read and understand the following rules:
|
||||
|
||||
### Issue Reporting Guidelines
|
||||
|
||||
1. **ONLY** use the issue tracker for bug reports or improvement requests and NOT for support questions. For support questions you can either contact the [mailcow community on Telegram](https://docs.mailcow.email/#community-support-and-chat) or the mailcow team directly in exchange for a [support fee](https://docs.mailcow.email/#commercial-support).
|
||||
2. **ONLY** report an error if you have the **necessary know-how (at least the basics)** for the administration of an e-mail server and the usage of Docker. mailcow is a complex and fully-fledged e-mail server including groupware components on a Docker basement and it requires a bit of technical know-how for debugging and operating.
|
||||
3. **ONLY** report bugs that are contained in the latest mailcow release series. *The definition of the latest release series includes the last major patch (e.g. 2023-12) and all minor patches (revisions) below it (e.g. 2023-12a, b, c etc.).* New issue reports published starting from January 1, 2024 must meet this criterion, as versions below the latest releases are no longer supported by us.
|
||||
4. When reporting a problem, please be as detailed as possible and include even the smallest changes to your mailcow installation. Simply fill out the corresponding bug report form in detail and accurately to minimize possible questions.
|
||||
5. **Before you open an issue/feature request**, please first check whether a similar request already exists in the mailcow tracker on GitHub. If so, please include yourself in this request.
|
||||
6. When you create a issue/feature request: Please note that the creation does <ins>**not guarantee an instant implementation or fix by the mailcow team or the community**</ins>.
|
||||
7. Please **ALWAYS** anonymize any sensitive information in your bug report or feature request before submitting it.
|
||||
3. **ALWAYS** report/request issues/features in the english language, even though mailcow is a german based company. This is done to allow other GitHub users to reply to your issues/requests too which did not speak german or other languages besides english.
|
||||
4. **ONLY** report bugs that are contained in the latest mailcow release series. *The definition of the latest release series includes the last major patch (e.g. 2023-12) and all minor patches (revisions) below it (e.g. 2023-12a, b, c etc.).* New issue reports published starting from January 1, 2024 must meet this criterion, as versions below the latest releases are no longer supported by us.
|
||||
5. When reporting a problem, please be as detailed as possible and include even the smallest changes to your mailcow installation. Simply fill out the corresponding bug report form in detail and accurately to minimize possible questions.
|
||||
6. **Before you open an issue/feature request**, please first check whether a similar request already exists in the mailcow tracker on GitHub. If so, please include yourself in this request.
|
||||
7. When you create a issue/feature request: Please note that the creation does <ins>**not guarantee an instant implementation or fix by the mailcow team or the community**</ins>.
|
||||
8. Please **ALWAYS** anonymize any sensitive information in your bug report or feature request before submitting it.
|
||||
|
||||
### Quick guide to reporting problems:
|
||||
### Issue Report Guide
|
||||
1. Read your logs; follow them to see what the reason for your problem is.
|
||||
2. Follow the leads given to you in your logfiles and start investigating.
|
||||
3. Restarting the troubled service or the whole stack to see if the problem persists.
|
||||
@@ -36,4 +55,4 @@ If you plan to report a issue within mailcow please read and understand the foll
|
||||
6. [Create an issue](https://github.com/mailcow/mailcow-dockerized/issues/new/choose) over at our GitHub repository if you think your problem might be a bug or a missing feature you badly need. But please make sure, that you include **all the logs** and a full description to your problem.
|
||||
7. Ask your questions in our community-driven [support channels](https://docs.mailcow.email/#community-support-and-chat).
|
||||
|
||||
## When creating an issue/feature request or a pull request, you will be asked to confirm these guidelines.
|
||||
## When creating an issue/feature request or a pull request, you will be asked to confirm these guidelines.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
|
||||
RUN apk upgrade --no-cache \
|
||||
|
||||
@@ -123,7 +123,7 @@ done
|
||||
log_f "Database OK"
|
||||
|
||||
log_f "Waiting for Nginx..."
|
||||
until $(curl --output /dev/null --silent --head --fail http://nginx:8081); do
|
||||
until $(curl --output /dev/null --silent --head --fail http://nginx.${COMPOSE_PROJECT_NAME}_mailcow-network:8081); do
|
||||
sleep 2
|
||||
done
|
||||
log_f "Nginx OK"
|
||||
@@ -137,7 +137,7 @@ log_f "Resolver OK"
|
||||
# Waiting for domain table
|
||||
log_f "Waiting for domain table..."
|
||||
while [[ -z ${DOMAIN_TABLE} ]]; do
|
||||
curl --silent http://nginx/ >/dev/null 2>&1
|
||||
curl --silent http://nginx.${COMPOSE_PROJECT_NAME}_mailcow-network/ >/dev/null 2>&1
|
||||
DOMAIN_TABLE=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SHOW TABLES LIKE 'domain'" -Bs)
|
||||
[[ -z ${DOMAIN_TABLE} ]] && sleep 10
|
||||
done
|
||||
|
||||
@@ -2,32 +2,32 @@
|
||||
|
||||
# Reading container IDs
|
||||
# Wrapping as array to ensure trimmed content when calling $NGINX etc.
|
||||
NGINX=($(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"nginx-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " "))
|
||||
DOVECOT=($(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"dovecot-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " "))
|
||||
POSTFIX=($(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"postfix-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " "))
|
||||
NGINX=($(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"nginx-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " "))
|
||||
DOVECOT=($(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"dovecot-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " "))
|
||||
POSTFIX=($(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"postfix-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " "))
|
||||
|
||||
reload_nginx(){
|
||||
echo "Reloading Nginx..."
|
||||
NGINX_RELOAD_RET=$(curl -X POST --insecure https://dockerapi/containers/${NGINX}/exec -d '{"cmd":"reload", "task":"nginx"}' --silent -H 'Content-type: application/json' | jq -r .type)
|
||||
NGINX_RELOAD_RET=$(curl -X POST --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${NGINX}/exec -d '{"cmd":"reload", "task":"nginx"}' --silent -H 'Content-type: application/json' | jq -r .type)
|
||||
[[ ${NGINX_RELOAD_RET} != 'success' ]] && { echo "Could not reload Nginx, restarting container..."; restart_container ${NGINX} ; }
|
||||
}
|
||||
|
||||
reload_dovecot(){
|
||||
echo "Reloading Dovecot..."
|
||||
DOVECOT_RELOAD_RET=$(curl -X POST --insecure https://dockerapi/containers/${DOVECOT}/exec -d '{"cmd":"reload", "task":"dovecot"}' --silent -H 'Content-type: application/json' | jq -r .type)
|
||||
DOVECOT_RELOAD_RET=$(curl -X POST --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${DOVECOT}/exec -d '{"cmd":"reload", "task":"dovecot"}' --silent -H 'Content-type: application/json' | jq -r .type)
|
||||
[[ ${DOVECOT_RELOAD_RET} != 'success' ]] && { echo "Could not reload Dovecot, restarting container..."; restart_container ${DOVECOT} ; }
|
||||
}
|
||||
|
||||
reload_postfix(){
|
||||
echo "Reloading Postfix..."
|
||||
POSTFIX_RELOAD_RET=$(curl -X POST --insecure https://dockerapi/containers/${POSTFIX}/exec -d '{"cmd":"reload", "task":"postfix"}' --silent -H 'Content-type: application/json' | jq -r .type)
|
||||
POSTFIX_RELOAD_RET=$(curl -X POST --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${POSTFIX}/exec -d '{"cmd":"reload", "task":"postfix"}' --silent -H 'Content-type: application/json' | jq -r .type)
|
||||
[[ ${POSTFIX_RELOAD_RET} != 'success' ]] && { echo "Could not reload Postfix, restarting container..."; restart_container ${POSTFIX} ; }
|
||||
}
|
||||
|
||||
restart_container(){
|
||||
for container in $*; do
|
||||
echo "Restarting ${container}..."
|
||||
C_REST_OUT=$(curl -X POST --insecure https://dockerapi/containers/${container}/restart --silent | jq -r '.msg')
|
||||
C_REST_OUT=$(curl -X POST --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${container}/restart --silent | jq -r '.msg')
|
||||
echo "${C_REST_OUT}"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
RUN apk upgrade --no-cache \
|
||||
&& apk add --update --no-cache \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG PIP_BREAK_SYSTEM_PACKAGES=1
|
||||
WORKDIR /app
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
LABEL maintainer="The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced extractVersion=^(?<version>.*)$
|
||||
ARG GOSU_VERSION=1.16
|
||||
|
||||
ENV LANG C.UTF-8
|
||||
ENV LC_ALL C.UTF-8
|
||||
ENV LANG=C.UTF-8
|
||||
ENV LC_ALL=C.UTF-8
|
||||
|
||||
# Add groups and users before installing Dovecot to not break compatibility
|
||||
RUN addgroup -g 5000 vmail \
|
||||
@@ -132,4 +133,4 @@ COPY repl_health.sh /usr/local/bin/repl_health.sh
|
||||
COPY optimize-fts.sh /usr/local/bin/optimize-fts.sh
|
||||
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
CMD exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
|
||||
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
|
||||
|
||||
@@ -257,10 +257,14 @@ plugin {
|
||||
fts_autoindex_exclude2 = \Trash
|
||||
fts = flatcurve
|
||||
|
||||
# Maximum term length can be set via the 'maxlen' argument (maxlen is
|
||||
# specified in bytes, not number of UTF-8 characters)
|
||||
fts_tokenizer_email_address = maxlen=100
|
||||
fts_tokenizer_generic = algorithm=simple maxlen=30
|
||||
|
||||
# These are not flatcurve settings, but required for Dovecot FTS. See
|
||||
# Dovecot FTS Configuration link above for further information.
|
||||
fts_languages = en es de
|
||||
fts_tokenizer_generic = algorithm=simple
|
||||
fts_tokenizers = generic email-address
|
||||
|
||||
# OPTIONAL: Recommended default FTS core configuration
|
||||
@@ -407,14 +411,6 @@ sievec /var/vmail/sieve/global_sieve_after.sieve
|
||||
sievec /usr/lib/dovecot/sieve/report-spam.sieve
|
||||
sievec /usr/lib/dovecot/sieve/report-ham.sieve
|
||||
|
||||
for file in /var/vmail/*/*/sieve/*.sieve ; do
|
||||
if [[ "$file" == "/var/vmail/*/*/sieve/*.sieve" ]]; then
|
||||
continue
|
||||
fi
|
||||
sievec "$file" "$(dirname "$file")/../.dovecot.svbin"
|
||||
chown vmail:vmail "$(dirname "$file")/../.dovecot.svbin"
|
||||
done
|
||||
|
||||
# Fix permissions
|
||||
chown root:root /etc/dovecot/sql/*.conf
|
||||
chown root:dovecot /etc/dovecot/sql/dovecot-dict-sql-sieve* /etc/dovecot/sql/dovecot-dict-sql-quota* /etc/dovecot/lua/passwd-verify.lua
|
||||
|
||||
@@ -3,8 +3,8 @@ FILE=/tmp/mail$$
|
||||
cat > $FILE
|
||||
trap "/bin/rm -f $FILE" 0 1 2 3 13 15
|
||||
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 11" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd/fuzzydel
|
||||
cat ${FILE} | /usr/bin/curl -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd/learnham
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 13" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd/fuzzyadd
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 11" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd.${COMPOSE_PROJECT_NAME}_mailcow-network/fuzzydel
|
||||
cat ${FILE} | /usr/bin/curl -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd.${COMPOSE_PROJECT_NAME}_mailcow-network/learnham
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 13" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd.${COMPOSE_PROJECT_NAME}_mailcow-network/fuzzyadd
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -3,8 +3,8 @@ FILE=/tmp/mail$$
|
||||
cat > $FILE
|
||||
trap "/bin/rm -f $FILE" 0 1 2 3 13 15
|
||||
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 13" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd/fuzzydel
|
||||
cat ${FILE} | /usr/bin/curl -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd/learnspam
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 11" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd/fuzzyadd
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 13" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd.${COMPOSE_PROJECT_NAME}_mailcow-network/fuzzydel
|
||||
cat ${FILE} | /usr/bin/curl -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd.${COMPOSE_PROJECT_NAME}_mailcow-network/learnspam
|
||||
cat ${FILE} | /usr/bin/curl -H "Flag: 11" -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd.${COMPOSE_PROJECT_NAME}_mailcow-network/fuzzyadd
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -21,11 +21,11 @@ sed -i -e 's/\([^\\]\)\$\([^\/]\)/\1\\$\2/g' /etc/rspamd/custom/sa-rules
|
||||
|
||||
if [[ "$(cat /etc/rspamd/custom/sa-rules | md5sum | cut -d' ' -f1)" != "${HASH_SA_RULES}" ]]; then
|
||||
CONTAINER_NAME=rspamd-mailcow
|
||||
CONTAINER_ID=$(curl --silent --insecure https://dockerapi/containers/json | \
|
||||
CONTAINER_ID=$(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | \
|
||||
jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | \
|
||||
jq -rc "select( .name | tostring | contains(\"${CONTAINER_NAME}\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id")
|
||||
if [[ ! -z ${CONTAINER_ID} ]]; then
|
||||
curl --silent --insecure -XPOST --connect-timeout 15 --max-time 120 https://dockerapi/containers/${CONTAINER_ID}/restart
|
||||
curl --silent --insecure -XPOST --connect-timeout 15 --max-time 120 https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${CONTAINER_ID}/restart
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG PIP_BREAK_SYSTEM_PACKAGES=1
|
||||
WORKDIR /app
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
FROM php:8.2-fpm-alpine3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
FROM php:8.2-fpm-alpine3.18
|
||||
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
# renovate: datasource=github-tags depName=krakjoe/apcu versioning=semver-coerced extractVersion=^v(?<version>.*)$
|
||||
ARG APCU_PECL_VERSION=5.1.23
|
||||
|
||||
@@ -23,7 +23,8 @@ done
|
||||
# Check mysql_upgrade (master and slave)
|
||||
CONTAINER_ID=
|
||||
until [[ ! -z "${CONTAINER_ID}" ]] && [[ "${CONTAINER_ID}" =~ ^[[:alnum:]]*$ ]]; do
|
||||
CONTAINER_ID=$(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" 2> /dev/null | jq -rc "select( .name | tostring | contains(\"mysql-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" 2> /dev/null)
|
||||
CONTAINER_ID=$(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" 2> /dev/null | jq -rc "select( .name | tostring | contains(\"mysql-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" 2> /dev/null)
|
||||
echo "Could not get mysql-mailcow container id... trying again"
|
||||
sleep 2
|
||||
done
|
||||
echo "MySQL @ ${CONTAINER_ID}"
|
||||
@@ -34,7 +35,7 @@ until [[ ${SQL_UPGRADE_STATUS} == 'success' ]]; do
|
||||
echo "Tried to upgrade MySQL and failed, giving up after ${SQL_LOOP_C} retries and starting container (oops, not good)"
|
||||
break
|
||||
fi
|
||||
SQL_FULL_UPGRADE_RETURN=$(curl --silent --insecure -XPOST https://dockerapi/containers/${CONTAINER_ID}/exec -d '{"cmd":"system", "task":"mysql_upgrade"}' --silent -H 'Content-type: application/json')
|
||||
SQL_FULL_UPGRADE_RETURN=$(curl --silent --insecure -XPOST https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${CONTAINER_ID}/exec -d '{"cmd":"system", "task":"mysql_upgrade"}' --silent -H 'Content-type: application/json')
|
||||
SQL_UPGRADE_STATUS=$(echo ${SQL_FULL_UPGRADE_RETURN} | jq -r .type)
|
||||
SQL_LOOP_C=$((SQL_LOOP_C+1))
|
||||
echo "SQL upgrade iteration #${SQL_LOOP_C}"
|
||||
@@ -59,12 +60,12 @@ done
|
||||
|
||||
# doing post-installation stuff, if SQL was upgraded (master and slave)
|
||||
if [ ${SQL_CHANGED} -eq 1 ]; then
|
||||
POSTFIX=$(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" 2> /dev/null | jq -rc "select( .name | tostring | contains(\"postfix-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" 2> /dev/null)
|
||||
POSTFIX=$(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" 2> /dev/null | jq -rc "select( .name | tostring | contains(\"postfix-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" 2> /dev/null)
|
||||
if [[ -z "${POSTFIX}" ]] || ! [[ "${POSTFIX}" =~ ^[[:alnum:]]*$ ]]; then
|
||||
echo "Could not determine Postfix container ID, skipping Postfix restart."
|
||||
else
|
||||
echo "Restarting Postfix"
|
||||
curl -X POST --silent --insecure https://dockerapi/containers/${POSTFIX}/restart | jq -r '.msg'
|
||||
curl -X POST --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${POSTFIX}/restart | jq -r '.msg'
|
||||
echo "Sleeping 5 seconds..."
|
||||
sleep 5
|
||||
fi
|
||||
@@ -73,7 +74,7 @@ fi
|
||||
# Check mysql tz import (master and slave)
|
||||
TZ_CHECK=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT CONVERT_TZ('2019-11-02 23:33:00','Europe/Berlin','UTC') AS time;" -BN 2> /dev/null)
|
||||
if [[ -z ${TZ_CHECK} ]] || [[ "${TZ_CHECK}" == "NULL" ]]; then
|
||||
SQL_FULL_TZINFO_IMPORT_RETURN=$(curl --silent --insecure -XPOST https://dockerapi/containers/${CONTAINER_ID}/exec -d '{"cmd":"system", "task":"mysql_tzinfo_to_sql"}' --silent -H 'Content-type: application/json')
|
||||
SQL_FULL_TZINFO_IMPORT_RETURN=$(curl --silent --insecure -XPOST https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${CONTAINER_ID}/exec -d '{"cmd":"system", "task":"mysql_tzinfo_to_sql"}' --silent -H 'Content-type: application/json')
|
||||
echo "MySQL mysql_tzinfo_to_sql - debug output:"
|
||||
echo ${SQL_FULL_TZINFO_IMPORT_RETURN}
|
||||
fi
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
FROM debian:bookworm-slim
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ENV LC_ALL C
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
FROM debian:bullseye-slim
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
FROM debian:bookworm-slim
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ARG RSPAMD_VER=rspamd_3.7.5-2~8c86c1676
|
||||
ARG CODENAME=bullseye
|
||||
ENV LC_ALL C
|
||||
ARG RSPAMD_VER=rspamd_3.9.1-1~82f43560f
|
||||
ARG CODENAME=bookworm
|
||||
ENV LC_ALL=C
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
tzdata \
|
||||
@@ -12,11 +12,12 @@ RUN apt-get update && apt-get install -y \
|
||||
gnupg2 \
|
||||
apt-transport-https \
|
||||
dnsutils \
|
||||
netcat \
|
||||
netcat-traditional \
|
||||
wget \
|
||||
redis-tools \
|
||||
procps \
|
||||
nano \
|
||||
lua-cjson \
|
||||
&& arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \
|
||||
&& wget -P /tmp https://rspamd.com/apt-stable/pool/main/r/rspamd/${RSPAMD_VER}~${CODENAME}_${arch}.deb\
|
||||
&& apt install -y /tmp/${RSPAMD_VER}~${CODENAME}_${arch}.deb \
|
||||
|
||||
@@ -124,4 +124,190 @@ for file in /hooks/*; do
|
||||
fi
|
||||
done
|
||||
|
||||
# If DQS KEY is set in mailcow.conf add Spamhaus DQS RBLs
|
||||
if [[ ! -z ${SPAMHAUS_DQS_KEY} ]]; then
|
||||
cat <<EOF > /etc/rspamd/custom/dqs-rbl.conf
|
||||
# Autogenerated by mailcow. DO NOT TOUCH!
|
||||
spamhaus {
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.zen.dq.spamhaus.net";
|
||||
from = false;
|
||||
}
|
||||
spamhaus_from {
|
||||
from = true;
|
||||
received = false;
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.zen.dq.spamhaus.net";
|
||||
returncodes {
|
||||
SPAMHAUS_ZEN = [ "127.0.0.2", "127.0.0.3", "127.0.0.4", "127.0.0.5", "127.0.0.6", "127.0.0.7", "127.0.0.9", "127.0.0.10", "127.0.0.11" ];
|
||||
}
|
||||
}
|
||||
spamhaus_authbl_received {
|
||||
# Check if the sender client is listed in AuthBL (AuthBL is *not* part of ZEN)
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.authbl.dq.spamhaus.net";
|
||||
from = false;
|
||||
received = true;
|
||||
ipv6 = true;
|
||||
returncodes {
|
||||
SH_AUTHBL_RECEIVED = "127.0.0.20"
|
||||
}
|
||||
}
|
||||
spamhaus_dbl {
|
||||
# Add checks on the HELO string
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.dbl.dq.spamhaus.net";
|
||||
helo = true;
|
||||
rdns = true;
|
||||
dkim = true;
|
||||
disable_monitoring = true;
|
||||
returncodes {
|
||||
RBL_DBL_SPAM = "127.0.1.2";
|
||||
RBL_DBL_PHISH = "127.0.1.4";
|
||||
RBL_DBL_MALWARE = "127.0.1.5";
|
||||
RBL_DBL_BOTNET = "127.0.1.6";
|
||||
RBL_DBL_ABUSED_SPAM = "127.0.1.102";
|
||||
RBL_DBL_ABUSED_PHISH = "127.0.1.104";
|
||||
RBL_DBL_ABUSED_MALWARE = "127.0.1.105";
|
||||
RBL_DBL_ABUSED_BOTNET = "127.0.1.106";
|
||||
RBL_DBL_DONT_QUERY_IPS = "127.0.1.255";
|
||||
}
|
||||
}
|
||||
spamhaus_dbl_fullurls {
|
||||
ignore_defaults = true;
|
||||
no_ip = true;
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.dbl.dq.spamhaus.net";
|
||||
selector = 'urls:get_host'
|
||||
disable_monitoring = true;
|
||||
returncodes {
|
||||
DBLABUSED_SPAM_FULLURLS = "127.0.1.102";
|
||||
DBLABUSED_PHISH_FULLURLS = "127.0.1.104";
|
||||
DBLABUSED_MALWARE_FULLURLS = "127.0.1.105";
|
||||
DBLABUSED_BOTNET_FULLURLS = "127.0.1.106";
|
||||
}
|
||||
}
|
||||
spamhaus_zrd {
|
||||
# Add checks on the HELO string also for DQS
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.zrd.dq.spamhaus.net";
|
||||
helo = true;
|
||||
rdns = true;
|
||||
dkim = true;
|
||||
disable_monitoring = true;
|
||||
returncodes {
|
||||
RBL_ZRD_VERY_FRESH_DOMAIN = ["127.0.2.2", "127.0.2.3", "127.0.2.4"];
|
||||
RBL_ZRD_FRESH_DOMAIN = [
|
||||
"127.0.2.5", "127.0.2.6", "127.0.2.7", "127.0.2.8", "127.0.2.9", "127.0.2.10", "127.0.2.11", "127.0.2.12", "127.0.2.13", "127.0.2.14", "127.0.2.15", "127.0.2.16", "127.0.2.17", "127.0.2.18", "127.0.2.19", "127.0.2.20", "127.0.2.21", "127.0.2.22", "127.0.2.23", "127.0.2.24"
|
||||
];
|
||||
RBL_ZRD_DONT_QUERY_IPS = "127.0.2.255";
|
||||
}
|
||||
}
|
||||
"SPAMHAUS_ZEN_URIBL" {
|
||||
enabled = true;
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.zen.dq.spamhaus.net";
|
||||
resolve_ip = true;
|
||||
checks = ['urls'];
|
||||
replyto = true;
|
||||
emails = true;
|
||||
ipv4 = true;
|
||||
ipv6 = true;
|
||||
emails_domainonly = true;
|
||||
returncodes {
|
||||
URIBL_SBL = "127.0.0.2";
|
||||
URIBL_SBL_CSS = "127.0.0.3";
|
||||
URIBL_XBL = ["127.0.0.4", "127.0.0.5", "127.0.0.6", "127.0.0.7"];
|
||||
URIBL_PBL = ["127.0.0.10", "127.0.0.11"];
|
||||
URIBL_DROP = "127.0.0.9";
|
||||
}
|
||||
}
|
||||
SH_EMAIL_DBL {
|
||||
ignore_defaults = true;
|
||||
replyto = true;
|
||||
emails_domainonly = true;
|
||||
disable_monitoring = true;
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.dbl.dq.spamhaus.net";
|
||||
returncodes = {
|
||||
SH_EMAIL_DBL = [
|
||||
"127.0.1.2",
|
||||
"127.0.1.4",
|
||||
"127.0.1.5",
|
||||
"127.0.1.6"
|
||||
];
|
||||
SH_EMAIL_DBL_ABUSED = [
|
||||
"127.0.1.102",
|
||||
"127.0.1.104",
|
||||
"127.0.1.105",
|
||||
"127.0.1.106"
|
||||
];
|
||||
SH_EMAIL_DBL_DONT_QUERY_IPS = [ "127.0.1.255" ];
|
||||
}
|
||||
}
|
||||
SH_EMAIL_ZRD {
|
||||
ignore_defaults = true;
|
||||
replyto = true;
|
||||
emails_domainonly = true;
|
||||
disable_monitoring = true;
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.zrd.dq.spamhaus.net";
|
||||
returncodes = {
|
||||
SH_EMAIL_ZRD_VERY_FRESH_DOMAIN = ["127.0.2.2", "127.0.2.3", "127.0.2.4"];
|
||||
SH_EMAIL_ZRD_FRESH_DOMAIN = [
|
||||
"127.0.2.5", "127.0.2.6", "127.0.2.7", "127.0.2.8", "127.0.2.9", "127.0.2.10", "127.0.2.11", "127.0.2.12", "127.0.2.13", "127.0.2.14", "127.0.2.15", "127.0.2.16", "127.0.2.17", "127.0.2.18", "127.0.2.19", "127.0.2.20", "127.0.2.21", "127.0.2.22", "127.0.2.23", "127.0.2.24"
|
||||
];
|
||||
SH_EMAIL_ZRD_DONT_QUERY_IPS = [ "127.0.2.255" ];
|
||||
}
|
||||
}
|
||||
"DBL" {
|
||||
# override the defaults for DBL defined in modules.d/rbl.conf
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.dbl.dq.spamhaus.net";
|
||||
disable_monitoring = true;
|
||||
}
|
||||
"ZRD" {
|
||||
ignore_defaults = true;
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.zrd.dq.spamhaus.net";
|
||||
no_ip = true;
|
||||
dkim = true;
|
||||
emails = true;
|
||||
emails_domainonly = true;
|
||||
urls = true;
|
||||
returncodes = {
|
||||
ZRD_VERY_FRESH_DOMAIN = ["127.0.2.2", "127.0.2.3", "127.0.2.4"];
|
||||
ZRD_FRESH_DOMAIN = ["127.0.2.5", "127.0.2.6", "127.0.2.7", "127.0.2.8", "127.0.2.9", "127.0.2.10", "127.0.2.11", "127.0.2.12", "127.0.2.13", "127.0.2.14", "127.0.2.15", "127.0.2.16", "127.0.2.17", "127.0.2.18", "127.0.2.19", "127.0.2.20", "127.0.2.21", "127.0.2.22", "127.0.2.23", "127.0.2.24"];
|
||||
}
|
||||
}
|
||||
spamhaus_sbl_url {
|
||||
ignore_defaults = true
|
||||
rbl = "${SPAMHAUS_DQS_KEY}.sbl.dq.spamhaus.net";
|
||||
checks = ['urls'];
|
||||
disable_monitoring = true;
|
||||
returncodes {
|
||||
SPAMHAUS_SBL_URL = "127.0.0.2";
|
||||
}
|
||||
}
|
||||
|
||||
SH_HBL_EMAIL {
|
||||
ignore_defaults = true;
|
||||
rbl = "_email.${SPAMHAUS_DQS_KEY}.hbl.dq.spamhaus.net";
|
||||
emails_domainonly = false;
|
||||
selector = "from('smtp').lower;from('mime').lower";
|
||||
ignore_whitelist = true;
|
||||
checks = ['emails', 'replyto'];
|
||||
hash = "sha1";
|
||||
returncodes = {
|
||||
SH_HBL_EMAIL = [
|
||||
"127.0.3.2"
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
spamhaus_dqs_hbl {
|
||||
symbol = "HBL_FILE_UNKNOWN";
|
||||
rbl = "_file.${SPAMHAUS_DQS_KEY}.hbl.dq.spamhaus.net.";
|
||||
selector = "attachments('rbase32', 'sha256')";
|
||||
ignore_whitelist = true;
|
||||
ignore_defaults = true;
|
||||
returncodes {
|
||||
SH_HBL_FILE_MALICIOUS = "127.0.3.10";
|
||||
SH_HBL_FILE_SUSPICIOUS = "127.0.3.15";
|
||||
}
|
||||
}
|
||||
EOF
|
||||
else
|
||||
rm -rf /etc/rspamd/custom/dqs-rbl.conf
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
FROM debian:bullseye-slim
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
LABEL maintainer="The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ARG DEBIAN_VERSION=bullseye
|
||||
ARG DEBIAN_VERSION=bookworm
|
||||
ARG SOGO_DEBIAN_REPOSITORY=http://www.axis.cz/linux/debian
|
||||
# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced extractVersion=^(?<version>.*)$
|
||||
ARG GOSU_VERSION=1.17
|
||||
ENV LC_ALL C
|
||||
ENV LC_ALL=C
|
||||
|
||||
# Prerequisites
|
||||
RUN echo "Building from repository $SOGO_DEBIAN_REPOSITORY" \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@version: 3.28
|
||||
@version: 3.38
|
||||
@include "scl.conf"
|
||||
options {
|
||||
chain_hostnames(off);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@version: 3.28
|
||||
@version: 3.38
|
||||
@include "scl.conf"
|
||||
options {
|
||||
chain_hostnames(off);
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
RUN apk add --update --no-cache \
|
||||
curl \
|
||||
bind-tools \
|
||||
coreutils \
|
||||
unbound \
|
||||
bash \
|
||||
openssl \
|
||||
drill \
|
||||
tzdata \
|
||||
syslog-ng \
|
||||
supervisor \
|
||||
&& curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache \
|
||||
&& chown root:unbound /etc/unbound \
|
||||
&& adduser unbound tty \
|
||||
&& adduser unbound tty \
|
||||
&& chmod 775 /etc/unbound
|
||||
|
||||
EXPOSE 53/udp 53/tcp
|
||||
@@ -21,9 +24,13 @@ COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||
|
||||
# healthcheck (dig, ping)
|
||||
COPY healthcheck.sh /healthcheck.sh
|
||||
COPY syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
|
||||
COPY supervisord.conf /etc/supervisor/supervisord.conf
|
||||
COPY stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
|
||||
|
||||
RUN chmod +x /healthcheck.sh
|
||||
HEALTHCHECK --interval=30s --timeout=30s CMD [ "/healthcheck.sh" ]
|
||||
HEALTHCHECK --interval=30s --timeout=10s \
|
||||
CMD sh -c '[ -f /tmp/healthcheck_status ] && [ "$(cat /tmp/healthcheck_status)" -eq 0 ] || exit 1'
|
||||
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
|
||||
CMD ["/usr/sbin/unbound"]
|
||||
CMD exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
|
||||
|
||||
@@ -1,76 +1,102 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Skip Unbound (DNS Resolver) Healthchecks (NOT Recommended!)
|
||||
if [[ "${SKIP_UNBOUND_HEALTHCHECK}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
SKIP_UNBOUND_HEALTHCHECK=y
|
||||
fi
|
||||
STATUS_FILE="/tmp/healthcheck_status"
|
||||
RUNS=0
|
||||
|
||||
# Reset logfile
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S"): Starting health check - logs can be found in /var/log/healthcheck.log"
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S"): Starting health check" > /var/log/healthcheck.log
|
||||
|
||||
# Declare log function for logfile inside container
|
||||
function log_to_file() {
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S"): $1" >> /var/log/healthcheck.log
|
||||
# Declare log function for logfile to stdout
|
||||
function log_to_stdout() {
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S"): $1"
|
||||
}
|
||||
|
||||
# General Ping function to check general pingability
|
||||
function check_ping() {
|
||||
declare -a ipstoping=("1.1.1.1" "8.8.8.8" "9.9.9.9")
|
||||
declare -a ipstoping=("1.1.1.1" "8.8.8.8" "9.9.9.9")
|
||||
local fail_tolerance=1
|
||||
local failures=0
|
||||
|
||||
for ip in "${ipstoping[@]}" ; do
|
||||
ping -q -c 3 -w 5 "$ip"
|
||||
if [ $? -ne 0 ]; then
|
||||
log_to_file "Healthcheck: Couldn't ping $ip for 5 seconds... Gave up!"
|
||||
log_to_file "Please check your internet connection or firewall rules to fix this error, because a simple ping test should always go through from the unbound container!"
|
||||
return 1
|
||||
fi
|
||||
for ip in "${ipstoping[@]}" ; do
|
||||
success=false
|
||||
for ((i=1; i<=3; i++)); do
|
||||
ping -q -c 3 -w 5 "$ip" > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
success=true
|
||||
break
|
||||
else
|
||||
log_to_stdout "Healthcheck: Failed to ping $ip on attempt $i. Trying again..."
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$success" = false ]; then
|
||||
log_to_stdout "Healthcheck: Couldn't ping $ip after 3 attempts. Marking this IP as failed."
|
||||
((failures++))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $failures -gt $fail_tolerance ]; then
|
||||
log_to_stdout "Healthcheck: Too many ping failures ($fail_tolerance failures allowed, you got $failures failures), marking Healthcheck as unhealthy..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
|
||||
log_to_file "Healthcheck: Ping Checks WORKING properly!"
|
||||
return 0
|
||||
}
|
||||
|
||||
# General DNS Resolve Check against Unbound Resolver himself
|
||||
function check_dns() {
|
||||
declare -a domains=("mailcow.email" "github.com" "hub.docker.com")
|
||||
declare -a domains=("fuzzy.mailcow.email" "github.com" "hub.docker.com")
|
||||
local fail_tolerance=1
|
||||
local failures=0
|
||||
|
||||
for domain in "${domains[@]}" ; do
|
||||
for ((i=1; i<=3; i++)); do
|
||||
dig +short +timeout=2 +tries=1 "$domain" @127.0.0.1 > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
log_to_file "Healthcheck: DNS Resolution Failed on $i attempt! Trying again..."
|
||||
if [ $i -eq 3 ]; then
|
||||
log_to_file "Healthcheck: DNS Resolution not possible after $i attempts... Gave up!"
|
||||
log_to_file "Maybe check your outbound firewall, as it needs to resolve DNS over TCP AND UDP!"
|
||||
return 1
|
||||
fi
|
||||
for domain in "${domains[@]}" ; do
|
||||
success=false
|
||||
for ((i=1; i<=3; i++)); do
|
||||
dig_output=$(dig +short +timeout=2 +tries=1 "$domain" @127.0.0.1 2>/dev/null)
|
||||
dig_rc=$?
|
||||
|
||||
if [ $dig_rc -ne 0 ] || [ -z "$dig_output" ]; then
|
||||
log_to_stdout "Healthcheck: DNS Resolution Failed on attempt $i for $domain! Trying again..."
|
||||
else
|
||||
success=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
log_to_file "Healthcheck: DNS Resolver WORKING properly!"
|
||||
return 0
|
||||
|
||||
if [ "$success" = false ]; then
|
||||
log_to_stdout "Healthcheck: DNS Resolution not possible after 3 attempts for $domain... Gave up!"
|
||||
((failures++))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $failures -gt $fail_tolerance ]; then
|
||||
log_to_stdout "Healthcheck: Too many DNS failures ($fail_tolerance failures allowed, you got $failures failures), marking Healthcheck as unhealthy..."
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
if [[ ${SKIP_UNBOUND_HEALTHCHECK} == "y" ]]; then
|
||||
log_to_file "Healthcheck: ALL CHECKS WERE SKIPPED! Unbound is healthy!"
|
||||
exit 0
|
||||
fi
|
||||
while true; do
|
||||
|
||||
# run checks, if check is not returning 0 (return value if check is ok), healthcheck will exit with 1 (marked in docker as unhealthy)
|
||||
check_ping
|
||||
if [[ ${SKIP_UNBOUND_HEALTHCHECK} == "y" ]]; then
|
||||
log_to_stdout "Healthcheck: ALL CHECKS WERE SKIPPED! Unbound is healthy!"
|
||||
echo "0" > $STATUS_FILE
|
||||
sleep 365d
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
# run checks, if check is not returning 0 (return value if check is ok), healthcheck will exit with 1 (marked in docker as unhealthy)
|
||||
check_ping
|
||||
PING_STATUS=$?
|
||||
|
||||
check_dns
|
||||
check_dns
|
||||
DNS_STATUS=$?
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
if [ $PING_STATUS -ne 0 ] || [ $DNS_STATUS -ne 0 ]; then
|
||||
echo "1" > $STATUS_FILE
|
||||
|
||||
log_to_file "Healthcheck: ALL CHECKS WERE SUCCESSFUL! Unbound is healthy!"
|
||||
exit 0
|
||||
else
|
||||
echo "0" > $STATUS_FILE
|
||||
fi
|
||||
|
||||
sleep 30
|
||||
|
||||
done
|
||||
10
data/Dockerfiles/unbound/stop-supervisor.sh
Executable file
10
data/Dockerfiles/unbound/stop-supervisor.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
printf "READY\n";
|
||||
|
||||
while read line; do
|
||||
echo "Processing Event: $line" >&2;
|
||||
kill -3 $(cat "/var/run/supervisord.pid")
|
||||
done < /dev/stdin
|
||||
|
||||
rm -rf /tmp/healthcheck_status
|
||||
32
data/Dockerfiles/unbound/supervisord.conf
Normal file
32
data/Dockerfiles/unbound/supervisord.conf
Normal file
@@ -0,0 +1,32 @@
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
user=root
|
||||
pidfile=/var/run/supervisord.pid
|
||||
|
||||
[program:syslog-ng]
|
||||
command=/usr/sbin/syslog-ng --foreground --no-caps
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autostart=true
|
||||
|
||||
[program:unbound]
|
||||
command=/usr/sbin/unbound
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
|
||||
[program:unbound-healthcheck]
|
||||
command=/bin/bash /healthcheck.sh
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
|
||||
[eventlistener:processes]
|
||||
command=/usr/local/sbin/stop-supervisor.sh
|
||||
events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL
|
||||
21
data/Dockerfiles/unbound/syslog-ng.conf
Normal file
21
data/Dockerfiles/unbound/syslog-ng.conf
Normal file
@@ -0,0 +1,21 @@
|
||||
@version: 4.5
|
||||
@include "scl.conf"
|
||||
options {
|
||||
chain_hostnames(off);
|
||||
flush_lines(0);
|
||||
use_dns(no);
|
||||
use_fqdn(no);
|
||||
owner("root"); group("adm"); perm(0640);
|
||||
stats(freq(0));
|
||||
keep_timestamp(no);
|
||||
bad_hostname("^gconfd$");
|
||||
};
|
||||
source s_dgram {
|
||||
unix-dgram("/dev/log");
|
||||
internal();
|
||||
};
|
||||
destination d_stdout { pipe("/dev/stdout"); };
|
||||
log {
|
||||
source(s_dgram);
|
||||
destination(d_stdout);
|
||||
};
|
||||
@@ -1,5 +1,6 @@
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
# Installation
|
||||
RUN apk add --update \
|
||||
|
||||
@@ -169,9 +169,13 @@ function notify_error() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Escape subject and body (https://stackoverflow.com/a/2705678)
|
||||
ESCAPED_SUBJECT=$(echo ${SUBJECT} | sed -e 's/[\/&]/\\&/g')
|
||||
ESCAPED_BODY=$(echo ${BODY} | sed -e 's/[\/&]/\\&/g')
|
||||
|
||||
# Replace subject and body placeholders
|
||||
WEBHOOK_BODY=$(echo ${WATCHDOG_NOTIFY_WEBHOOK_BODY} | sed "s/\$SUBJECT\|\${SUBJECT}/$SUBJECT/g" | sed "s/\$BODY\|\${BODY}/$BODY/g")
|
||||
|
||||
WEBHOOK_BODY=$(echo ${WATCHDOG_NOTIFY_WEBHOOK_BODY} | sed -e "s/\$SUBJECT\|\${SUBJECT}/$ESCAPED_SUBJECT/g" -e "s/\$BODY\|\${BODY}/$ESCAPED_BODY/g")
|
||||
|
||||
# POST to webhook
|
||||
curl -X POST -H "Content-Type: application/json" ${CURL_VERBOSE} -d "${WEBHOOK_BODY}" ${WATCHDOG_NOTIFY_WEBHOOK}
|
||||
|
||||
@@ -191,12 +195,12 @@ get_container_ip() {
|
||||
else
|
||||
sleep 0.5
|
||||
# get long container id for exact match
|
||||
CONTAINER_ID=($(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring == \"${1}\") | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id"))
|
||||
CONTAINER_ID=($(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring == \"${1}\") | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id"))
|
||||
# returned id can have multiple elements (if scaled), shuffle for random test
|
||||
CONTAINER_ID=($(printf "%s\n" "${CONTAINER_ID[@]}" | shuf))
|
||||
if [[ ! -z ${CONTAINER_ID} ]]; then
|
||||
for matched_container in "${CONTAINER_ID[@]}"; do
|
||||
CONTAINER_IPS=($(curl --silent --insecure https://dockerapi/containers/${matched_container}/json | jq -r '.NetworkSettings.Networks[].IPAddress'))
|
||||
CONTAINER_IPS=($(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${matched_container}/json | jq -r '.NetworkSettings.Networks[].IPAddress'))
|
||||
for ip_match in "${CONTAINER_IPS[@]}"; do
|
||||
# grep will do nothing if one of these vars is empty
|
||||
[[ -z ${ip_match} ]] && continue
|
||||
@@ -716,7 +720,7 @@ rspamd_checks() {
|
||||
From: watchdog@localhost
|
||||
|
||||
Empty
|
||||
' | usr/bin/curl --max-time 10 -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd/scan | jq -rc .default.required_score | sed 's/\..*//' )
|
||||
' | usr/bin/curl --max-time 10 -s --data-binary @- --unix-socket /var/lib/rspamd/rspamd.sock http://rspamd.${COMPOSE_PROJECT_NAME}_mailcow-network/scan | jq -rc .default.required_score | sed 's/\..*//' )
|
||||
if [[ ${SCORE} -ne 9999 ]]; then
|
||||
echo "Rspamd settings check failed, score returned: ${SCORE}" 2>> /tmp/rspamd-mailcow 1>&2
|
||||
err_count=$(( ${err_count} + 1))
|
||||
@@ -1095,12 +1099,12 @@ while true; do
|
||||
elif [[ ${com_pipe_answer} =~ .+-mailcow ]]; then
|
||||
kill -STOP ${BACKGROUND_TASKS[*]}
|
||||
sleep 10
|
||||
CONTAINER_ID=$(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"${com_pipe_answer}\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id")
|
||||
CONTAINER_ID=$(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"${com_pipe_answer}\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id")
|
||||
if [[ ! -z ${CONTAINER_ID} ]]; then
|
||||
if [[ "${com_pipe_answer}" == "php-fpm-mailcow" ]]; then
|
||||
HAS_INITDB=$(curl --silent --insecure -XPOST https://dockerapi/containers/${CONTAINER_ID}/top | jq '.msg.Processes[] | contains(["php -c /usr/local/etc/php -f /web/inc/init_db.inc.php"])' | grep true)
|
||||
HAS_INITDB=$(curl --silent --insecure -XPOST https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${CONTAINER_ID}/top | jq '.msg.Processes[] | contains(["php -c /usr/local/etc/php -f /web/inc/init_db.inc.php"])' | grep true)
|
||||
fi
|
||||
S_RUNNING=$(($(date +%s) - $(curl --silent --insecure https://dockerapi/containers/${CONTAINER_ID}/json | jq .State.StartedAt | xargs -n1 date +%s -d)))
|
||||
S_RUNNING=$(($(date +%s) - $(curl --silent --insecure https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${CONTAINER_ID}/json | jq .State.StartedAt | xargs -n1 date +%s -d)))
|
||||
if [ ${S_RUNNING} -lt 360 ]; then
|
||||
log_msg "Container is running for less than 360 seconds, skipping action..."
|
||||
elif [[ ! -z ${HAS_INITDB} ]]; then
|
||||
@@ -1108,7 +1112,7 @@ while true; do
|
||||
sleep 60
|
||||
else
|
||||
log_msg "Sending restart command to ${CONTAINER_ID}..."
|
||||
curl --silent --insecure -XPOST https://dockerapi/containers/${CONTAINER_ID}/restart
|
||||
curl --silent --insecure -XPOST https://dockerapi.${COMPOSE_PROJECT_NAME}_mailcow-network/containers/${CONTAINER_ID}/restart
|
||||
notify_error "${com_pipe_answer}"
|
||||
log_msg "Wait for restarted container to settle and continue watching..."
|
||||
sleep 35
|
||||
|
||||
29
data/assets/templates/pw_reset_html.tpl
Normal file
29
data/assets/templates/pw_reset_html.tpl
Normal file
@@ -0,0 +1,29 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta name="x-apple-disable-message-reformatting" />
|
||||
<style>
|
||||
body {
|
||||
font-family: Helvetica, Arial, Sans-Serif;
|
||||
}
|
||||
/* mobile devices */
|
||||
@media all and (max-width: 480px) {
|
||||
.mob {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
Hello {{username2}},<br><br>
|
||||
|
||||
Somebody requested a new password for the {{hostname}} account associated with {{username}}.<br>
|
||||
<small>Date of the password reset request: {{date}}</small><br><br>
|
||||
|
||||
You can reset your password by clicking the link below:<br>
|
||||
<a href="{{link}}">{{link}}</a><br><br>
|
||||
|
||||
The link will be valid for the next {{token_lifetime}} minutes.<br><br>
|
||||
|
||||
If you did not request a new password, please ignore this email.<br>
|
||||
</body>
|
||||
</html>
|
||||
11
data/assets/templates/pw_reset_text.tpl
Normal file
11
data/assets/templates/pw_reset_text.tpl
Normal file
@@ -0,0 +1,11 @@
|
||||
Hello {{username2}},
|
||||
|
||||
Somebody requested a new password for the {{hostname}} account associated with {{username}}.
|
||||
Date of the password reset request: {{date}}
|
||||
|
||||
You can reset your password by clicking the link below:
|
||||
{{link}}
|
||||
|
||||
The link will be valid for the next {{token_lifetime}} minutes.
|
||||
|
||||
If you did not request a new password, please ignore this email.
|
||||
@@ -289,5 +289,20 @@ namespace inbox {
|
||||
mailbox "Kladde" {
|
||||
special_use = \Drafts
|
||||
}
|
||||
mailbox "Πρόχειρα" {
|
||||
special_use = \Drafts
|
||||
}
|
||||
mailbox "Απεσταλμένα" {
|
||||
special_use = \Sent
|
||||
}
|
||||
mailbox "Κάδος απορριμάτων" {
|
||||
special_use = \Trash
|
||||
}
|
||||
mailbox "Ανεπιθύμητα" {
|
||||
special_use = \Junk
|
||||
}
|
||||
mailbox "Αρχειοθετημένα" {
|
||||
special_use = \Archive
|
||||
}
|
||||
prefix =
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ smtp inet n - n - 1 postscreen
|
||||
-o postscreen_upstream_proxy_protocol=haproxy
|
||||
-o syslog_name=haproxy
|
||||
smtpd pass - - n - - smtpd
|
||||
-o smtpd_helo_restrictions=permit_mynetworks,reject_non_fqdn_helo_hostname
|
||||
-o smtpd_sasl_auth_enable=no
|
||||
-o smtpd_sender_restrictions=permit_mynetworks,reject_unlisted_sender,reject_unknown_sender_domain
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Whitelist generated by Postwhite v3.4 on Sat Jun 1 00:15:02 UTC 2024
|
||||
# Whitelist generated by Postwhite v3.4 on Thu Aug 1 00:16:45 UTC 2024
|
||||
# https://github.com/stevejenkins/postwhite/
|
||||
# 2000 total rules
|
||||
# 1954 total rules
|
||||
2a00:1450:4000::/36 permit
|
||||
2a01:111:f400::/48 permit
|
||||
2a01:111:f403:8000::/50 permit
|
||||
@@ -19,15 +19,8 @@
|
||||
8.20.114.31 permit
|
||||
8.25.194.0/23 permit
|
||||
8.25.196.0/23 permit
|
||||
8.39.54.0/23 permit
|
||||
8.40.222.0/23 permit
|
||||
10.162.0.0/16 permit
|
||||
12.130.86.238 permit
|
||||
13.70.32.43 permit
|
||||
13.72.50.45 permit
|
||||
13.74.143.28 permit
|
||||
13.78.233.182 permit
|
||||
13.92.31.129 permit
|
||||
13.110.208.0/21 permit
|
||||
13.110.209.0/24 permit
|
||||
13.110.216.0/22 permit
|
||||
@@ -48,6 +41,7 @@
|
||||
18.198.96.88 permit
|
||||
18.208.124.128/25 permit
|
||||
18.216.232.154 permit
|
||||
18.235.27.253 permit
|
||||
18.236.40.242 permit
|
||||
18.236.56.161 permit
|
||||
20.51.6.32/30 permit
|
||||
@@ -70,7 +64,6 @@
|
||||
20.112.250.133 permit
|
||||
20.118.139.208/30 permit
|
||||
20.141.10.196 permit
|
||||
20.185.213.0/24 permit
|
||||
20.185.214.0/27 permit
|
||||
20.185.214.32/27 permit
|
||||
20.185.214.64/27 permit
|
||||
@@ -110,18 +103,19 @@
|
||||
35.176.132.251 permit
|
||||
35.190.247.0/24 permit
|
||||
35.191.0.0/16 permit
|
||||
35.205.92.9 permit
|
||||
35.242.169.159 permit
|
||||
37.218.248.47 permit
|
||||
37.218.249.47 permit
|
||||
37.218.251.62 permit
|
||||
39.156.163.64/29 permit
|
||||
40.71.187.0/24 permit
|
||||
40.92.0.0/15 permit
|
||||
40.92.0.0/16 permit
|
||||
40.107.0.0/16 permit
|
||||
40.112.65.63 permit
|
||||
43.228.184.0/22 permit
|
||||
44.206.138.57 permit
|
||||
44.217.45.156 permit
|
||||
44.236.56.93 permit
|
||||
44.238.220.251 permit
|
||||
46.19.170.16 permit
|
||||
@@ -184,9 +178,8 @@
|
||||
50.18.125.237 permit
|
||||
50.18.126.162 permit
|
||||
50.31.32.0/19 permit
|
||||
50.31.36.205 permit
|
||||
50.56.130.220/30 permit
|
||||
51.137.58.21 permit
|
||||
51.140.75.55 permit
|
||||
52.1.14.157 permit
|
||||
52.5.230.59 permit
|
||||
52.27.5.72 permit
|
||||
@@ -207,7 +200,6 @@
|
||||
52.96.91.34 permit
|
||||
52.96.111.82 permit
|
||||
52.96.172.98 permit
|
||||
52.96.214.50 permit
|
||||
52.96.222.194 permit
|
||||
52.96.222.226 permit
|
||||
52.96.223.2 permit
|
||||
@@ -216,7 +208,6 @@
|
||||
52.100.0.0/14 permit
|
||||
52.103.0.0/17 permit
|
||||
52.119.213.144/28 permit
|
||||
52.165.175.144 permit
|
||||
52.185.106.240/28 permit
|
||||
52.200.59.0/24 permit
|
||||
52.205.61.79 permit
|
||||
@@ -229,10 +220,6 @@
|
||||
52.234.172.96/28 permit
|
||||
52.235.253.128 permit
|
||||
52.236.28.240/28 permit
|
||||
52.244.206.214 permit
|
||||
52.247.53.144 permit
|
||||
52.250.107.196 permit
|
||||
52.250.126.174 permit
|
||||
54.90.148.255 permit
|
||||
54.165.19.38 permit
|
||||
54.172.97.247 permit
|
||||
@@ -337,7 +324,6 @@
|
||||
65.110.161.77 permit
|
||||
65.123.29.213 permit
|
||||
65.123.29.220 permit
|
||||
65.154.166.0/24 permit
|
||||
65.212.180.36 permit
|
||||
66.102.0.0/20 permit
|
||||
66.119.150.192/26 permit
|
||||
@@ -456,7 +442,6 @@
|
||||
69.171.232.0/24 permit
|
||||
69.171.244.0/23 permit
|
||||
70.37.151.128/25 permit
|
||||
70.42.149.0/24 permit
|
||||
70.42.149.35 permit
|
||||
72.14.192.0/18 permit
|
||||
72.21.192.0/19 permit
|
||||
@@ -573,7 +558,6 @@
|
||||
77.238.189.142 permit
|
||||
77.238.189.146/31 permit
|
||||
77.238.189.148/30 permit
|
||||
81.7.169.128/25 permit
|
||||
81.223.46.0/27 permit
|
||||
82.165.159.2 permit
|
||||
82.165.159.3 permit
|
||||
@@ -1142,7 +1126,6 @@
|
||||
104.47.108.0/23 permit
|
||||
104.130.96.0/28 permit
|
||||
104.130.122.0/23 permit
|
||||
104.214.25.77 permit
|
||||
106.10.144.64/27 permit
|
||||
106.10.144.100/31 permit
|
||||
106.10.144.103 permit
|
||||
@@ -1264,6 +1247,7 @@
|
||||
106.10.244.0/24 permit
|
||||
106.39.212.64/29 permit
|
||||
106.50.16.0/28 permit
|
||||
107.20.18.111 permit
|
||||
107.20.210.250 permit
|
||||
108.174.0.0/24 permit
|
||||
108.174.0.215 permit
|
||||
@@ -1299,8 +1283,6 @@
|
||||
117.120.16.0/21 permit
|
||||
119.42.242.52/31 permit
|
||||
119.42.242.156 permit
|
||||
121.244.91.48 permit
|
||||
122.15.156.182 permit
|
||||
123.126.78.64/29 permit
|
||||
124.108.96.24/31 permit
|
||||
124.108.96.28/31 permit
|
||||
@@ -1356,25 +1338,14 @@
|
||||
134.170.141.64/26 permit
|
||||
134.170.143.0/24 permit
|
||||
134.170.174.0/24 permit
|
||||
135.84.80.0/24 permit
|
||||
135.84.81.0/24 permit
|
||||
135.84.82.0/24 permit
|
||||
135.84.83.0/24 permit
|
||||
135.84.216.0/22 permit
|
||||
136.143.160.0/24 permit
|
||||
136.143.161.0/24 permit
|
||||
136.143.178.49 permit
|
||||
136.143.182.0/23 permit
|
||||
136.143.184.0/24 permit
|
||||
136.143.188.0/24 permit
|
||||
136.143.190.0/23 permit
|
||||
136.147.128.0/20 permit
|
||||
136.147.135.0/24 permit
|
||||
136.147.176.0/20 permit
|
||||
136.147.176.0/24 permit
|
||||
136.147.182.0/24 permit
|
||||
136.147.224.0/20 permit
|
||||
136.179.50.206 permit
|
||||
138.91.172.26 permit
|
||||
139.60.152.0/22 permit
|
||||
139.138.35.44 permit
|
||||
139.138.46.121 permit
|
||||
@@ -1425,6 +1396,7 @@
|
||||
150.230.98.160 permit
|
||||
152.67.105.195 permit
|
||||
152.69.200.236 permit
|
||||
152.70.155.126 permit
|
||||
155.248.208.51 permit
|
||||
157.55.0.192/26 permit
|
||||
157.55.1.128/26 permit
|
||||
@@ -1435,7 +1407,6 @@
|
||||
157.55.61.0/24 permit
|
||||
157.55.157.128/25 permit
|
||||
157.55.225.0/25 permit
|
||||
157.55.254.216 permit
|
||||
157.56.24.0/25 permit
|
||||
157.56.120.128/26 permit
|
||||
157.56.232.0/21 permit
|
||||
@@ -1482,7 +1453,6 @@
|
||||
163.114.134.16 permit
|
||||
163.114.135.16 permit
|
||||
164.177.132.168/30 permit
|
||||
165.173.128.0/24 permit
|
||||
166.78.68.0/22 permit
|
||||
166.78.68.221 permit
|
||||
166.78.69.169 permit
|
||||
@@ -1491,6 +1461,7 @@
|
||||
167.89.0.0/17 permit
|
||||
167.89.46.159 permit
|
||||
167.89.54.103 permit
|
||||
167.89.60.95 permit
|
||||
167.89.64.9 permit
|
||||
167.89.65.0 permit
|
||||
167.89.65.53 permit
|
||||
@@ -1509,11 +1480,6 @@
|
||||
168.245.12.252 permit
|
||||
168.245.46.9 permit
|
||||
168.245.127.231 permit
|
||||
169.148.129.0/24 permit
|
||||
169.148.131.0/24 permit
|
||||
169.148.142.10 permit
|
||||
169.148.144.0/25 permit
|
||||
169.148.144.10 permit
|
||||
170.10.68.0/22 permit
|
||||
170.10.128.0/24 permit
|
||||
170.10.129.0/24 permit
|
||||
@@ -1668,15 +1634,7 @@
|
||||
199.16.156.0/22 permit
|
||||
199.33.145.1 permit
|
||||
199.33.145.32 permit
|
||||
199.34.22.36 permit
|
||||
199.59.148.0/22 permit
|
||||
199.67.80.2 permit
|
||||
199.67.80.20 permit
|
||||
199.67.82.2 permit
|
||||
199.67.82.20 permit
|
||||
199.67.84.0/24 permit
|
||||
199.67.86.0/24 permit
|
||||
199.67.88.0/24 permit
|
||||
199.101.161.130 permit
|
||||
199.101.162.0/25 permit
|
||||
199.122.120.0/21 permit
|
||||
@@ -1733,8 +1691,6 @@
|
||||
204.92.114.187 permit
|
||||
204.92.114.203 permit
|
||||
204.92.114.204/31 permit
|
||||
204.141.32.0/23 permit
|
||||
204.141.42.0/23 permit
|
||||
204.220.160.0/20 permit
|
||||
204.232.168.0/24 permit
|
||||
205.139.110.0/24 permit
|
||||
@@ -1753,6 +1709,7 @@
|
||||
205.251.233.36 permit
|
||||
206.25.247.143 permit
|
||||
206.25.247.155 permit
|
||||
206.55.144.0/20 permit
|
||||
206.165.246.80/29 permit
|
||||
206.191.224.0/19 permit
|
||||
206.246.157.1 permit
|
||||
@@ -1770,7 +1727,6 @@
|
||||
207.46.132.128/27 permit
|
||||
207.46.198.0/25 permit
|
||||
207.46.200.0/27 permit
|
||||
207.46.225.107 permit
|
||||
207.58.147.64/28 permit
|
||||
207.67.38.0/24 permit
|
||||
207.67.98.192/27 permit
|
||||
@@ -1986,8 +1942,6 @@
|
||||
2603:1030:20e:3::23c permit
|
||||
2603:1030:b:3::152 permit
|
||||
2603:1030:c02:8::14 permit
|
||||
2607:13c0:0001:0000:0000:0000:0000:7000/116 permit
|
||||
2607:13c0:0002:0000:0000:0000:0000:1000/116 permit
|
||||
2607:f8b0:4000::/36 permit
|
||||
2620:109:c003:104::/64 permit
|
||||
2620:109:c003:104::215 permit
|
||||
|
||||
@@ -21,6 +21,10 @@ FREEMAIL_TO_UNDISC_RCPT {
|
||||
SOGO_CONTACT_EXCLUDE {
|
||||
expression = "(-WHITELISTED_FWD_HOST | -g+:policies) & ^SOGO_CONTACT & !DMARC_POLICY_ALLOW";
|
||||
}
|
||||
# Remove MAILCOW_WHITE symbol for senders with broken policy recieved not from fwd hosts
|
||||
MAILCOW_WHITE_EXCLUDE {
|
||||
expression = "^MAILCOW_WHITE & (-DMARC_POLICY_REJECT | -DMARC_POLICY_QUARANTINE | -R_SPF_PERMFAIL) & !WHITELISTED_FWD_HOST";
|
||||
}
|
||||
# Spoofed header from and broken policy (excluding sieve host, rspamd host, whitelisted senders, authenticated senders and forward hosts)
|
||||
SPOOFED_UNAUTH {
|
||||
expression = "!MAILCOW_AUTH & !MAILCOW_WHITE & !RSPAMD_HOST & !SIEVE_HOST & MAILCOW_DOMAIN_HEADER_FROM & !WHITELISTED_FWD_HOST & -g+:policies";
|
||||
@@ -103,4 +107,4 @@ CLAMD_JS_MALWARE {
|
||||
expression = "CLAM_SECI_JS & !MAILCOW_WHITE";
|
||||
description = "JS malware found, Securite JS malware Flag set through ClamAV";
|
||||
score = 8;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ rbls {
|
||||
interserver_ip {
|
||||
symbol = "RBL_INTERSERVER_IP";
|
||||
rbl = "rbl.interserver.net";
|
||||
from = true;
|
||||
ipv6 = false;
|
||||
returncodes {
|
||||
RBL_INTERSERVER_BAD_IP = "127.0.0.2";
|
||||
@@ -19,4 +20,7 @@ rbls {
|
||||
RBL_INTERSERVER_BAD_URI = "127.0.0.2";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.include(try=true,override=true,priority=5) "$LOCAL_CONFDIR/custom/dqs-rbl.conf"
|
||||
|
||||
}
|
||||
@@ -17,4 +17,261 @@ symbols = {
|
||||
score = 4.0;
|
||||
description = "Listed on Interserver RBL";
|
||||
}
|
||||
|
||||
"SPAMHAUS_ZEN" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"SH_AUTHBL_RECEIVED" {
|
||||
weight = 4.0;
|
||||
}
|
||||
"RBL_DBL_SPAM" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"RBL_DBL_PHISH" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"RBL_DBL_MALWARE" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"RBL_DBL_BOTNET" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"RBL_DBL_ABUSED_SPAM" {
|
||||
weight = 3.0;
|
||||
}
|
||||
"RBL_DBL_ABUSED_PHISH" {
|
||||
weight = 3.0;
|
||||
}
|
||||
"RBL_DBL_ABUSED_MALWARE" {
|
||||
weight = 3.0;
|
||||
}
|
||||
"RBL_DBL_ABUSED_BOTNET" {
|
||||
weight = 3.0;
|
||||
}
|
||||
"RBL_ZRD_VERY_FRESH_DOMAIN" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"RBL_ZRD_FRESH_DOMAIN" {
|
||||
weight = 4.0;
|
||||
}
|
||||
"ZRD_VERY_FRESH_DOMAIN" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"ZRD_FRESH_DOMAIN" {
|
||||
weight = 4.0;
|
||||
}
|
||||
"SH_EMAIL_DBL" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"SH_EMAIL_DBL_ABUSED" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"SH_EMAIL_ZRD_VERY_FRESH_DOMAIN" {
|
||||
weight = 7.0;
|
||||
}
|
||||
"SH_EMAIL_ZRD_FRESH_DOMAIN" {
|
||||
weight = 4.0;
|
||||
}
|
||||
"RBL_DBL_DONT_QUERY_IPS" {
|
||||
weight = 0.0;
|
||||
}
|
||||
"RBL_ZRD_DONT_QUERY_IPS" {
|
||||
weight = 0.0;
|
||||
}
|
||||
"SH_EMAIL_ZRD_DONT_QUERY_IPS" {
|
||||
weight = 0.0;
|
||||
}
|
||||
"SH_EMAIL_DBL_DONT_QUERY_IPS" {
|
||||
weight = 0.0;
|
||||
}
|
||||
"DBL" {
|
||||
weight = 0.0;
|
||||
description = "DBL unknown result";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_SPAM" {
|
||||
weight = 7;
|
||||
description = "DBL uribl spam";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_PHISH" {
|
||||
weight = 7;
|
||||
description = "DBL uribl phishing";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_MALWARE" {
|
||||
weight = 7;
|
||||
description = "DBL uribl malware";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_BOTNET" {
|
||||
weight = 7;
|
||||
description = "DBL uribl botnet C&C domain";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
|
||||
"DBLABUSED_SPAM_FULLURLS" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit spam";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBLABUSED_PHISH_FULLURLS" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit phish";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBLABUSED_MALWARE_FULLURLS" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit malware";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBLABUSED_BOTNET_FULLURLS" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit botnet";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"DBL_ABUSE" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit spam";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_ABUSE_REDIR" {
|
||||
weight = 1.5;
|
||||
description = "DBL uribl abused spammed redirector domain";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_ABUSE_PHISH" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit phish";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_ABUSE_MALWARE" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit malware";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_ABUSE_BOTNET" {
|
||||
weight = 5.5;
|
||||
description = "DBL uribl abused legit botnet C&C";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_PROHIBIT" {
|
||||
weight = 0.0;
|
||||
description = "DBL uribl IP queries prohibited!";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_BLOCKED_OPENRESOLVER" {
|
||||
weight = 0.0;
|
||||
description = "You are querying Spamhaus from an open resolver, please see https://www.spamhaus.org/returnc/pub/";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"DBL_BLOCKED" {
|
||||
weight = 0.0;
|
||||
description = "You are exceeding the query limit, please see https://www.spamhaus.org/returnc/vol/";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"SPAMHAUS_ZEN_URIBL" {
|
||||
weight = 0.0;
|
||||
description = "Spamhaus ZEN URIBL: Filtered result";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"URIBL_SBL" {
|
||||
weight = 6.5;
|
||||
description = "A domain in the message body resolves to an IP listed in Spamhaus SBL";
|
||||
one_shot = true;
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"URIBL_SBL_CSS" {
|
||||
weight = 6.5;
|
||||
description = "A domain in the message body resolves to an IP listed in Spamhaus SBL CSS";
|
||||
one_shot = true;
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"URIBL_PBL" {
|
||||
weight = 0.01;
|
||||
description = "A domain in the message body resolves to an IP listed in Spamhaus PBL";
|
||||
one_shot = true;
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"URIBL_DROP" {
|
||||
weight = 6.5;
|
||||
description = "A domain in the message body resolves to an IP listed in Spamhaus DROP";
|
||||
one_shot = true;
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"URIBL_XBL" {
|
||||
weight = 5.0;
|
||||
description = "A domain in the message body resolves to an IP listed in Spamhaus XBL";
|
||||
one_shot = true;
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
"SPAMHAUS_SBL_URL" {
|
||||
weight = 6.5;
|
||||
description = "A numeric URL in the message body is listed in Spamhaus SBL";
|
||||
one_shot = true;
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"SH_HBL_EMAIL" {
|
||||
weight = 7;
|
||||
description = "Email listed in HBL";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"SH_HBL_FILE_MALICIOUS" {
|
||||
weight = 7;
|
||||
description = "An attachment hash is listed in Spamhaus HBL as malicious";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"SH_HBL_FILE_SUSPICIOUS" {
|
||||
weight = 5;
|
||||
description = "An attachment hash is listed in Spamhaus HBL as suspicious";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"RBL_SPAMHAUS_CW_BTC" {
|
||||
score = 7;
|
||||
description = "Bitcoin found in Spamhaus cryptowallet list";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"RBL_SPAMHAUS_CW_ETH" {
|
||||
score = 7;
|
||||
description = "Ethereum found in Spamhaus cryptowallet list";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"RBL_SPAMHAUS_CW_BCH" {
|
||||
score = 7;
|
||||
description = "Bitcoinhash found in Spamhaus cryptowallet list";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"RBL_SPAMHAUS_CW_XMR" {
|
||||
score = 7;
|
||||
description = "Monero found in Spamhaus cryptowallet list";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"RBL_SPAMHAUS_CW_LTC" {
|
||||
score = 7;
|
||||
description = "Litecoin found in Spamhaus cryptowallet list";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"RBL_SPAMHAUS_CW_XRP" {
|
||||
score = 7;
|
||||
description = "Ripple found in Spamhaus cryptowallet list";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
"RBL_SPAMHAUS_HBL_URL" {
|
||||
score = 7;
|
||||
description = "URL found in spamhaus HBL blocklist";
|
||||
groups = ["spamhaus"];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
classifier "bayes" {
|
||||
# name = "custom"; # 'name' parameter must be set if multiple classifiers are defined
|
||||
learn_condition = 'return require("lua_bayes_learn").can_learn';
|
||||
new_schema = true;
|
||||
tokenizer {
|
||||
name = "osb";
|
||||
}
|
||||
backend = "redis";
|
||||
min_tokens = 11;
|
||||
min_learns = 5;
|
||||
new_schema = true;
|
||||
expire = 2592000;
|
||||
expire = 7776000;
|
||||
statfile {
|
||||
symbol = "BAYES_HAM";
|
||||
spam = false;
|
||||
|
||||
@@ -107,6 +107,7 @@ $template_data = [
|
||||
'f2b_banlist_url' => getBaseUrl() . "/api/v1/get/fail2ban/banlist/" . $f2b_data['banlist_id'],
|
||||
'q_data' => quarantine('settings'),
|
||||
'qn_data' => quota_notification('get'),
|
||||
'pw_reset_data' => reset_password('get_notification'),
|
||||
'rsettings_map' => file_get_contents('http://nginx:8081/settings.php'),
|
||||
'rsettings' => $rsettings,
|
||||
'rspamd_regex_maps' => $rspamd_regex_maps,
|
||||
|
||||
@@ -1073,13 +1073,17 @@ function update_sogo_static_view($mailbox = null) {
|
||||
function edit_user_account($_data) {
|
||||
global $lang;
|
||||
global $pdo;
|
||||
|
||||
$_data_log = $_data;
|
||||
!isset($_data_log['user_new_pass']) ?: $_data_log['user_new_pass'] = '*';
|
||||
!isset($_data_log['user_new_pass2']) ?: $_data_log['user_new_pass2'] = '*';
|
||||
!isset($_data_log['user_old_pass']) ?: $_data_log['user_old_pass'] = '*';
|
||||
|
||||
$username = $_SESSION['mailcow_cc_username'];
|
||||
$role = $_SESSION['mailcow_cc_role'];
|
||||
$password_old = $_data['user_old_pass'];
|
||||
$pw_recovery_email = $_data['pw_recovery_email'];
|
||||
|
||||
if (filter_var($username, FILTER_VALIDATE_EMAIL === false) || $role != 'user') {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
@@ -1088,20 +1092,24 @@ function edit_user_account($_data) {
|
||||
);
|
||||
return false;
|
||||
}
|
||||
$stmt = $pdo->prepare("SELECT `password` FROM `mailbox`
|
||||
WHERE `kind` NOT REGEXP 'location|thing|group'
|
||||
AND `username` = :user");
|
||||
$stmt->execute(array(':user' => $username));
|
||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if (!verify_hash($row['password'], $password_old)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_data_log),
|
||||
'msg' => 'access_denied'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
if (!empty($_data['user_new_pass']) && !empty($_data['user_new_pass2'])) {
|
||||
|
||||
// edit password
|
||||
if (!empty($password_old) && !empty($_data['user_new_pass']) && !empty($_data['user_new_pass2'])) {
|
||||
$stmt = $pdo->prepare("SELECT `password` FROM `mailbox`
|
||||
WHERE `kind` NOT REGEXP 'location|thing|group'
|
||||
AND `username` = :user");
|
||||
$stmt->execute(array(':user' => $username));
|
||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if (!verify_hash($row['password'], $password_old)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_data_log),
|
||||
'msg' => 'access_denied'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$password_new = $_data['user_new_pass'];
|
||||
$password_new2 = $_data['user_new_pass2'];
|
||||
if (password_check($password_new, $password_new2) !== true) {
|
||||
@@ -1116,8 +1124,29 @@ function edit_user_account($_data) {
|
||||
':password_hashed' => $password_hashed,
|
||||
':username' => $username
|
||||
));
|
||||
|
||||
update_sogo_static_view();
|
||||
}
|
||||
update_sogo_static_view();
|
||||
// edit password recovery email
|
||||
elseif (isset($pw_recovery_email)) {
|
||||
if (!isset($_SESSION['acl']['pw_reset']) || $_SESSION['acl']['pw_reset'] != "1" ) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => 'access_denied'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$pw_recovery_email = (!filter_var($pw_recovery_email, FILTER_VALIDATE_EMAIL)) ? '' : $pw_recovery_email;
|
||||
$stmt = $pdo->prepare("UPDATE `mailbox` SET `attributes` = JSON_SET(`attributes`, '$.recovery_email', :recovery_email)
|
||||
WHERE `username` = :username");
|
||||
$stmt->execute(array(
|
||||
':recovery_email' => $pw_recovery_email,
|
||||
':username' => $username
|
||||
));
|
||||
}
|
||||
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $_data_log),
|
||||
@@ -1560,7 +1589,7 @@ function unset_tfa_key($_data) {
|
||||
}
|
||||
function get_tfa($username = null, $id = null) {
|
||||
global $pdo;
|
||||
if (isset($_SESSION['mailcow_cc_username'])) {
|
||||
if (empty($username) && isset($_SESSION['mailcow_cc_username'])) {
|
||||
$username = $_SESSION['mailcow_cc_username'];
|
||||
}
|
||||
elseif (empty($username)) {
|
||||
@@ -2261,6 +2290,386 @@ function uuid4() {
|
||||
|
||||
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
|
||||
}
|
||||
function reset_password($action, $data = null) {
|
||||
global $pdo;
|
||||
global $redis;
|
||||
global $mailcow_hostname;
|
||||
global $PW_RESET_TOKEN_LIMIT;
|
||||
global $PW_RESET_TOKEN_LIFETIME;
|
||||
|
||||
$_data_log = $data;
|
||||
if (isset($_data_log['new_password'])) $_data_log['new_password'] = '*';
|
||||
if (isset($_data_log['new_password2'])) $_data_log['new_password2'] = '*';
|
||||
|
||||
switch ($action) {
|
||||
case 'check':
|
||||
$token = $data;
|
||||
|
||||
$stmt = $pdo->prepare("SELECT `t1`.`username` FROM `reset_password` AS `t1` JOIN `mailbox` AS `t2` ON `t1`.`username` = `t2`.`username` WHERE `t1`.`token` = :token AND `t1`.`created` > DATE_SUB(NOW(), INTERVAL :lifetime MINUTE) AND `t2`.`active` = 1;");
|
||||
$stmt->execute(array(
|
||||
':token' => preg_replace('/[^a-zA-Z0-9-]/', '', $token),
|
||||
':lifetime' => $PW_RESET_TOKEN_LIFETIME
|
||||
));
|
||||
$return = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
return empty($return['username']) ? false : $return['username'];
|
||||
break;
|
||||
case 'issue':
|
||||
$username = $data;
|
||||
|
||||
// perform cleanup
|
||||
$stmt = $pdo->prepare("DELETE FROM `reset_password` WHERE created < DATE_SUB(NOW(), INTERVAL :lifetime MINUTE);");
|
||||
$stmt->execute(array(':lifetime' => $PW_RESET_TOKEN_LIFETIME));
|
||||
|
||||
if (filter_var($username, FILTER_VALIDATE_EMAIL) === false) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'access_denied'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$pw_reset_notification = reset_password('get_notification', 'raw');
|
||||
if (!$pw_reset_notification) return false;
|
||||
if (empty($pw_reset_notification['from']) || empty($pw_reset_notification['subject'])) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'password_reset_na'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$stmt = $pdo->prepare("SELECT * FROM `mailbox`
|
||||
WHERE `username` = :username");
|
||||
$stmt->execute(array(':username' => $username));
|
||||
$mailbox_data = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if (empty($mailbox_data)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'password_reset_invalid_user'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$mailbox_attr = json_decode($mailbox_data['attributes'], true);
|
||||
if (empty($mailbox_attr['recovery_email']) || filter_var($mailbox_attr['recovery_email'], FILTER_VALIDATE_EMAIL) === false) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => "password_reset_invalid_user"
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$stmt = $pdo->prepare("SELECT * FROM `reset_password`
|
||||
WHERE `username` = :username");
|
||||
$stmt->execute(array(':username' => $username));
|
||||
$generated_token_count = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||
if ($generated_token_count >= $PW_RESET_TOKEN_LIMIT) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => "reset_token_limit_exceeded"
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$token = implode('-', array(
|
||||
strtoupper(bin2hex(random_bytes(3))),
|
||||
strtoupper(bin2hex(random_bytes(3))),
|
||||
strtoupper(bin2hex(random_bytes(3))),
|
||||
strtoupper(bin2hex(random_bytes(3))),
|
||||
strtoupper(bin2hex(random_bytes(3)))
|
||||
));
|
||||
|
||||
$stmt = $pdo->prepare("INSERT INTO `reset_password` (`username`, `token`)
|
||||
VALUES (:username, :token)");
|
||||
$stmt->execute(array(
|
||||
':username' => $username,
|
||||
':token' => $token
|
||||
));
|
||||
|
||||
$reset_link = getBaseURL() . "/reset-password?token=" . $token;
|
||||
|
||||
$request_date = new DateTime();
|
||||
$locale_date = locale_get_default();
|
||||
$date_formatter = new IntlDateFormatter(
|
||||
$locale_date,
|
||||
IntlDateFormatter::FULL,
|
||||
IntlDateFormatter::FULL
|
||||
);
|
||||
$formatted_request_date = $date_formatter->format($request_date);
|
||||
|
||||
// set template vars
|
||||
// subject
|
||||
$pw_reset_notification['subject'] = str_replace('{{hostname}}', $mailcow_hostname, $pw_reset_notification['subject']);
|
||||
$pw_reset_notification['subject'] = str_replace('{{link}}', $reset_link, $pw_reset_notification['subject']);
|
||||
$pw_reset_notification['subject'] = str_replace('{{username}}', $username, $pw_reset_notification['subject']);
|
||||
$pw_reset_notification['subject'] = str_replace('{{username2}}', $mailbox_attr['recovery_email'], $pw_reset_notification['subject']);
|
||||
$pw_reset_notification['subject'] = str_replace('{{date}}', $formatted_request_date, $pw_reset_notification['subject']);
|
||||
$pw_reset_notification['subject'] = str_replace('{{token_lifetime}}', $PW_RESET_TOKEN_LIFETIME, $pw_reset_notification['subject']);
|
||||
// text
|
||||
$pw_reset_notification['text_tmpl'] = str_replace('{{hostname}}', $mailcow_hostname, $pw_reset_notification['text_tmpl']);
|
||||
$pw_reset_notification['text_tmpl'] = str_replace('{{link}}', $reset_link, $pw_reset_notification['text_tmpl']);
|
||||
$pw_reset_notification['text_tmpl'] = str_replace('{{username}}', $username, $pw_reset_notification['text_tmpl']);
|
||||
$pw_reset_notification['text_tmpl'] = str_replace('{{username2}}', $mailbox_attr['recovery_email'], $pw_reset_notification['text_tmpl']);
|
||||
$pw_reset_notification['text_tmpl'] = str_replace('{{date}}', $formatted_request_date, $pw_reset_notification['text_tmpl']);
|
||||
$pw_reset_notification['text_tmpl'] = str_replace('{{token_lifetime}}', $PW_RESET_TOKEN_LIFETIME, $pw_reset_notification['text_tmpl']);
|
||||
// html
|
||||
$pw_reset_notification['html_tmpl'] = str_replace('{{hostname}}', $mailcow_hostname, $pw_reset_notification['html_tmpl']);
|
||||
$pw_reset_notification['html_tmpl'] = str_replace('{{link}}', $reset_link, $pw_reset_notification['html_tmpl']);
|
||||
$pw_reset_notification['html_tmpl'] = str_replace('{{username}}', $username, $pw_reset_notification['html_tmpl']);
|
||||
$pw_reset_notification['html_tmpl'] = str_replace('{{username2}}', $mailbox_attr['recovery_email'], $pw_reset_notification['html_tmpl']);
|
||||
$pw_reset_notification['html_tmpl'] = str_replace('{{date}}', $formatted_request_date, $pw_reset_notification['html_tmpl']);
|
||||
$pw_reset_notification['html_tmpl'] = str_replace('{{token_lifetime}}', $PW_RESET_TOKEN_LIFETIME, $pw_reset_notification['html_tmpl']);
|
||||
|
||||
|
||||
$email_sent = reset_password('send_mail', array(
|
||||
"from" => $pw_reset_notification['from'],
|
||||
"to" => $mailbox_attr['recovery_email'],
|
||||
"subject" => $pw_reset_notification['subject'],
|
||||
"text" => $pw_reset_notification['text_tmpl'],
|
||||
"html" => $pw_reset_notification['html_tmpl']
|
||||
));
|
||||
|
||||
if (!$email_sent){
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => "recovery_email_failed"
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
list($localPart, $domainPart) = explode('@', $mailbox_attr['recovery_email']);
|
||||
if (strlen($localPart) > 1) {
|
||||
$maskedLocalPart = $localPart[0] . str_repeat('*', strlen($localPart) - 1);
|
||||
} else {
|
||||
$maskedLocalPart = "*";
|
||||
}
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => array("recovery_email_sent", $maskedLocalPart . '@' . $domainPart)
|
||||
);
|
||||
return array(
|
||||
"username" => $username,
|
||||
"issue" => "success"
|
||||
);
|
||||
break;
|
||||
case 'reset':
|
||||
$token = $data['token'];
|
||||
$new_password = $data['new_password'];
|
||||
$new_password2 = $data['new_password2'];
|
||||
$username = $data['username'];
|
||||
$check_tfa = $data['check_tfa'];
|
||||
|
||||
if (!$username || !$token) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'invalid_reset_token'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
# check new password
|
||||
if (!password_check($new_password, $new_password2)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($check_tfa){
|
||||
// check for tfa authenticators
|
||||
$authenticators = get_tfa($username);
|
||||
if (isset($authenticators['additional']) && is_array($authenticators['additional']) && count($authenticators['additional']) > 0) {
|
||||
$_SESSION['pending_mailcow_cc_username'] = $username;
|
||||
$_SESSION['pending_pw_reset_token'] = $token;
|
||||
$_SESSION['pending_pw_new_password'] = $new_password;
|
||||
$_SESSION['pending_tfa_methods'] = $authenticators['additional'];
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'info',
|
||||
'log' => array(__FUNCTION__, $user, '*'),
|
||||
'msg' => 'awaiting_tfa_confirmation'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
# set new password
|
||||
$password_hashed = hash_password($new_password);
|
||||
$stmt = $pdo->prepare("UPDATE `mailbox` SET
|
||||
`password` = :password_hashed,
|
||||
`attributes` = JSON_SET(`attributes`, '$.passwd_update', NOW())
|
||||
WHERE `username` = :username");
|
||||
$stmt->execute(array(
|
||||
':password_hashed' => $password_hashed,
|
||||
':username' => $username
|
||||
));
|
||||
|
||||
// perform cleanup
|
||||
$stmt = $pdo->prepare("DELETE FROM `reset_password` WHERE `username` = :username;");
|
||||
$stmt->execute(array(
|
||||
':username' => $username
|
||||
));
|
||||
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'password_changed_success'
|
||||
);
|
||||
return true;
|
||||
break;
|
||||
case 'get_notification':
|
||||
$type = $data;
|
||||
|
||||
try {
|
||||
$settings['from'] = $redis->Get('PW_RESET_FROM');
|
||||
$settings['subject'] = $redis->Get('PW_RESET_SUBJ');
|
||||
$settings['html_tmpl'] = $redis->Get('PW_RESET_HTML');
|
||||
$settings['text_tmpl'] = $redis->Get('PW_RESET_TEXT');
|
||||
if (empty($settings['html_tmpl']) && empty($settings['text_tmpl'])) {
|
||||
$settings['html_tmpl'] = file_get_contents("/tpls/pw_reset_html.tpl");
|
||||
$settings['text_tmpl'] = file_get_contents("/tpls/pw_reset_text.tpl");
|
||||
}
|
||||
|
||||
if ($type != "raw") {
|
||||
$settings['html_tmpl'] = htmlspecialchars($settings['html_tmpl']);
|
||||
$settings['text_tmpl'] = htmlspecialchars($settings['text_tmpl']);
|
||||
}
|
||||
}
|
||||
catch (RedisException $e) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => array('redis_error', $e)
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
return $settings;
|
||||
break;
|
||||
case 'send_mail':
|
||||
$from = $data['from'];
|
||||
$to = $data['to'];
|
||||
$text = $data['text'];
|
||||
$html = $data['html'];
|
||||
$subject = $data['subject'];
|
||||
|
||||
if (!filter_var($from, FILTER_VALIDATE_EMAIL)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'from_invalid'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
if (!filter_var($to, FILTER_VALIDATE_EMAIL)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'to_invalid'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
if (empty($subject)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'subject_empty'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
if (empty($text)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'text_empty'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
ini_set('max_execution_time', 0);
|
||||
ini_set('max_input_time', 0);
|
||||
$mail = new PHPMailer;
|
||||
$mail->Timeout = 10;
|
||||
$mail->SMTPOptions = array(
|
||||
'ssl' => array(
|
||||
'verify_peer' => false,
|
||||
'verify_peer_name' => false,
|
||||
'allow_self_signed' => true
|
||||
)
|
||||
);
|
||||
$mail->isSMTP();
|
||||
$mail->Host = 'postfix-mailcow';
|
||||
$mail->SMTPAuth = false;
|
||||
$mail->Port = 25;
|
||||
$mail->setFrom($from);
|
||||
$mail->Subject = $subject;
|
||||
$mail->CharSet ="UTF-8";
|
||||
if (!empty($html)) {
|
||||
$mail->Body = $html;
|
||||
$mail->AltBody = $text;
|
||||
}
|
||||
else {
|
||||
$mail->Body = $text;
|
||||
}
|
||||
$mail->XMailer = 'MooMail';
|
||||
$mail->AddAddress($to);
|
||||
if (!$mail->send()) {
|
||||
return false;
|
||||
}
|
||||
$mail->ClearAllRecipients();
|
||||
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($_SESSION['mailcow_cc_role'] != "admin") {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'access_denied'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
case 'edit_notification':
|
||||
$subject = $data['subject'];
|
||||
$from = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $data['from']);
|
||||
|
||||
$from = (!filter_var($from, FILTER_VALIDATE_EMAIL)) ? "" : $from;
|
||||
$subject = (empty($subject)) ? "" : $subject;
|
||||
$text = (empty($data['text_tmpl'])) ? "" : $data['text_tmpl'];
|
||||
$html = (empty($data['html_tmpl'])) ? "" : $data['html_tmpl'];
|
||||
|
||||
try {
|
||||
$redis->Set('PW_RESET_FROM', $from);
|
||||
$redis->Set('PW_RESET_SUBJ', $subject);
|
||||
$redis->Set('PW_RESET_HTML', $html);
|
||||
$redis->Set('PW_RESET_TEXT', $text);
|
||||
}
|
||||
catch (RedisException $e) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => array('redis_error', $e)
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'success',
|
||||
'log' => array(__FUNCTION__, $action, $_data_log),
|
||||
'msg' => 'saved_settings'
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function get_logs($application, $lines = false) {
|
||||
if ($lines === false) {
|
||||
|
||||
@@ -184,6 +184,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
'msg' => 'global_filter_written'
|
||||
);
|
||||
return true;
|
||||
break;
|
||||
case 'filter':
|
||||
$sieve = new Sieve\SieveParser();
|
||||
if (!isset($_SESSION['acl']['filters']) || $_SESSION['acl']['filters'] != "1" ) {
|
||||
@@ -1249,6 +1250,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
$_data['quarantine_notification'] = (in_array('quarantine_notification', $_data['acl'])) ? 1 : 0;
|
||||
$_data['quarantine_category'] = (in_array('quarantine_category', $_data['acl'])) ? 1 : 0;
|
||||
$_data['app_passwds'] = (in_array('app_passwds', $_data['acl'])) ? 1 : 0;
|
||||
$_data['pw_reset'] = (in_array('pw_reset', $_data['acl'])) ? 1 : 0;
|
||||
} else {
|
||||
$_data['spam_alias'] = intval($MAILBOX_DEFAULT_ATTRIBUTES['acl_spam_alias']);
|
||||
$_data['tls_policy'] = intval($MAILBOX_DEFAULT_ATTRIBUTES['acl_tls_policy']);
|
||||
@@ -1264,14 +1266,15 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
$_data['quarantine_notification'] = intval($MAILBOX_DEFAULT_ATTRIBUTES['acl_quarantine_notification']);
|
||||
$_data['quarantine_category'] = intval($MAILBOX_DEFAULT_ATTRIBUTES['acl_quarantine_category']);
|
||||
$_data['app_passwds'] = intval($MAILBOX_DEFAULT_ATTRIBUTES['acl_app_passwds']);
|
||||
$_data['pw_reset'] = intval($MAILBOX_DEFAULT_ATTRIBUTES['acl_pw_reset']);
|
||||
}
|
||||
|
||||
try {
|
||||
$stmt = $pdo->prepare("INSERT INTO `user_acl`
|
||||
(`username`, `spam_alias`, `tls_policy`, `spam_score`, `spam_policy`, `delimiter_action`, `syncjobs`, `eas_reset`, `sogo_profile_reset`,
|
||||
`pushover`, `quarantine`, `quarantine_attachments`, `quarantine_notification`, `quarantine_category`, `app_passwds`)
|
||||
`pushover`, `quarantine`, `quarantine_attachments`, `quarantine_notification`, `quarantine_category`, `app_passwds`, `pw_reset`)
|
||||
VALUES (:username, :spam_alias, :tls_policy, :spam_score, :spam_policy, :delimiter_action, :syncjobs, :eas_reset, :sogo_profile_reset,
|
||||
:pushover, :quarantine, :quarantine_attachments, :quarantine_notification, :quarantine_category, :app_passwds) ");
|
||||
:pushover, :quarantine, :quarantine_attachments, :quarantine_notification, :quarantine_category, :app_passwds, :pw_reset) ");
|
||||
$stmt->execute(array(
|
||||
':username' => $username,
|
||||
':spam_alias' => $_data['spam_alias'],
|
||||
@@ -1287,7 +1290,8 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
':quarantine_attachments' => $_data['quarantine_attachments'],
|
||||
':quarantine_notification' => $_data['quarantine_notification'],
|
||||
':quarantine_category' => $_data['quarantine_category'],
|
||||
':app_passwds' => $_data['app_passwds']
|
||||
':app_passwds' => $_data['app_passwds'],
|
||||
':pw_reset' => $_data['pw_reset']
|
||||
));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
@@ -1576,6 +1580,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
$attr['acl_quarantine_notification'] = (in_array('quarantine_notification', $_data['acl'])) ? 1 : 0;
|
||||
$attr['acl_quarantine_category'] = (in_array('quarantine_category', $_data['acl'])) ? 1 : 0;
|
||||
$attr['acl_app_passwds'] = (in_array('app_passwds', $_data['acl'])) ? 1 : 0;
|
||||
$attr['acl_pw_reset'] = (in_array('pw_reset', $_data['acl'])) ? 1 : 0;
|
||||
} else {
|
||||
$_data['acl'] = (array)$_data['acl'];
|
||||
$attr['acl_spam_alias'] = 0;
|
||||
@@ -2865,21 +2870,22 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
$_data['sieve_access'] = (in_array('sieve', $_data['protocol_access'])) ? 1 : 0;
|
||||
}
|
||||
if (!empty($is_now)) {
|
||||
$active = (isset($_data['active'])) ? intval($_data['active']) : $is_now['active'];
|
||||
$active = (isset($_data['active'])) ? intval($_data['active']) : $is_now['active'];
|
||||
(int)$force_pw_update = (isset($_data['force_pw_update'])) ? intval($_data['force_pw_update']) : intval($is_now['attributes']['force_pw_update']);
|
||||
(int)$sogo_access = (isset($_data['sogo_access']) && isset($_SESSION['acl']['sogo_access']) && $_SESSION['acl']['sogo_access'] == "1") ? intval($_data['sogo_access']) : intval($is_now['attributes']['sogo_access']);
|
||||
(int)$imap_access = (isset($_data['imap_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['imap_access']) : intval($is_now['attributes']['imap_access']);
|
||||
(int)$pop3_access = (isset($_data['pop3_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['pop3_access']) : intval($is_now['attributes']['pop3_access']);
|
||||
(int)$smtp_access = (isset($_data['smtp_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['smtp_access']) : intval($is_now['attributes']['smtp_access']);
|
||||
(int)$sieve_access = (isset($_data['sieve_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['sieve_access']) : intval($is_now['attributes']['sieve_access']);
|
||||
(int)$relayhost = (isset($_data['relayhost']) && isset($_SESSION['acl']['mailbox_relayhost']) && $_SESSION['acl']['mailbox_relayhost'] == "1") ? intval($_data['relayhost']) : intval($is_now['attributes']['relayhost']);
|
||||
(int)$quota_m = (isset_has_content($_data['quota'])) ? intval($_data['quota']) : ($is_now['quota'] / 1048576);
|
||||
$name = (!empty($_data['name'])) ? ltrim(rtrim($_data['name'], '>'), '<') : $is_now['name'];
|
||||
$domain = $is_now['domain'];
|
||||
$quota_b = $quota_m * 1048576;
|
||||
$password = (!empty($_data['password'])) ? $_data['password'] : null;
|
||||
$password2 = (!empty($_data['password2'])) ? $_data['password2'] : null;
|
||||
$tags = (is_array($_data['tags']) ? $_data['tags'] : array());
|
||||
(int)$sogo_access = (isset($_data['sogo_access']) && isset($_SESSION['acl']['sogo_access']) && $_SESSION['acl']['sogo_access'] == "1") ? intval($_data['sogo_access']) : intval($is_now['attributes']['sogo_access']);
|
||||
(int)$imap_access = (isset($_data['imap_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['imap_access']) : intval($is_now['attributes']['imap_access']);
|
||||
(int)$pop3_access = (isset($_data['pop3_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['pop3_access']) : intval($is_now['attributes']['pop3_access']);
|
||||
(int)$smtp_access = (isset($_data['smtp_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['smtp_access']) : intval($is_now['attributes']['smtp_access']);
|
||||
(int)$sieve_access = (isset($_data['sieve_access']) && isset($_SESSION['acl']['protocol_access']) && $_SESSION['acl']['protocol_access'] == "1") ? intval($_data['sieve_access']) : intval($is_now['attributes']['sieve_access']);
|
||||
(int)$relayhost = (isset($_data['relayhost']) && isset($_SESSION['acl']['mailbox_relayhost']) && $_SESSION['acl']['mailbox_relayhost'] == "1") ? intval($_data['relayhost']) : intval($is_now['attributes']['relayhost']);
|
||||
(int)$quota_m = (isset_has_content($_data['quota'])) ? intval($_data['quota']) : ($is_now['quota'] / 1048576);
|
||||
$name = (!empty($_data['name'])) ? ltrim(rtrim($_data['name'], '>'), '<') : $is_now['name'];
|
||||
$domain = $is_now['domain'];
|
||||
$quota_b = $quota_m * 1048576;
|
||||
$password = (!empty($_data['password'])) ? $_data['password'] : null;
|
||||
$password2 = (!empty($_data['password2'])) ? $_data['password2'] : null;
|
||||
$pw_recovery_email = (isset($_data['pw_recovery_email'])) ? $_data['pw_recovery_email'] : $is_now['attributes']['recovery_email'];
|
||||
$tags = (is_array($_data['tags']) ? $_data['tags'] : array());
|
||||
}
|
||||
else {
|
||||
$_SESSION['return'][] = array(
|
||||
@@ -3132,31 +3138,43 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
':address' => $username,
|
||||
':active' => $active
|
||||
));
|
||||
$stmt = $pdo->prepare("UPDATE `mailbox` SET
|
||||
`active` = :active,
|
||||
`name`= :name,
|
||||
`quota` = :quota_b,
|
||||
`attributes` = JSON_SET(`attributes`, '$.force_pw_update', :force_pw_update),
|
||||
`attributes` = JSON_SET(`attributes`, '$.sogo_access', :sogo_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.imap_access', :imap_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.sieve_access', :sieve_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.pop3_access', :pop3_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.relayhost', :relayhost),
|
||||
`attributes` = JSON_SET(`attributes`, '$.smtp_access', :smtp_access)
|
||||
WHERE `username` = :username");
|
||||
$stmt->execute(array(
|
||||
':active' => $active,
|
||||
':name' => $name,
|
||||
':quota_b' => $quota_b,
|
||||
':force_pw_update' => $force_pw_update,
|
||||
':sogo_access' => $sogo_access,
|
||||
':imap_access' => $imap_access,
|
||||
':pop3_access' => $pop3_access,
|
||||
':sieve_access' => $sieve_access,
|
||||
':smtp_access' => $smtp_access,
|
||||
':relayhost' => $relayhost,
|
||||
':username' => $username
|
||||
));
|
||||
try {
|
||||
$stmt = $pdo->prepare("UPDATE `mailbox` SET
|
||||
`active` = :active,
|
||||
`name`= :name,
|
||||
`quota` = :quota_b,
|
||||
`attributes` = JSON_SET(`attributes`, '$.force_pw_update', :force_pw_update),
|
||||
`attributes` = JSON_SET(`attributes`, '$.sogo_access', :sogo_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.imap_access', :imap_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.sieve_access', :sieve_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.pop3_access', :pop3_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.relayhost', :relayhost),
|
||||
`attributes` = JSON_SET(`attributes`, '$.smtp_access', :smtp_access),
|
||||
`attributes` = JSON_SET(`attributes`, '$.recovery_email', :recovery_email)
|
||||
WHERE `username` = :username");
|
||||
$stmt->execute(array(
|
||||
':active' => $active,
|
||||
':name' => $name,
|
||||
':quota_b' => $quota_b,
|
||||
':force_pw_update' => $force_pw_update,
|
||||
':sogo_access' => $sogo_access,
|
||||
':imap_access' => $imap_access,
|
||||
':pop3_access' => $pop3_access,
|
||||
':sieve_access' => $sieve_access,
|
||||
':smtp_access' => $smtp_access,
|
||||
':recovery_email' => $pw_recovery_email,
|
||||
':relayhost' => $relayhost,
|
||||
':username' => $username
|
||||
));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, $_type, $_data_log, $_attr),
|
||||
'msg' => $e->getMessage()
|
||||
);
|
||||
return false;
|
||||
}
|
||||
// save tags
|
||||
foreach($tags as $index => $tag){
|
||||
if (empty($tag)) continue;
|
||||
@@ -3263,6 +3281,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
$attr['acl_quarantine_notification'] = (in_array('quarantine_notification', $_data['acl'])) ? 1 : 0;
|
||||
$attr['acl_quarantine_category'] = (in_array('quarantine_category', $_data['acl'])) ? 1 : 0;
|
||||
$attr['acl_app_passwds'] = (in_array('app_passwds', $_data['acl'])) ? 1 : 0;
|
||||
$attr['acl_pw_reset'] = (in_array('pw_reset', $_data['acl'])) ? 1 : 0;
|
||||
} else {
|
||||
foreach ($is_now as $key => $value){
|
||||
$attr[$key] = $is_now[$key];
|
||||
@@ -5212,7 +5231,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
|
||||
'msg' => 'Could not move maildir to garbage collector: variables local_part and/or domain empty'
|
||||
);
|
||||
}
|
||||
if (strtolower(getenv('SKIP_SOLR')) == 'n') {
|
||||
if (strtolower(getenv('SKIP_SOLR')) == 'n' && strtolower(getenv('FLATCURVE_EXPERIMENTAL')) != 'y') {
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, 'http://solr:8983/solr/dovecot-fts/update?commit=true');
|
||||
curl_setopt($curl, CURLOPT_HTTPHEADER,array('Content-Type: text/xml'));
|
||||
|
||||
@@ -3,7 +3,7 @@ function init_db_schema() {
|
||||
try {
|
||||
global $pdo;
|
||||
|
||||
$db_version = "26022024_1433";
|
||||
$db_version = "29072024_1000";
|
||||
|
||||
$stmt = $pdo->query("SHOW TABLES LIKE 'versions'");
|
||||
$num_results = count($stmt->fetchAll(PDO::FETCH_ASSOC));
|
||||
@@ -483,6 +483,7 @@ function init_db_schema() {
|
||||
"quarantine_notification" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||
"quarantine_category" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||
"app_passwds" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||
"pw_reset" => "TINYINT(1) NOT NULL DEFAULT '1'",
|
||||
),
|
||||
"keys" => array(
|
||||
"primary" => array(
|
||||
@@ -694,6 +695,19 @@ function init_db_schema() {
|
||||
),
|
||||
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
||||
),
|
||||
"reset_password" => array(
|
||||
"cols" => array(
|
||||
"username" => "VARCHAR(255) NOT NULL",
|
||||
"token" => "VARCHAR(255) NOT NULL",
|
||||
"created" => "DATETIME(0) NOT NULL DEFAULT NOW(0)",
|
||||
),
|
||||
"keys" => array(
|
||||
"primary" => array(
|
||||
"" => array("token", "created")
|
||||
),
|
||||
),
|
||||
"attr" => "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC"
|
||||
),
|
||||
"imapsync" => array(
|
||||
"cols" => array(
|
||||
"id" => "INT NOT NULL AUTO_INCREMENT",
|
||||
|
||||
33
data/web/inc/lib/sieve/extensions/enotify.xml
Normal file
33
data/web/inc/lib/sieve/extensions/enotify.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version='1.0' standalone='yes'?>
|
||||
|
||||
<extension name="enotify">
|
||||
<command name="notify">
|
||||
<parameter type="tag" name="from" occurrence="optional">
|
||||
<parameter type="string" name="from-address" />
|
||||
</parameter>
|
||||
|
||||
<parameter type="tag" name="importance" regex="(1|2|3)" occurrence="optional" />
|
||||
|
||||
<parameter type="tag" name="options" occurrence="optional">
|
||||
<parameter type="stringlist" name="option-strings" />
|
||||
</parameter>
|
||||
|
||||
<parameter type="tag" name="message" occurrence="optional">
|
||||
<parameter type="string" name="message-text" />
|
||||
</parameter>
|
||||
|
||||
<parameter type="string" name="method" />
|
||||
</command>
|
||||
|
||||
<test name="valid_notify_method">
|
||||
<parameter type="stringlist" name="notification-uris" />
|
||||
</test>
|
||||
|
||||
<test name="notify_method_capability">
|
||||
<parameter type="string" name="notification-uri" />
|
||||
<parameter type="string" name="notification-capability" />
|
||||
<parameter type="stringlist" name="key-list" />
|
||||
</test>
|
||||
|
||||
<modifier name="encodeurl" />
|
||||
</extension>
|
||||
58
data/web/inc/lib/sieve/extensions/mime.xml
Normal file
58
data/web/inc/lib/sieve/extensions/mime.xml
Normal file
@@ -0,0 +1,58 @@
|
||||
<?xml version='1.0' standalone='yes'?>
|
||||
|
||||
<extension name="mime">
|
||||
<command name="foreverypart">
|
||||
<parameter type="string" name="name" occurrence="optional" />
|
||||
<block />
|
||||
</command>
|
||||
|
||||
<command name="break">
|
||||
<parameter type="string" name="name" occurrence="optional" />
|
||||
</command>
|
||||
|
||||
<tagged-argument extends="(header|address|exists)">
|
||||
<parameter type="tag" name="mime" regex="mime" occurrence="optional" />
|
||||
</tagged-argument>
|
||||
<tagged-argument extends="(header|address|exists)">
|
||||
<parameter type="tag" name="anychild" regex="anychild" occurrence="optional" />
|
||||
</tagged-argument>
|
||||
<tagged-argument extends="(header)">
|
||||
<parameter type="tag" name="type" occurrence="optional" />
|
||||
</tagged-argument>
|
||||
<tagged-argument extends="(header)">
|
||||
<parameter type="tag" name="subtype" occurrence="optional" />
|
||||
</tagged-argument>
|
||||
<tagged-argument extends="(header)">
|
||||
<parameter type="tag" name="contenttype" occurrence="optional" />
|
||||
</tagged-argument>
|
||||
<tagged-argument extends="(header)">
|
||||
<parameter type="tag" name="param" regex="param" occurrence="optional">
|
||||
<parameter type="stringlist" name="param-list" />
|
||||
</parameter>
|
||||
</tagged-argument>
|
||||
<tagged-argument extends="(header|address|exists)">
|
||||
<parameter type="stringlist" name="header-names" />
|
||||
</tagged-argument>
|
||||
<tagged-argument extends="(header)">
|
||||
<parameter type="stringlist" name="key-list" />
|
||||
</tagged-argument>
|
||||
|
||||
<action name="replace">
|
||||
<parameter type="tag" name="mime" regex="mime" occurrence="optional" />
|
||||
<parameter type="string" name="subject" occurrence="optional" />
|
||||
<parameter type="string" name="from" occurrence="optional" />
|
||||
<parameter type="string" name="replacement" />
|
||||
</action>
|
||||
|
||||
<action name="enclose">
|
||||
<parameter type="string" name="subject" occurrence="optional" />
|
||||
<parameter type="stringlist" name="headers" occurrence="optional" />
|
||||
<parameter type="string" name="text" />
|
||||
</action>
|
||||
|
||||
<action name="extracttext">
|
||||
<parameter type="tag" name="first" regex="first" occurrence="optional" />
|
||||
<parameter type="number" name="number" occurrence="optional" />
|
||||
<parameter type="string" name="varname" />
|
||||
</action>
|
||||
</extension>
|
||||
@@ -10,16 +10,54 @@ if (!empty($_GET['sso_token'])) {
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_POST["pw_reset_request"]) && !empty($_POST['username'])) {
|
||||
reset_password("issue", $_POST['username']);
|
||||
header("Location: /");
|
||||
exit;
|
||||
}
|
||||
if (isset($_POST["pw_reset"])) {
|
||||
$username = reset_password("check", $_POST['token']);
|
||||
$reset_result = reset_password("reset", array(
|
||||
'new_password' => $_POST['new_password'],
|
||||
'new_password2' => $_POST['new_password2'],
|
||||
'token' => $_POST['token'],
|
||||
'username' => $username,
|
||||
'check_tfa' => True
|
||||
));
|
||||
|
||||
if ($reset_result){
|
||||
header("Location: /");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
if (isset($_POST["verify_tfa_login"])) {
|
||||
if (verify_tfa_login($_SESSION['pending_mailcow_cc_username'], $_POST)) {
|
||||
$_SESSION['mailcow_cc_username'] = $_SESSION['pending_mailcow_cc_username'];
|
||||
$_SESSION['mailcow_cc_role'] = $_SESSION['pending_mailcow_cc_role'];
|
||||
unset($_SESSION['pending_mailcow_cc_username']);
|
||||
unset($_SESSION['pending_mailcow_cc_role']);
|
||||
unset($_SESSION['pending_tfa_methods']);
|
||||
if (isset($_SESSION['pending_mailcow_cc_username']) && isset($_SESSION['pending_pw_reset_token']) && isset($_SESSION['pending_pw_new_password'])) {
|
||||
reset_password("reset", array(
|
||||
'new_password' => $_SESSION['pending_pw_new_password'],
|
||||
'new_password2' => $_SESSION['pending_pw_new_password'],
|
||||
'token' => $_SESSION['pending_pw_reset_token'],
|
||||
'username' => $_SESSION['pending_mailcow_cc_username']
|
||||
));
|
||||
unset($_SESSION['pending_pw_reset_token']);
|
||||
unset($_SESSION['pending_pw_new_password']);
|
||||
unset($_SESSION['pending_mailcow_cc_username']);
|
||||
unset($_SESSION['pending_tfa_methods']);
|
||||
|
||||
header("Location: /user");
|
||||
header("Location: /");
|
||||
exit;
|
||||
} else {
|
||||
$_SESSION['mailcow_cc_username'] = $_SESSION['pending_mailcow_cc_username'];
|
||||
$_SESSION['mailcow_cc_role'] = $_SESSION['pending_mailcow_cc_role'];
|
||||
unset($_SESSION['pending_mailcow_cc_username']);
|
||||
unset($_SESSION['pending_mailcow_cc_role']);
|
||||
unset($_SESSION['pending_tfa_methods']);
|
||||
|
||||
header("Location: /user");
|
||||
}
|
||||
} else {
|
||||
unset($_SESSION['pending_pw_reset_token']);
|
||||
unset($_SESSION['pending_pw_new_password']);
|
||||
unset($_SESSION['pending_mailcow_cc_username']);
|
||||
unset($_SESSION['pending_mailcow_cc_role']);
|
||||
unset($_SESSION['pending_tfa_methods']);
|
||||
@@ -27,11 +65,13 @@ if (isset($_POST["verify_tfa_login"])) {
|
||||
}
|
||||
|
||||
if (isset($_GET["cancel_tfa_login"])) {
|
||||
unset($_SESSION['pending_mailcow_cc_username']);
|
||||
unset($_SESSION['pending_mailcow_cc_role']);
|
||||
unset($_SESSION['pending_tfa_methods']);
|
||||
unset($_SESSION['pending_pw_reset_token']);
|
||||
unset($_SESSION['pending_pw_new_password']);
|
||||
unset($_SESSION['pending_mailcow_cc_username']);
|
||||
unset($_SESSION['pending_mailcow_cc_role']);
|
||||
unset($_SESSION['pending_tfa_methods']);
|
||||
|
||||
header("Location: /");
|
||||
header("Location: /");
|
||||
}
|
||||
|
||||
if (isset($_POST["quick_release"])) {
|
||||
|
||||
@@ -210,6 +210,12 @@ $MAILBOX_DEFAULT_ATTRIBUTES['mailbox_format'] = 'maildir:';
|
||||
// Show last IMAP and POP3 logins
|
||||
$SHOW_LAST_LOGIN = true;
|
||||
|
||||
// Maximum number of password reset tokens that can be generated at once per user
|
||||
$PW_RESET_TOKEN_LIMIT = 3;
|
||||
|
||||
// Maximum time in minutes a password reset token is valid
|
||||
$PW_RESET_TOKEN_LIFETIME = 15;
|
||||
|
||||
// UV flag handling in FIDO2/WebAuthn - defaults to false to allow iOS logins
|
||||
// true = required
|
||||
// false = preferred
|
||||
|
||||
@@ -397,7 +397,10 @@ jQuery(function($){
|
||||
{
|
||||
title: lang.host,
|
||||
data: 'hostname',
|
||||
defaultContent: ''
|
||||
defaultContent: '',
|
||||
render: function (data, type) {
|
||||
return escapeHtml(data);
|
||||
}
|
||||
},
|
||||
{
|
||||
title: lang.username,
|
||||
|
||||
@@ -325,7 +325,10 @@ jQuery(function($){
|
||||
title: 'URI',
|
||||
data: 'uri',
|
||||
defaultContent: '',
|
||||
className: 'dtr-col-md dtr-break-all'
|
||||
className: 'dtr-col-md dtr-break-all',
|
||||
render: function (data, type) {
|
||||
return escapeHtml(data);
|
||||
}
|
||||
},
|
||||
{
|
||||
title: 'Method',
|
||||
@@ -1294,13 +1297,7 @@ function update_stats(timeout=5){
|
||||
$("#host_cpu_usage").text(parseInt(data.cpu.usage).toString() + "%");
|
||||
$("#host_memory_total").text((data.memory.total / (1024 ** 3)).toFixed(2).toString() + "GB");
|
||||
$("#host_memory_usage").text(parseInt(data.memory.usage).toString() + "%");
|
||||
if (data.architecture == "aarch64"){
|
||||
$("#host_architecture").html('<span data-bs-toggle="tooltip" data-bs-placement="top" title="' + lang_debug.wip +'">' + data.architecture + ' ⚠️</span>');
|
||||
}
|
||||
else {
|
||||
$("#host_architecture").html(data.architecture);
|
||||
}
|
||||
|
||||
$("#host_architecture").html(data.architecture);
|
||||
// update cpu and mem chart
|
||||
var cpu_chart = Chart.getChart("host_cpu_chart");
|
||||
var mem_chart = Chart.getChart("host_mem_chart");
|
||||
|
||||
@@ -380,6 +380,9 @@ $(document).ready(function() {
|
||||
if (template.acl_app_passwds == 1){
|
||||
acl.push("app_passwds");
|
||||
}
|
||||
if (template.acl_pw_reset == 1){
|
||||
acl.push("pw_reset");
|
||||
}
|
||||
$('#user_acl').selectpicker('val', acl);
|
||||
|
||||
$('#rl_value').val(template.rl_value);
|
||||
|
||||
@@ -1973,7 +1973,6 @@ if (isset($_GET['query'])) {
|
||||
case "quota_notification_bcc":
|
||||
process_edit_return(quota_notification_bcc('edit', $attr));
|
||||
break;
|
||||
break;
|
||||
case "mailq":
|
||||
process_edit_return(mailq('edit', array_merge(array('qid' => $items), $attr)));
|
||||
break;
|
||||
@@ -2069,6 +2068,9 @@ if (isset($_GET['query'])) {
|
||||
case "cors":
|
||||
process_edit_return(cors('edit', $attr));
|
||||
break;
|
||||
case "reset-password-notification":
|
||||
process_edit_return(reset_password('edit_notification', $attr));
|
||||
break;
|
||||
// return no route found if no case is matched
|
||||
default:
|
||||
http_response_code(404);
|
||||
|
||||
@@ -19,16 +19,7 @@
|
||||
"spam_alias": "Àlies temporals",
|
||||
"spam_score": "Puntuació de correu brossa",
|
||||
"tls_policy": "Política TLS",
|
||||
"unlimited_quota": "Quota ilimitada per bústies de correo",
|
||||
"delimiter_action": "",
|
||||
"ratelimit": "",
|
||||
"smtp_ip_access": "",
|
||||
"sogo_access": "",
|
||||
"domain_relayhost": "",
|
||||
"extend_sender_acl": "",
|
||||
"mailbox_relayhost": "",
|
||||
"pushover": "",
|
||||
"spam_policy": ""
|
||||
"unlimited_quota": "Quota ilimitada per bústies de correo"
|
||||
},
|
||||
"add": {
|
||||
"activate_filter_warn": "All other filters will be deactivated, when active is checked.",
|
||||
@@ -82,33 +73,7 @@
|
||||
"validate": "Validar",
|
||||
"validation_success": "Validated successfully",
|
||||
"app_name": "Nom de l'aplicació",
|
||||
"app_password": "Afegir contrasenya a l'aplicació",
|
||||
"dry": "",
|
||||
"inactive": "",
|
||||
"disable_login": "",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"mailbox_quota_def": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"relay_unknown_only": "",
|
||||
"relayhost_wrapped_tls_info": "",
|
||||
"subscribeall": "",
|
||||
"tags": "",
|
||||
"timeout1": "",
|
||||
"timeout2": "",
|
||||
"relay_transport_info": "",
|
||||
"domain_matches_hostname": "",
|
||||
"gal": "",
|
||||
"gal_info": "",
|
||||
"generate": "",
|
||||
"nexthop": "",
|
||||
"app_passwd_protocols": "",
|
||||
"bcc_dest_format": "",
|
||||
"comment_info": "",
|
||||
"custom_params": "",
|
||||
"custom_params_hint": "",
|
||||
"destination": ""
|
||||
"app_password": "Afegir contrasenya a l'aplicació"
|
||||
},
|
||||
"admin": {
|
||||
"access": "Accés",
|
||||
@@ -191,167 +156,7 @@
|
||||
"ui_texts": "Etiquetes i textos de la UI",
|
||||
"unchanged_if_empty": "Si no hi ha canvis, deixa'l en blanc",
|
||||
"upload": "Pujar",
|
||||
"username": "Nom d'usuari",
|
||||
"lookup_mx": "",
|
||||
"logo_dark_label": "",
|
||||
"optional": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"license_info": "",
|
||||
"message": "",
|
||||
"message_size": "",
|
||||
"nexthop": "",
|
||||
"no": "",
|
||||
"no_active_bans": "",
|
||||
"oauth2_apps": "",
|
||||
"oauth2_client_secret": "",
|
||||
"oauth2_info": "",
|
||||
"password_policy_chars": "",
|
||||
"password_policy_numbers": "",
|
||||
"password_policy_special_chars": "",
|
||||
"priority": "",
|
||||
"quarantine_bcc": "",
|
||||
"quarantine_max_size": "",
|
||||
"quarantine_notification_html": "",
|
||||
"quarantine_redirect": "",
|
||||
"quarantine_release_format_att": "",
|
||||
"quarantine_retention_size": "",
|
||||
"quota_notification_html": "",
|
||||
"quota_notification_subject": "",
|
||||
"quota_notifications": "",
|
||||
"relay_rcpt": "",
|
||||
"relay_run": "",
|
||||
"routing": "",
|
||||
"rspamd_global_filters_regex": "",
|
||||
"title": "",
|
||||
"transport_maps": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"transports_hint": "",
|
||||
"ui_header_announcement_active": "",
|
||||
"validate_license_now": "",
|
||||
"verify": "",
|
||||
"yes": "",
|
||||
"password_length": "",
|
||||
"password_policy": "",
|
||||
"logo_normal_label": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"add_relayhost_hint": "",
|
||||
"add_transport": "",
|
||||
"add_transports_hint": "",
|
||||
"admins": "",
|
||||
"quarantine_exclude_domains": "",
|
||||
"quarantine_max_age": "",
|
||||
"quarantine_release_format_raw": "",
|
||||
"quota_notification_sender": "",
|
||||
"quota_notifications_info": "",
|
||||
"quota_notifications_vars": "",
|
||||
"r_active": "",
|
||||
"r_inactive": "",
|
||||
"rate_name": "",
|
||||
"regex_maps": "",
|
||||
"ui_header_announcement": "",
|
||||
"cors_settings": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"oauth2_renew_secret": "",
|
||||
"oauth2_revoke_tokens": "",
|
||||
"send": "",
|
||||
"success": "",
|
||||
"sys_mails": "",
|
||||
"text": "",
|
||||
"time": "",
|
||||
"unban_pending": "",
|
||||
"ip_check": "",
|
||||
"quarantine_notification_sender": "",
|
||||
"dkim_domains_wo_keys": "",
|
||||
"dkim_to": "",
|
||||
"duplicate": "",
|
||||
"excludes": "",
|
||||
"f2b_blacklist": "",
|
||||
"f2b_filter": "",
|
||||
"guid": "",
|
||||
"oauth2_add_client": "",
|
||||
"rsetting_content": "",
|
||||
"queue_unban": "",
|
||||
"ip_check_disabled": "",
|
||||
"ip_check_opt_in": "",
|
||||
"options": "",
|
||||
"relayhosts": "",
|
||||
"reset_limit": "",
|
||||
"rsetting_add_rule": "",
|
||||
"rspamd_com_settings": "",
|
||||
"ui_footer": "",
|
||||
"dkim_from": "",
|
||||
"admins_ldap": "",
|
||||
"advanced_settings": "",
|
||||
"api_info": "",
|
||||
"api_read_only": "",
|
||||
"api_read_write": "",
|
||||
"api_skip_ip_check": "",
|
||||
"arrival_time": "",
|
||||
"authed_user": "",
|
||||
"ays": "",
|
||||
"activate_send": "",
|
||||
"active_rspamd_settings_map": "",
|
||||
"add_admin": "",
|
||||
"add_settings_rule": "",
|
||||
"oauth2_redirect_uri": "",
|
||||
"domain_admin": "",
|
||||
"password_policy_length": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"quarantine_release_format": "",
|
||||
"rsetting_none": "",
|
||||
"rsettings_insert_preset": "",
|
||||
"transport_dest_format": "",
|
||||
"ban_list_info": "",
|
||||
"convert_html_to_text": "",
|
||||
"credentials_transport_warning": "",
|
||||
"customer_id": "",
|
||||
"destination": "",
|
||||
"dkim_domains_selector": "",
|
||||
"dkim_from_title": "",
|
||||
"dkim_overwrite_key": "",
|
||||
"dkim_to_title": "",
|
||||
"domain_s": "",
|
||||
"f2b_list_info": "",
|
||||
"f2b_regex_info": "",
|
||||
"from": "",
|
||||
"generate": "",
|
||||
"guid_and_license": "",
|
||||
"hash_remove_info": "",
|
||||
"html": "",
|
||||
"include_exclude": "",
|
||||
"include_exclude_info": "",
|
||||
"includes": "",
|
||||
"is_mx_based": "",
|
||||
"last_applied": "",
|
||||
"login_time": "",
|
||||
"oauth2_client_id": "",
|
||||
"quarantine_max_score": "",
|
||||
"quarantine_notification_subject": "",
|
||||
"rsetting_no_selection": "",
|
||||
"rsettings_preset_1": "",
|
||||
"rsettings_preset_2": "",
|
||||
"rsettings_preset_3": "",
|
||||
"rsettings_preset_4": "",
|
||||
"rspamd_global_filters": "",
|
||||
"rspamd_global_filters_agree": "",
|
||||
"rspamd_global_filters_info": "",
|
||||
"rspamd_settings_map": "",
|
||||
"sal_level": "",
|
||||
"service": "",
|
||||
"service_id": "",
|
||||
"ui_header_announcement_content": "",
|
||||
"ui_header_announcement_help": "",
|
||||
"ui_header_announcement_select": "",
|
||||
"ui_header_announcement_type": "",
|
||||
"ui_header_announcement_type_danger": "",
|
||||
"ui_header_announcement_type_info": "",
|
||||
"ui_header_announcement_type_warning": "",
|
||||
"duplicate_dkim": "",
|
||||
"r_info": ""
|
||||
"username": "Nom d'usuari"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Accés denegat o dades incorrectes",
|
||||
@@ -402,87 +207,7 @@
|
||||
"target_domain_invalid": "El domini \"goto\" no és vàlid",
|
||||
"targetd_not_found": "No s'ha trobat el domini destí",
|
||||
"username_invalid": "El nom d'usuari no es pot fer servir",
|
||||
"validity_missing": "Si et plau posa un període de validesa",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"value_missing": "",
|
||||
"unknown": "",
|
||||
"app_name_empty": "",
|
||||
"app_passwd_id_invalid": "",
|
||||
"bcc_empty": "",
|
||||
"invalid_bcc_map_type": "",
|
||||
"invalid_filter_type": "",
|
||||
"invalid_host": "",
|
||||
"bcc_exists": "",
|
||||
"bcc_must_be_email": "",
|
||||
"comment_too_long": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"defquota_empty": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"extra_acl_invalid": "",
|
||||
"extra_acl_invalid_domain": "",
|
||||
"fido2_verification_failed": "",
|
||||
"file_open_error": "",
|
||||
"filter_type": "",
|
||||
"from_invalid": "",
|
||||
"global_filter_write_error": "",
|
||||
"global_map_invalid": "",
|
||||
"global_map_write_error": "",
|
||||
"ham_learn_error": "",
|
||||
"invalid_nexthop": "",
|
||||
"invalid_recipient_map_new": "",
|
||||
"invalid_destination": "",
|
||||
"tfa_token_invalid": "",
|
||||
"tls_policy_map_dest_invalid": "",
|
||||
"rl_timeframe": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"invalid_nexthop_authenticated": "",
|
||||
"invalid_recipient_map_old": "",
|
||||
"private_key_error": "",
|
||||
"pushover_credentials_missing": "",
|
||||
"pushover_key": "",
|
||||
"pushover_token": "",
|
||||
"recipient_map_entry_exists": "",
|
||||
"redis_error": "",
|
||||
"relayhost_invalid": "",
|
||||
"reset_f2b_regex": "",
|
||||
"rspamd_ui_pw_length": "",
|
||||
"script_empty": "",
|
||||
"set_acl_failed": "",
|
||||
"targetd_relay_domain": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": "",
|
||||
"temp_error": "",
|
||||
"text_empty": "",
|
||||
"tls_policy_map_entry_exists": "",
|
||||
"tls_policy_map_parameter_invalid": "",
|
||||
"totp_verification_failed": "",
|
||||
"transport_dest_exists": "",
|
||||
"webauthn_verification_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"unknown_tfa_method": "",
|
||||
"unlimited_quota_acl": "",
|
||||
"yotp_verification_failed": "",
|
||||
"no_user_defined": "",
|
||||
"demo_mode_enabled": "",
|
||||
"dkim_domain_or_sel_exists": "",
|
||||
"domain_cannot_match_hostname": "",
|
||||
"ip_list_empty": "",
|
||||
"settings_map_invalid": "",
|
||||
"sieve_error": "",
|
||||
"spam_learn_error": "",
|
||||
"subject_empty": "",
|
||||
"mailbox_defquota_exceeds_mailbox_maxquota": "",
|
||||
"malformed_username": "",
|
||||
"map_content_empty": "",
|
||||
"mysql_error": "",
|
||||
"network_host_invalid": "",
|
||||
"next_hop_interferes": "",
|
||||
"next_hop_interferes_any": "",
|
||||
"nginx_reload_failed": ""
|
||||
"validity_missing": "Si et plau posa un període de validesa"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Valor derivat de registre A/AAAA. Això és compatible sempre que el registre assenyali el recurs correcte.",
|
||||
@@ -492,8 +217,7 @@
|
||||
"dns_records_name": "Nom",
|
||||
"dns_records_status": "Valor actual",
|
||||
"dns_records_type": "Tipus",
|
||||
"optional": "Aquest registre és opcional.",
|
||||
"dns_records_docs": ""
|
||||
"optional": "Aquest registre és opcional."
|
||||
},
|
||||
"edit": {
|
||||
"active": "Actiu",
|
||||
@@ -549,82 +273,7 @@
|
||||
"title": "Editar l'objecte",
|
||||
"unchanged_if_empty": "Si no hay cambios dejalo en blanco",
|
||||
"username": "Usuari",
|
||||
"validate_save": "Validar i desar",
|
||||
"lookup_mx": "",
|
||||
"acl": "",
|
||||
"admin": "",
|
||||
"allow_from_smtp": "",
|
||||
"footer_exclude": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"domain_footer_plain": "",
|
||||
"gal_info": "",
|
||||
"grant_types": "",
|
||||
"pushover": "",
|
||||
"scope": "",
|
||||
"custom_attributes": "",
|
||||
"disable_login": "",
|
||||
"none_inherit": "",
|
||||
"pushover_info": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info_vars": {
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"custom": ""
|
||||
},
|
||||
"gal": "",
|
||||
"mbox_rl_info": "",
|
||||
"nexthop": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_sender_regex": "",
|
||||
"sogo_visible": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"app_name": "",
|
||||
"app_passwd": "",
|
||||
"bcc_dest_format": "",
|
||||
"client_id": "",
|
||||
"client_secret": "",
|
||||
"comment_info": "",
|
||||
"created_on": "",
|
||||
"delete_ays": "",
|
||||
"domain_footer_info": "",
|
||||
"inactive": "",
|
||||
"extended_sender_acl": "",
|
||||
"extended_sender_acl_info": "",
|
||||
"last_modified": "",
|
||||
"mailbox_quota_def": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sender_acl_info": "",
|
||||
"sogo_access_info": "",
|
||||
"sogo_visible_info": "",
|
||||
"timeout1": "",
|
||||
"timeout2": "",
|
||||
"generate": "",
|
||||
"app_passwd_protocols": "",
|
||||
"ratelimit": "",
|
||||
"relayhost": "",
|
||||
"pushover_sound": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"quota_warning_bcc": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"relay_transport_info": "",
|
||||
"relay_unknown_only": "",
|
||||
"spam_filter": "",
|
||||
"advanced_settings": "",
|
||||
"redirect_uri": "",
|
||||
"sogo_access": ""
|
||||
"validate_save": "Validar i desar"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Cancel·lar",
|
||||
@@ -633,13 +282,7 @@
|
||||
"delete_these_items": "Si et plau confirma els canvis al objecte amb id:",
|
||||
"loading": "Si et plau espera ...",
|
||||
"restart_container_info": "<b>Important:</b> Un reinici pot trigar una estona, si et plau espera a que acabi.",
|
||||
"restart_now": "Reiniciar ara",
|
||||
"hibp_check": "",
|
||||
"hibp_nok": "",
|
||||
"hibp_ok": "",
|
||||
"nothing_selected": "",
|
||||
"restart_container": "",
|
||||
"restarting_container": ""
|
||||
"restart_now": "Reiniciar ara"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Administració",
|
||||
@@ -648,24 +291,16 @@
|
||||
"mailcow_config": "Configuració",
|
||||
"quarantine": "Quarantena",
|
||||
"restart_sogo": "Reiniciar SOGo",
|
||||
"user_settings": "Preferències d'usuari",
|
||||
"restart_netfilter": "",
|
||||
"apps": "",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Preferències d'usuari"
|
||||
},
|
||||
"info": {
|
||||
"no_action": "No hi ha cap acció aplicable",
|
||||
"awaiting_tfa_confirmation": "",
|
||||
"session_expires": ""
|
||||
"no_action": "No hi ha cap acció aplicable"
|
||||
},
|
||||
"login": {
|
||||
"delayed": "Pots iniciar de sessió passats %s segons.",
|
||||
"login": "Inici de sessió",
|
||||
"password": "Contrasenya",
|
||||
"username": "Nom d'usuari",
|
||||
"fido2_webauthn": "",
|
||||
"mobileconfig_info": "",
|
||||
"other_logins": ""
|
||||
"username": "Nom d'usuari"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "Acció",
|
||||
@@ -750,97 +385,7 @@
|
||||
"tls_enforce_out": "Forçar TLS al enviar",
|
||||
"toggle_all": "Tots",
|
||||
"username": "Nom d'usuari",
|
||||
"waiting": "Esperant",
|
||||
"booking_0_short": "",
|
||||
"booking_null": "",
|
||||
"booking_custom": "",
|
||||
"sieve_preset_8": "",
|
||||
"sieve_preset_header": "",
|
||||
"sogo_visible": "",
|
||||
"stats": "",
|
||||
"tls_policy_maps_long": "",
|
||||
"quarantine_notification": "",
|
||||
"recipient_map_old_info": "",
|
||||
"table_size_show_n": "",
|
||||
"tls_map_dest": "",
|
||||
"tls_map_dest_info": "",
|
||||
"sieve_preset_2": "",
|
||||
"add_tls_policy_map": "",
|
||||
"sieve_preset_3": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"table_size": "",
|
||||
"tls_map_parameters": "",
|
||||
"disable_x": "",
|
||||
"domain_templates": "",
|
||||
"last_pw_change": "",
|
||||
"no": "",
|
||||
"public_comment": "",
|
||||
"q_add_header": "",
|
||||
"q_reject": "",
|
||||
"recipient": "",
|
||||
"relay_unknown": "",
|
||||
"sieve_preset_1": "",
|
||||
"sieve_preset_7": "",
|
||||
"tls_map_parameters_info": "",
|
||||
"tls_map_policy": "",
|
||||
"tls_policy_maps": "",
|
||||
"dkim_domains_selector": "",
|
||||
"templates": "",
|
||||
"never": "",
|
||||
"add_template": "",
|
||||
"all_domains": "",
|
||||
"allowed_protocols": "",
|
||||
"bcc_map": "",
|
||||
"booking_custom_short": "",
|
||||
"booking_ltnull": "",
|
||||
"booking_lt0_short": "",
|
||||
"catch_all": "",
|
||||
"created_on": "",
|
||||
"daily": "",
|
||||
"disable_login": "",
|
||||
"domain_quota_total": "",
|
||||
"enable_x": "",
|
||||
"gal": "",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"hourly": "",
|
||||
"insert_preset": "",
|
||||
"last_mail_login": "",
|
||||
"last_modified": "",
|
||||
"mailbox": "",
|
||||
"mailbox_defaults": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"mailbox_defquota": "",
|
||||
"mailbox_templates": "",
|
||||
"open_logs": "",
|
||||
"private_comment": "",
|
||||
"q_all": "",
|
||||
"quarantine_category": "",
|
||||
"recipient_map_new_info": "",
|
||||
"sender": "",
|
||||
"sieve_preset_4": "",
|
||||
"sieve_preset_5": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"template": "",
|
||||
"tls_policy_maps_enforced_tls": "",
|
||||
"tls_policy_maps_info": "",
|
||||
"weekly": "",
|
||||
"yes": "",
|
||||
"sogo_visible_n": "",
|
||||
"add_alias_expand": "",
|
||||
"alias_domain_alias_hint": "",
|
||||
"alias_domain_backupmx": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"sogo_visible_y": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"sieve_preset_6": ""
|
||||
"waiting": "Esperant"
|
||||
},
|
||||
"quarantine": {
|
||||
"action": "Acció",
|
||||
@@ -863,59 +408,15 @@
|
||||
"subj": "Assumpte",
|
||||
"text_from_html_content": "Contingut (a partir del HTML)",
|
||||
"text_plain_content": "Contingut (text/plain)",
|
||||
"toggle_all": "Marcar tots",
|
||||
"deliver_inbox": "",
|
||||
"spam_score": "",
|
||||
"table_size": "",
|
||||
"type": "",
|
||||
"learn_spam_delete": "",
|
||||
"confirm": "",
|
||||
"confirm_delete": "",
|
||||
"danger": "",
|
||||
"disabled_by_config": "",
|
||||
"spam": "",
|
||||
"download_eml": "",
|
||||
"high_danger": "",
|
||||
"info": "",
|
||||
"junk_folder": "",
|
||||
"low_danger": "",
|
||||
"medium_danger": "",
|
||||
"neutral_danger": "",
|
||||
"notified": "",
|
||||
"qhandler_success": "",
|
||||
"qinfo": "",
|
||||
"quick_delete_link": "",
|
||||
"quick_info_link": "",
|
||||
"quick_release_link": "",
|
||||
"rspamd_result": "",
|
||||
"sender_header": "",
|
||||
"settings_info": "",
|
||||
"table_size_show_n": "",
|
||||
"refresh": "",
|
||||
"rejected": "",
|
||||
"rewrite_subject": ""
|
||||
"toggle_all": "Marcar tots"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Queue Manager",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": ""
|
||||
"queue_manager": "Queue Manager"
|
||||
},
|
||||
"start": {
|
||||
"help": "Mostrar/Ocultar panell d'ajuda",
|
||||
"mailcow_apps_detail": "Tria una aplicació (de moment només SOGo) per a accedir als teus correus, calendari, contactes i més.",
|
||||
"mailcow_panel_detail": "Els <b>administradors del domini</b> poden crear, modificar o esborrar bústies i àlies, configurar i obtenir informació detallada sobre els seus dominis<br>\r\n\tEls <b>usuaris d'e-mail</b> poden crear àlies temporals (spam àlies), canviar la seva contrasenya i la configuració del seu filtre anti-spam.",
|
||||
"imap_smtp_server_auth_info": ""
|
||||
"mailcow_panel_detail": "Els <b>administradors del domini</b> poden crear, modificar o esborrar bústies i àlies, configurar i obtenir informació detallada sobre els seus dominis<br>\r\n\tEls <b>usuaris d'e-mail</b> poden crear àlies temporals (spam àlies), canviar la seva contrasenya i la configuració del seu filtre anti-spam."
|
||||
},
|
||||
"success": {
|
||||
"admin_modified": "Els canvis fets a l'administrador s'han desat",
|
||||
@@ -952,56 +453,7 @@
|
||||
"resource_modified": "S'han desat els canvis fets al recurs %s",
|
||||
"resource_removed": "S'ha esborrat el recurs %s",
|
||||
"ui_texts": "S'han desat els canvis als noms de App",
|
||||
"upload_success": "El fitxer s'ha pujat",
|
||||
"template_removed": "",
|
||||
"tls_policy_map_entry_deleted": "",
|
||||
"app_passwd_added": "",
|
||||
"bcc_saved": "",
|
||||
"hash_deleted": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"item_released": "",
|
||||
"learned_ham": "",
|
||||
"license_modified": "",
|
||||
"logged_in_as": "",
|
||||
"pushover_settings_edited": "",
|
||||
"qlearn_spam": "",
|
||||
"queue_command_success": "",
|
||||
"recipient_map_entry_deleted": "",
|
||||
"recipient_map_entry_saved": "",
|
||||
"settings_map_removed": "",
|
||||
"verified_fido2_login": "",
|
||||
"global_filter_written": "",
|
||||
"bcc_deleted": "",
|
||||
"cors_headers_edited": "",
|
||||
"db_init_complete": "",
|
||||
"delete_filter": "",
|
||||
"delete_filters": "",
|
||||
"deleted_syncjob": "",
|
||||
"deleted_syncjobs": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"dkim_duplicated": "",
|
||||
"sogo_profile_reset": "",
|
||||
"template_modified": "",
|
||||
"tls_policy_map_entry_saved": "",
|
||||
"verified_webauthn_login": "",
|
||||
"template_added": "",
|
||||
"acl_saved": "",
|
||||
"admin_added": "",
|
||||
"admin_api_modified": "",
|
||||
"admin_removed": "",
|
||||
"app_passwd_removed": "",
|
||||
"bcc_edited": "",
|
||||
"domain_footer_modified": "",
|
||||
"dovecot_restart_success": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"rl_saved": "",
|
||||
"rspamd_ui_pw_set": "",
|
||||
"saved_settings": "",
|
||||
"settings_map_added": "",
|
||||
"verified_totp_login": "",
|
||||
"verified_yotp_login": "",
|
||||
"nginx_reloaded": "",
|
||||
"password_policy_saved": ""
|
||||
"upload_success": "El fitxer s'ha pujat"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s fa servir la Yubico Cloud API. Obté una API key per la teva clau <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">aquí</a>",
|
||||
@@ -1021,15 +473,7 @@
|
||||
"webauthn": "Autenticació WebAuthn",
|
||||
"waiting_usb_auth": "<i>Esperant el dispositiu USB...</i><br><br>Apreta el botó del teu dispositiu USB WebAuthn ara.",
|
||||
"waiting_usb_register": "<i>Esperant el dispositiu USB...</i><br><br>Posa el teu password i confirma el registre del teu WebAuthn apretant el botó del teu dispositiiu USB WebAuthn.",
|
||||
"yubi_otp": "Autenticació OTP de Yubico",
|
||||
"reload_retry": "",
|
||||
"authenticators": "",
|
||||
"error_code": "",
|
||||
"start_webauthn_validation": "",
|
||||
"tfa_token_invalid": "",
|
||||
"init_webauthn": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Autenticació OTP de Yubico"
|
||||
},
|
||||
"user": {
|
||||
"action": "Acció",
|
||||
@@ -1112,198 +556,6 @@
|
||||
"username": "Usuari",
|
||||
"waiting": "Esperant",
|
||||
"week": "Setmana",
|
||||
"weeks": "Setmanes",
|
||||
"last_mail_login": "",
|
||||
"last_pw_change": "",
|
||||
"last_ui_login": "",
|
||||
"login_history": "",
|
||||
"open_logs": "",
|
||||
"password": "",
|
||||
"pushover_info": "",
|
||||
"pushover_sender_array": "",
|
||||
"app_hint": "",
|
||||
"allowed_protocols": "",
|
||||
"apple_connection_profile": "",
|
||||
"apple_connection_profile_complete": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"delete_ays": "",
|
||||
"pushover_sound": "",
|
||||
"years": "",
|
||||
"daily": "",
|
||||
"attribute": "",
|
||||
"hourly": "",
|
||||
"mailbox": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"q_add_header": "",
|
||||
"quarantine_notification": "",
|
||||
"sogo_profile_reset": "",
|
||||
"app_passwds": "",
|
||||
"created_on": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"create_app_passwd": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"open_webmail_sso": "",
|
||||
"password_repeat": "",
|
||||
"pushover_text": "",
|
||||
"quarantine_notification_info": "",
|
||||
"recent_successful_connections": "",
|
||||
"save": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sogo_profile_reset_now": "",
|
||||
"verify": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_check_log": "",
|
||||
"title": "",
|
||||
"apple_connection_profile_mailonly": "",
|
||||
"expire_in": "",
|
||||
"fido2_webauthn": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_title": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"q_all": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_category_info": "",
|
||||
"sogo_profile_reset_help": "",
|
||||
"spam_score_reset": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"value": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"from": "",
|
||||
"text": "",
|
||||
"q_reject": "",
|
||||
"generate": "",
|
||||
"advanced_settings": "",
|
||||
"app_name": "",
|
||||
"direct_protocol_access": "",
|
||||
"email": "",
|
||||
"email_and_dav": "",
|
||||
"empty": "",
|
||||
"never": "",
|
||||
"no_last_login": "",
|
||||
"weekly": ""
|
||||
},
|
||||
"datatables": {
|
||||
"decimal": "",
|
||||
"infoPostFix": "",
|
||||
"collapse_all": "",
|
||||
"emptyTable": "",
|
||||
"expand_all": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"paginate": {
|
||||
"first": "",
|
||||
"last": "",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"thousands": ""
|
||||
},
|
||||
"debug": {
|
||||
"history_all_servers": "",
|
||||
"architecture": "",
|
||||
"containers_info": "",
|
||||
"container_running": "",
|
||||
"docs": "",
|
||||
"login_time": "",
|
||||
"logs": "",
|
||||
"error_show_ip": "",
|
||||
"external_logs": "",
|
||||
"in_memory_logs": "",
|
||||
"jvm_memory_solr": "",
|
||||
"last_modified": "",
|
||||
"log_info": "",
|
||||
"memory": "",
|
||||
"online_users": "",
|
||||
"restart_container": "",
|
||||
"show_ip": "",
|
||||
"size": "",
|
||||
"solr_status": "",
|
||||
"started_at": "",
|
||||
"started_on": "",
|
||||
"static_logs": "",
|
||||
"success": "",
|
||||
"system_containers": "",
|
||||
"timezone": "",
|
||||
"uptime": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"chart_this_server": "",
|
||||
"container_disabled": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"disk_usage": "",
|
||||
"solr_dead": "",
|
||||
"update_failed": "",
|
||||
"username": "",
|
||||
"wip": "",
|
||||
"service": ""
|
||||
},
|
||||
"warning": {
|
||||
"domain_added_sogo_failed": "",
|
||||
"dovecot_restart_failed": "",
|
||||
"fuzzy_learn_error": "",
|
||||
"hash_not_found": "",
|
||||
"no_active_admin": "",
|
||||
"quota_exceeded_scope": "",
|
||||
"cannot_delete_self": "",
|
||||
"session_token": "",
|
||||
"session_ua": "",
|
||||
"ip_invalid": "",
|
||||
"is_not_primary_alias": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"hour": "",
|
||||
"day": "",
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": ""
|
||||
},
|
||||
"oauth2": {
|
||||
"permit": "",
|
||||
"profile": "",
|
||||
"scope_ask_permission": "",
|
||||
"authorize_app": "",
|
||||
"deny": "",
|
||||
"profile_desc": "",
|
||||
"access_denied": ""
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_success": "",
|
||||
"fido2_validation_failed": "",
|
||||
"fn": "",
|
||||
"known_ids": "",
|
||||
"register_status": "",
|
||||
"rename": "",
|
||||
"set_fido2": "",
|
||||
"set_fido2_touchid": "",
|
||||
"set_fn": "",
|
||||
"start_fido2_validation": "",
|
||||
"none": ""
|
||||
"weeks": "Setmanes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,12 +346,7 @@
|
||||
"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)",
|
||||
"cors_settings": "Nastavení CORS",
|
||||
"queue_unban": "zrušit ban",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": ""
|
||||
"queue_unban": "zrušit ban"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Přístup odepřen nebo jsou neplatná data ve formuláři",
|
||||
@@ -480,9 +475,7 @@
|
||||
"webauthn_publickey_failed": "Pro vybraný ověřovací prostředek nebyl uložen žádný veřejný klíč",
|
||||
"webauthn_username_failed": "Zvolený ověřovací prostředek patří k jinému účtu",
|
||||
"extended_sender_acl_denied": "chybějící ACL pro nastavení externích adres odesílatele",
|
||||
"demo_mode_enabled": "Demo režim je zapnutý",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": ""
|
||||
"demo_mode_enabled": "Demo režim je zapnutý"
|
||||
},
|
||||
"datatables": {
|
||||
"emptyTable": "Tabulka neobsahuje žádná data",
|
||||
@@ -507,8 +500,7 @@
|
||||
"decimal": ",",
|
||||
"thousands": " ",
|
||||
"collapse_all": "Sbalit vše",
|
||||
"expand_all": "Rozbalit vše",
|
||||
"infoPostFix": ""
|
||||
"expand_all": "Rozbalit vše"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Graf (tento server)",
|
||||
@@ -548,8 +540,7 @@
|
||||
"update_failed": "Nepodařilo se zkontrolovat aktualizace",
|
||||
"wip": "Nedokončená vývojová verze",
|
||||
"memory": "Paměť",
|
||||
"container_disabled": "Kontejner je zastaven nebo zakázán",
|
||||
"cores": ""
|
||||
"container_disabled": "Kontejner je zastaven nebo zakázán"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Hodnota odvozena z A/AAAA záznamu. Lze použít, pokud záznam ukazuje na správný zdroj.",
|
||||
@@ -681,17 +672,12 @@
|
||||
"auth_user": "{= auth_user =} - Ověřené uživatelské jméno zadané MTA",
|
||||
"from_user": "{= from_user =} - uživatelská část odesílatele, např. pro \"moo@mailcow.tld\" vrátí \"moo\"",
|
||||
"from_domain": "{= from_domain =} - Doména odesílatele",
|
||||
"from_addr": "{= from_addr =} - E-mailová adresa odesílatele",
|
||||
"custom": ""
|
||||
"from_addr": "{= from_addr =} - E-mailová adresa odesílatele"
|
||||
},
|
||||
"domain_footer": "Patička pro celou doménu",
|
||||
"domain_footer_html": "HTML text",
|
||||
"domain_footer_plain": "Prostý text",
|
||||
"pushover_sound": "Zvukové upozornění",
|
||||
"footer_exclude": "",
|
||||
"custom_attributes": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"pushover": ""
|
||||
"pushover_sound": "Zvukové upozornění"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "Potvrdit",
|
||||
@@ -999,8 +985,7 @@
|
||||
"hold_mail_legend": "Podrží vybrané e-maily. (Zabrání dalším pokusům o doručení)",
|
||||
"show_message": "Zobrazit zprávu",
|
||||
"unhold_mail": "Uvolnit",
|
||||
"unhold_mail_legend": "Uvolnit vybrané e-maily k doručení. (Pouze v případě předchozího podržení)",
|
||||
"unban": ""
|
||||
"unhold_mail_legend": "Uvolnit vybrané e-maily k doručení. (Pouze v případě předchozího podržení)"
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "Vypnuto",
|
||||
@@ -1096,10 +1081,7 @@
|
||||
"verified_webauthn_login": "WebAuthn přihlášení ověřeno",
|
||||
"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",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"ip_check_opt_in_modified": ""
|
||||
"domain_footer_modified": "Změny patičky domény %s byly uloženy"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s používá Yubico Cloud API. Prosím získejte API klíč pro své Yubico <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">ZDE</a>",
|
||||
@@ -1124,10 +1106,7 @@
|
||||
"webauthn": "WebAuthn ověření",
|
||||
"waiting_usb_auth": "<i>Čeká se na USB zařízení...</i><br><br>Prosím stiskněte tlačítko na svém WebAuthn USB zařízení.",
|
||||
"waiting_usb_register": "<i>Čeká se na USB zařízení...</i><br><br>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í",
|
||||
"authenticators": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Yubico OTP ověření"
|
||||
},
|
||||
"user": {
|
||||
"action": "Akce",
|
||||
@@ -1289,9 +1268,7 @@
|
||||
"with_app_password": "s heslem aplikace",
|
||||
"year": "rok",
|
||||
"years": "let",
|
||||
"pushover_sound": "Zvukové upozornění",
|
||||
"attribute": "",
|
||||
"value": ""
|
||||
"pushover_sound": "Zvukové upozornění"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Nelze smazat právě přihlášeného uživatele",
|
||||
|
||||
@@ -107,8 +107,7 @@
|
||||
"validation_success": "Valideret med succes",
|
||||
"bcc_dest_format": "BCC-destination skal være en enkelt gyldig e-mail-adresse.<br>Hvis du har brug for at sende en kopi til flere adresser, kan du oprette et alias og bruge det her.",
|
||||
"app_passwd_protocols": "Tilladte protokoller for app adgangskode",
|
||||
"tags": "Tag's",
|
||||
"dry": ""
|
||||
"tags": "Tag's"
|
||||
},
|
||||
"admin": {
|
||||
"access": "Adgang",
|
||||
@@ -318,40 +317,7 @@
|
||||
"yes": "✓",
|
||||
"ip_check_opt_in": "Opt-In for brug af tredjepartstjeneste <strong>ipv4.mailcow.email</strong> og <strong>ipv6.mailcow.email</strong> til at finde eksterne IP-adresser.",
|
||||
"queue_unban": "unban",
|
||||
"admins": "Administratorer",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"cors_settings": "",
|
||||
"allowed_origins": "",
|
||||
"allowed_methods": "",
|
||||
"options": "",
|
||||
"password_length": "",
|
||||
"password_policy": "",
|
||||
"password_policy_chars": "",
|
||||
"password_policy_length": "",
|
||||
"ip_check": "",
|
||||
"login_time": "",
|
||||
"oauth2_apps": "",
|
||||
"oauth2_add_client": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"password_policy_numbers": "",
|
||||
"password_policy_special_chars": "",
|
||||
"relay_rcpt": "",
|
||||
"service": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"ip_check_disabled": "",
|
||||
"rsettings_preset_4": "",
|
||||
"convert_html_to_text": "",
|
||||
"success": "",
|
||||
"is_mx_based": "",
|
||||
"admins_ldap": "",
|
||||
"api_read_only": "",
|
||||
"api_read_write": ""
|
||||
"admins": "Administratorer"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Adgang nægtet eller ugyldig formular data",
|
||||
@@ -469,20 +435,7 @@
|
||||
"validity_missing": "Tildel venligst en gyldighedsperiode",
|
||||
"value_missing": "Angiv alle værdier",
|
||||
"yotp_verification_failed": "Yubico OTP verifikationen mislykkedes: %s",
|
||||
"webauthn_publickey_failed": "Der er ikke gemt nogen offentlig nøgle for den valgte autentifikator",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"nginx_reload_failed": "",
|
||||
"template_exists": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"extra_acl_invalid_domain": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": "",
|
||||
"demo_mode_enabled": ""
|
||||
"webauthn_publickey_failed": "Der er ikke gemt nogen offentlig nøgle for den valgte autentifikator"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Diagram (denne server)",
|
||||
@@ -500,30 +453,7 @@
|
||||
"started_on": "Startede den",
|
||||
"static_logs": "Statiske logfiler",
|
||||
"system_containers": "System og Beholdere",
|
||||
"error_show_ip": "Kunne ikke finde de offentlige IP-adresser",
|
||||
"update_available": "",
|
||||
"username": "",
|
||||
"timezone": "",
|
||||
"started_at": "",
|
||||
"success": "",
|
||||
"uptime": "",
|
||||
"architecture": "",
|
||||
"container_running": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"docs": "",
|
||||
"last_modified": "",
|
||||
"login_time": "",
|
||||
"memory": "",
|
||||
"show_ip": "",
|
||||
"size": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": "",
|
||||
"wip": "",
|
||||
"online_users": "",
|
||||
"service": "",
|
||||
"container_disabled": "",
|
||||
"container_stopped": ""
|
||||
"error_show_ip": "Kunne ikke finde de offentlige IP-adresser"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Værdi afledt af A / AAAA-post. Dette understøttes, så længe posten peger på den korrekte ressource.",
|
||||
@@ -638,34 +568,7 @@
|
||||
"admin": "Rediger administrator",
|
||||
"lookup_mx": "Destination er et regulært udtryk, der matcher MX-navnet (<code>.*google\\.dk</code> for at dirigere al e-mail, der er målrettet til en MX, der ender på google.dk, over dette hop)",
|
||||
"mailbox_relayhost_info": "Anvendt på postkassen og kun direkte aliasser, og overskriver et domæne relæ-host.",
|
||||
"quota_warning_bcc": "Kvoteadvarsel BCC",
|
||||
"footer_exclude": "",
|
||||
"custom_attributes": "",
|
||||
"last_modified": "",
|
||||
"app_passwd_protocols": "",
|
||||
"created_on": "",
|
||||
"domain_footer_info_vars": {
|
||||
"custom": "",
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": ""
|
||||
},
|
||||
"domain_footer_skip_replies": "",
|
||||
"spam_filter": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info": "",
|
||||
"domain_footer_plain": "",
|
||||
"sogo_access_info": "",
|
||||
"acl": "",
|
||||
"none_inherit": "",
|
||||
"pushover": "",
|
||||
"pushover_sound": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"ratelimit": "",
|
||||
"sogo_access": ""
|
||||
"quota_warning_bcc": "Kvoteadvarsel BCC"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Afbestille",
|
||||
@@ -678,9 +581,7 @@
|
||||
"restart_container": "Genstart beholderen",
|
||||
"restart_container_info": "<b>Vigtig:</b> Det kan tage et stykke tid at gennemføre en yndefuld genstart. Vent til den er færdig.",
|
||||
"restart_now": "Genstart nu",
|
||||
"restarting_container": "Genstart af beholder, det kan tage et stykke tid",
|
||||
"hibp_check": "",
|
||||
"nothing_selected": ""
|
||||
"restarting_container": "Genstart af beholder, det kan tage et stykke tid"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Konfiguration og detailer",
|
||||
@@ -691,8 +592,7 @@
|
||||
"quarantine": "Karantæne",
|
||||
"restart_netfilter": "Genstart netfilter",
|
||||
"restart_sogo": "Genstart SOGo",
|
||||
"user_settings": "Brugerindstillinger",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Brugerindstillinger"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "Venter på TFA-bekræftelse",
|
||||
@@ -857,31 +757,7 @@
|
||||
"yes": "✓",
|
||||
"goto_ham": "Lær som <b>ønsket</b>",
|
||||
"catch_all": "Fang-alt",
|
||||
"open_logs": "Åben logfiler",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"all_domains": "",
|
||||
"domain_templates": "",
|
||||
"last_modified": "",
|
||||
"last_pw_change": "",
|
||||
"mailbox_templates": "",
|
||||
"template": "",
|
||||
"relay_unknown": "",
|
||||
"add_alias_expand": "",
|
||||
"add_template": "",
|
||||
"created_on": "",
|
||||
"goto_spam": "",
|
||||
"recipient": "",
|
||||
"relay_all": "",
|
||||
"sender": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"templates": ""
|
||||
"open_logs": "Åben logfiler"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Log ind som mailboks ejer for at give adgang via OAuth2.",
|
||||
@@ -942,24 +818,10 @@
|
||||
"table_size_show_n": "Vis %s genstande",
|
||||
"text_from_html_content": "Indhold (konverterede html)",
|
||||
"text_plain_content": "Indhold (text/plain)",
|
||||
"toggle_all": "Skift alt",
|
||||
"settings_info": ""
|
||||
"toggle_all": "Skift alt"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Køadministrator",
|
||||
"deliver_mail": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": ""
|
||||
"queue_manager": "Køadministrator"
|
||||
},
|
||||
"start": {
|
||||
"help": "Vis / skjul hjælpepanel",
|
||||
@@ -1041,17 +903,7 @@
|
||||
"verified_totp_login": "Bekræftet TOTP-login",
|
||||
"verified_webauthn_login": "Bekræftet WebAuthn-login",
|
||||
"verified_fido2_login": "Bekræftet FIDO2-login",
|
||||
"verified_yotp_login": "Bekræftet Yubico OTP-login",
|
||||
"template_removed": "",
|
||||
"domain_footer_modified": "",
|
||||
"cors_headers_edited": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"nginx_reloaded": "",
|
||||
"password_policy_saved": "",
|
||||
"template_added": "",
|
||||
"template_modified": ""
|
||||
"verified_yotp_login": "Bekræftet Yubico OTP-login"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s bruger Yubico Cloud API. Få en API-nøgle til din nøgle <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">here</a>",
|
||||
@@ -1076,10 +928,7 @@
|
||||
"webauthn": "WebAuthn godkendelse",
|
||||
"waiting_usb_auth": "<i>Venter på USB-enhed...</i><br><br>Tryk let på knappen på din USB-enhed nu.",
|
||||
"waiting_usb_register": "<i>Venter på USB-enhed...</i><br><br>Indtast din adgangskode ovenfor, og bekræft din registrering ved at trykke på knappen på din USB-enhed.",
|
||||
"yubi_otp": "Yubico OTP godkendelse",
|
||||
"authenticators": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Yubico OTP godkendelse"
|
||||
},
|
||||
"fido2": {
|
||||
"set_fn": "Set venneligt navn",
|
||||
@@ -1093,8 +942,7 @@
|
||||
"start_fido2_validation": "Start FIDO2 validering",
|
||||
"fido2_auth": "Login med FIDO2",
|
||||
"fido2_success": "Enheden blev registreret",
|
||||
"fido2_validation_failed": "Validering mislykkedes",
|
||||
"set_fido2_touchid": ""
|
||||
"fido2_validation_failed": "Validering mislykkedes"
|
||||
},
|
||||
"user": {
|
||||
"action": "Handling",
|
||||
@@ -1223,42 +1071,7 @@
|
||||
"waiting": "Venter",
|
||||
"week": "uge",
|
||||
"weekly": "Ugeligt",
|
||||
"weeks": "uger",
|
||||
"empty": "",
|
||||
"allowed_protocols": "",
|
||||
"login_history": "",
|
||||
"mailbox": "",
|
||||
"mailbox_general": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"attribute": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"created_on": "",
|
||||
"direct_protocol_access": "",
|
||||
"fido2_webauthn": "",
|
||||
"from": "",
|
||||
"last_pw_change": "",
|
||||
"last_ui_login": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"pushover_sound": "",
|
||||
"recent_successful_connections": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"value": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"years": "",
|
||||
"mailbox_settings": ""
|
||||
"weeks": "uger"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Kan ikke slette en bruger som er logget ind.",
|
||||
@@ -1270,40 +1083,12 @@
|
||||
"no_active_admin": "Kan ikke deaktivere den sidste administrator",
|
||||
"quota_exceeded_scope": "Domænekvote overskredet: Kun ubegrænsede postkasser kan oprettes i dette domæneomfang.",
|
||||
"session_token": "Form nøgle ugyldig: Nøgle passer ikke",
|
||||
"session_ua": "Form nøgle ugyldig: Bruger-Agent gyldighedskontrols fejl",
|
||||
"is_not_primary_alias": ""
|
||||
"session_ua": "Form nøgle ugyldig: Bruger-Agent gyldighedskontrols fejl"
|
||||
},
|
||||
"datatables": {
|
||||
"lengthMenu": "Vis _MENU_ poster",
|
||||
"paginate": {
|
||||
"first": "Først",
|
||||
"last": "",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"decimal": "",
|
||||
"infoPostFix": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"thousands": "",
|
||||
"emptyTable": "",
|
||||
"expand_all": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"collapse_all": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"day": "",
|
||||
"hour": "",
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": ""
|
||||
"first": "Først"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"prohibited": "Untersagt durch Richtlinie",
|
||||
"protocol_access": "Ändern der erlaubten Protokolle",
|
||||
"pushover": "Pushover",
|
||||
"pw_reset": "Verwalten der E-Mail zur Passwortwiederherstellung erlauben",
|
||||
"quarantine": "Quarantäne-Aktionen",
|
||||
"quarantine_attachments": "Anhänge aus Quarantäne",
|
||||
"quarantine_category": "Ändern der Quarantäne-Benachrichtigungskategorie",
|
||||
@@ -248,6 +249,11 @@
|
||||
"password_policy_numbers": "Muss eine Ziffer enthalten",
|
||||
"password_policy_special_chars": "Muss Sonderzeichen enthalten",
|
||||
"password_repeat": "Passwort wiederholen",
|
||||
"password_reset_info": "Wenn keine E-Mail zur Passwortwiederherstellung hinterlegt ist, kann diese Funktion nicht genutzt werden.",
|
||||
"password_reset_settings": "Einstellungen zur Passwortwiederherstellung",
|
||||
"password_reset_tmpl_html": "HTML Vorlage",
|
||||
"password_reset_tmpl_text": "Text Vorlage",
|
||||
"password_settings": "Passwort Einstellungen",
|
||||
"priority": "Gewichtung",
|
||||
"private_key": "Private Key",
|
||||
"quarantine": "Quarantäne",
|
||||
@@ -287,6 +293,8 @@
|
||||
"remove_row": "Entfernen",
|
||||
"reset_default": "Zurücksetzen auf Standard",
|
||||
"reset_limit": "Hash entfernen",
|
||||
"reset_password_vars": "<code>{{link}}</code> Der generierte Passwort-Reset-Link<br><code>{{username}}</code> Die E-Mail-Adresse des Benutzers, der die Passwortzurücksetzung angefordert hat<br><code>{{username2}}</code> Die E-Mail-Adresse zur Wiederherstellung<br><code>{{date}}</code> Das Datum, an dem die Passwort-Reset-Anfrage gestellt wurde<br><code>{{token_lifetime}}</code> Die Gültigkeitsdauer des Tokens in Minuten<br><code>{{hostname}}</code> Der mailcow Hostname",
|
||||
"restore_template": "Leer lassen, um Standard-Template wiederherzustellen.",
|
||||
"routing": "Routing",
|
||||
"rsetting_add_rule": "Regel hinzufügen",
|
||||
"rsetting_content": "Regelinhalt",
|
||||
@@ -407,6 +415,7 @@
|
||||
"invalid_nexthop_authenticated": "Dieser Next Hop existiert bereits mit abweichenden Authentifizierungsdaten. Die bestehenden Authentifizierungsdaten dieses \"Next Hops\" müssen vorab angepasst werden.",
|
||||
"invalid_recipient_map_new": "Neuer Empfänger \"%s\" ist ungültig",
|
||||
"invalid_recipient_map_old": "Originaler Empfänger \"%s\" ist ungültig",
|
||||
"invalid_reset_token": "Ungültiger Rücksetz-Token",
|
||||
"ip_list_empty": "Liste erlaubter IPs darf nicht leer sein",
|
||||
"is_alias": "%s lautet bereits eine Alias-Adresse",
|
||||
"is_alias_or_mailbox": "Eine Mailbox, ein Alias oder eine sich aus einer Alias-Domain ergebende Adresse mit dem Namen %s ist bereits vorhanden",
|
||||
@@ -436,6 +445,8 @@
|
||||
"password_complexity": "Passwort entspricht nicht den Richtlinien",
|
||||
"password_empty": "Passwort darf nicht leer sein",
|
||||
"password_mismatch": "Passwort-Wiederholung stimmt nicht überein",
|
||||
"password_reset_invalid_user": "Benutzer nicht gefunden oder keine E-Mail-Adresse zur Wiederherstellung eingerichtet",
|
||||
"password_reset_na": "Die Passwortwiederherstellung ist momentan nicht verfügbar. Bitte wenden Sie sich an Ihren Administrator.",
|
||||
"policy_list_from_exists": "Ein Eintrag mit diesem Wert existiert bereits",
|
||||
"policy_list_from_invalid": "Eintrag hat ein ungültiges Format",
|
||||
"private_key_error": "Schlüsselfehler: %s",
|
||||
@@ -444,10 +455,12 @@
|
||||
"pushover_token": "Pushover Token hat das falsche Format",
|
||||
"quota_not_0_not_numeric": "Speicherplatz muss numerisch und >= 0 sein",
|
||||
"recipient_map_entry_exists": "Eine Empfängerumschreibung für Objekt \"%s\" existiert bereits",
|
||||
"recovery_email_failed": "E-Mail zur Wiederherstellung konnte nicht gesendet werden. Bitte wenden Sie sich an Ihren Administrator.",
|
||||
"redis_error": "Redis Fehler: %s",
|
||||
"relayhost_invalid": "Map-Eintrag %s ist ungültig",
|
||||
"release_send_failed": "Die Nachricht konnte nicht versendet werden: %s",
|
||||
"reset_f2b_regex": "Regex-Filter konnten nicht in vorgegebener Zeit zurückgesetzt werden, bitte erneut versuchen oder die Webseite neu laden.",
|
||||
"reset_token_limit_exceeded": "Das Limit für Rücksetz-Tokens wurde überschritten. Bitte versuchen Sie es später erneut.",
|
||||
"resource_invalid": "Ressourcenname %s ist ungültig",
|
||||
"rl_timeframe": "Ratelimit-Zeitraum ist inkorrekt",
|
||||
"rspamd_ui_pw_length": "Rspamd UI-Passwort muss mindestens 6 Zeichen lang sein",
|
||||
@@ -467,6 +480,7 @@
|
||||
"tls_policy_map_dest_invalid": "Ziel ist ungültig",
|
||||
"tls_policy_map_entry_exists": "Eine TLS-Richtlinie \"%s\" existiert bereits",
|
||||
"tls_policy_map_parameter_invalid": "Parameter ist ungültig",
|
||||
"to_invalid": "Empfänger darf nicht leer sein",
|
||||
"totp_verification_failed": "TOTP-Verifizierung fehlgeschlagen",
|
||||
"transport_dest_exists": "Transport-Maps-Ziel \"%s\" existiert bereits",
|
||||
"webauthn_verification_failed": "WebAuthn-Verifizierung fehlgeschlagen: %s",
|
||||
@@ -638,6 +652,7 @@
|
||||
"nexthop": "Next Hop",
|
||||
"none_inherit": "Keine Auswahl / Erben",
|
||||
"password": "Passwort",
|
||||
"password_recovery_email": "E-Mail zur Passwortwiederherstellung",
|
||||
"password_repeat": "Passwort wiederholen",
|
||||
"previous": "Vorherige Seite",
|
||||
"private_comment": "Privater Kommentar",
|
||||
@@ -741,12 +756,19 @@
|
||||
"session_expires": "Die Sitzung wird in etwa 15 Sekunden beendet."
|
||||
},
|
||||
"login": {
|
||||
"back_to_mailcow": "Zurück zu mailcow",
|
||||
"delayed": "Login wurde zur Sicherheit um %s Sekunde/n verzögert.",
|
||||
"fido2_webauthn": "FIDO2/WebAuthn Login",
|
||||
"forgot_password": "> Passwort vergessen?",
|
||||
"invalid_pass_reset_token": "Der Rücksetz-Token für das Passwort ist ungültig oder abgelaufen.<br>Bitte fordern Sie einen neuen Link zur Passwortwiederherstellung an.",
|
||||
"login": "Anmelden",
|
||||
"mobileconfig_info": "Bitte als Mailbox-Benutzer einloggen, um das Verbindungsprofil herunterzuladen.",
|
||||
"new_password": "Neues Passwort",
|
||||
"new_password_confirm": "Neues Passwort bestätigen",
|
||||
"other_logins": "Key Login",
|
||||
"password": "Passwort",
|
||||
"reset_password": "Passwort zurücksetzen",
|
||||
"request_reset_password": "Passwortänderung anfordern",
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"mailbox": {
|
||||
@@ -1065,11 +1087,13 @@
|
||||
"nginx_reloaded": "Nginx wurde neu geladen",
|
||||
"object_modified": "Änderungen an Objekt %s wurden gespeichert",
|
||||
"password_policy_saved": "Passwortrichtlinie wurde erfolgreich gespeichert",
|
||||
"password_changed_success": "Das Passwort wurde erfolgreich geändert",
|
||||
"pushover_settings_edited": "Pushover-Konfiguration gespeichert, bitte den Zugang im Anschluss verifizieren.",
|
||||
"qlearn_spam": "Nachricht-ID %s wurde als Spam gelernt und gelöscht",
|
||||
"queue_command_success": "Queue-Aufgabe erfolgreich ausgeführt",
|
||||
"recipient_map_entry_deleted": "Empfängerumschreibung mit der ID %s wurde gelöscht",
|
||||
"recipient_map_entry_saved": "Empfängerumschreibung für Objekt \"%s\" wurde gespeichert",
|
||||
"recovery_email_sent": "Wiederherstellungs-E-Mail an %s gesendet",
|
||||
"relayhost_added": "Map-Eintrag %s wurde hinzugefügt",
|
||||
"relayhost_removed": "Map-Eintrag %s wurde entfernt",
|
||||
"reset_main_logo": "Standardgrafik wurde wiederhergestellt",
|
||||
@@ -1202,6 +1226,7 @@
|
||||
"password": "Passwort",
|
||||
"password_now": "Aktuelles Passwort (Änderungen bestätigen)",
|
||||
"password_repeat": "Passwort (Wiederholung)",
|
||||
"password_reset_info": "Wenn keine E-Mail zur Passwortwiederherstellung hinterlegt ist, kann diese Funktion nicht genutzt werden.",
|
||||
"pushover_evaluate_x_prio": "Hohe Priorität eskalieren [<code>X-Priority: 1</code>]",
|
||||
"pushover_info": "Push-Benachrichtungen werden angewendet auf alle nicht-Spam Nachrichten zugestellt an <b>%s</b>, einschließlich Alias-Adressen (shared, non-shared, tagged).",
|
||||
"pushover_only_x_prio": "Nur Mail mit hoher Priorität berücksichtigen [<code>X-Priority: 1</code>]",
|
||||
@@ -1211,6 +1236,7 @@
|
||||
"pushover_title": "Notification Titel",
|
||||
"pushover_vars": "Wenn kein Sender-Filter definiert ist, werden alle E-Mails berücksichtigt.<br>Die direkte Absenderprüfung und reguläre Ausdrücke werden unabhängig voneinander geprüft, sie <b>hängen nicht voneinander ab</b> und werden der Reihe nach ausgeführt. <br>Verwendbare Variablen für Titel und Text (Datenschutzrichtlinien beachten)",
|
||||
"pushover_verify": "Verbindung verifizieren",
|
||||
"pw_recovery_email": "E-Mail zur Passwortwiederherstellung",
|
||||
"q_add_header": "Junk-Ordner",
|
||||
"q_all": "Alle Kategorien",
|
||||
"q_reject": "Abgelehnt",
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"prohibited": "Prohibited by ACL",
|
||||
"protocol_access": "Change protocol access",
|
||||
"pushover": "Pushover",
|
||||
"pw_reset": "Allow to reset mailcow user password",
|
||||
"quarantine": "Quarantine actions",
|
||||
"quarantine_attachments": "Quarantine attachments",
|
||||
"quarantine_category": "Change quarantine notification category",
|
||||
@@ -256,6 +257,11 @@
|
||||
"password_policy_numbers": "Must contain at least one number",
|
||||
"password_policy_special_chars": "Must contain special characters",
|
||||
"password_repeat": "Confirmation password (repeat)",
|
||||
"password_reset_info": "If no recovery email is provided, this function cannot be used.",
|
||||
"password_reset_settings": "Password Recovery Settings",
|
||||
"password_reset_tmpl_html": "HTML Template",
|
||||
"password_reset_tmpl_text": "Text Template",
|
||||
"password_settings": "Password Settings",
|
||||
"priority": "Priority",
|
||||
"private_key": "Private key",
|
||||
"quarantine": "Quarantine",
|
||||
@@ -296,6 +302,8 @@
|
||||
"remove_row": "Remove row",
|
||||
"reset_default": "Reset to default",
|
||||
"reset_limit": "Remove hash",
|
||||
"reset_password_vars": "<code>{{link}}</code> The generated password reset link<br><code>{{username}}</code> The mailbox name of the user who requested the password reset<br><code>{{username2}}</code> The recovery mailbox name<br><code>{{date}}</code> The date the password reset request was made<br><code>{{token_lifetime}}</code> The token lifetime in minutes<br><code>{{hostname}}</code> The mailcow hostname",
|
||||
"restore_template": "Leave empty to restore default template.",
|
||||
"routing": "Routing",
|
||||
"rsetting_add_rule": "Add rule",
|
||||
"rsetting_content": "Rule content",
|
||||
@@ -407,6 +415,7 @@
|
||||
"invalid_nexthop_authenticated": "Next hop exists with different credentials, please update the existing credentials for this next hop first.",
|
||||
"invalid_recipient_map_new": "Invalid new recipient specified: %s",
|
||||
"invalid_recipient_map_old": "Invalid original recipient specified: %s",
|
||||
"invalid_reset_token": "Invalid reset token",
|
||||
"ip_list_empty": "List of allowed IPs cannot be empty",
|
||||
"is_alias": "%s is already known as an alias address",
|
||||
"is_alias_or_mailbox": "%s is already known as an alias, a mailbox or an alias address expanded from an alias domain.",
|
||||
@@ -436,6 +445,8 @@
|
||||
"password_complexity": "Password does not meet the policy",
|
||||
"password_empty": "Password must not be empty",
|
||||
"password_mismatch": "Confirmation password does not match",
|
||||
"password_reset_invalid_user": "Mailbox not found or no recovery email is set",
|
||||
"password_reset_na": "The password recovery is currently unavailable. Please contact your administrator.",
|
||||
"policy_list_from_exists": "A record with given name exists",
|
||||
"policy_list_from_invalid": "Record has invalid format",
|
||||
"private_key_error": "Private key error: %s",
|
||||
@@ -444,10 +455,12 @@
|
||||
"pushover_token": "Pushover token has a wrong format",
|
||||
"quota_not_0_not_numeric": "Quota must be numeric and >= 0",
|
||||
"recipient_map_entry_exists": "A Recipient map entry \"%s\" exists",
|
||||
"recovery_email_failed": "Could not send a recovery email. Please contact your administrator.",
|
||||
"redis_error": "Redis error: %s",
|
||||
"relayhost_invalid": "Map entry %s is invalid",
|
||||
"release_send_failed": "Message could not be released: %s",
|
||||
"reset_f2b_regex": "Regex filter could not be reset in time, please try again or wait a few more seconds and reload the website.",
|
||||
"reset_token_limit_exceeded": "Reset token limit has been exceeded. Please try again later.",
|
||||
"resource_invalid": "Resource name %s is invalid",
|
||||
"rl_timeframe": "Rate limit time frame is incorrect",
|
||||
"rspamd_ui_pw_length": "Rspamd UI password should be at least 6 chars long",
|
||||
@@ -470,6 +483,7 @@
|
||||
"tls_policy_map_dest_invalid": "Policy destination is invalid",
|
||||
"tls_policy_map_entry_exists": "A TLS policy map entry \"%s\" exists",
|
||||
"tls_policy_map_parameter_invalid": "Policy parameter is invalid",
|
||||
"to_invalid": "Recipient must not be empty",
|
||||
"totp_verification_failed": "TOTP verification failed",
|
||||
"transport_dest_exists": "Transport destination \"%s\" exists",
|
||||
"webauthn_verification_failed": "WebAuthn verification failed: %s",
|
||||
@@ -638,6 +652,7 @@
|
||||
"none_inherit": "None / Inherit",
|
||||
"nexthop": "Next hop",
|
||||
"password": "Password",
|
||||
"password_recovery_email": "Password recovery email",
|
||||
"password_repeat": "Confirmation password (repeat)",
|
||||
"previous": "Previous page",
|
||||
"private_comment": "Private comment",
|
||||
@@ -741,12 +756,19 @@
|
||||
"session_expires": "Your session will expire in about 15 seconds"
|
||||
},
|
||||
"login": {
|
||||
"back_to_mailcow": "Back to mailcow",
|
||||
"delayed": "Login was delayed by %s seconds.",
|
||||
"fido2_webauthn": "FIDO2/WebAuthn Login",
|
||||
"forgot_password": "> Forgot Password?",
|
||||
"invalid_pass_reset_token": "The reset password token is invalid or has expired.<br>Please request a new password reset link.",
|
||||
"login": "Login",
|
||||
"mobileconfig_info": "Please login as mailbox user to download the requested Apple connection profile.",
|
||||
"new_password": "New Password",
|
||||
"new_password_confirm": "Confirm new password",
|
||||
"other_logins": "Key login",
|
||||
"password": "Password",
|
||||
"reset_password": "Reset Password",
|
||||
"request_reset_password": "Request password change",
|
||||
"username": "Username"
|
||||
},
|
||||
"mailbox": {
|
||||
@@ -1072,11 +1094,13 @@
|
||||
"nginx_reloaded": "Nginx was reloaded",
|
||||
"object_modified": "Changes to object %s have been saved",
|
||||
"password_policy_saved": "Password policy was saved successfully",
|
||||
"password_changed_success": "Password was successfully changed",
|
||||
"pushover_settings_edited": "Pushover settings successfully set, please verify credentials.",
|
||||
"qlearn_spam": "Message ID %s was learned as spam and deleted",
|
||||
"queue_command_success": "Queue command completed successfully",
|
||||
"recipient_map_entry_deleted": "Recipient map ID %s has been deleted",
|
||||
"recipient_map_entry_saved": "Recipient map entry \"%s\" has been saved",
|
||||
"recovery_email_sent": "Recovery email sent to %s",
|
||||
"relayhost_added": "Map entry %s has been added",
|
||||
"relayhost_removed": "Map entry %s has been removed",
|
||||
"reset_main_logo": "Reset to default logo",
|
||||
@@ -1210,6 +1234,7 @@
|
||||
"password": "Password",
|
||||
"password_now": "Current password (confirm changes)",
|
||||
"password_repeat": "Password (repeat)",
|
||||
"password_reset_info": "If no email for password recovery is provided, this function cannot be used.",
|
||||
"pushover_evaluate_x_prio": "Escalate high priority mail [<code>X-Priority: 1</code>]",
|
||||
"pushover_info": "Push notification settings will apply to all clean (non-spam) mail delivered to <b>%s</b> including aliases (shared, non-shared, tagged).",
|
||||
"pushover_only_x_prio": "Only consider high priority mail [<code>X-Priority: 1</code>]",
|
||||
@@ -1220,6 +1245,7 @@
|
||||
"pushover_sound": "Sound",
|
||||
"pushover_vars": "When no sender filter is defined, all mails will be considered.<br>Regex filters as well as exact sender checks can be defined individually and will be considered sequentially. They do not depend on each other.<br>Useable variables for text and title (please take note of data protection policies)",
|
||||
"pushover_verify": "Verify credentials",
|
||||
"pw_recovery_email": "Password recovery email",
|
||||
"q_add_header": "Junk folder",
|
||||
"q_all": "All categories",
|
||||
"q_reject": "Rejected",
|
||||
|
||||
@@ -24,11 +24,7 @@
|
||||
"protocol_access": "Cambiar protocolo de acceso",
|
||||
"quarantine_category": "Cambiar categoría de las notificaciones de cuarentena",
|
||||
"domain_relayhost": "Cambiar relayhost por un dominio",
|
||||
"extend_sender_acl": "Permitir extender la ACL del remitente por direcciones externas",
|
||||
"smtp_ip_access": "",
|
||||
"sogo_access": "",
|
||||
"mailbox_relayhost": "",
|
||||
"pushover": ""
|
||||
"extend_sender_acl": "Permitir extender la ACL del remitente por direcciones externas"
|
||||
},
|
||||
"add": {
|
||||
"activate_filter_warn": "Todos los demás filtros se desactivarán cuando este filtro se active.",
|
||||
@@ -99,16 +95,7 @@
|
||||
"app_password": "Añadir contraseña para la app",
|
||||
"public_comment": "Comentarios públicos",
|
||||
"disable_login": "Desactivar login (el correo entrante seguirá activo)",
|
||||
"comment_info": "Los comentarios privados no son visibles al usuario, mientras que los comentarios públicos aparecerán sobre la información general del usuario",
|
||||
"dry": "",
|
||||
"private_comment": "",
|
||||
"relay_transport_info": "",
|
||||
"domain_matches_hostname": "",
|
||||
"relay_unknown_only": "",
|
||||
"relayhost_wrapped_tls_info": "",
|
||||
"app_passwd_protocols": "",
|
||||
"bcc_dest_format": "",
|
||||
"tags": ""
|
||||
"comment_info": "Los comentarios privados no son visibles al usuario, mientras que los comentarios públicos aparecerán sobre la información general del usuario"
|
||||
},
|
||||
"admin": {
|
||||
"access": "Acceso",
|
||||
@@ -261,97 +248,7 @@
|
||||
"unban_pending": "Desbloqueo pendiente",
|
||||
"unchanged_if_empty": "Si no hay cambios déjalo en blanco",
|
||||
"upload": "Cargar",
|
||||
"username": "Nombre de usuario",
|
||||
"lookup_mx": "",
|
||||
"license_info": "",
|
||||
"message": "",
|
||||
"oauth2_apps": "",
|
||||
"transport_dest_format": "",
|
||||
"ui_footer": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"no": "",
|
||||
"quarantine_max_score": "",
|
||||
"queue_unban": "",
|
||||
"rate_name": "",
|
||||
"regex_maps": "",
|
||||
"relay_rcpt": "",
|
||||
"rsetting_no_selection": "",
|
||||
"rsettings_preset_3": "",
|
||||
"rsettings_preset_4": "",
|
||||
"title": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"oauth2_add_client": "",
|
||||
"oauth2_revoke_tokens": "",
|
||||
"options": "",
|
||||
"ui_header_announcement": "",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"quarantine_redirect": "",
|
||||
"time": "",
|
||||
"ui_header_announcement_active": "",
|
||||
"ui_header_announcement_type_info": "",
|
||||
"ui_header_announcement_type_warning": "",
|
||||
"validate_license_now": "",
|
||||
"reset_limit": "",
|
||||
"success": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"cors_settings": "",
|
||||
"login_time": "",
|
||||
"yes": "",
|
||||
"f2b_filter": "",
|
||||
"html": "",
|
||||
"oauth2_redirect_uri": "",
|
||||
"oauth2_renew_secret": "",
|
||||
"admins": "",
|
||||
"admins_ldap": "",
|
||||
"guid": "",
|
||||
"guid_and_license": "",
|
||||
"hash_remove_info": "",
|
||||
"is_mx_based": "",
|
||||
"last_applied": "",
|
||||
"ip_check": "",
|
||||
"ip_check_disabled": "",
|
||||
"ip_check_opt_in": "",
|
||||
"rspamd_global_filters_regex": "",
|
||||
"sal_level": "",
|
||||
"service": "",
|
||||
"service_id": "",
|
||||
"oauth2_info": "",
|
||||
"optional": "",
|
||||
"password_length": "",
|
||||
"password_policy": "",
|
||||
"password_policy_chars": "",
|
||||
"password_policy_length": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"password_policy_numbers": "",
|
||||
"priority": "",
|
||||
"quarantine_bcc": "",
|
||||
"rspamd_global_filters": "",
|
||||
"rspamd_global_filters_agree": "",
|
||||
"rspamd_global_filters_info": "",
|
||||
"ui_header_announcement_content": "",
|
||||
"ui_header_announcement_help": "",
|
||||
"ui_header_announcement_select": "",
|
||||
"ui_header_announcement_type": "",
|
||||
"ui_header_announcement_type_danger": "",
|
||||
"verify": "",
|
||||
"customer_id": "",
|
||||
"dkim_overwrite_key": "",
|
||||
"domain_admin": "",
|
||||
"domain_s": "",
|
||||
"f2b_regex_info": "",
|
||||
"advanced_settings": "",
|
||||
"api_info": "",
|
||||
"api_read_only": "",
|
||||
"api_read_write": "",
|
||||
"api_skip_ip_check": "",
|
||||
"authed_user": "",
|
||||
"ays": "",
|
||||
"convert_html_to_text": "",
|
||||
"password_policy_special_chars": ""
|
||||
"username": "Nombre de usuario"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Acceso denegado o datos del formulario inválidos",
|
||||
@@ -439,50 +336,7 @@
|
||||
"username_invalid": "Nombre de usuario no se puede utilizar",
|
||||
"validity_missing": "Por favor asigna un periodo de validez",
|
||||
"value_missing": "Por favor proporcione todos los valores",
|
||||
"yotp_verification_failed": "Verificación Yubico OTP fallida: %s",
|
||||
"invalid_mime_type": "",
|
||||
"description_invalid": "",
|
||||
"dkim_domain_or_sel_exists": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"extra_acl_invalid": "",
|
||||
"last_key": "",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"app_name_empty": "",
|
||||
"app_passwd_id_invalid": "",
|
||||
"comment_too_long": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"demo_mode_enabled": "",
|
||||
"global_filter_write_error": "",
|
||||
"pushover_credentials_missing": "",
|
||||
"pushover_key": "",
|
||||
"pushover_token": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"maxquota_empty": "",
|
||||
"nginx_reload_failed": "",
|
||||
"targetd_relay_domain": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"temp_error": "",
|
||||
"tfa_token_invalid": "",
|
||||
"tls_policy_map_dest_invalid": "",
|
||||
"extra_acl_invalid_domain": "",
|
||||
"fido2_verification_failed": "",
|
||||
"template_name_invalid": "",
|
||||
"resource_invalid": "",
|
||||
"file_open_error": "",
|
||||
"img_tmp_missing": "",
|
||||
"invalid_filter_type": "",
|
||||
"global_map_invalid": "",
|
||||
"global_map_write_error": "",
|
||||
"ham_learn_error": "",
|
||||
"img_invalid": "",
|
||||
"imagick_exception": "",
|
||||
"max_alias_exceeded": "",
|
||||
"reset_f2b_regex": ""
|
||||
"yotp_verification_failed": "Verificación Yubico OTP fallida: %s"
|
||||
},
|
||||
"debug": {
|
||||
"containers_info": "Información de los contenedores",
|
||||
@@ -500,30 +354,7 @@
|
||||
"solr_status": "Solr status",
|
||||
"uptime": "Uptime",
|
||||
"static_logs": "Logs estáticos",
|
||||
"system_containers": "Sistema y Contenedores",
|
||||
"container_disabled": "",
|
||||
"architecture": "",
|
||||
"update_failed": "",
|
||||
"wip": "",
|
||||
"chart_this_server": "",
|
||||
"container_running": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"error_show_ip": "",
|
||||
"history_all_servers": "",
|
||||
"jvm_memory_solr": "",
|
||||
"memory": "",
|
||||
"online_users": "",
|
||||
"service": "",
|
||||
"show_ip": "",
|
||||
"started_on": "",
|
||||
"success": "",
|
||||
"timezone": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"username": "",
|
||||
"login_time": ""
|
||||
"system_containers": "Sistema y Contenedores"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Valor derivado del registro A / AAAA. Esto es permitido siempre que el registro apunte al recurso correcto.",
|
||||
@@ -533,8 +364,7 @@
|
||||
"dns_records_name": "Nombre",
|
||||
"dns_records_status": "Información actual",
|
||||
"dns_records_type": "Tipo",
|
||||
"optional": "Este récord es opcional.",
|
||||
"dns_records_docs": ""
|
||||
"optional": "Este récord es opcional."
|
||||
},
|
||||
"edit": {
|
||||
"active": "Activo",
|
||||
@@ -602,85 +432,13 @@
|
||||
"title": "Editar objeto",
|
||||
"unchanged_if_empty": "Si no hay cambios dejalo en blanco",
|
||||
"username": "Nombre de usuario",
|
||||
"validate_save": "Validar y guardar",
|
||||
"lookup_mx": "",
|
||||
"footer_exclude": "",
|
||||
"custom_attributes": "",
|
||||
"domain_footer_info_vars": {
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_domain": "",
|
||||
"custom": "",
|
||||
"auth_user": "",
|
||||
"from_addr": ""
|
||||
},
|
||||
"domain_footer_plain": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"sender_acl_info": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"spam_score": "",
|
||||
"domain_footer_info": "",
|
||||
"acl": "",
|
||||
"relay_transport_info": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sogo_access": "",
|
||||
"sogo_access_info": "",
|
||||
"sogo_visible": "",
|
||||
"sogo_visible_info": "",
|
||||
"spam_alias": "",
|
||||
"spam_filter": "",
|
||||
"spam_policy": "",
|
||||
"generate": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"pushover": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_text": "",
|
||||
"admin": "",
|
||||
"advanced_settings": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"app_passwd": "",
|
||||
"app_passwd_protocols": "",
|
||||
"comment_info": "",
|
||||
"created_on": "",
|
||||
"delete_ays": "",
|
||||
"extended_sender_acl": "",
|
||||
"extended_sender_acl_info": "",
|
||||
"mbox_rl_info": "",
|
||||
"none_inherit": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_title": "",
|
||||
"pushover_sound": "",
|
||||
"pushover_vars": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"pushover_verify": "",
|
||||
"quota_warning_bcc": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"ratelimit": "",
|
||||
"relay_unknown_only": "",
|
||||
"pushover_info": "",
|
||||
"pushover_sender_regex": "",
|
||||
"app_name": "",
|
||||
"disable_login": ""
|
||||
"validate_save": "Validar y guardar"
|
||||
},
|
||||
"footer": {
|
||||
"hibp_nok": "¡Se encontró coincidencia - esta es una contraseña <b>no segura</b>, selecciona otra!",
|
||||
"hibp_ok": "No se encontraron coincidencias",
|
||||
"loading": "Espera por favor...",
|
||||
"restart_now": "Reiniciar ahora",
|
||||
"cancel": "",
|
||||
"confirm_delete": "",
|
||||
"delete_now": "",
|
||||
"hibp_check": "",
|
||||
"nothing_selected": "",
|
||||
"delete_these_items": "",
|
||||
"restart_container": "",
|
||||
"restarting_container": "",
|
||||
"restart_container_info": ""
|
||||
"restart_now": "Reiniciar ahora"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Administración",
|
||||
@@ -689,24 +447,17 @@
|
||||
"mailcow_config": "Configuración",
|
||||
"quarantine": "Cuarentena",
|
||||
"restart_sogo": "Reiniciar SOGo",
|
||||
"user_settings": "Configuraciones de usuario",
|
||||
"apps": "",
|
||||
"mailcow_system": "",
|
||||
"restart_netfilter": ""
|
||||
"user_settings": "Configuraciones de usuario"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "En espera de confirmación de TFA",
|
||||
"no_action": "No hay acción aplicable",
|
||||
"session_expires": ""
|
||||
"no_action": "No hay acción aplicable"
|
||||
},
|
||||
"login": {
|
||||
"delayed": "El inicio de sesión ha sido retrasado %s segundos.",
|
||||
"login": "Inicio de sesión",
|
||||
"password": "Contraseña",
|
||||
"username": "Nombre de usuario",
|
||||
"fido2_webauthn": "",
|
||||
"mobileconfig_info": "",
|
||||
"other_logins": ""
|
||||
"username": "Nombre de usuario"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "Acción",
|
||||
@@ -818,70 +569,7 @@
|
||||
"toggle_all": "Selecionar todo",
|
||||
"username": "Nombre de usuario",
|
||||
"waiting": "Esperando",
|
||||
"weekly": "Cada semana",
|
||||
"disable_login": "",
|
||||
"templates": "",
|
||||
"public_comment": "",
|
||||
"q_add_header": "",
|
||||
"q_reject": "",
|
||||
"table_size": "",
|
||||
"domain_templates": "",
|
||||
"catch_all": "",
|
||||
"created_on": "",
|
||||
"goto_ham": "",
|
||||
"add_alias_expand": "",
|
||||
"add_template": "",
|
||||
"alias_domain_alias_hint": "",
|
||||
"alias_domain_backupmx": "",
|
||||
"all_domains": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"goto_spam": "",
|
||||
"insert_preset": "",
|
||||
"last_mail_login": "",
|
||||
"last_pw_change": "",
|
||||
"last_run_reset": "",
|
||||
"mailbox": "",
|
||||
"mailbox_defaults": "",
|
||||
"no": "",
|
||||
"open_logs": "",
|
||||
"owner": "",
|
||||
"private_comment": "",
|
||||
"q_all": "",
|
||||
"quarantine_category": "",
|
||||
"recipient": "",
|
||||
"relay_unknown": "",
|
||||
"sender": "",
|
||||
"sieve_preset_1": "",
|
||||
"sieve_preset_5": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"template": "",
|
||||
"tls_policy_maps_enforced_tls": "",
|
||||
"yes": "",
|
||||
"table_size_show_n": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"sieve_preset_header": "",
|
||||
"mailbox_templates": "",
|
||||
"sieve_preset_2": "",
|
||||
"sieve_preset_3": "",
|
||||
"sieve_preset_8": "",
|
||||
"sogo_visible": "",
|
||||
"sogo_visible_n": "",
|
||||
"sogo_visible_y": "",
|
||||
"spam_aliases": "",
|
||||
"stats": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"sieve_preset_4": "",
|
||||
"sieve_preset_6": "",
|
||||
"sieve_preset_7": ""
|
||||
"weekly": "Cada semana"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Inicie sesión como propietario del buzón para otorgar acceso a través de OAuth2.",
|
||||
@@ -923,43 +611,10 @@
|
||||
"subj": "Asunto",
|
||||
"text_from_html_content": "Contenido (html convertido)",
|
||||
"text_plain_content": "Contenido (text/plain)",
|
||||
"toggle_all": "Seleccionar todos",
|
||||
"spam": "",
|
||||
"confirm": "",
|
||||
"download_eml": "",
|
||||
"info": "",
|
||||
"deliver_inbox": "",
|
||||
"junk_folder": "",
|
||||
"notified": "",
|
||||
"qinfo": "",
|
||||
"quick_delete_link": "",
|
||||
"quick_info_link": "",
|
||||
"quick_release_link": "",
|
||||
"refresh": "",
|
||||
"rejected": "",
|
||||
"rewrite_subject": "",
|
||||
"rspamd_result": "",
|
||||
"sender_header": "",
|
||||
"settings_info": "",
|
||||
"table_size": "",
|
||||
"table_size_show_n": "",
|
||||
"type": ""
|
||||
"toggle_all": "Seleccionar todos"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Administrador de cola",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": ""
|
||||
"queue_manager": "Administrador de cola"
|
||||
},
|
||||
"start": {
|
||||
"help": "Mostrar/Ocultar panel de ayuda",
|
||||
@@ -1015,43 +670,7 @@
|
||||
"tls_policy_map_entry_saved": "Regla de póliza de TLS \"%s\" ha sido guardada",
|
||||
"verified_totp_login": "Inicio de sesión TOTP verificado",
|
||||
"verified_webauthn_login": "Inicio de sesión WebAuthn verificado",
|
||||
"verified_yotp_login": "Inicio de sesión Yubico OTP verificado",
|
||||
"sogo_profile_reset": "",
|
||||
"template_added": "",
|
||||
"template_removed": "",
|
||||
"ui_texts": "",
|
||||
"upload_success": "",
|
||||
"verified_fido2_login": "",
|
||||
"admin_added": "",
|
||||
"admin_api_modified": "",
|
||||
"admin_removed": "",
|
||||
"app_links": "",
|
||||
"app_passwd_added": "",
|
||||
"app_passwd_removed": "",
|
||||
"cors_headers_edited": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"dkim_duplicated": "",
|
||||
"domain_footer_modified": "",
|
||||
"dovecot_restart_success": "",
|
||||
"eas_reset": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"f2b_modified": "",
|
||||
"global_filter_written": "",
|
||||
"hash_deleted": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"item_deleted": "",
|
||||
"item_released": "",
|
||||
"items_deleted": "",
|
||||
"items_released": "",
|
||||
"learned_ham": "",
|
||||
"license_modified": "",
|
||||
"nginx_reloaded": "",
|
||||
"object_modified": "",
|
||||
"password_policy_saved": "",
|
||||
"pushover_settings_edited": "",
|
||||
"reset_main_logo": "",
|
||||
"resource_removed": "",
|
||||
"template_modified": ""
|
||||
"verified_yotp_login": "Inicio de sesión Yubico OTP verificado"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s utiliza la API de la nube de Yubico. Por favor, obtén una clave API para tu llave <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">aquí</a>.",
|
||||
@@ -1071,15 +690,7 @@
|
||||
"webauthn": "Autenticación WebAuthn",
|
||||
"waiting_usb_auth": "<i>Esperando al dispositivo USB...</i><br><br>Toque el botón en su dispositivo USB WebAuthn ahora.",
|
||||
"waiting_usb_register": "<i>Esperando al dispositivo USB....</i><br><br>Ingrese su contraseña arriba y confirme su registro WebAuthn tocando el botón en su dispositivo USB WebAuthn.",
|
||||
"yubi_otp": "Yubico OTP",
|
||||
"authenticators": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": "",
|
||||
"error_code": "",
|
||||
"init_webauthn": "",
|
||||
"reload_retry": "",
|
||||
"start_webauthn_validation": "",
|
||||
"tfa_token_invalid": ""
|
||||
"yubi_otp": "Yubico OTP"
|
||||
},
|
||||
"user": {
|
||||
"action": "Acción",
|
||||
@@ -1160,150 +771,11 @@
|
||||
"waiting": "Esperando",
|
||||
"week": "Semana",
|
||||
"weekly": "Cada semana",
|
||||
"weeks": "Semanas",
|
||||
"fido2_webauthn": "",
|
||||
"last_pw_change": "",
|
||||
"save": "",
|
||||
"pushover_info": "",
|
||||
"client_configuration": "",
|
||||
"created_on": "",
|
||||
"q_add_header": "",
|
||||
"active_sieve": "",
|
||||
"apple_connection_profile_mailonly": "",
|
||||
"attribute": "",
|
||||
"email": "",
|
||||
"expire_in": "",
|
||||
"last_ui_login": "",
|
||||
"loading": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"messages": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"no_active_filter": "",
|
||||
"password_repeat": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_sound": "",
|
||||
"pushover_vars": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"recent_successful_connections": "",
|
||||
"sogo_profile_reset_help": "",
|
||||
"sogo_profile_reset_now": "",
|
||||
"spam_score_reset": "",
|
||||
"spamfilter_table_domain_policy": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"last_mail_login": "",
|
||||
"pushover_verify": "",
|
||||
"q_all": "",
|
||||
"quarantine_category_info": "",
|
||||
"create_app_passwd": "",
|
||||
"no_last_login": "",
|
||||
"sender_acl_disabled": "",
|
||||
"show_sieve_filters": "",
|
||||
"email_and_dav": "",
|
||||
"empty": "",
|
||||
"syncjob_check_log": "",
|
||||
"login_history": "",
|
||||
"mailbox": "",
|
||||
"text": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"delete_ays": "",
|
||||
"direct_protocol_access": "",
|
||||
"force_pw_update": "",
|
||||
"from": "",
|
||||
"generate": "",
|
||||
"in_use": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"title": "",
|
||||
"value": "",
|
||||
"verify": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"years": "",
|
||||
"advanced_settings": "",
|
||||
"app_hint": "",
|
||||
"allowed_protocols": "",
|
||||
"app_name": "",
|
||||
"app_passwds": "",
|
||||
"apple_connection_profile": "",
|
||||
"apple_connection_profile_complete": "",
|
||||
"password": ""
|
||||
"weeks": "Semanas"
|
||||
},
|
||||
"warning": {
|
||||
"domain_added_sogo_failed": "Se agregó el dominio pero no se pudo reiniciar SOGo, revisa los logs del servidor.",
|
||||
"fuzzy_learn_error": "Error aprendiendo hash: %s",
|
||||
"ip_invalid": "IP inválida omitida: %s",
|
||||
"session_token": "",
|
||||
"session_ua": "",
|
||||
"cannot_delete_self": "",
|
||||
"dovecot_restart_failed": "",
|
||||
"hash_not_found": "",
|
||||
"is_not_primary_alias": "",
|
||||
"no_active_admin": "",
|
||||
"quota_exceeded_scope": ""
|
||||
},
|
||||
"datatables": {
|
||||
"decimal": "",
|
||||
"infoPostFix": "",
|
||||
"paginate": {
|
||||
"last": "",
|
||||
"first": "",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"collapse_all": "",
|
||||
"emptyTable": "",
|
||||
"expand_all": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"thousands": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
}
|
||||
},
|
||||
"fido2": {
|
||||
"set_fn": "",
|
||||
"start_fido2_validation": "",
|
||||
"confirm": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_success": "",
|
||||
"fido2_validation_failed": "",
|
||||
"fn": "",
|
||||
"known_ids": "",
|
||||
"none": "",
|
||||
"register_status": "",
|
||||
"rename": "",
|
||||
"set_fido2": "",
|
||||
"set_fido2_touchid": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": "",
|
||||
"day": ""
|
||||
"ip_invalid": "IP inválida omitida: %s"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,15 +20,7 @@
|
||||
"spam_score": "Roskapostitulos",
|
||||
"syncjobs": "Synkronoi työt",
|
||||
"tls_policy": "TLS-käytäntö",
|
||||
"unlimited_quota": "Rajoittamaton kiintiö sähkö postilaatikoille",
|
||||
"app_passwds": "",
|
||||
"domain_desc": "",
|
||||
"domain_relayhost": "",
|
||||
"mailbox_relayhost": "",
|
||||
"protocol_access": "",
|
||||
"pushover": "",
|
||||
"quarantine_category": "",
|
||||
"smtp_ip_access": ""
|
||||
"unlimited_quota": "Rajoittamaton kiintiö sähkö postilaatikoille"
|
||||
},
|
||||
"add": {
|
||||
"activate_filter_warn": "Kaikki muut suodattimet deaktivoidaan, kun aktiivinen on valittu.",
|
||||
@@ -98,17 +90,7 @@
|
||||
"timeout2": "Aikakatkaisu yhteyden muodostamiseen paikalliseen isäntään",
|
||||
"username": "Käyttäjätunnus",
|
||||
"validate": "Vahvista",
|
||||
"validation_success": "Vahvistettu onnistuneesti",
|
||||
"dry": "",
|
||||
"tags": "",
|
||||
"inactive": "",
|
||||
"relay_transport_info": "",
|
||||
"app_name": "",
|
||||
"app_password": "",
|
||||
"app_passwd_protocols": "",
|
||||
"bcc_dest_format": "",
|
||||
"disable_login": "",
|
||||
"relay_unknown_only": ""
|
||||
"validation_success": "Vahvistettu onnistuneesti"
|
||||
},
|
||||
"admin": {
|
||||
"access": "Hallinta",
|
||||
@@ -285,73 +267,7 @@
|
||||
"upload": "Lataa",
|
||||
"username": "Käyttäjätunnus",
|
||||
"validate_license_now": "Vahvista GUID-tunnus lisenssi palvelinta vastaan",
|
||||
"yes": "✓",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"cors_settings": "",
|
||||
"ip_check": "",
|
||||
"rspamd_global_filters": "",
|
||||
"service": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"password_policy_numbers": "",
|
||||
"quarantine_max_score": "",
|
||||
"quarantine_redirect": "",
|
||||
"domain_admin": "",
|
||||
"f2b_filter": "",
|
||||
"f2b_regex_info": "",
|
||||
"html": "",
|
||||
"oauth2_apps": "",
|
||||
"oauth2_add_client": "",
|
||||
"optional": "",
|
||||
"options": "",
|
||||
"password_length": "",
|
||||
"password_policy_chars": "",
|
||||
"rspamd_global_filters_agree": "",
|
||||
"rspamd_global_filters_info": "",
|
||||
"sal_level": "",
|
||||
"success": "",
|
||||
"title": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"ui_header_announcement": "",
|
||||
"ui_header_announcement_active": "",
|
||||
"ui_header_announcement_content": "",
|
||||
"password_policy": "",
|
||||
"password_policy_length": "",
|
||||
"queue_unban": "",
|
||||
"relay_rcpt": "",
|
||||
"rsettings_preset_3": "",
|
||||
"rsettings_preset_4": "",
|
||||
"ui_header_announcement_help": "",
|
||||
"ui_header_announcement_select": "",
|
||||
"ui_header_announcement_type": "",
|
||||
"ui_header_announcement_type_danger": "",
|
||||
"ui_header_announcement_type_info": "",
|
||||
"ui_header_announcement_type_warning": "",
|
||||
"verify": "",
|
||||
"ip_check_disabled": "",
|
||||
"ip_check_opt_in": "",
|
||||
"is_mx_based": "",
|
||||
"login_time": "",
|
||||
"rspamd_global_filters_regex": "",
|
||||
"password_policy_special_chars": "",
|
||||
"quarantine_bcc": "",
|
||||
"regex_maps": "",
|
||||
"dkim_overwrite_key": "",
|
||||
"admins": "",
|
||||
"admins_ldap": "",
|
||||
"advanced_settings": "",
|
||||
"api_read_only": "",
|
||||
"api_read_write": "",
|
||||
"api_skip_ip_check": "",
|
||||
"ays": "",
|
||||
"convert_html_to_text": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Käyttö estetty tai lomake tiedot eivät kelpaa",
|
||||
@@ -453,36 +369,7 @@
|
||||
"username_invalid": "Käyttäjätunnusta %s ei voi käyttää",
|
||||
"validity_missing": "Anna voimassaolo aika",
|
||||
"value_missing": "Anna kaikki arvot",
|
||||
"yotp_verification_failed": "Yubico OTP todentaminen epäonnistui: %s",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"cors_invalid_origin": "",
|
||||
"file_open_error": "",
|
||||
"global_filter_write_error": "",
|
||||
"global_map_invalid": "",
|
||||
"global_map_write_error": "",
|
||||
"ham_learn_error": "",
|
||||
"invalid_filter_type": "",
|
||||
"cors_invalid_method": "",
|
||||
"pushover_key": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"nginx_reload_failed": "",
|
||||
"pushover_credentials_missing": "",
|
||||
"pushover_token": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": "",
|
||||
"tls_policy_map_dest_invalid": "",
|
||||
"webauthn_username_failed": "",
|
||||
"app_name_empty": "",
|
||||
"app_passwd_id_invalid": "",
|
||||
"demo_mode_enabled": "",
|
||||
"dkim_domain_or_sel_exists": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"fido2_verification_failed": "",
|
||||
"reset_f2b_regex": "",
|
||||
"tfa_token_invalid": ""
|
||||
"yotp_verification_failed": "Yubico OTP todentaminen epäonnistui: %s"
|
||||
},
|
||||
"debug": {
|
||||
"containers_info": "Säilön tiedot",
|
||||
@@ -502,28 +389,7 @@
|
||||
"uptime": "Päällä",
|
||||
"started_on": "Aloitettiin",
|
||||
"static_logs": "Staattiset lokit",
|
||||
"system_containers": "Systeemi & Säiliöt",
|
||||
"memory": "",
|
||||
"architecture": "",
|
||||
"online_users": "",
|
||||
"error_show_ip": "",
|
||||
"success": "",
|
||||
"wip": "",
|
||||
"container_disabled": "",
|
||||
"history_all_servers": "",
|
||||
"service": "",
|
||||
"timezone": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": "",
|
||||
"username": "",
|
||||
"chart_this_server": "",
|
||||
"container_running": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"login_time": "",
|
||||
"current_time": "",
|
||||
"show_ip": ""
|
||||
"system_containers": "Systeemi & Säiliöt"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Arvo johdettu A / AAAA-tietueesta. Tätä tuetaan niin kauan kuin tietue osoittaa oikealle resurssille.",
|
||||
@@ -533,8 +399,7 @@
|
||||
"dns_records_name": "Nimi",
|
||||
"dns_records_status": "Nykyinen tila",
|
||||
"dns_records_type": "Tyyppi",
|
||||
"optional": "Tämä tietue on valinnainen.",
|
||||
"dns_records_docs": ""
|
||||
"optional": "Tämä tietue on valinnainen."
|
||||
},
|
||||
"edit": {
|
||||
"active": "Aktiivinen",
|
||||
@@ -615,57 +480,7 @@
|
||||
"title": "Muokkaa objektia",
|
||||
"unchanged_if_empty": "Jos muuttumaton jätä tyhjäksi",
|
||||
"username": "Käyttäjätunnus",
|
||||
"validate_save": "Vahvista ja tallenna",
|
||||
"lookup_mx": "",
|
||||
"footer_exclude": "",
|
||||
"custom_attributes": "",
|
||||
"domain_footer_info_vars": {
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"custom": ""
|
||||
},
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"app_name": "",
|
||||
"app_passwd": "",
|
||||
"app_passwd_protocols": "",
|
||||
"created_on": "",
|
||||
"sogo_access": "",
|
||||
"sogo_access_info": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"domain_footer_plain": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"ratelimit": "",
|
||||
"acl": "",
|
||||
"advanced_settings": "",
|
||||
"allow_from_smtp": "",
|
||||
"domain_footer_info": "",
|
||||
"none_inherit": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_verify": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"relay_transport_info": "",
|
||||
"relay_unknown_only": "",
|
||||
"spam_filter": "",
|
||||
"pushover_text": "",
|
||||
"admin": "",
|
||||
"generate": "",
|
||||
"delete_ays": "",
|
||||
"disable_login": "",
|
||||
"pushover": "",
|
||||
"pushover_info": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_title": "",
|
||||
"pushover_sound": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"quota_warning_bcc": ""
|
||||
"validate_save": "Vahvista ja tallenna"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Peruuta",
|
||||
@@ -678,9 +493,7 @@
|
||||
"restart_container": "Uudelleen käynnistä moottori",
|
||||
"restart_container_info": "<b>Tärkeää:</b> Uudelleenkäynnistys voi kestää jonkin aikaa, odota, kunnes se päättyy.",
|
||||
"restart_now": "Käynnistä uudelleen nyt",
|
||||
"restarting_container": "Uudelleen käynnistä container, tämä saattaa kestää jonkin aikaa...",
|
||||
"hibp_check": "",
|
||||
"nothing_selected": ""
|
||||
"restarting_container": "Uudelleen käynnistä container, tämä saattaa kestää jonkin aikaa..."
|
||||
},
|
||||
"header": {
|
||||
"administration": "Kokoonpanon & tiedot",
|
||||
@@ -691,8 +504,7 @@
|
||||
"quarantine": "Karanteeni",
|
||||
"restart_netfilter": "Uudelleen käynnistä netfilter",
|
||||
"restart_sogo": "Uudelleen käynnistä SOGo",
|
||||
"user_settings": "Käyttäjän asetukset",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Käyttäjän asetukset"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "Odotetaan TFA-vahvistusta",
|
||||
@@ -703,10 +515,7 @@
|
||||
"delayed": "Kirjautuminen viivästyi %s sekunttia.",
|
||||
"login": "Kirjaudu",
|
||||
"password": "Salasana",
|
||||
"username": "Käyttäjätunnus",
|
||||
"fido2_webauthn": "",
|
||||
"mobileconfig_info": "",
|
||||
"other_logins": ""
|
||||
"username": "Käyttäjätunnus"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "Toiminnot",
|
||||
@@ -830,58 +639,7 @@
|
||||
"username": "Käyttäjätunnus",
|
||||
"waiting": "Odotetaan..",
|
||||
"weekly": "Viikoittain",
|
||||
"yes": "✓",
|
||||
"templates": "",
|
||||
"catch_all": "",
|
||||
"created_on": "",
|
||||
"disable_login": "",
|
||||
"domain_templates": "",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"template": "",
|
||||
"sieve_preset_8": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"sieve_preset_header": "",
|
||||
"sender": "",
|
||||
"sieve_preset_6": "",
|
||||
"sieve_preset_7": "",
|
||||
"insert_preset": "",
|
||||
"last_mail_login": "",
|
||||
"add_template": "",
|
||||
"alias_domain_alias_hint": "",
|
||||
"all_domains": "",
|
||||
"allow_from_smtp": "",
|
||||
"allowed_protocols": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"recipient": "",
|
||||
"relay_unknown": "",
|
||||
"stats": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"table_size": "",
|
||||
"table_size_show_n": "",
|
||||
"tls_policy_maps_enforced_tls": "",
|
||||
"last_pw_change": "",
|
||||
"open_logs": "",
|
||||
"q_add_header": "",
|
||||
"q_all": "",
|
||||
"mailbox_defaults": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"mailbox_templates": "",
|
||||
"sieve_preset_1": "",
|
||||
"sieve_preset_2": "",
|
||||
"sieve_preset_3": "",
|
||||
"sieve_preset_4": "",
|
||||
"sieve_preset_5": "",
|
||||
"add_alias_expand": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Kirjaudu sisään postilaatikon omistajana myöntääksesi käyttöoikeuden OAuth2: n kautta.",
|
||||
@@ -925,41 +683,10 @@
|
||||
"subj": "Aihe",
|
||||
"text_from_html_content": "Sisältö (muunnettu html)",
|
||||
"text_plain_content": "Sisältö (teksti / tavallinen)",
|
||||
"toggle_all": "Valitse kaikki",
|
||||
"spam": "",
|
||||
"deliver_inbox": "",
|
||||
"info": "",
|
||||
"type": "",
|
||||
"quick_info_link": "",
|
||||
"table_size": "",
|
||||
"table_size_show_n": "",
|
||||
"confirm": "",
|
||||
"qinfo": "",
|
||||
"sender_header": "",
|
||||
"settings_info": "",
|
||||
"rewrite_subject": "",
|
||||
"junk_folder": "",
|
||||
"notified": "",
|
||||
"quick_release_link": "",
|
||||
"rejected": "",
|
||||
"quick_delete_link": "",
|
||||
"refresh": ""
|
||||
"toggle_all": "Valitse kaikki"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Jonon hallinta",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": ""
|
||||
"queue_manager": "Jonon hallinta"
|
||||
},
|
||||
"start": {
|
||||
"help": "Näytä/Piilota help paneeli",
|
||||
@@ -1034,24 +761,7 @@
|
||||
"upload_success": "Tiedosto ladattu onnistuneesti",
|
||||
"verified_totp_login": "Vahvistettu TOTP-kirjautuminen",
|
||||
"verified_webauthn_login": "Vahvistettu WebAuthn kirjautuminen",
|
||||
"verified_yotp_login": "Vahvistettu Yubico OTP kirjautuminen",
|
||||
"app_passwd_added": "",
|
||||
"global_filter_written": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"app_passwd_removed": "",
|
||||
"cors_headers_edited": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"domain_footer_modified": "",
|
||||
"dovecot_restart_success": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"learned_ham": "",
|
||||
"nginx_reloaded": "",
|
||||
"password_policy_saved": "",
|
||||
"pushover_settings_edited": "",
|
||||
"template_removed": "",
|
||||
"verified_fido2_login": ""
|
||||
"verified_yotp_login": "Vahvistettu Yubico OTP kirjautuminen"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s käyttää Yubico Cloud API. Saat avaimesi API-avaimen <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">täältä</a>",
|
||||
@@ -1075,11 +785,7 @@
|
||||
"webauthn": "WebAuthn todennus",
|
||||
"waiting_usb_auth": "<i>Odotetaan USB-laitetta...</i><br><br>Napauta painiketta WebAuthn USB-laitteessa nyt",
|
||||
"waiting_usb_register": "<i>Odotetaan USB-laitetta...</i><br><br>Anna salasanasi yltä ja vahvista WebAuthn-rekisteröinti napauttamalla painiketta WebAuthn USB-laitteessa.",
|
||||
"yubi_otp": "Yubico OTP-todennus",
|
||||
"authenticators": "",
|
||||
"tfa_token_invalid": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Yubico OTP-todennus"
|
||||
},
|
||||
"user": {
|
||||
"action": "Toiminnot",
|
||||
@@ -1174,76 +880,7 @@
|
||||
"waiting": "Odottaa",
|
||||
"week": "Viikko",
|
||||
"weekly": "Viikoittain",
|
||||
"weeks": "Viikkoa",
|
||||
"attribute": "",
|
||||
"last_ui_login": "",
|
||||
"allowed_protocols": "",
|
||||
"delete_ays": "",
|
||||
"email_and_dav": "",
|
||||
"empty": "",
|
||||
"fido2_webauthn": "",
|
||||
"text": "",
|
||||
"generate": "",
|
||||
"last_mail_login": "",
|
||||
"last_pw_change": "",
|
||||
"login_history": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"no_last_login": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"password": "",
|
||||
"password_repeat": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_info": "",
|
||||
"pushover_sender_array": "",
|
||||
"recent_successful_connections": "",
|
||||
"value": "",
|
||||
"mailbox": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"title": "",
|
||||
"verify": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"years": "",
|
||||
"advanced_settings": "",
|
||||
"app_hint": "",
|
||||
"app_name": "",
|
||||
"app_passwds": "",
|
||||
"apple_connection_profile": "",
|
||||
"apple_connection_profile_mailonly": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"create_app_passwd": "",
|
||||
"created_on": "",
|
||||
"direct_protocol_access": "",
|
||||
"email": "",
|
||||
"apple_connection_profile_complete": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_sound": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"q_add_header": "",
|
||||
"q_all": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_category_info": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"from": "",
|
||||
"save": "",
|
||||
"syncjob_check_log": ""
|
||||
"weeks": "Viikkoa"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Kirjautuneen käyttäjän poistaminen ei onnistu",
|
||||
@@ -1253,10 +890,7 @@
|
||||
"ip_invalid": "Ohitettu virheellinen IP-osoite: %s",
|
||||
"no_active_admin": "Viimeistä aktiivista järjestelmänvalvojaa ei voi poistaa käytöstä",
|
||||
"session_token": "Lomakkeen tunnus sanoma ei kelpaa: tunnus sanoman risti riita",
|
||||
"session_ua": "Lomakkeen tunnus sanoma ei kelpaa: käyttäjä agentin tarkistus virhe",
|
||||
"is_not_primary_alias": "",
|
||||
"quota_exceeded_scope": "",
|
||||
"dovecot_restart_failed": ""
|
||||
"session_ua": "Lomakkeen tunnus sanoma ei kelpaa: käyttäjä agentin tarkistus virhe"
|
||||
},
|
||||
"datatables": {
|
||||
"emptyTable": "Tietoja ei ole saatavilla taulukossa",
|
||||
@@ -1267,43 +901,7 @@
|
||||
"search": "Etsi:",
|
||||
"paginate": {
|
||||
"first": "Ensimmäinen",
|
||||
"last": "Edellinen",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"infoPostFix": "",
|
||||
"decimal": "",
|
||||
"collapse_all": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"thousands": "",
|
||||
"zeroRecords": "",
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
"last": "Edellinen"
|
||||
}
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_validation_failed": "",
|
||||
"fn": "",
|
||||
"known_ids": "",
|
||||
"register_status": "",
|
||||
"rename": "",
|
||||
"set_fido2": "",
|
||||
"fido2_success": "",
|
||||
"none": "",
|
||||
"set_fido2_touchid": "",
|
||||
"set_fn": "",
|
||||
"start_fido2_validation": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": "",
|
||||
"day": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,15 +343,7 @@
|
||||
"f2b_manage_external": "Gérer Fail2Ban en externe",
|
||||
"transport_test_rcpt_info": "• ; Utilisez null@hosted.mailcow.de pour tester le relais vers une destination étrangère.",
|
||||
"relay_rcpt": "Adresse \"À :\"",
|
||||
"is_mx_based": "Basé sur MX",
|
||||
"service": "",
|
||||
"success": "",
|
||||
"cors_settings": "",
|
||||
"ip_check_opt_in": "",
|
||||
"admins_ldap": "",
|
||||
"login_time": "",
|
||||
"options": "",
|
||||
"queue_unban": ""
|
||||
"is_mx_based": "Basé sur MX"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Accès refusé ou données de formulaire non valides",
|
||||
@@ -511,19 +503,7 @@
|
||||
"wip": "En cours de réalisation",
|
||||
"architecture": "Architecture",
|
||||
"cores": "Cœurs",
|
||||
"current_time": "Heure du système",
|
||||
"service": "",
|
||||
"show_ip": "",
|
||||
"memory": "",
|
||||
"success": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": "",
|
||||
"error_show_ip": "",
|
||||
"container_running": "",
|
||||
"container_disabled": "",
|
||||
"container_stopped": "",
|
||||
"login_time": ""
|
||||
"current_time": "Heure du système"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Valeur dérivée de l’enregistrement A/AAAA. Ceci est supporté tant que l’enregistrement indique la bonne ressource.",
|
||||
@@ -662,10 +642,7 @@
|
||||
"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 : <code>Avertissement sur les quotas (user@example.com)</code>.",
|
||||
"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.",
|
||||
"admin": "Modifier l'administrateur",
|
||||
"pushover": "",
|
||||
"pushover_sound": "",
|
||||
"sogo_access": ""
|
||||
"admin": "Modifier l'administrateur"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Annuler",
|
||||
@@ -679,8 +656,7 @@
|
||||
"restart_container_info": "<b>Important :</b> Un redémarrage en douceur peut prendre un certain temps, veuillez attendre qu’il soit terminé.",
|
||||
"restart_now": "Redémarrer maintenant",
|
||||
"restarting_container": "Redémarrage du conteneur, cela peut prendre un certain temps",
|
||||
"nothing_selected": "Rien n'est sélectionné",
|
||||
"hibp_check": ""
|
||||
"nothing_selected": "Rien n'est sélectionné"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Configuration & détails",
|
||||
@@ -691,8 +667,7 @@
|
||||
"quarantine": "Quarantaine",
|
||||
"restart_netfilter": "Redémarrer Netfilter",
|
||||
"restart_sogo": "Redémarrer SOGo",
|
||||
"user_settings": "Paramètres utilisateur",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Paramètres utilisateur"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "En attente de la confirmation de TFA",
|
||||
@@ -866,22 +841,7 @@
|
||||
"mailbox_templates": "Modèle de boîte de réception",
|
||||
"relay_unknown": "Relayer les boîtes de réception inconnues",
|
||||
"all_domains": "Tous les domaines",
|
||||
"syncjob_EXIT_OVERQUOTA": "Quota dépassé de la boîte de réception cible",
|
||||
"syncjob_check_log": "",
|
||||
"add_template": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"templates": "",
|
||||
"recipient": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"template": "",
|
||||
"domain_templates": "",
|
||||
"open_logs": "",
|
||||
"sender": ""
|
||||
"syncjob_EXIT_OVERQUOTA": "Quota dépassé de la boîte de réception cible"
|
||||
},
|
||||
"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.",
|
||||
@@ -954,12 +914,7 @@
|
||||
"hold_mail_legend": "Met en attente les courriers sélectionnés. (Empêche les tentatives de distribution ultérieures)",
|
||||
"unban": "file d'attente d'unban",
|
||||
"unhold_mail": "Libérer",
|
||||
"unhold_mail_legend": "Libère les courriers sélectionnés pour la distribution. (Nécessite une mise en attente préalable)",
|
||||
"deliver_mail": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"show_message": "",
|
||||
"ays": ""
|
||||
"unhold_mail_legend": "Libère les courriers sélectionnés pour la distribution. (Nécessite une mise en attente préalable)"
|
||||
},
|
||||
"start": {
|
||||
"help": "Afficher/masquer le panneau d’aide",
|
||||
@@ -1049,9 +1004,7 @@
|
||||
"template_added": "Modèles ajoutés %s",
|
||||
"template_removed": "Le modèle ayant l'ID %s a été supprimé",
|
||||
"domain_add_dkim_available": "A DKIM key did already exist",
|
||||
"ip_check_opt_in_modified": "Le contrôle de l'IP a été enregistré avec succès",
|
||||
"password_policy_saved": "",
|
||||
"template_modified": ""
|
||||
"ip_check_opt_in_modified": "Le contrôle de l'IP a été enregistré avec succès"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s utilise l'API Yubico Cloud. Veuillez obtenir une clé API pour votre clé <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">ici</a>",
|
||||
@@ -1249,16 +1202,7 @@
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "Nom d'utilisateur ou mot de passe incorrect",
|
||||
"value": "Valeur",
|
||||
"allowed_protocols": "Protocoles autorisés",
|
||||
"mailbox": "Boîte de réception",
|
||||
"open_logs": "",
|
||||
"empty": "",
|
||||
"last_pw_change": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"month": "",
|
||||
"pushover_sound": "",
|
||||
"from": "",
|
||||
"fido2_webauthn": ""
|
||||
"mailbox": "Boîte de réception"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Impossible de supprimer l’utilisateur connecté",
|
||||
@@ -1279,9 +1223,7 @@
|
||||
"thousands": ",",
|
||||
"paginate": {
|
||||
"first": "Premier",
|
||||
"last": "Dernier",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
"last": "Dernier"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": activer pour trier les colonnes en ordre croissant",
|
||||
@@ -1292,18 +1234,9 @@
|
||||
"lengthMenu": "Afficher les entrées _MENU_",
|
||||
"loadingRecords": "Chargement…",
|
||||
"processing": "Veuillez patienter…",
|
||||
"collapse_all": "Tout réduire",
|
||||
"infoPostFix": "",
|
||||
"emptyTable": "",
|
||||
"info": "",
|
||||
"search": "",
|
||||
"zeroRecords": ""
|
||||
"collapse_all": "Tout réduire"
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "Désactivé",
|
||||
"day": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": ""
|
||||
"disabled": "Désactivé"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -129,118 +129,7 @@
|
||||
"customize": "Testreszabás",
|
||||
"destination": "Célállomás",
|
||||
"customer_id": "Ügyfél azonosító",
|
||||
"apps_name": "\"mailcow Apps\" név",
|
||||
"oauth2_redirect_uri": "",
|
||||
"hash_remove_info": "",
|
||||
"ip_check_opt_in": "",
|
||||
"license_info": "",
|
||||
"message_size": "",
|
||||
"nexthop": "",
|
||||
"no_active_bans": "",
|
||||
"no_new_rows": "",
|
||||
"no_record": "",
|
||||
"oauth2_apps": "",
|
||||
"oauth2_add_client": "",
|
||||
"oauth2_client_id": "",
|
||||
"oauth2_client_secret": "",
|
||||
"oauth2_info": "",
|
||||
"oauth2_renew_secret": "",
|
||||
"oauth2_revoke_tokens": "",
|
||||
"optional": "",
|
||||
"options": "",
|
||||
"password": "",
|
||||
"password_length": "",
|
||||
"password_policy": "",
|
||||
"password_policy_chars": "",
|
||||
"password_policy_length": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"password_policy_numbers": "",
|
||||
"password_policy_special_chars": "",
|
||||
"password_repeat": "",
|
||||
"priority": "",
|
||||
"private_key": "",
|
||||
"quarantine": "",
|
||||
"quarantine_exclude_domains": "",
|
||||
"quarantine_release_format_raw": "",
|
||||
"quarantine_retention_size": "",
|
||||
"quota_notification_html": "",
|
||||
"quota_notification_sender": "",
|
||||
"quota_notification_subject": "",
|
||||
"quota_notifications": "",
|
||||
"quota_notifications_info": "",
|
||||
"quota_notifications_vars": "",
|
||||
"r_active": "",
|
||||
"r_inactive": "",
|
||||
"rsettings_preset_1": "",
|
||||
"rsettings_preset_2": "",
|
||||
"rsettings_preset_3": "",
|
||||
"rsettings_preset_4": "",
|
||||
"rspamd_com_settings": "",
|
||||
"rspamd_global_filters": "",
|
||||
"rspamd_global_filters_info": "",
|
||||
"transports_hint": "",
|
||||
"ui_footer": "",
|
||||
"ui_header_announcement_type_danger": "",
|
||||
"ui_header_announcement_type_info": "",
|
||||
"ui_header_announcement_type_warning": "",
|
||||
"ui_texts": "",
|
||||
"unban_pending": "",
|
||||
"unchanged_if_empty": "",
|
||||
"validate_license_now": "",
|
||||
"yes": "",
|
||||
"sal_level": "",
|
||||
"main_name": "",
|
||||
"quarantine_max_age": "",
|
||||
"quarantine_max_score": "",
|
||||
"quarantine_max_size": "",
|
||||
"queue_unban": "",
|
||||
"reset_default": "",
|
||||
"reset_limit": "",
|
||||
"remove": "",
|
||||
"no": "",
|
||||
"rate_name": "",
|
||||
"merged_vars_hint": "",
|
||||
"message": "",
|
||||
"rsetting_desc": "",
|
||||
"rsetting_no_selection": "",
|
||||
"rsetting_none": "",
|
||||
"rsettings_insert_preset": "",
|
||||
"r_info": "",
|
||||
"refresh": "",
|
||||
"regen_api_key": "",
|
||||
"regex_maps": "",
|
||||
"relay_from": "",
|
||||
"relay_rcpt": "",
|
||||
"relay_run": "",
|
||||
"relayhosts": "",
|
||||
"relayhosts_hint": "",
|
||||
"remove_row": "",
|
||||
"rspamd_global_filters_regex": "",
|
||||
"rspamd_settings_map": "",
|
||||
"service_id": "",
|
||||
"success": "",
|
||||
"transport_maps": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"quarantine_notification_html": "",
|
||||
"quarantine_notification_sender": "",
|
||||
"quarantine_notification_subject": "",
|
||||
"quarantine_redirect": "",
|
||||
"quarantine_release_format": "",
|
||||
"quarantine_release_format_att": "",
|
||||
"routing": "",
|
||||
"rsetting_add_rule": "",
|
||||
"rsetting_content": "",
|
||||
"ui_header_announcement": "",
|
||||
"ui_header_announcement_active": "",
|
||||
"ui_header_announcement_content": "",
|
||||
"ui_header_announcement_help": "",
|
||||
"ui_header_announcement_select": "",
|
||||
"ui_header_announcement_type": "",
|
||||
"recipients": "",
|
||||
"quarantine_bcc": "",
|
||||
"rspamd_global_filters_agree": "",
|
||||
"service": "",
|
||||
"lookup_mx": ""
|
||||
"apps_name": "\"mailcow Apps\" név"
|
||||
},
|
||||
"edit": {
|
||||
"active": "Aktív",
|
||||
@@ -257,121 +146,7 @@
|
||||
"description": "Leírás",
|
||||
"domain_quota": "Domain kvóta",
|
||||
"domains": "Domainek",
|
||||
"edit_alias_domain": "Alias domain szerkesztése",
|
||||
"footer_exclude": "",
|
||||
"max_aliases": "",
|
||||
"max_mailboxes": "",
|
||||
"max_quota": "",
|
||||
"maxage": "",
|
||||
"maxbytespersecond": "",
|
||||
"grant_types": "",
|
||||
"last_modified": "",
|
||||
"sogo_visible": "",
|
||||
"force_pw_update": "",
|
||||
"sogo_access": "",
|
||||
"mailbox": "",
|
||||
"mailbox_quota_def": "",
|
||||
"sogo_visible_info": "",
|
||||
"spam_alias": "",
|
||||
"spam_filter": "",
|
||||
"spam_score": "",
|
||||
"subfolder2": "",
|
||||
"syncjob": "",
|
||||
"target_address": "",
|
||||
"target_domain": "",
|
||||
"timeout1": "",
|
||||
"timeout2": "",
|
||||
"unchanged_if_empty": "",
|
||||
"username": "",
|
||||
"custom_attributes": "",
|
||||
"delete2": "",
|
||||
"delete2duplicates": "",
|
||||
"delete_ays": "",
|
||||
"disable_login": "",
|
||||
"domain": "",
|
||||
"domain_admin": "",
|
||||
"spam_policy": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"encryption": "",
|
||||
"exclude": "",
|
||||
"extended_sender_acl": "",
|
||||
"extended_sender_acl_info": "",
|
||||
"relay_all": "",
|
||||
"relay_domain": "",
|
||||
"full_name": "",
|
||||
"generate": "",
|
||||
"admin": "",
|
||||
"created_on": "",
|
||||
"multiple_bookings": "",
|
||||
"acl": "",
|
||||
"pushover_sound": "",
|
||||
"app_passwd_protocols": "",
|
||||
"automap": "",
|
||||
"bcc_dest_format": "",
|
||||
"comment_info": "",
|
||||
"delete1": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info": "",
|
||||
"domain_footer_info_vars": {
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"custom": ""
|
||||
},
|
||||
"domain_footer_plain": "",
|
||||
"dont_check_sender_acl": "",
|
||||
"force_pw_update_info": "",
|
||||
"mbox_rl_info": "",
|
||||
"mins_interval": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"none_inherit": "",
|
||||
"nexthop": "",
|
||||
"password": "",
|
||||
"previous": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"pushover": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_info": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"quota_mb": "",
|
||||
"quota_warning_bcc": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"redirect_uri": "",
|
||||
"relay_all_info": "",
|
||||
"sender_acl": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sieve_type": "",
|
||||
"skipcrossduplicates": "",
|
||||
"sogo_access_info": "",
|
||||
"validate_save": "",
|
||||
"inactive": "",
|
||||
"gal": "",
|
||||
"gal_info": "",
|
||||
"hostname": "",
|
||||
"kind": "",
|
||||
"scope": "",
|
||||
"password_repeat": "",
|
||||
"ratelimit": "",
|
||||
"relay_transport_info": "",
|
||||
"relay_unknown_only": "",
|
||||
"relayhost": "",
|
||||
"remove": "",
|
||||
"resource": "",
|
||||
"save": "",
|
||||
"sender_acl_info": "",
|
||||
"sieve_desc": "",
|
||||
"title": "",
|
||||
"lookup_mx": ""
|
||||
"edit_alias_domain": "Alias domain szerkesztése"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Mégse",
|
||||
@@ -384,9 +159,7 @@
|
||||
"restart_container": "Konténer újraindítása",
|
||||
"restart_container_info": "<b>Fontos:</b> A teljes újraindulás eltarthat egy ideig, kérjük várjon, amíg befejeződik!",
|
||||
"restart_now": "Újraindítás most",
|
||||
"restarting_container": "Konténer újraindítása. Ez eltarthat egy darabig.",
|
||||
"nothing_selected": "",
|
||||
"hibp_check": ""
|
||||
"restarting_container": "Konténer újraindítása. Ez eltarthat egy darabig."
|
||||
},
|
||||
"header": {
|
||||
"administration": "Beállítások és részletek",
|
||||
@@ -397,8 +170,7 @@
|
||||
"quarantine": "Karantén",
|
||||
"restart_netfilter": "Netfilter újraindítása",
|
||||
"restart_sogo": "SOGo újraindítása",
|
||||
"user_settings": "Felhasználó beállításai",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Felhasználó beállításai"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "TFA megerősítésre várakozás",
|
||||
@@ -410,9 +182,7 @@
|
||||
"login": "Bejelentkezés",
|
||||
"mobileconfig_info": "A kért Apple kapcsolat profil letöltéséhez jelentkezzen be, mint postafiók-felhasználó.",
|
||||
"password": "Jelszó",
|
||||
"username": "Felhasználónév",
|
||||
"other_logins": "",
|
||||
"fido2_webauthn": ""
|
||||
"username": "Felhasználónév"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "Művelet",
|
||||
@@ -507,87 +277,7 @@
|
||||
"toggle_all": "Összes átváltása",
|
||||
"username": "Felhasználónév",
|
||||
"waiting": "Várakozás",
|
||||
"weekly": "Hetente",
|
||||
"sieve_preset_6": "",
|
||||
"sieve_preset_8": "",
|
||||
"sender": "",
|
||||
"set_postfilter": "",
|
||||
"set_prefilter": "",
|
||||
"sieve_info": "",
|
||||
"sieve_preset_header": "",
|
||||
"sogo_visible": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"mailbox_templates": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"recipient_map_old_info": "",
|
||||
"relay_all": "",
|
||||
"relay_unknown": "",
|
||||
"sieve_preset_1": "",
|
||||
"sieve_preset_2": "",
|
||||
"sieve_preset_3": "",
|
||||
"sieve_preset_4": "",
|
||||
"sieve_preset_5": "",
|
||||
"sieve_preset_7": "",
|
||||
"sogo_visible_n": "",
|
||||
"sogo_visible_y": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"templates": "",
|
||||
"tls_policy_maps_enforced_tls": "",
|
||||
"tls_policy_maps_info": "",
|
||||
"tls_map_policy": "",
|
||||
"booking_custom_short": "",
|
||||
"booking_ltnull": "",
|
||||
"booking_lt0_short": "",
|
||||
"catch_all": "",
|
||||
"created_on": "",
|
||||
"dkim_domains_selector": "",
|
||||
"dkim_key_length": "",
|
||||
"domain_templates": "",
|
||||
"template": "",
|
||||
"add_alias_expand": "",
|
||||
"add_template": "",
|
||||
"alias_domain_alias_hint": "",
|
||||
"all_domains": "",
|
||||
"bcc_info": "",
|
||||
"bcc_map_type": "",
|
||||
"bcc_maps": "",
|
||||
"bcc_rcpt_map": "",
|
||||
"bcc_sender_map": "",
|
||||
"bcc_to_rcpt": "",
|
||||
"bcc_to_sender": "",
|
||||
"bcc_type": "",
|
||||
"booking_null": "",
|
||||
"booking_0_short": "",
|
||||
"booking_custom": "",
|
||||
"domain_quota_total": "",
|
||||
"gal": "",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"last_modified": "",
|
||||
"last_pw_change": "",
|
||||
"mailbox_defaults": "",
|
||||
"max_aliases": "",
|
||||
"max_mailboxes": "",
|
||||
"max_quota": "",
|
||||
"no": "",
|
||||
"open_logs": "",
|
||||
"q_all": "",
|
||||
"recipient": "",
|
||||
"recipient_map_info": "",
|
||||
"recipient_map_new_info": "",
|
||||
"q_add_header": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"tls_policy_maps": "",
|
||||
"tls_policy_maps_long": "",
|
||||
"yes": ""
|
||||
"weekly": "Hetente"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Kérjük jelentkezzen be postafiók felhasználójával az OAuth2 használatához.",
|
||||
@@ -634,38 +324,10 @@
|
||||
"table_size_show_n": "%s tétel mutatása",
|
||||
"text_from_html_content": "Tartalom (konvertált html)",
|
||||
"text_plain_content": "Tartalom (sima szöveg)",
|
||||
"toggle_all": "Összes átkapcsolása",
|
||||
"settings_info": "",
|
||||
"info": "",
|
||||
"junk_folder": "",
|
||||
"disabled_by_config": "",
|
||||
"qhandler_success": "",
|
||||
"release_body": "",
|
||||
"spam": "",
|
||||
"type": "",
|
||||
"quick_info_link": "",
|
||||
"check_hash": "",
|
||||
"confirm": "",
|
||||
"deliver_inbox": "",
|
||||
"rejected": "",
|
||||
"rewrite_subject": "",
|
||||
"qid": ""
|
||||
"toggle_all": "Összes átkapcsolása"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Queue Manager",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": ""
|
||||
"queue_manager": "Queue Manager"
|
||||
},
|
||||
"start": {
|
||||
"help": "Súgó panel megjelenítése/elrejtése",
|
||||
@@ -720,44 +382,7 @@
|
||||
"resource_modified": "Postafiók %s módosításai mentve",
|
||||
"resource_removed": "Erőforrás %s eltávolítva",
|
||||
"saved_settings": "Beállítások mentve",
|
||||
"upload_success": "File sikeresen feltöltve",
|
||||
"reset_main_logo": "",
|
||||
"template_removed": "",
|
||||
"cors_headers_edited": "",
|
||||
"domain_footer_modified": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"bcc_saved": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"dkim_duplicated": "",
|
||||
"f2b_modified": "",
|
||||
"forwarding_host_added": "",
|
||||
"forwarding_host_removed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"nginx_reloaded": "",
|
||||
"acl_saved": "",
|
||||
"bcc_deleted": "",
|
||||
"bcc_edited": "",
|
||||
"password_policy_saved": "",
|
||||
"pushover_settings_edited": "",
|
||||
"queue_command_success": "",
|
||||
"recipient_map_entry_deleted": "",
|
||||
"recipient_map_entry_saved": "",
|
||||
"relayhost_added": "",
|
||||
"relayhost_removed": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"rl_saved": "",
|
||||
"rspamd_ui_pw_set": "",
|
||||
"settings_map_added": "",
|
||||
"settings_map_removed": "",
|
||||
"sogo_profile_reset": "",
|
||||
"tls_policy_map_entry_deleted": "",
|
||||
"tls_policy_map_entry_saved": "",
|
||||
"ui_texts": "",
|
||||
"verified_fido2_login": "",
|
||||
"verified_totp_login": "",
|
||||
"verified_webauthn_login": "",
|
||||
"verified_yotp_login": ""
|
||||
"upload_success": "File sikeresen feltöltve"
|
||||
},
|
||||
"user": {
|
||||
"action": "Művelet",
|
||||
@@ -858,70 +483,7 @@
|
||||
"waiting": "Várakozás",
|
||||
"week": "hét",
|
||||
"weekly": "heti",
|
||||
"weeks": "hét",
|
||||
"aliases_send_as_all": "",
|
||||
"app_hint": "",
|
||||
"direct_aliases_desc": "",
|
||||
"sogo_profile_reset_now": "",
|
||||
"aliases_also_send_as": "",
|
||||
"apple_connection_profile_complete": "",
|
||||
"apple_connection_profile_mailonly": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"attribute": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"eas_reset_help": "",
|
||||
"empty": "",
|
||||
"shared_aliases_desc": "",
|
||||
"value": "",
|
||||
"allowed_protocols": "",
|
||||
"last_pw_change": "",
|
||||
"direct_protocol_access": "",
|
||||
"fido2_webauthn": "",
|
||||
"from": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_info": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_sound": "",
|
||||
"q_all": "",
|
||||
"sogo_profile_reset": "",
|
||||
"sogo_profile_reset_help": "",
|
||||
"spamfilter_table_domain_policy": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"tls_policy_warning": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"last_ui_login": "",
|
||||
"q_add_header": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_category_info": "",
|
||||
"recent_successful_connections": "",
|
||||
"created_on": "",
|
||||
"is_catch_all": "",
|
||||
"login_history": "",
|
||||
"mailbox": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"years": ""
|
||||
"weeks": "hét"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Bejelentkezett felhasználó nem törölhető.",
|
||||
@@ -929,12 +491,7 @@
|
||||
"no_active_admin": "Utolsó aktív admin felhasználó nem deaktiválható.",
|
||||
"quota_exceeded_scope": "Domain kvóta átlépve: csak korlátok nélküli postafiókok hozhatók létre ebben a domain-ben.",
|
||||
"session_token": "Űrlap-token érvénytelen: Tokenek nem egyeznek",
|
||||
"session_ua": "Űrlap-token érvénytelen: User-Agent hitelesítési probléma",
|
||||
"domain_added_sogo_failed": "",
|
||||
"dovecot_restart_failed": "",
|
||||
"fuzzy_learn_error": "",
|
||||
"hash_not_found": "",
|
||||
"is_not_primary_alias": ""
|
||||
"session_ua": "Űrlap-token érvénytelen: User-Agent hitelesítési probléma"
|
||||
},
|
||||
"acl": {
|
||||
"delimiter_action": "Elhatárolás",
|
||||
@@ -968,15 +525,7 @@
|
||||
"sogo_access": "A SOGo-hozzáférés kezelésének lehetővé tétele"
|
||||
},
|
||||
"diagnostics": {
|
||||
"dns_records": "DNS bejegyzések",
|
||||
"dns_records_data": "",
|
||||
"dns_records_name": "",
|
||||
"dns_records_status": "",
|
||||
"cname_from_a": "",
|
||||
"dns_records_24hours": "",
|
||||
"dns_records_docs": "",
|
||||
"dns_records_type": "",
|
||||
"optional": ""
|
||||
"dns_records": "DNS bejegyzések"
|
||||
},
|
||||
"add": {
|
||||
"username": "Felhasználónév",
|
||||
@@ -1040,270 +589,6 @@
|
||||
"alias_domain": "Alias domain",
|
||||
"alias_domain_info": "<small>Csak érvényes tartománynevek (vesszővel elválasztva).</small>",
|
||||
"app_name": "Alkalmazás neve",
|
||||
"app_passwd_protocols": "Engedélyezett protokollok az alkalmazás jelszavához",
|
||||
"multiple_bookings": "",
|
||||
"quota_mb": "",
|
||||
"relay_all": "",
|
||||
"relay_all_info": "",
|
||||
"relay_domain": "",
|
||||
"relay_unknown_only": "",
|
||||
"relayhost_wrapped_tls_info": "",
|
||||
"select_domain": "",
|
||||
"sieve_desc": "",
|
||||
"skipcrossduplicates": "",
|
||||
"relay_transport_info": "",
|
||||
"sieve_type": "",
|
||||
"subscribeall": "",
|
||||
"automap": "",
|
||||
"syncjob": "",
|
||||
"select": ""
|
||||
},
|
||||
"danger": {
|
||||
"webauthn_authenticator_failed": "",
|
||||
"rl_timeframe": "",
|
||||
"mailbox_invalid": "",
|
||||
"is_spam_alias": "",
|
||||
"last_key": "",
|
||||
"access_denied": "",
|
||||
"alias_domain_invalid": "",
|
||||
"alias_empty": "",
|
||||
"alias_goto_identical": "",
|
||||
"alias_invalid": "",
|
||||
"aliasd_targetd_identical": "",
|
||||
"aliases_in_use": "",
|
||||
"bcc_empty": "",
|
||||
"bcc_exists": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"domain_cannot_match_hostname": "",
|
||||
"domain_exists": "",
|
||||
"domain_invalid": "",
|
||||
"domain_not_empty": "",
|
||||
"domain_not_found": "",
|
||||
"domain_quota_m_in_use": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"extra_acl_invalid": "",
|
||||
"extra_acl_invalid_domain": "",
|
||||
"fido2_verification_failed": "",
|
||||
"file_open_error": "",
|
||||
"from_invalid": "",
|
||||
"global_filter_write_error": "",
|
||||
"global_map_invalid": "",
|
||||
"global_map_write_error": "",
|
||||
"goto_empty": "",
|
||||
"goto_invalid": "",
|
||||
"ham_learn_error": "",
|
||||
"imagick_exception": "",
|
||||
"mailbox_quota_exceeded": "",
|
||||
"text_empty": "",
|
||||
"tfa_token_invalid": "",
|
||||
"tls_policy_map_dest_invalid": "",
|
||||
"tls_policy_map_entry_exists": "",
|
||||
"tls_policy_map_parameter_invalid": "",
|
||||
"app_name_empty": "",
|
||||
"app_passwd_id_invalid": "",
|
||||
"private_key_error": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"login_failed": "",
|
||||
"mailbox_defquota_exceeds_mailbox_maxquota": "",
|
||||
"mailbox_quota_exceeds_domain_quota": "",
|
||||
"mailbox_quota_left_exceeded": "",
|
||||
"mailboxes_in_use": "",
|
||||
"malformed_username": "",
|
||||
"map_content_empty": "",
|
||||
"max_alias_exceeded": "",
|
||||
"next_hop_interferes": "",
|
||||
"next_hop_interferes_any": "",
|
||||
"object_exists": "",
|
||||
"object_is_not_numeric": "",
|
||||
"password_complexity": "",
|
||||
"password_empty": "",
|
||||
"password_mismatch": "",
|
||||
"policy_list_from_exists": "",
|
||||
"policy_list_from_invalid": "",
|
||||
"pushover_credentials_missing": "",
|
||||
"pushover_key": "",
|
||||
"pushover_token": "",
|
||||
"quota_not_0_not_numeric": "",
|
||||
"recipient_map_entry_exists": "",
|
||||
"redis_error": "",
|
||||
"relayhost_invalid": "",
|
||||
"release_send_failed": "",
|
||||
"reset_f2b_regex": "",
|
||||
"resource_invalid": "",
|
||||
"rspamd_ui_pw_length": "",
|
||||
"script_empty": "",
|
||||
"sender_acl_invalid": "",
|
||||
"set_acl_failed": "",
|
||||
"settings_map_invalid": "",
|
||||
"sieve_error": "",
|
||||
"spam_learn_error": "",
|
||||
"subject_empty": "",
|
||||
"target_domain_invalid": "",
|
||||
"targetd_not_found": "",
|
||||
"template_name_invalid": "",
|
||||
"temp_error": "",
|
||||
"totp_verification_failed": "",
|
||||
"transport_dest_exists": "",
|
||||
"webauthn_verification_failed": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"unknown": "",
|
||||
"unknown_tfa_method": "",
|
||||
"unlimited_quota_acl": "",
|
||||
"is_alias_or_mailbox": "",
|
||||
"targetd_relay_domain": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"no_user_defined": "",
|
||||
"bcc_must_be_email": "",
|
||||
"comment_too_long": "",
|
||||
"defquota_empty": "",
|
||||
"demo_mode_enabled": "",
|
||||
"description_invalid": "",
|
||||
"dkim_domain_or_sel_exists": "",
|
||||
"dkim_domain_or_sel_invalid": "",
|
||||
"img_invalid": "",
|
||||
"img_tmp_missing": "",
|
||||
"invalid_bcc_map_type": "",
|
||||
"invalid_destination": "",
|
||||
"invalid_filter_type": "",
|
||||
"invalid_host": "",
|
||||
"invalid_mime_type": "",
|
||||
"invalid_nexthop": "",
|
||||
"invalid_nexthop_authenticated": "",
|
||||
"invalid_recipient_map_new": "",
|
||||
"invalid_recipient_map_old": "",
|
||||
"ip_list_empty": "",
|
||||
"is_alias": "",
|
||||
"max_mailbox_exceeded": "",
|
||||
"max_quota_in_use": "",
|
||||
"maxquota_empty": "",
|
||||
"network_host_invalid": "",
|
||||
"username_invalid": "",
|
||||
"validity_missing": "",
|
||||
"value_missing": "",
|
||||
"yotp_verification_failed": "",
|
||||
"nginx_reload_failed": "",
|
||||
"filter_type": "",
|
||||
"mysql_error": ""
|
||||
},
|
||||
"debug": {
|
||||
"architecture": "",
|
||||
"started_at": "",
|
||||
"started_on": "",
|
||||
"error_show_ip": "",
|
||||
"external_logs": "",
|
||||
"chart_this_server": "",
|
||||
"containers_info": "",
|
||||
"container_running": "",
|
||||
"container_disabled": "",
|
||||
"online_users": "",
|
||||
"last_modified": "",
|
||||
"login_time": "",
|
||||
"logs": "",
|
||||
"memory": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"disk_usage": "",
|
||||
"docs": "",
|
||||
"history_all_servers": "",
|
||||
"in_memory_logs": "",
|
||||
"jvm_memory_solr": "",
|
||||
"log_info": "",
|
||||
"show_ip": "",
|
||||
"size": "",
|
||||
"solr_dead": "",
|
||||
"solr_status": "",
|
||||
"static_logs": "",
|
||||
"success": "",
|
||||
"system_containers": "",
|
||||
"timezone": "",
|
||||
"uptime": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": "",
|
||||
"username": "",
|
||||
"wip": "",
|
||||
"restart_container": "",
|
||||
"service": ""
|
||||
},
|
||||
"tfa": {
|
||||
"delete_tfa": "",
|
||||
"none": "",
|
||||
"error_code": "",
|
||||
"authenticators": "",
|
||||
"confirm_totp_token": "",
|
||||
"init_webauthn": "",
|
||||
"key_id": "",
|
||||
"select": "",
|
||||
"tfa_token_invalid": "",
|
||||
"u2f_deprecated_important": "",
|
||||
"disable_tfa": "",
|
||||
"enter_qr_code": "",
|
||||
"key_id_totp": "",
|
||||
"reload_retry": "",
|
||||
"scan_qr_code": "",
|
||||
"set_tfa": "",
|
||||
"start_webauthn_validation": "",
|
||||
"tfa": "",
|
||||
"totp": "",
|
||||
"u2f_deprecated": "",
|
||||
"webauthn": "",
|
||||
"waiting_usb_auth": "",
|
||||
"waiting_usb_register": "",
|
||||
"yubi_otp": "",
|
||||
"confirm": "",
|
||||
"api_register": ""
|
||||
},
|
||||
"datatables": {
|
||||
"thousands": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"paginate": {
|
||||
"first": "",
|
||||
"last": "",
|
||||
"previous": "",
|
||||
"next": ""
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"emptyTable": "",
|
||||
"expand_all": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"collapse_all": "",
|
||||
"infoPostFix": "",
|
||||
"decimal": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"minute": "",
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"hour": "",
|
||||
"day": ""
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "",
|
||||
"fido2_validation_failed": "",
|
||||
"fn": "",
|
||||
"known_ids": "",
|
||||
"none": "",
|
||||
"register_status": "",
|
||||
"rename": "",
|
||||
"set_fido2": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_success": "",
|
||||
"set_fido2_touchid": "",
|
||||
"set_fn": "",
|
||||
"start_fido2_validation": ""
|
||||
"app_passwd_protocols": "Engedélyezett protokollok az alkalmazás jelszavához"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -341,17 +341,7 @@
|
||||
"rsettings_preset_4": "Disattivare Rspamd per un dominio",
|
||||
"options": "Opzioni",
|
||||
"cors_settings": "Impostazioni CORS",
|
||||
"copy_to_clipboard": "Testo copiato negli appunti!",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"ip_check": "",
|
||||
"ip_check_disabled": "",
|
||||
"ip_check_opt_in": "",
|
||||
"queue_unban": ""
|
||||
"copy_to_clipboard": "Testo copiato negli appunti!"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Accesso negato o form di login non corretto",
|
||||
@@ -476,13 +466,7 @@
|
||||
"template_exists": "Il template %s esiste già",
|
||||
"template_id_invalid": "Il template con ID %s non è valido",
|
||||
"img_dimensions_exceeded": "L'immagine supera la dimensione massima consentita",
|
||||
"img_size_exceeded": "L'immagine supera la dimensione massima del file",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"extended_sender_acl_denied": ""
|
||||
"img_size_exceeded": "L'immagine supera la dimensione massima del file"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Grafico (questo server)",
|
||||
@@ -519,11 +503,7 @@
|
||||
"memory": "Memoria",
|
||||
"timezone": "Fuso orario",
|
||||
"no_update_available": "Il sistema è aggiornato all'ultima versione",
|
||||
"update_failed": "Impossibile verificare la presenza di un aggiornamento",
|
||||
"architecture": "",
|
||||
"show_ip": "",
|
||||
"wip": "",
|
||||
"error_show_ip": ""
|
||||
"update_failed": "Impossibile verificare la presenza di un aggiornamento"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Valore letto dal record A/AAAA. Questo è supportato finché il record punta alla risorsa corretta.",
|
||||
@@ -652,20 +632,7 @@
|
||||
"last_modified": "Ultima modifica",
|
||||
"pushover_sound": "Suono",
|
||||
"custom_attributes": "Attributi personalizzati",
|
||||
"domain_footer_skip_replies": "Ignora il piè di pagina nelle e-mail di risposta",
|
||||
"footer_exclude": "",
|
||||
"domain_footer_info_vars": {
|
||||
"custom": "",
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": ""
|
||||
},
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_plain": "",
|
||||
"domain_footer_info": ""
|
||||
"domain_footer_skip_replies": "Ignora il piè di pagina nelle e-mail di risposta"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "Conferma",
|
||||
@@ -972,9 +939,7 @@
|
||||
"show_message": "Mostra messaggio",
|
||||
"unhold_mail": "Sblocca",
|
||||
"hold_mail_legend": "Blocca le mail selezionate. (Previene ulteriori tentativi di consegna)",
|
||||
"legend": "Funzioni delle azioni della coda di posta:",
|
||||
"unban": "",
|
||||
"unhold_mail_legend": ""
|
||||
"legend": "Funzioni delle azioni della coda di posta:"
|
||||
},
|
||||
"start": {
|
||||
"help": "Mostra/Nascondi pannello di aiuto",
|
||||
@@ -1063,10 +1028,7 @@
|
||||
"template_added": "Aggiunto template %s",
|
||||
"template_modified": "Le modifiche al template %s sono state salvate",
|
||||
"template_removed": "Il template con ID %s è stato cancellato",
|
||||
"f2b_banlist_refreshed": "L'ID della lista blocchi è stato aggiornato con successo.",
|
||||
"domain_footer_modified": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"cors_headers_edited": ""
|
||||
"f2b_banlist_refreshed": "L'ID della lista blocchi è stato aggiornato con successo."
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s usa le API Yubico Cloud. Richiedi una chiave API <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">qui</a>",
|
||||
@@ -1302,8 +1264,6 @@
|
||||
"aria": {
|
||||
"sortAscending": ": attivare l'ordinamento crescente delle colonne",
|
||||
"sortDescending": ": attivare l'ordinamento decrescente delle colonne"
|
||||
},
|
||||
"decimal": "",
|
||||
"infoPostFix": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,10 +25,7 @@
|
||||
"syncjobs": "동기화 작업",
|
||||
"tls_policy": "TLS 정책",
|
||||
"unlimited_quota": "메일에 무제한 할당",
|
||||
"domain_desc": "도메인 설명 변경",
|
||||
"domain_relayhost": "",
|
||||
"mailbox_relayhost": "",
|
||||
"quarantine_category": ""
|
||||
"domain_desc": "도메인 설명 변경"
|
||||
},
|
||||
"add": {
|
||||
"activate_filter_warn": "활성화가 체크되어 있으면 모든 다른 필터들은 비활성화됩니다.",
|
||||
@@ -104,11 +101,7 @@
|
||||
"timeout2": "로컬 호스트 연결 시간 초과",
|
||||
"username": "사용자명",
|
||||
"validate": "확인하기",
|
||||
"validation_success": "성공적으로 확인됨",
|
||||
"dry": "",
|
||||
"tags": "",
|
||||
"app_passwd_protocols": "",
|
||||
"bcc_dest_format": ""
|
||||
"validation_success": "성공적으로 확인됨"
|
||||
},
|
||||
"admin": {
|
||||
"access": "접근",
|
||||
@@ -308,50 +301,7 @@
|
||||
"username": "사용자 이름",
|
||||
"validate_license_now": "라이선스 서버와 GUID 확인",
|
||||
"verify": "확인",
|
||||
"yes": "✓",
|
||||
"is_mx_based": "",
|
||||
"optional": "",
|
||||
"oauth2_apps": "",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"f2b_manage_external": "",
|
||||
"copy_to_clipboard": "",
|
||||
"domain_admin": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"login_time": "",
|
||||
"oauth2_add_client": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"cors_settings": "",
|
||||
"dkim_overwrite_key": "",
|
||||
"f2b_filter": "",
|
||||
"f2b_regex_info": "",
|
||||
"html": "",
|
||||
"options": "",
|
||||
"password_length": "",
|
||||
"password_policy": "",
|
||||
"ip_check": "",
|
||||
"ip_check_disabled": "",
|
||||
"ip_check_opt_in": "",
|
||||
"queue_unban": "",
|
||||
"service": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"password_policy_chars": "",
|
||||
"password_policy_length": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"password_policy_numbers": "",
|
||||
"password_policy_special_chars": "",
|
||||
"quarantine_max_score": "",
|
||||
"relay_rcpt": "",
|
||||
"rsettings_preset_4": "",
|
||||
"success": "",
|
||||
"admins": "",
|
||||
"admins_ldap": "",
|
||||
"api_read_only": "",
|
||||
"api_read_write": "",
|
||||
"convert_html_to_text": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "접근이 거부되거나 잘못된 데이터 양식",
|
||||
@@ -465,24 +415,7 @@
|
||||
"username_invalid": "%s는 사용지 이름으로 사용할 수 없습니다.",
|
||||
"validity_missing": "유효 기간을 지정해주세요.",
|
||||
"value_missing": "모든 값을 입력해주세요.",
|
||||
"yotp_verification_failed": "Yubico OTP 검증 실패: %s",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"fido2_verification_failed": "",
|
||||
"nginx_reload_failed": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": "",
|
||||
"demo_mode_enabled": "",
|
||||
"dkim_domain_or_sel_exists": "",
|
||||
"reset_f2b_regex": "",
|
||||
"tfa_token_invalid": "",
|
||||
"extended_sender_acl_denied": ""
|
||||
"yotp_verification_failed": "Yubico OTP 검증 실패: %s"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Chart (this server)",
|
||||
@@ -504,26 +437,7 @@
|
||||
"uptime": "Uptime",
|
||||
"started_on": "Started on",
|
||||
"static_logs": "Static logs",
|
||||
"system_containers": "System & Containers",
|
||||
"container_running": "",
|
||||
"architecture": "",
|
||||
"container_disabled": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"error_show_ip": "",
|
||||
"memory": "",
|
||||
"online_users": "",
|
||||
"service": "",
|
||||
"show_ip": "",
|
||||
"success": "",
|
||||
"timezone": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": "",
|
||||
"username": "",
|
||||
"wip": "",
|
||||
"login_time": "",
|
||||
"container_stopped": ""
|
||||
"system_containers": "System & Containers"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Value derived from A/AAAA record. This is supported as long as the record points to the correct resource.",
|
||||
@@ -533,8 +447,7 @@
|
||||
"dns_records_name": "Name",
|
||||
"dns_records_status": "Current State",
|
||||
"dns_records_type": "Type",
|
||||
"optional": "This record is optional.",
|
||||
"dns_records_docs": ""
|
||||
"optional": "This record is optional."
|
||||
},
|
||||
"edit": {
|
||||
"active": "Active",
|
||||
@@ -632,40 +545,7 @@
|
||||
"title": "Edit object",
|
||||
"unchanged_if_empty": "If unchanged leave blank",
|
||||
"username": "Username",
|
||||
"validate_save": "Validate and save",
|
||||
"lookup_mx": "",
|
||||
"footer_exclude": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"custom_attributes": "",
|
||||
"domain_footer_info_vars": {
|
||||
"from_addr": "",
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_domain": "",
|
||||
"custom": ""
|
||||
},
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info": "",
|
||||
"acl": "",
|
||||
"admin": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"app_passwd_protocols": "",
|
||||
"domain_footer_plain": "",
|
||||
"created_on": "",
|
||||
"sogo_access": "",
|
||||
"sogo_access_info": "",
|
||||
"spam_filter": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"none_inherit": "",
|
||||
"pushover": "",
|
||||
"pushover_sound": "",
|
||||
"quota_warning_bcc": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"ratelimit": ""
|
||||
"validate_save": "Validate and save"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Cancel",
|
||||
@@ -678,9 +558,7 @@
|
||||
"restart_container": "Restart container",
|
||||
"restart_container_info": "<b>Important:</b> A graceful restart may take a while to complete, please wait for it to finish.",
|
||||
"restart_now": "Restart now",
|
||||
"restarting_container": "Restarting container, this may take a while",
|
||||
"nothing_selected": "",
|
||||
"hibp_check": ""
|
||||
"restarting_container": "Restarting container, this may take a while"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Configuration & Details",
|
||||
@@ -691,8 +569,7 @@
|
||||
"quarantine": "Quarantine",
|
||||
"restart_netfilter": "Restart netfilter",
|
||||
"restart_sogo": "Restart SOGo",
|
||||
"user_settings": "User Settings",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "User Settings"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "Awaiting TFA confirmation",
|
||||
@@ -704,9 +581,7 @@
|
||||
"login": "Login",
|
||||
"mobileconfig_info": "Please login as mailbox user to download the requested Apple connection profile.",
|
||||
"password": "Password",
|
||||
"username": "Username",
|
||||
"fido2_webauthn": "",
|
||||
"other_logins": ""
|
||||
"username": "Username"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "조치",
|
||||
@@ -847,41 +722,7 @@
|
||||
"username": "Username",
|
||||
"waiting": "Waiting",
|
||||
"weekly": "Weekly",
|
||||
"yes": "✓",
|
||||
"domain_templates": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"catch_all": "",
|
||||
"goto_spam": "",
|
||||
"last_pw_change": "",
|
||||
"mailbox_defaults": "",
|
||||
"mailbox_templates": "",
|
||||
"open_logs": "",
|
||||
"sender": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"templates": "",
|
||||
"template": "",
|
||||
"q_reject": "",
|
||||
"q_all": "",
|
||||
"quarantine_category": "",
|
||||
"recipient": "",
|
||||
"add_alias_expand": "",
|
||||
"add_template": "",
|
||||
"all_domains": "",
|
||||
"allow_from_smtp": "",
|
||||
"created_on": "",
|
||||
"goto_ham": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"q_add_header": "",
|
||||
"allowed_protocols": "",
|
||||
"relay_unknown": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Please login as mailbox owner to grant access via OAuth2.",
|
||||
@@ -933,33 +774,10 @@
|
||||
"table_size_show_n": "%s개 항목 보기",
|
||||
"text_from_html_content": "내용 (converted html)",
|
||||
"text_plain_content": "내용 (text/plain)",
|
||||
"toggle_all": "선택 반전",
|
||||
"rejected": "",
|
||||
"quick_info_link": "",
|
||||
"rewrite_subject": "",
|
||||
"confirm": "",
|
||||
"deliver_inbox": "",
|
||||
"info": "",
|
||||
"junk_folder": "",
|
||||
"settings_info": "",
|
||||
"type": "",
|
||||
"spam": ""
|
||||
"toggle_all": "선택 반전"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "대기열 관리자",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": "",
|
||||
"unban": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": ""
|
||||
"queue_manager": "대기열 관리자"
|
||||
},
|
||||
"start": {
|
||||
"help": "Show/Hide help panel",
|
||||
@@ -1040,18 +858,7 @@
|
||||
"upload_success": "File uploaded successfully",
|
||||
"verified_totp_login": "Verified TOTP login",
|
||||
"verified_webauthn_login": "Verified WebAuthn login",
|
||||
"verified_yotp_login": "Verified Yubico OTP login",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"domain_footer_modified": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"cors_headers_edited": "",
|
||||
"template_removed": "",
|
||||
"nginx_reloaded": "",
|
||||
"password_policy_saved": "",
|
||||
"verified_fido2_login": ""
|
||||
"verified_yotp_login": "Verified Yubico OTP login"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s uses the Yubico Cloud API. Please get an API key for your key <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">here</a>",
|
||||
@@ -1075,11 +882,7 @@
|
||||
"webauthn": "WebAuthn authentication",
|
||||
"waiting_usb_auth": "<i>Waiting for USB device...</i><br><br>Please tap the button on your WebAuthn USB device now.",
|
||||
"waiting_usb_register": "<i>Waiting for USB device...</i><br><br>Please enter your password above and confirm your WebAuthn registration by tapping the button on your WebAuthn USB device.",
|
||||
"yubi_otp": "Yubico OTP authentication",
|
||||
"authenticators": "",
|
||||
"tfa_token_invalid": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Yubico OTP authentication"
|
||||
},
|
||||
"user": {
|
||||
"action": "조치",
|
||||
@@ -1203,47 +1006,7 @@
|
||||
"waiting": "대기중",
|
||||
"week": "주",
|
||||
"weekly": "매주",
|
||||
"weeks": "주",
|
||||
"mailbox": "",
|
||||
"q_all": "",
|
||||
"q_reject": "",
|
||||
"recent_successful_connections": "",
|
||||
"open_logs": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"open_webmail_sso": "",
|
||||
"value": "",
|
||||
"q_add_header": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"attribute": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"created_on": "",
|
||||
"direct_protocol_access": "",
|
||||
"fido2_webauthn": "",
|
||||
"last_pw_change": "",
|
||||
"last_ui_login": "",
|
||||
"login_history": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"month": "",
|
||||
"pushover_sound": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_category_info": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"with_app_password": "",
|
||||
"years": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"empty": "",
|
||||
"allowed_protocols": "",
|
||||
"from": "",
|
||||
"months": "",
|
||||
"year": ""
|
||||
"weeks": "주"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Cannot delete logged in user",
|
||||
@@ -1255,55 +1018,6 @@
|
||||
"no_active_admin": "Cannot deactivate last active admin",
|
||||
"quota_exceeded_scope": "Domain quota exceeded: Only unlimited mailboxes can be created in this domain scope.",
|
||||
"session_token": "Form token invalid: Token mismatch",
|
||||
"session_ua": "Form token invalid: User-Agent validation error",
|
||||
"is_not_primary_alias": ""
|
||||
},
|
||||
"datatables": {
|
||||
"infoPostFix": "",
|
||||
"decimal": "",
|
||||
"collapse_all": "",
|
||||
"emptyTable": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"zeroRecords": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"thousands": "",
|
||||
"search": "",
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"expand_all": "",
|
||||
"lengthMenu": "",
|
||||
"paginate": {
|
||||
"first": "",
|
||||
"last": "",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
}
|
||||
},
|
||||
"fido2": {
|
||||
"fido2_validation_failed": "",
|
||||
"fn": "",
|
||||
"known_ids": "",
|
||||
"none": "",
|
||||
"register_status": "",
|
||||
"rename": "",
|
||||
"set_fido2": "",
|
||||
"set_fido2_touchid": "",
|
||||
"set_fn": "",
|
||||
"start_fido2_validation": "",
|
||||
"confirm": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_success": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": "",
|
||||
"day": ""
|
||||
"session_ua": "Form token invalid: User-Agent validation error"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,19 +16,7 @@
|
||||
"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",
|
||||
"ratelimit": "",
|
||||
"tls_policy": "",
|
||||
"pushover": "",
|
||||
"quarantine": "",
|
||||
"quarantine_attachments": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_notification": "",
|
||||
"smtp_ip_access": "",
|
||||
"sogo_access": "",
|
||||
"sogo_profile_reset": "",
|
||||
"spam_policy": "",
|
||||
"unlimited_quota": ""
|
||||
"protocol_access": "Protokola piekļuves maiņa"
|
||||
},
|
||||
"add": {
|
||||
"activate_filter_warn": "Visi pārējie filtri tiks deaktivizēti, kad aktīvs ir atzīmēts.",
|
||||
@@ -81,34 +69,7 @@
|
||||
"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.<br>Ja ir nepieciešams nosūtīt kopiju vairākām adresēm, jāizveido aizstājvārds un jāizmanto tas šeit.",
|
||||
"dry": "",
|
||||
"timeout1": "",
|
||||
"goto_spam": "",
|
||||
"timeout2": "",
|
||||
"gal": "",
|
||||
"gal_info": "",
|
||||
"generate": "",
|
||||
"goto_ham": "",
|
||||
"inactive": "",
|
||||
"mailbox_quota_def": "",
|
||||
"nexthop": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"relay_unknown_only": "",
|
||||
"relayhost_wrapped_tls_info": "",
|
||||
"subscribeall": "",
|
||||
"tags": "",
|
||||
"custom_params": "",
|
||||
"custom_params_hint": "",
|
||||
"destination": "",
|
||||
"disable_login": "",
|
||||
"domain_matches_hostname": "",
|
||||
"relay_transport_info": "",
|
||||
"app_name": "",
|
||||
"app_password": "",
|
||||
"app_passwd_protocols": "",
|
||||
"comment_info": ""
|
||||
"bcc_dest_format": "BCC galamērķim ir jābūt vienai derīgai e-pasta adresei.<br>Ja ir nepieciešams nosūtīt kopiju vairākām adresēm, jāizveido aizstājvārds un jāizmanto tas šeit."
|
||||
},
|
||||
"admin": {
|
||||
"access": "Pieeja",
|
||||
@@ -204,154 +165,7 @@
|
||||
"f2b_regex_info": "Vērā ņemtie žurnāli: SOGO, Postfix, Dovecot, PHP-FPM.",
|
||||
"sys_mails": "Sistēmas pasts",
|
||||
"ip_check_disabled": "IP pārbaude ir atspējota. To var iespējot<br><strong>Sistēma > Konfigurācija > iespējas > Pielāgot</strong>",
|
||||
"rspamd_com_settings": "Iestatījuma nosaukums tiks izveidots automātiski. Lūgums zemāk skatīt priekšiestatījumu piemērus. Vairāk informācijas ir <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd dokumentācijā</a>",
|
||||
"lookup_mx": "",
|
||||
"f2b_filter": "",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"f2b_list_info": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"password_policy_numbers": "",
|
||||
"guid": "",
|
||||
"guid_and_license": "",
|
||||
"is_mx_based": "",
|
||||
"oauth2_info": "",
|
||||
"oauth2_revoke_tokens": "",
|
||||
"optional": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"password_policy_special_chars": "",
|
||||
"quarantine_bcc": "",
|
||||
"rspamd_global_filters_agree": "",
|
||||
"rspamd_settings_map": "",
|
||||
"transport_maps": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"from": "",
|
||||
"copy_to_clipboard": "",
|
||||
"dkim_to_title": "",
|
||||
"duplicate": "",
|
||||
"duplicate_dkim": "",
|
||||
"excludes": "",
|
||||
"f2b_blacklist": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"options": "",
|
||||
"password_length": "",
|
||||
"password_policy": "",
|
||||
"password_policy_chars": "",
|
||||
"password_policy_length": "",
|
||||
"routing": "",
|
||||
"rsetting_add_rule": "",
|
||||
"rsetting_content": "",
|
||||
"rsetting_no_selection": "",
|
||||
"rspamd_global_filters": "",
|
||||
"rsetting_none": "",
|
||||
"rsettings_insert_preset": "",
|
||||
"rsettings_preset_1": "",
|
||||
"rsettings_preset_3": "",
|
||||
"rsettings_preset_4": "",
|
||||
"rspamd_global_filters_info": "",
|
||||
"rspamd_global_filters_regex": "",
|
||||
"sal_level": "",
|
||||
"send": "",
|
||||
"service": "",
|
||||
"service_id": "",
|
||||
"success": "",
|
||||
"text": "",
|
||||
"time": "",
|
||||
"title": "",
|
||||
"transport_dest_format": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"transports_hint": "",
|
||||
"ui_header_announcement": "",
|
||||
"ui_header_announcement_active": "",
|
||||
"ui_header_announcement_content": "",
|
||||
"validate_license_now": "",
|
||||
"ui_header_announcement_help": "",
|
||||
"ui_header_announcement_select": "",
|
||||
"ui_header_announcement_type": "",
|
||||
"ui_header_announcement_type_danger": "",
|
||||
"ui_header_announcement_type_info": "",
|
||||
"ui_header_announcement_type_warning": "",
|
||||
"unban_pending": "",
|
||||
"yes": "",
|
||||
"cors_settings": "",
|
||||
"credentials_transport_warning": "",
|
||||
"destination": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"api_read_write": "",
|
||||
"api_skip_ip_check": "",
|
||||
"arrival_time": "",
|
||||
"authed_user": "",
|
||||
"ays": "",
|
||||
"convert_html_to_text": "",
|
||||
"html": "",
|
||||
"dkim_domains_selector": "",
|
||||
"dkim_domains_wo_keys": "",
|
||||
"dkim_from": "",
|
||||
"dkim_from_title": "",
|
||||
"rsettings_preset_2": "",
|
||||
"activate_send": "",
|
||||
"active_rspamd_settings_map": "",
|
||||
"login_time": "",
|
||||
"customer_id": "",
|
||||
"quota_notification_html": "",
|
||||
"quota_notification_sender": "",
|
||||
"hash_remove_info": "",
|
||||
"include_exclude": "",
|
||||
"include_exclude_info": "",
|
||||
"message_size": "",
|
||||
"no": "",
|
||||
"no_active_bans": "",
|
||||
"oauth2_apps": "",
|
||||
"oauth2_add_client": "",
|
||||
"oauth2_client_id": "",
|
||||
"oauth2_client_secret": "",
|
||||
"oauth2_redirect_uri": "",
|
||||
"oauth2_renew_secret": "",
|
||||
"dkim_overwrite_key": "",
|
||||
"dkim_to": "",
|
||||
"includes": "",
|
||||
"ip_check": "",
|
||||
"ip_check_opt_in": "",
|
||||
"nexthop": "",
|
||||
"quarantine_max_age": "",
|
||||
"quarantine_max_score": "",
|
||||
"quarantine_notification_html": "",
|
||||
"quarantine_notification_sender": "",
|
||||
"quarantine_notification_subject": "",
|
||||
"quarantine_redirect": "",
|
||||
"quota_notification_subject": "",
|
||||
"quota_notifications": "",
|
||||
"queue_unban": "",
|
||||
"add_settings_rule": "",
|
||||
"add_transport": "",
|
||||
"add_transports_hint": "",
|
||||
"additional_rows": "",
|
||||
"admins": "",
|
||||
"admins_ldap": "",
|
||||
"advanced_settings": "",
|
||||
"api_info": "",
|
||||
"api_read_only": "",
|
||||
"license_info": "",
|
||||
"priority": "",
|
||||
"quarantine_release_format": "",
|
||||
"quarantine_release_format_att": "",
|
||||
"quarantine_release_format_raw": "",
|
||||
"quota_notifications_info": "",
|
||||
"quota_notifications_vars": "",
|
||||
"rate_name": "",
|
||||
"regex_maps": "",
|
||||
"relay_rcpt": "",
|
||||
"relayhosts": "",
|
||||
"reset_limit": "",
|
||||
"ui_footer": "",
|
||||
"verify": "",
|
||||
"add_admin": "",
|
||||
"ban_list_info": "",
|
||||
"domain_admin": "",
|
||||
"add_relayhost_hint": "",
|
||||
"domain_s": ""
|
||||
"rspamd_com_settings": "Iestatījuma nosaukums tiks izveidots automātiski. Lūgums zemāk skatīt priekšiestatījumu piemērus. Vairāk informācijas ir <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Rspamd dokumentācijā</a>"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Piekļuve liegta, vai nepareizi dati",
|
||||
@@ -402,87 +216,7 @@
|
||||
"target_domain_invalid": "Goto domēns ir nepareizs",
|
||||
"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",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"app_name_empty": "",
|
||||
"app_passwd_id_invalid": "",
|
||||
"bcc_empty": "",
|
||||
"bcc_must_be_email": "",
|
||||
"domain_cannot_match_hostname": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"bcc_exists": "",
|
||||
"cors_invalid_origin": "",
|
||||
"demo_mode_enabled": "",
|
||||
"invalid_bcc_map_type": "",
|
||||
"extra_acl_invalid": "",
|
||||
"extra_acl_invalid_domain": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"mailbox_defquota_exceeds_mailbox_maxquota": "",
|
||||
"map_content_empty": "",
|
||||
"mysql_error": "",
|
||||
"next_hop_interferes_any": "",
|
||||
"nginx_reload_failed": "",
|
||||
"no_user_defined": "",
|
||||
"private_key_error": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"comment_too_long": "",
|
||||
"cors_invalid_method": "",
|
||||
"network_host_invalid": "",
|
||||
"next_hop_interferes": "",
|
||||
"pushover_credentials_missing": "",
|
||||
"invalid_destination": "",
|
||||
"invalid_filter_type": "",
|
||||
"invalid_host": "",
|
||||
"invalid_nexthop": "",
|
||||
"invalid_nexthop_authenticated": "",
|
||||
"invalid_recipient_map_new": "",
|
||||
"invalid_recipient_map_old": "",
|
||||
"ip_list_empty": "",
|
||||
"fido2_verification_failed": "",
|
||||
"malformed_username": "",
|
||||
"file_open_error": "",
|
||||
"from_invalid": "",
|
||||
"global_filter_write_error": "",
|
||||
"global_map_invalid": "",
|
||||
"global_map_write_error": "",
|
||||
"ham_learn_error": "",
|
||||
"pushover_key": "",
|
||||
"pushover_token": "",
|
||||
"recipient_map_entry_exists": "",
|
||||
"redis_error": "",
|
||||
"relayhost_invalid": "",
|
||||
"reset_f2b_regex": "",
|
||||
"rl_timeframe": "",
|
||||
"rspamd_ui_pw_length": "",
|
||||
"script_empty": "",
|
||||
"set_acl_failed": "",
|
||||
"settings_map_invalid": "",
|
||||
"sieve_error": "",
|
||||
"spam_learn_error": "",
|
||||
"subject_empty": "",
|
||||
"targetd_relay_domain": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": "",
|
||||
"temp_error": "",
|
||||
"text_empty": "",
|
||||
"tfa_token_invalid": "",
|
||||
"tls_policy_map_dest_invalid": "",
|
||||
"tls_policy_map_entry_exists": "",
|
||||
"tls_policy_map_parameter_invalid": "",
|
||||
"totp_verification_failed": "",
|
||||
"transport_dest_exists": "",
|
||||
"unknown": "",
|
||||
"unknown_tfa_method": "",
|
||||
"unlimited_quota_acl": "",
|
||||
"value_missing": "",
|
||||
"yotp_verification_failed": "",
|
||||
"webauthn_verification_failed": "",
|
||||
"defquota_empty": "",
|
||||
"dkim_domain_or_sel_exists": "",
|
||||
"filter_type": ""
|
||||
"validity_missing": "Lūdzu piešķiriet derīguma termiņu"
|
||||
},
|
||||
"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.",
|
||||
@@ -492,8 +226,7 @@
|
||||
"dns_records_name": "Nosaukums",
|
||||
"dns_records_status": "Pašreizējais stāvoklis",
|
||||
"dns_records_type": "Tips",
|
||||
"optional": "Šis ieraksts nav obligāts.",
|
||||
"dns_records_docs": ""
|
||||
"optional": "Šis ieraksts nav obligāts."
|
||||
},
|
||||
"edit": {
|
||||
"active": "Aktīvs",
|
||||
@@ -559,72 +292,7 @@
|
||||
"mailbox_relayhost_info": "Tiek piemērots tikai pastkastei un tiešajiem aizstājvārdiem, aizstāj domēna retranslācijas saimniekdatoru.",
|
||||
"sender_acl_info": "Ja pastkastes lietotājam A ir ļauts sūtīt kā pastkastes lietotājam B, sūtītāja adrese SOGo netiek automātiski parādīta kā atlasāms lauks \"no\".<br>.\n Pastkastes lietotājam B SOGo ir jāizveido pilnvarojums, lai pastkastes lietotājs A varētu izvēlēties tā adresi kā sūtītāja. Lai SOGo pilnvarotu pastkasti, pasta skatā jāizmanto izvēlne (trīs punkti) pa labi no pastkastes nosaukuma augšējā kreisajā pusē. Šī darbība neattiecas uz aizstājadresēm.",
|
||||
"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.",
|
||||
"lookup_mx": "",
|
||||
"footer_exclude": "",
|
||||
"gal_info": "",
|
||||
"scope": "",
|
||||
"custom_attributes": "",
|
||||
"sogo_access": "",
|
||||
"domain_footer_info_vars": {
|
||||
"custom": "",
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": ""
|
||||
},
|
||||
"acl": "",
|
||||
"pushover_text": "",
|
||||
"admin": "",
|
||||
"advanced_settings": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"spam_filter": "",
|
||||
"app_passwd": "",
|
||||
"gal": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_title": "",
|
||||
"pushover_verify": "",
|
||||
"quota_warning_bcc": "",
|
||||
"relay_transport_info": "",
|
||||
"generate": "",
|
||||
"grant_types": "",
|
||||
"mailbox_quota_def": "",
|
||||
"client_id": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info": "",
|
||||
"relayhost": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sogo_access_info": "",
|
||||
"timeout1": "",
|
||||
"allowed_protocols": "",
|
||||
"app_name": "",
|
||||
"app_passwd_protocols": "",
|
||||
"disable_login": "",
|
||||
"domain_footer_plain": "",
|
||||
"extended_sender_acl": "",
|
||||
"pushover_vars": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"redirect_uri": "",
|
||||
"relay_unknown_only": "",
|
||||
"client_secret": "",
|
||||
"comment_info": "",
|
||||
"created_on": "",
|
||||
"mbox_rl_info": "",
|
||||
"none_inherit": "",
|
||||
"nexthop": "",
|
||||
"ratelimit": "",
|
||||
"timeout2": "",
|
||||
"pushover": "",
|
||||
"delete_ays": "",
|
||||
"pushover_sound": ""
|
||||
"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."
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Atcelt",
|
||||
@@ -634,12 +302,7 @@
|
||||
"loading": "Lūdzu uzgaidiet...",
|
||||
"restart_container": "Restartēt konteineri",
|
||||
"restart_container_info": "<b>Important:</b> Piespiedu restartēšana var aizņemt ilgu laiku, lūdzu uzgaidiet.",
|
||||
"restart_now": "Pārsāknēt tagad",
|
||||
"restarting_container": "",
|
||||
"nothing_selected": "",
|
||||
"hibp_check": "",
|
||||
"hibp_nok": "",
|
||||
"hibp_ok": ""
|
||||
"restart_now": "Pārsāknēt tagad"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Konfigurācija un informācija",
|
||||
@@ -649,23 +312,16 @@
|
||||
"quarantine": "Karantīna",
|
||||
"restart_sogo": "Restartēt SOGo",
|
||||
"user_settings": "Lietotāja uzstādījumi",
|
||||
"mailcow_system": "Sistēma",
|
||||
"restart_netfilter": "",
|
||||
"apps": ""
|
||||
"mailcow_system": "Sistēma"
|
||||
},
|
||||
"info": {
|
||||
"no_action": "No action applicable",
|
||||
"awaiting_tfa_confirmation": "",
|
||||
"session_expires": ""
|
||||
"no_action": "No action applicable"
|
||||
},
|
||||
"login": {
|
||||
"delayed": "Pieteikšanās tika aizkavēta %s sekundēm.",
|
||||
"login": "Pieslēgties",
|
||||
"password": "Parole",
|
||||
"username": "Lietotājvārds",
|
||||
"fido2_webauthn": "",
|
||||
"other_logins": "",
|
||||
"mobileconfig_info": ""
|
||||
"username": "Lietotājvārds"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "Rīcība",
|
||||
@@ -764,83 +420,7 @@
|
||||
"sogo_visible_y": "Rādīt aizstājvārdu SOGo",
|
||||
"add_alias_expand": "Izvērst aizstājvārdu pār aizstājdomēniem",
|
||||
"alias_domain_alias_hint": "Aizstājvārdi <b>netiek</b> automātiski piemēroti domēnu aizstājvārdiem. Aizstājadrese <code>my-alias@domain</code> <b>nenosedz</b> adresi <code>my-alias@alias-domain</code> (kur \"alias-domain\" ir iedomāts \"domain\" aizstājdomēns).<br>Lūgums izmantot sieta atlasi, lai pārvirzītu pastu uz ārēju pastkasti (skatīt cilti \"Atlasīšana\" vai izmantot SOGo -> Pārsūtītājs). \"Izvērst aizstājvārdu pār aizstājdomēniem\" ir izmantojams, lai automātiski pievienotu trūkstošos aiztājvārdus.",
|
||||
"alias_domain_backupmx": "Aizstājdomēns ir neaktīvs retranslācijas domēnam",
|
||||
"all_domains": "",
|
||||
"booking_custom": "",
|
||||
"booking_ltnull": "",
|
||||
"table_size_show_n": "",
|
||||
"booking_null": "",
|
||||
"booking_custom_short": "",
|
||||
"sieve_preset_5": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_notification": "",
|
||||
"catch_all": "",
|
||||
"booking_lt0_short": "",
|
||||
"gal": "",
|
||||
"insert_preset": "",
|
||||
"last_pw_change": "",
|
||||
"no_record": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"sieve_preset_6": "",
|
||||
"sieve_preset_7": "",
|
||||
"stats": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"created_on": "",
|
||||
"disable_login": "",
|
||||
"disable_x": "",
|
||||
"dkim_domains_selector": "",
|
||||
"domain_templates": "",
|
||||
"enable_x": "",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"never": "",
|
||||
"no": "",
|
||||
"q_add_header": "",
|
||||
"q_all": "",
|
||||
"recipient": "",
|
||||
"recipient_map_new_info": "",
|
||||
"recipient_map_old_info": "",
|
||||
"relay_unknown": "",
|
||||
"sender": "",
|
||||
"sieve_preset_1": "",
|
||||
"sieve_preset_3": "",
|
||||
"sieve_preset_4": "",
|
||||
"sieve_preset_header": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"table_size": "",
|
||||
"templates": "",
|
||||
"tls_policy_maps_long": "",
|
||||
"bcc_map": "",
|
||||
"add_domain_record_first": "",
|
||||
"add_template": "",
|
||||
"add_tls_policy_map": "",
|
||||
"mailbox_defaults": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"mailbox_defquota": "",
|
||||
"mailbox_templates": "",
|
||||
"template": "",
|
||||
"tls_map_dest": "",
|
||||
"tls_map_dest_info": "",
|
||||
"tls_map_parameters": "",
|
||||
"tls_map_parameters_info": "",
|
||||
"tls_map_policy": "",
|
||||
"tls_policy_maps": "",
|
||||
"tls_policy_maps_enforced_tls": "",
|
||||
"tls_policy_maps_info": "",
|
||||
"weekly": "",
|
||||
"yes": ""
|
||||
"alias_domain_backupmx": "Aizstājdomēns ir neaktīvs retranslācijas domēnam"
|
||||
},
|
||||
"quarantine": {
|
||||
"action": "Darbības",
|
||||
@@ -866,50 +446,11 @@
|
||||
"toggle_all": "Pārslēgt visu",
|
||||
"disabled_by_config": "Pašreizējā sistēmas konfigurācija atspējo karantīnu. Lūgums iestatīt \"saglabāšanu katrai pastkastītei\" un \"lielākais pieļaujamais lielums\" karantīnas vienumiem.",
|
||||
"qhandler_success": "Pieprasījums veiksmīgi nosūtīts sistēmai. Tagad var aizvērt logu.",
|
||||
"qinfo": "Karantīnas sistēma datubāzē saglabās noraidīto pastu (sūtītājam <em>netiks</em> radīts iespaids par piegādātu pastu), kā arī pastu, kas tiek piegādāts kā kopija pastkastes mēstuļu mapē.\n <br>\"Apgūt kā surogātpastu un izdzēst\" apgūs ziņojumu kā surogātpastu ar Bajesa teorēmu un aprēķinās arī nestriktas jaucējvērtības, lai nākotnē noraidītu līdzīgus ziņojumus.\n <br>Lūgums apzināties, ka vairāku ziņojumu apgūšana var būt laikietilpīga atkarībā no sistēmas.<br>Melnā saraksta vienumi karantīnā netiek iekļauti.",
|
||||
"confirm": "",
|
||||
"confirm_delete": "",
|
||||
"danger": "",
|
||||
"deliver_inbox": "",
|
||||
"download_eml": "",
|
||||
"high_danger": "",
|
||||
"info": "",
|
||||
"junk_folder": "",
|
||||
"learn_spam_delete": "",
|
||||
"low_danger": "",
|
||||
"medium_danger": "",
|
||||
"neutral_danger": "",
|
||||
"notified": "",
|
||||
"table_size": "",
|
||||
"table_size_show_n": "",
|
||||
"quick_delete_link": "",
|
||||
"quick_info_link": "",
|
||||
"quick_release_link": "",
|
||||
"refresh": "",
|
||||
"rejected": "",
|
||||
"rewrite_subject": "",
|
||||
"rspamd_result": "",
|
||||
"sender_header": "",
|
||||
"settings_info": "",
|
||||
"spam": "",
|
||||
"spam_score": "",
|
||||
"type": ""
|
||||
"qinfo": "Karantīnas sistēma datubāzē saglabās noraidīto pastu (sūtītājam <em>netiks</em> radīts iespaids par piegādātu pastu), kā arī pastu, kas tiek piegādāts kā kopija pastkastes mēstuļu mapē.\n <br>\"Apgūt kā surogātpastu un izdzēst\" apgūs ziņojumu kā surogātpastu ar Bajesa teorēmu un aprēķinās arī nestriktas jaucējvērtības, lai nākotnē noraidītu līdzīgus ziņojumus.\n <br>Lūgums apzināties, ka vairāku ziņojumu apgūšana var būt laikietilpīga atkarībā no sistēmas.<br>Melnā saraksta vienumi karantīnā netiek iekļauti."
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Queue Manager",
|
||||
"info": "Pasta rinda satur visus e-pastus, kas gaida piegādi. Ja e-pasts ir iestrēdzis pasta rindā ilgu laiku, sistēma to automātiski izdzēš.<br>Attiecīgā pasta kļūdas ziņojums sniedz informāciju par to, kāpēc pastu neizdevās piegādāt.",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": ""
|
||||
"info": "Pasta rinda satur visus e-pastus, kas gaida piegādi. Ja e-pasts ir iestrēdzis pasta rindā ilgu laiku, sistēma to automātiski izdzēš.<br>Attiecīgā pasta kļūdas ziņojums sniedz informāciju par to, kāpēc pastu neizdevās piegādāt."
|
||||
},
|
||||
"start": {
|
||||
"help": "Rādīt/Paslēp palīdzības paneli",
|
||||
@@ -952,56 +493,7 @@
|
||||
"resource_modified": "Izmaiņas %s ir saglabātas",
|
||||
"resource_removed": "Resurs %s tika noņemts",
|
||||
"ui_texts": "Saglabāt UI izmaiņas tekstiem",
|
||||
"upload_success": "Faila augšupielāde veiksmīga",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"bcc_saved": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"global_filter_written": "",
|
||||
"hash_deleted": "",
|
||||
"saved_settings": "",
|
||||
"dovecot_restart_success": "",
|
||||
"acl_saved": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"dkim_duplicated": "",
|
||||
"cors_headers_edited": "",
|
||||
"db_init_complete": "",
|
||||
"domain_footer_modified": "",
|
||||
"item_released": "",
|
||||
"admin_added": "",
|
||||
"admin_api_modified": "",
|
||||
"admin_removed": "",
|
||||
"app_passwd_added": "",
|
||||
"app_passwd_removed": "",
|
||||
"bcc_deleted": "",
|
||||
"bcc_edited": "",
|
||||
"delete_filter": "",
|
||||
"delete_filters": "",
|
||||
"deleted_syncjob": "",
|
||||
"deleted_syncjobs": "",
|
||||
"learned_ham": "",
|
||||
"license_modified": "",
|
||||
"logged_in_as": "",
|
||||
"nginx_reloaded": "",
|
||||
"password_policy_saved": "",
|
||||
"pushover_settings_edited": "",
|
||||
"qlearn_spam": "",
|
||||
"queue_command_success": "",
|
||||
"recipient_map_entry_deleted": "",
|
||||
"recipient_map_entry_saved": "",
|
||||
"rl_saved": "",
|
||||
"rspamd_ui_pw_set": "",
|
||||
"settings_map_added": "",
|
||||
"settings_map_removed": "",
|
||||
"sogo_profile_reset": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"template_removed": "",
|
||||
"tls_policy_map_entry_deleted": "",
|
||||
"tls_policy_map_entry_saved": "",
|
||||
"verified_fido2_login": "",
|
||||
"verified_totp_login": "",
|
||||
"verified_webauthn_login": "",
|
||||
"verified_yotp_login": ""
|
||||
"upload_success": "Faila augšupielāde veiksmīga"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s izmanto Yubico Cloud API. Lūdzu iegūstiet API atslēgu priekš Jūsu atslēgas<a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">here</a>",
|
||||
@@ -1021,15 +513,7 @@
|
||||
"webauthn": "WebAuthn autentifikācija",
|
||||
"waiting_usb_auth": "<i>Gaida USB ierīci...</i><br><br>Lūdzu, tagad nospiežiet pogu uz Jūsu WebAuthn USB ierīces.",
|
||||
"waiting_usb_register": "<i>Gaida USB ierīci...</i><br><br>Lūdzu augšā ievadiet Jūsu paroli un apstipriniet WebAuthn reģistrāciju nospiežot pogu uz Jūsu WebAuthn USB ierīces.",
|
||||
"yubi_otp": "Yubico OTP autentifikators",
|
||||
"authenticators": "",
|
||||
"reload_retry": "",
|
||||
"error_code": "",
|
||||
"init_webauthn": "",
|
||||
"start_webauthn_validation": "",
|
||||
"tfa_token_invalid": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Yubico OTP autentifikators"
|
||||
},
|
||||
"user": {
|
||||
"action": "Rīcība",
|
||||
@@ -1115,111 +599,13 @@
|
||||
"weeks": "Nedēļas",
|
||||
"open_logs": "Atvērt žurnālus",
|
||||
"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 <b>%s</b>, ieskaitot aizstājvārdus (kopīgotus, nekopīgotus, ar birkām).",
|
||||
"years": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"attribute": "",
|
||||
"create_app_passwd": "",
|
||||
"daily": "",
|
||||
"pushover_sender_regex": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"created_on": "",
|
||||
"q_add_header": "",
|
||||
"weekly": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"email_and_dav": "",
|
||||
"empty": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"pushover_sound": "",
|
||||
"delete_ays": "",
|
||||
"direct_protocol_access": "",
|
||||
"email": "",
|
||||
"expire_in": "",
|
||||
"fido2_webauthn": "",
|
||||
"generate": "",
|
||||
"hourly": "",
|
||||
"last_mail_login": "",
|
||||
"last_pw_change": "",
|
||||
"last_ui_login": "",
|
||||
"login_history": "",
|
||||
"mailbox": "",
|
||||
"no_last_login": "",
|
||||
"password_repeat": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"q_all": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_category_info": "",
|
||||
"quarantine_notification": "",
|
||||
"quarantine_notification_info": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sogo_profile_reset": "",
|
||||
"sogo_profile_reset_help": "",
|
||||
"sogo_profile_reset_now": "",
|
||||
"spam_score_reset": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"title": "",
|
||||
"value": "",
|
||||
"verify": "",
|
||||
"from": "",
|
||||
"recent_successful_connections": "",
|
||||
"mailbox_general": "",
|
||||
"text": "",
|
||||
"advanced_settings": "",
|
||||
"app_hint": "",
|
||||
"allowed_protocols": "",
|
||||
"app_name": "",
|
||||
"app_passwds": "",
|
||||
"apple_connection_profile": "",
|
||||
"apple_connection_profile_complete": "",
|
||||
"mailbox_settings": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"never": "",
|
||||
"open_webmail_sso": "",
|
||||
"password": "",
|
||||
"save": ""
|
||||
"pushover_info": "Pašpiegādes paziņojumu iestatījumi attieksies uz visu tīro (ne surogātpasta) pastu, kas piegādāts uz <b>%s</b>, ieskaitot aizstājvārdus (kopīgotus, nekopīgotus, ar birkām)."
|
||||
},
|
||||
"datatables": {
|
||||
"paginate": {
|
||||
"first": "Pirmā",
|
||||
"last": "Pēdējā",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"infoPostFix": "",
|
||||
"decimal": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"expand_all": "",
|
||||
"thousands": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"aria": {
|
||||
"sortDescending": "",
|
||||
"sortAscending": ""
|
||||
},
|
||||
"collapse_all": "",
|
||||
"emptyTable": "",
|
||||
"zeroRecords": ""
|
||||
"last": "Pēdējā"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"last_modified": "Pēdējoreiz mainīts",
|
||||
@@ -1229,81 +615,11 @@
|
||||
"system_containers": "Sistēma un konteineri",
|
||||
"current_time": "Sistēmas laiks",
|
||||
"external_logs": "Ārējie žurnāli",
|
||||
"logs": "Žurnāli",
|
||||
"started_on": "",
|
||||
"architecture": "",
|
||||
"docs": "",
|
||||
"timezone": "",
|
||||
"success": "",
|
||||
"uptime": "",
|
||||
"update_available": "",
|
||||
"wip": "",
|
||||
"containers_info": "",
|
||||
"disk_usage": "",
|
||||
"history_all_servers": "",
|
||||
"online_users": "",
|
||||
"restart_container": "",
|
||||
"chart_this_server": "",
|
||||
"log_info": "",
|
||||
"service": "",
|
||||
"size": "",
|
||||
"update_failed": "",
|
||||
"username": "",
|
||||
"container_running": "",
|
||||
"container_disabled": "",
|
||||
"login_time": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"error_show_ip": "",
|
||||
"jvm_memory_solr": "",
|
||||
"memory": "",
|
||||
"show_ip": "",
|
||||
"solr_dead": "",
|
||||
"solr_status": "",
|
||||
"started_at": ""
|
||||
"logs": "Žurnāli"
|
||||
},
|
||||
"warning": {
|
||||
"domain_added_sogo_failed": "Domēns pievienots, bet neizdevās pārsāknēt SOGO. Lūgums pārbaudīt servera žurnālus.",
|
||||
"dovecot_restart_failed": "Dovecot neizdevās pārsāknēties. Lūgums pārbaudīt žurnālus",
|
||||
"is_not_primary_alias": "Izlaists aizstājvārds %s, kas nav galvenais",
|
||||
"cannot_delete_self": "",
|
||||
"fuzzy_learn_error": "",
|
||||
"hash_not_found": "",
|
||||
"ip_invalid": "",
|
||||
"no_active_admin": "",
|
||||
"quota_exceeded_scope": "",
|
||||
"session_token": "",
|
||||
"session_ua": ""
|
||||
},
|
||||
"fido2": {
|
||||
"set_fido2_touchid": "",
|
||||
"set_fn": "",
|
||||
"start_fido2_validation": "",
|
||||
"confirm": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_success": "",
|
||||
"fido2_validation_failed": "",
|
||||
"none": "",
|
||||
"register_status": "",
|
||||
"rename": "",
|
||||
"set_fido2": "",
|
||||
"fn": "",
|
||||
"known_ids": ""
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "",
|
||||
"authorize_app": "",
|
||||
"deny": "",
|
||||
"permit": "",
|
||||
"profile": "",
|
||||
"profile_desc": "",
|
||||
"scope_ask_permission": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": "",
|
||||
"day": ""
|
||||
"is_not_primary_alias": "Izlaists aizstājvārds %s, kas nav galvenais"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -26,9 +26,7 @@
|
||||
"syncjobs": "Sync jobs",
|
||||
"tls_policy": "Versleutelingsbeleid",
|
||||
"unlimited_quota": "Onbeperkte quota voor mailboxen",
|
||||
"domain_desc": "Wijzig domeinbeschrijving",
|
||||
"domain_relayhost": "",
|
||||
"mailbox_relayhost": ""
|
||||
"domain_desc": "Wijzig domeinbeschrijving"
|
||||
},
|
||||
"add": {
|
||||
"activate_filter_warn": "Alle andere filters worden gedeactiveerd zolang deze geactiveerd is.",
|
||||
@@ -106,9 +104,7 @@
|
||||
"validate": "Verifieer",
|
||||
"validation_success": "Succesvol geverifieerd",
|
||||
"tags": "Tags",
|
||||
"bcc_dest_format": "BCC-bestemming moet één geldig e-mailadres zijn.<br>Als u een kopie naar meerdere adressen wilt sturen, maak dan een alias aan en gebruik die hier.",
|
||||
"dry": "",
|
||||
"app_passwd_protocols": ""
|
||||
"bcc_dest_format": "BCC-bestemming moet één geldig e-mailadres zijn.<br>Als u een kopie naar meerdere adressen wilt sturen, maak dan een alias aan en gebruik die hier."
|
||||
},
|
||||
"admin": {
|
||||
"access": "Toegang",
|
||||
@@ -341,17 +337,7 @@
|
||||
"admins_ldap": "LDAP administrators",
|
||||
"api_read_only": "Alleen-lezen toegang",
|
||||
"api_read_write": "Lees en schrijf toegang",
|
||||
"login_time": "Login tijd",
|
||||
"allowed_methods": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"allowed_origins": "",
|
||||
"ip_check_opt_in": "",
|
||||
"queue_unban": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"yes": "",
|
||||
"no": ""
|
||||
"login_time": "Login tijd"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Toegang geweigerd of ongeldige gegevens",
|
||||
@@ -477,12 +463,7 @@
|
||||
"demo_mode_enabled": "Demo modus is ingeschakeld",
|
||||
"template_exists": "Sjabloon %s bestaat al",
|
||||
"template_id_invalid": "Sjabloon ID %s ongeldig",
|
||||
"template_name_invalid": "Sjabloon naam ongeldig",
|
||||
"webauthn_username_failed": "",
|
||||
"cors_invalid_origin": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"extended_sender_acl_denied": ""
|
||||
"template_name_invalid": "Sjabloon naam ongeldig"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Grafiek (deze server)",
|
||||
@@ -646,26 +627,7 @@
|
||||
"acl": "ACL (Toestemming)",
|
||||
"domain_footer": "Domeinbreede footer",
|
||||
"domain_footer_html": "HTML footer",
|
||||
"mailbox_relayhost_info": "Wordt alleen toegepast op de mailbox en directe aliassen, maar heft een domein relayhost op.",
|
||||
"lookup_mx": "",
|
||||
"footer_exclude": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"custom_attributes": "",
|
||||
"quota_warning_bcc": "",
|
||||
"domain_footer_info_vars": {
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"custom": ""
|
||||
},
|
||||
"pushover": "",
|
||||
"domain_footer_plain": "",
|
||||
"none_inherit": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"sogo_access": "",
|
||||
"sogo_access_info": ""
|
||||
"mailbox_relayhost_info": "Wordt alleen toegepast op de mailbox en directe aliassen, maar heft een domein relayhost op."
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Annuleren",
|
||||
@@ -678,9 +640,7 @@
|
||||
"restart_container": "Herstart container",
|
||||
"restart_container_info": "<b>Belangrijk:</b> Een herstart kan enige tijd in beslag nemen, wacht aub totdat dit proces voltooid is.<br>Deze pagina zal zichzelf verversen zodra het proces voltooid is.",
|
||||
"restart_now": "Nu herstarten",
|
||||
"restarting_container": "Container wordt herstart, even geduld aub...",
|
||||
"hibp_check": "",
|
||||
"nothing_selected": ""
|
||||
"restarting_container": "Container wordt herstart, even geduld aub..."
|
||||
},
|
||||
"header": {
|
||||
"administration": "Configuratie & details",
|
||||
@@ -691,8 +651,7 @@
|
||||
"quarantine": "Quarantaine",
|
||||
"restart_netfilter": "Herstart netfilter",
|
||||
"restart_sogo": "Herstart SOGo",
|
||||
"user_settings": "Gebruikersinstellingen",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Gebruikersinstellingen"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "In afwachting van tweefactorauthenticatie...",
|
||||
@@ -853,35 +812,7 @@
|
||||
"toggle_all": "Selecteer alles",
|
||||
"username": "Gebruikersnaam",
|
||||
"waiting": "Wachten",
|
||||
"weekly": "Wekelijks",
|
||||
"add_alias_expand": "",
|
||||
"all_domains": "",
|
||||
"goto_spam": "",
|
||||
"sender": "",
|
||||
"catch_all": "",
|
||||
"add_template": "",
|
||||
"created_on": "",
|
||||
"domain_templates": "",
|
||||
"domain_quota_total": "",
|
||||
"goto_ham": "",
|
||||
"last_pw_change": "",
|
||||
"mailbox_templates": "",
|
||||
"no": "",
|
||||
"open_logs": "",
|
||||
"recipient": "",
|
||||
"relay_unknown": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"templates": "",
|
||||
"template": "",
|
||||
"yes": ""
|
||||
"weekly": "Wekelijks"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Log in als een mailboxgebruiker om toegang via OAuth te verlenen",
|
||||
@@ -946,20 +877,7 @@
|
||||
"toggle_all": "Selecteer alles"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Queue manager",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": ""
|
||||
"queue_manager": "Queue manager"
|
||||
},
|
||||
"start": {
|
||||
"help": "Toon/verberg hulppaneel",
|
||||
@@ -1042,16 +960,7 @@
|
||||
"verified_totp_login": "TOTP succesvol geverifieerd",
|
||||
"verified_webauthn_login": "WebAuthn succesvol geverifieerd",
|
||||
"verified_fido2_login": "FIDO2 succesvol geverifieerd",
|
||||
"verified_yotp_login": "Yubico OTP succesvol geverifieerd",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"password_policy_saved": "",
|
||||
"template_added": "",
|
||||
"cors_headers_edited": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"domain_footer_modified": "",
|
||||
"template_modified": "",
|
||||
"template_removed": ""
|
||||
"verified_yotp_login": "Yubico OTP succesvol geverifieerd"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s maakt gebruik van de Yubico Cloud API. Om dit te benutten is er een API-key van Yubico vereist, deze kan <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">hier</a> opgevraagd worden",
|
||||
@@ -1076,10 +985,7 @@
|
||||
"webauthn": "WebAuthn",
|
||||
"waiting_usb_auth": "<i>In afwachting van USB-apparaat...</i><br><br>Druk nu op de knop van je WebAuthn-apparaat.",
|
||||
"waiting_usb_register": "<i>In afwachting van USB-apparaat...</i><br><br>Voer je wachtwoord hierboven in en bevestig de registratie van het WebAuthn-apparaat door op de knop van het apparaat te drukken.",
|
||||
"yubi_otp": "Yubico OTP",
|
||||
"authenticators": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Yubico OTP"
|
||||
},
|
||||
"fido2": {
|
||||
"set_fn": "Stel naam in",
|
||||
@@ -1093,8 +999,7 @@
|
||||
"start_fido2_validation": "Start FIDO2-validatie",
|
||||
"fido2_auth": "Aanmelden met FIDO2",
|
||||
"fido2_success": "Apparaat succesvol geregistreerd",
|
||||
"fido2_validation_failed": "Validatie mislukt",
|
||||
"set_fido2_touchid": ""
|
||||
"fido2_validation_failed": "Validatie mislukt"
|
||||
},
|
||||
"user": {
|
||||
"action": "Handeling",
|
||||
@@ -1224,41 +1129,7 @@
|
||||
"waiting": "Wachten",
|
||||
"week": "week",
|
||||
"weekly": "Wekelijks",
|
||||
"weeks": "weken",
|
||||
"attribute": "",
|
||||
"years": "",
|
||||
"value": "",
|
||||
"fido2_webauthn": "",
|
||||
"recent_successful_connections": "",
|
||||
"syncjob_check_log": "",
|
||||
"allowed_protocols": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"direct_protocol_access": "",
|
||||
"last_pw_change": "",
|
||||
"last_ui_login": "",
|
||||
"login_history": "",
|
||||
"mailbox": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"year": "",
|
||||
"with_app_password": "",
|
||||
"from": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"created_on": "",
|
||||
"empty": ""
|
||||
"weeks": "weken"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Gebruikers kunnen niet worden verwijderd wanneer deze zijn aangemeld",
|
||||
@@ -1270,8 +1141,7 @@
|
||||
"no_active_admin": "Het is niet mogelijk om de laatste actieve administrator te verwijderen",
|
||||
"quota_exceeded_scope": "Domeinquota overschreden: Voor dit domein kunnen uitsluitend onbeperkte mailboxen aangemaakt worden.",
|
||||
"session_token": "Token ongeldig: komt niet overeen",
|
||||
"session_ua": "Token ongeldig: gebruikersagentvalidatie mislukt",
|
||||
"is_not_primary_alias": ""
|
||||
"session_ua": "Token ongeldig: gebruikersagentvalidatie mislukt"
|
||||
},
|
||||
"datatables": {
|
||||
"emptyTable": "Geen data beschikbaar in tabel",
|
||||
@@ -1295,15 +1165,6 @@
|
||||
"loadingRecords": "Laden...",
|
||||
"processing": "Wachten alstublieft..",
|
||||
"search": "Zoeken:",
|
||||
"zeroRecords": "Geen overeenkomsten gevonden",
|
||||
"infoPostFix": "",
|
||||
"infoFiltered": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": "",
|
||||
"day": ""
|
||||
"zeroRecords": "Geen overeenkomsten gevonden"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,33 +2,7 @@
|
||||
"acl": {
|
||||
"sogo_profile_reset": "Usuń profil SOGo (webmail)",
|
||||
"syncjobs": "Polecenie synchronizacji",
|
||||
"alias_domains": "Dodaj aliasy domen",
|
||||
"quarantine_notification": "",
|
||||
"ratelimit": "",
|
||||
"recipient_maps": "",
|
||||
"smtp_ip_access": "",
|
||||
"sogo_access": "",
|
||||
"spam_alias": "",
|
||||
"spam_policy": "",
|
||||
"spam_score": "",
|
||||
"tls_policy": "",
|
||||
"unlimited_quota": "",
|
||||
"app_passwds": "",
|
||||
"bcc_maps": "",
|
||||
"delimiter_action": "",
|
||||
"domain_desc": "",
|
||||
"domain_relayhost": "",
|
||||
"eas_reset": "",
|
||||
"extend_sender_acl": "",
|
||||
"filters": "",
|
||||
"login_as": "",
|
||||
"mailbox_relayhost": "",
|
||||
"prohibited": "",
|
||||
"protocol_access": "",
|
||||
"quarantine": "",
|
||||
"quarantine_attachments": "",
|
||||
"quarantine_category": "",
|
||||
"pushover": ""
|
||||
"alias_domains": "Dodaj aliasy domen"
|
||||
},
|
||||
"add": {
|
||||
"active": "Aktywny",
|
||||
@@ -69,46 +43,7 @@
|
||||
"target_address": "Adresy Idź do:",
|
||||
"target_address_info": "<small> Pełny/e adres/y email (oddzielone przecinkami).</small>",
|
||||
"target_domain": "Domena docelowa:",
|
||||
"username": "Nazwa użytkownika",
|
||||
"dry": "",
|
||||
"add_domain_only": "",
|
||||
"automap": "",
|
||||
"bcc_dest_format": "",
|
||||
"comment_info": "",
|
||||
"custom_params": "",
|
||||
"custom_params_hint": "",
|
||||
"delete2": "",
|
||||
"disable_login": "",
|
||||
"domain_matches_hostname": "",
|
||||
"destination": "",
|
||||
"sieve_desc": "",
|
||||
"sieve_type": "",
|
||||
"skipcrossduplicates": "",
|
||||
"subscribeall": "",
|
||||
"tags": "",
|
||||
"timeout1": "",
|
||||
"gal": "",
|
||||
"gal_info": "",
|
||||
"goto_ham": "",
|
||||
"goto_null": "",
|
||||
"goto_spam": "",
|
||||
"inactive": "",
|
||||
"mailbox_quota_def": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"relay_transport_info": "",
|
||||
"timeout2": "",
|
||||
"validate": "",
|
||||
"relay_unknown_only": "",
|
||||
"relayhost_wrapped_tls_info": "",
|
||||
"validation_success": "",
|
||||
"activate_filter_warn": "",
|
||||
"add_domain_restart": "",
|
||||
"app_name": "",
|
||||
"generate": "",
|
||||
"nexthop": "",
|
||||
"app_password": "",
|
||||
"app_passwd_protocols": ""
|
||||
"username": "Nazwa użytkownika"
|
||||
},
|
||||
"admin": {
|
||||
"access": "Dostęp",
|
||||
@@ -164,194 +99,7 @@
|
||||
"spamfilter": "Filtr spamu",
|
||||
"time": "Czas",
|
||||
"unchanged_if_empty": "W przypadku braku zmian, nie wypełniaj",
|
||||
"username": "Nazwa użytkownika",
|
||||
"oauth2_redirect_uri": "",
|
||||
"oauth2_renew_secret": "",
|
||||
"oauth2_revoke_tokens": "",
|
||||
"rspamd_global_filters_regex": "",
|
||||
"ui_header_announcement_type_warning": "",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"rate_name": "",
|
||||
"ui_texts": "",
|
||||
"unban_pending": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"relayhosts_hint": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"in_use_by": "",
|
||||
"include_exclude": "",
|
||||
"include_exclude_info": "",
|
||||
"includes": "",
|
||||
"is_mx_based": "",
|
||||
"nexthop": "",
|
||||
"no": "",
|
||||
"no_active_bans": "",
|
||||
"no_new_rows": "",
|
||||
"oauth2_apps": "",
|
||||
"oauth2_add_client": "",
|
||||
"oauth2_client_id": "",
|
||||
"oauth2_client_secret": "",
|
||||
"oauth2_info": "",
|
||||
"optional": "",
|
||||
"options": "",
|
||||
"password_length": "",
|
||||
"password_policy": "",
|
||||
"password_policy_chars": "",
|
||||
"password_policy_length": "",
|
||||
"quarantine_notification_html": "",
|
||||
"quarantine_notification_subject": "",
|
||||
"quarantine_redirect": "",
|
||||
"quarantine_release_format": "",
|
||||
"quarantine_release_format_att": "",
|
||||
"quarantine_release_format_raw": "",
|
||||
"quarantine_retention_size": "",
|
||||
"quota_notification_html": "",
|
||||
"quota_notification_sender": "",
|
||||
"quota_notification_subject": "",
|
||||
"quota_notifications": "",
|
||||
"quota_notifications_info": "",
|
||||
"quota_notifications_vars": "",
|
||||
"queue_unban": "",
|
||||
"recipients": "",
|
||||
"regen_api_key": "",
|
||||
"relay_rcpt": "",
|
||||
"relay_run": "",
|
||||
"relayhosts": "",
|
||||
"remove_row": "",
|
||||
"reset_default": "",
|
||||
"reset_limit": "",
|
||||
"rsetting_add_rule": "",
|
||||
"rsetting_content": "",
|
||||
"rsetting_desc": "",
|
||||
"rsetting_no_selection": "",
|
||||
"rsetting_none": "",
|
||||
"rsettings_insert_preset": "",
|
||||
"rsettings_preset_1": "",
|
||||
"rsettings_preset_2": "",
|
||||
"rsettings_preset_3": "",
|
||||
"rsettings_preset_4": "",
|
||||
"rspamd_com_settings": "",
|
||||
"rspamd_global_filters": "",
|
||||
"rspamd_global_filters_agree": "",
|
||||
"rspamd_global_filters_info": "",
|
||||
"rspamd_settings_map": "",
|
||||
"sal_level": "",
|
||||
"send": "",
|
||||
"sender": "",
|
||||
"service": "",
|
||||
"service_id": "",
|
||||
"subject": "",
|
||||
"success": "",
|
||||
"sys_mails": "",
|
||||
"text": "",
|
||||
"title": "",
|
||||
"ui_header_announcement_type": "",
|
||||
"ui_header_announcement_type_danger": "",
|
||||
"ui_header_announcement_type_info": "",
|
||||
"validate_license_now": "",
|
||||
"verify": "",
|
||||
"yes": "",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"cors_settings": "",
|
||||
"customize": "",
|
||||
"credentials_transport_warning": "",
|
||||
"destination": "",
|
||||
"dkim_domains_selector": "",
|
||||
"hash_remove_info": "",
|
||||
"html": "",
|
||||
"message_size": "",
|
||||
"dkim_domains_wo_keys": "",
|
||||
"dkim_from_title": "",
|
||||
"dkim_overwrite_key": "",
|
||||
"excludes": "",
|
||||
"f2b_blacklist": "",
|
||||
"f2b_filter": "",
|
||||
"f2b_list_info": "",
|
||||
"f2b_netban_ipv4": "",
|
||||
"f2b_netban_ipv6": "",
|
||||
"f2b_regex_info": "",
|
||||
"from": "",
|
||||
"generate": "",
|
||||
"guid": "",
|
||||
"guid_and_license": "",
|
||||
"help_text": "",
|
||||
"dkim_to": "",
|
||||
"dkim_to_title": "",
|
||||
"domain_admin": "",
|
||||
"domain_s": "",
|
||||
"duplicate": "",
|
||||
"duplicate_dkim": "",
|
||||
"ip_check": "",
|
||||
"ip_check_disabled": "",
|
||||
"ip_check_opt_in": "",
|
||||
"last_applied": "",
|
||||
"merged_vars_hint": "",
|
||||
"license_info": "",
|
||||
"link": "",
|
||||
"login_time": "",
|
||||
"logo_info": "",
|
||||
"main_name": "",
|
||||
"password_policy_lowerupper": "",
|
||||
"password_policy_numbers": "",
|
||||
"password_policy_special_chars": "",
|
||||
"quarantine_bcc": "",
|
||||
"quarantine_exclude_domains": "",
|
||||
"quarantine_max_age": "",
|
||||
"quarantine_max_score": "",
|
||||
"quarantine_max_size": "",
|
||||
"quarantine_notification_sender": "",
|
||||
"title_name": "",
|
||||
"to_top": "",
|
||||
"transport_dest_format": "",
|
||||
"transport_maps": "",
|
||||
"transport_test_rcpt_info": "",
|
||||
"transports_hint": "",
|
||||
"ui_header_announcement": "",
|
||||
"ui_header_announcement_active": "",
|
||||
"ui_header_announcement_content": "",
|
||||
"ui_header_announcement_help": "",
|
||||
"ui_header_announcement_select": "",
|
||||
"upload": "",
|
||||
"regex_maps": "",
|
||||
"relay_from": "",
|
||||
"dkim_from": "",
|
||||
"activate_api": "",
|
||||
"activate_send": "",
|
||||
"active_rspamd_settings_map": "",
|
||||
"add_admin": "",
|
||||
"add_relayhost": "",
|
||||
"add_relayhost_hint": "",
|
||||
"add_row": "",
|
||||
"add_settings_rule": "",
|
||||
"add_transport": "",
|
||||
"add_transports_hint": "",
|
||||
"customer_id": "",
|
||||
"additional_rows": "",
|
||||
"admins": "",
|
||||
"admins_ldap": "",
|
||||
"advanced_settings": "",
|
||||
"api_allow_from": "",
|
||||
"api_info": "",
|
||||
"api_key": "",
|
||||
"api_read_only": "",
|
||||
"api_read_write": "",
|
||||
"api_skip_ip_check": "",
|
||||
"app_links": "",
|
||||
"app_name": "",
|
||||
"apps_name": "",
|
||||
"arrival_time": "",
|
||||
"authed_user": "",
|
||||
"ays": "",
|
||||
"ban_list_info": "",
|
||||
"change_logo": "",
|
||||
"convert_html_to_text": "",
|
||||
"routing": "",
|
||||
"ui_footer": "",
|
||||
"lookup_mx": ""
|
||||
"username": "Nazwa użytkownika"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Odmowa dostępu lub nieprawidłowe dane w formularzu",
|
||||
@@ -397,92 +145,7 @@
|
||||
"target_domain_invalid": "Domena Idź do jest nieprawidłowa",
|
||||
"targetd_not_found": "Nie znaleziono domeny docelowej",
|
||||
"username_invalid": "Nie można użyć nazwy użytkownika",
|
||||
"validity_missing": "Proszę wyznaczyć termin ważności",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"app_name_empty": "",
|
||||
"app_passwd_id_invalid": "",
|
||||
"bcc_empty": "",
|
||||
"bcc_exists": "",
|
||||
"bcc_must_be_email": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"mysql_error": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"invalid_filter_type": "",
|
||||
"invalid_host": "",
|
||||
"invalid_mime_type": "",
|
||||
"invalid_nexthop": "",
|
||||
"invalid_nexthop_authenticated": "",
|
||||
"invalid_recipient_map_new": "",
|
||||
"invalid_recipient_map_old": "",
|
||||
"mailbox_defquota_exceeds_mailbox_maxquota": "",
|
||||
"map_content_empty": "",
|
||||
"network_host_invalid": "",
|
||||
"next_hop_interferes": "",
|
||||
"next_hop_interferes_any": "",
|
||||
"nginx_reload_failed": "",
|
||||
"no_user_defined": "",
|
||||
"tls_policy_map_entry_exists": "",
|
||||
"tls_policy_map_parameter_invalid": "",
|
||||
"totp_verification_failed": "",
|
||||
"transport_dest_exists": "",
|
||||
"webauthn_verification_failed": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"unknown": "",
|
||||
"value_missing": "",
|
||||
"yotp_verification_failed": "",
|
||||
"unknown_tfa_method": "",
|
||||
"unlimited_quota_acl": "",
|
||||
"comment_too_long": "",
|
||||
"defquota_empty": "",
|
||||
"demo_mode_enabled": "",
|
||||
"dkim_domain_or_sel_exists": "",
|
||||
"domain_cannot_match_hostname": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"from_invalid": "",
|
||||
"global_filter_write_error": "",
|
||||
"global_map_invalid": "",
|
||||
"global_map_write_error": "",
|
||||
"ham_learn_error": "",
|
||||
"imagick_exception": "",
|
||||
"img_invalid": "",
|
||||
"img_tmp_missing": "",
|
||||
"invalid_bcc_map_type": "",
|
||||
"invalid_destination": "",
|
||||
"private_key_error": "",
|
||||
"pushover_credentials_missing": "",
|
||||
"pushover_key": "",
|
||||
"pushover_token": "",
|
||||
"recipient_map_entry_exists": "",
|
||||
"redis_error": "",
|
||||
"relayhost_invalid": "",
|
||||
"release_send_failed": "",
|
||||
"reset_f2b_regex": "",
|
||||
"rl_timeframe": "",
|
||||
"rspamd_ui_pw_length": "",
|
||||
"set_acl_failed": "",
|
||||
"settings_map_invalid": "",
|
||||
"sieve_error": "",
|
||||
"spam_learn_error": "",
|
||||
"subject_empty": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": "",
|
||||
"text_empty": "",
|
||||
"tls_policy_map_dest_invalid": "",
|
||||
"malformed_username": "",
|
||||
"extra_acl_invalid": "",
|
||||
"targetd_relay_domain": "",
|
||||
"temp_error": "",
|
||||
"tfa_token_invalid": "",
|
||||
"script_empty": "",
|
||||
"ip_list_empty": "",
|
||||
"extra_acl_invalid_domain": "",
|
||||
"fido2_verification_failed": "",
|
||||
"file_open_error": "",
|
||||
"filter_type": ""
|
||||
"validity_missing": "Proszę wyznaczyć termin ważności"
|
||||
},
|
||||
"edit": {
|
||||
"active": "Aktywny",
|
||||
@@ -527,93 +190,7 @@
|
||||
"target_domain": "Domena docelowa",
|
||||
"title": "Edytuj obiekt",
|
||||
"unchanged_if_empty": "Jeżli bez zmian, nie wypełniaj",
|
||||
"username": "Nazwa użytkownika",
|
||||
"comment_info": "",
|
||||
"created_on": "",
|
||||
"footer_exclude": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"relay_transport_info": "",
|
||||
"relay_unknown_only": "",
|
||||
"scope": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sender_acl_info": "",
|
||||
"sieve_type": "",
|
||||
"skipcrossduplicates": "",
|
||||
"sogo_access": "",
|
||||
"sogo_access_info": "",
|
||||
"timeout2": "",
|
||||
"validate_save": "",
|
||||
"custom_attributes": "",
|
||||
"domain_footer_info_vars": {
|
||||
"from_user": "",
|
||||
"from_addr": "",
|
||||
"custom": "",
|
||||
"auth_user": "",
|
||||
"from_name": "",
|
||||
"from_domain": ""
|
||||
},
|
||||
"domain_footer_plain": "",
|
||||
"relayhost": "",
|
||||
"timeout1": "",
|
||||
"acl": "",
|
||||
"admin": "",
|
||||
"advanced_settings": "",
|
||||
"allow_from_smtp": "",
|
||||
"bcc_dest_format": "",
|
||||
"client_id": "",
|
||||
"client_secret": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"ratelimit": "",
|
||||
"redirect_uri": "",
|
||||
"sogo_visible": "",
|
||||
"sogo_visible_info": "",
|
||||
"spam_alias": "",
|
||||
"spam_filter": "",
|
||||
"spam_policy": "",
|
||||
"spam_score": "",
|
||||
"sieve_desc": "",
|
||||
"gal_info": "",
|
||||
"grant_types": "",
|
||||
"last_modified": "",
|
||||
"delete2": "",
|
||||
"delete_ays": "",
|
||||
"disable_login": "",
|
||||
"extended_sender_acl": "",
|
||||
"extended_sender_acl_info": "",
|
||||
"force_pw_update": "",
|
||||
"force_pw_update_info": "",
|
||||
"mailbox_quota_def": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"mbox_rl_info": "",
|
||||
"none_inherit": "",
|
||||
"nexthop": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"pushover": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_info": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"maxbytespersecond": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"app_name": "",
|
||||
"app_passwd": "",
|
||||
"app_passwd_protocols": "",
|
||||
"automap": "",
|
||||
"gal": "",
|
||||
"generate": "",
|
||||
"pushover_sound": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"quota_warning_bcc": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"lookup_mx": ""
|
||||
"username": "Nazwa użytkownika"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Anuluj",
|
||||
@@ -621,14 +198,7 @@
|
||||
"delete_now": "Usuń teraz",
|
||||
"delete_these_items": "Czy jesteś pewien, że chcesz usunąć następujące elementy?",
|
||||
"loading": "Proszę czekać...",
|
||||
"restart_now": "Uruchom ponownie teraz",
|
||||
"hibp_check": "",
|
||||
"hibp_nok": "",
|
||||
"restart_container_info": "",
|
||||
"restarting_container": "",
|
||||
"hibp_ok": "",
|
||||
"nothing_selected": "",
|
||||
"restart_container": ""
|
||||
"restart_now": "Uruchom ponownie teraz"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Administrowanie",
|
||||
@@ -636,25 +206,16 @@
|
||||
"mailcow_config": "Konfiguracja",
|
||||
"quarantine": "Kwarantanna",
|
||||
"restart_sogo": "Uruchom ponownie SOGo",
|
||||
"user_settings": "Ustawienia użytkownika",
|
||||
"apps": "",
|
||||
"debug": "",
|
||||
"mailcow_system": "",
|
||||
"restart_netfilter": ""
|
||||
"user_settings": "Ustawienia użytkownika"
|
||||
},
|
||||
"info": {
|
||||
"no_action": "Żadne działanie nie ma zastosowania",
|
||||
"awaiting_tfa_confirmation": "",
|
||||
"session_expires": ""
|
||||
"no_action": "Żadne działanie nie ma zastosowania"
|
||||
},
|
||||
"login": {
|
||||
"delayed": "Logowanie zostało opóźnione o %s sekund.",
|
||||
"login": "Zaloguj się",
|
||||
"password": "Hasło",
|
||||
"username": "Nazwa użytkownika",
|
||||
"mobileconfig_info": "",
|
||||
"fido2_webauthn": "",
|
||||
"other_logins": ""
|
||||
"username": "Nazwa użytkownika"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "Działanie",
|
||||
@@ -714,122 +275,7 @@
|
||||
"tls_enforce_out": "Uruchom TLS wychodzące",
|
||||
"toggle_all": "Zaznacz wszystkie",
|
||||
"username": "Nazwa użytkownika",
|
||||
"weekly": "Co tydzień",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"add_alias_expand": "",
|
||||
"add_bcc_entry": "",
|
||||
"add_filter": "",
|
||||
"add_recipient_map_entry": "",
|
||||
"allow_from_smtp": "",
|
||||
"bcc_info": "",
|
||||
"bcc_local_dest": "",
|
||||
"bcc_map": "",
|
||||
"bcc_map_type": "",
|
||||
"bcc_maps": "",
|
||||
"bcc_rcpt_map": "",
|
||||
"bcc_sender_map": "",
|
||||
"bcc_to_rcpt": "",
|
||||
"bcc_to_sender": "",
|
||||
"bcc_type": "",
|
||||
"booking_null": "",
|
||||
"booking_0_short": "",
|
||||
"booking_custom": "",
|
||||
"booking_custom_short": "",
|
||||
"booking_ltnull": "",
|
||||
"booking_lt0_short": "",
|
||||
"catch_all": "",
|
||||
"created_on": "",
|
||||
"goto_spam": "",
|
||||
"insert_preset": "",
|
||||
"last_mail_login": "",
|
||||
"last_modified": "",
|
||||
"last_pw_change": "",
|
||||
"last_run_reset": "",
|
||||
"mailbox": "",
|
||||
"mailbox_defaults": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"mailbox_defquota": "",
|
||||
"mailbox_templates": "",
|
||||
"no": "",
|
||||
"q_add_header": "",
|
||||
"q_all": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"recipient": "",
|
||||
"recipient_map": "",
|
||||
"recipient_map_info": "",
|
||||
"recipient_map_old": "",
|
||||
"recipient_map_old_info": "",
|
||||
"recipient_maps": "",
|
||||
"relay_unknown": "",
|
||||
"sogo_visible_y": "",
|
||||
"stats": "",
|
||||
"status": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"tls_policy_maps_info": "",
|
||||
"tls_policy_maps_long": "",
|
||||
"waiting": "",
|
||||
"yes": "",
|
||||
"sieve_preset_8": "",
|
||||
"add_template": "",
|
||||
"add_tls_policy_map": "",
|
||||
"address_rewriting": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"table_size": "",
|
||||
"alias_domain_alias_hint": "",
|
||||
"disable_login": "",
|
||||
"disable_x": "",
|
||||
"dkim_domains_selector": "",
|
||||
"domain_templates": "",
|
||||
"sieve_preset_3": "",
|
||||
"sieve_preset_5": "",
|
||||
"allowed_protocols": "",
|
||||
"bcc": "",
|
||||
"bcc_destination": "",
|
||||
"bcc_destinations": "",
|
||||
"enable_x": "",
|
||||
"filters": "",
|
||||
"force_pw_update": "",
|
||||
"gal": "",
|
||||
"goto_ham": "",
|
||||
"open_logs": "",
|
||||
"owner": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"recipient_map_new": "",
|
||||
"recipient_map_new_info": "",
|
||||
"running": "",
|
||||
"sender": "",
|
||||
"set_postfilter": "",
|
||||
"set_prefilter": "",
|
||||
"sieve_info": "",
|
||||
"sieve_preset_1": "",
|
||||
"sieve_preset_2": "",
|
||||
"sieve_preset_6": "",
|
||||
"sieve_preset_7": "",
|
||||
"sieve_preset_header": "",
|
||||
"sogo_visible": "",
|
||||
"sogo_visible_n": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"table_size_show_n": "",
|
||||
"templates": "",
|
||||
"template": "",
|
||||
"tls_map_parameters_info": "",
|
||||
"tls_map_policy": "",
|
||||
"tls_policy_maps": "",
|
||||
"tls_policy_maps_enforced_tls": "",
|
||||
"sieve_preset_4": "",
|
||||
"alias_domain_backupmx": "",
|
||||
"all_domains": "",
|
||||
"tls_map_dest": "",
|
||||
"tls_map_dest_info": "",
|
||||
"tls_map_parameters": ""
|
||||
"weekly": "Co tydzień"
|
||||
},
|
||||
"quarantine": {
|
||||
"action": "Działanie",
|
||||
@@ -837,68 +283,10 @@
|
||||
"quarantine": "Kwarantanna",
|
||||
"quick_actions": "Szybkie działania",
|
||||
"remove": "Usuń",
|
||||
"toggle_all": "Zaznacz wszystkie",
|
||||
"deliver_inbox": "",
|
||||
"disabled_by_config": "",
|
||||
"download_eml": "",
|
||||
"high_danger": "",
|
||||
"neutral_danger": "",
|
||||
"info": "",
|
||||
"junk_folder": "",
|
||||
"learn_spam_delete": "",
|
||||
"low_danger": "",
|
||||
"medium_danger": "",
|
||||
"notified": "",
|
||||
"rcpt": "",
|
||||
"atts": "",
|
||||
"check_hash": "",
|
||||
"confirm": "",
|
||||
"confirm_delete": "",
|
||||
"danger": "",
|
||||
"qhandler_success": "",
|
||||
"qid": "",
|
||||
"qinfo": "",
|
||||
"quick_delete_link": "",
|
||||
"quick_info_link": "",
|
||||
"quick_release_link": "",
|
||||
"received": "",
|
||||
"recipients": "",
|
||||
"refresh": "",
|
||||
"rejected": "",
|
||||
"release": "",
|
||||
"release_body": "",
|
||||
"rspamd_result": "",
|
||||
"sender": "",
|
||||
"sender_header": "",
|
||||
"show_item": "",
|
||||
"spam": "",
|
||||
"spam_score": "",
|
||||
"subj": "",
|
||||
"table_size": "",
|
||||
"table_size_show_n": "",
|
||||
"text_from_html_content": "",
|
||||
"text_plain_content": "",
|
||||
"type": "",
|
||||
"settings_info": "",
|
||||
"release_subject": "",
|
||||
"rewrite_subject": "",
|
||||
"qitem": ""
|
||||
"toggle_all": "Zaznacz wszystkie"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Queue Manager",
|
||||
"hold_mail_legend": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": ""
|
||||
"queue_manager": "Queue Manager"
|
||||
},
|
||||
"start": {
|
||||
"help": "Pokaż/Ukryj panel pomocy",
|
||||
@@ -934,63 +322,7 @@
|
||||
"object_modified": "Zapisano zmiany w obiekcie %s",
|
||||
"resource_added": "Dodano śródło %s",
|
||||
"resource_modified": "Zapisano zmiany w skrzynce %s",
|
||||
"resource_removed": "Usunięto zasób %s",
|
||||
"hash_deleted": "",
|
||||
"template_removed": "",
|
||||
"tls_policy_map_entry_saved": "",
|
||||
"ui_texts": "",
|
||||
"upload_success": "",
|
||||
"verified_fido2_login": "",
|
||||
"verified_webauthn_login": "",
|
||||
"verified_totp_login": "",
|
||||
"verified_yotp_login": "",
|
||||
"tls_policy_map_entry_deleted": "",
|
||||
"acl_saved": "",
|
||||
"admin_added": "",
|
||||
"admin_api_modified": "",
|
||||
"admin_removed": "",
|
||||
"app_links": "",
|
||||
"app_passwd_added": "",
|
||||
"app_passwd_removed": "",
|
||||
"bcc_deleted": "",
|
||||
"bcc_edited": "",
|
||||
"bcc_saved": "",
|
||||
"cors_headers_edited": "",
|
||||
"db_init_complete": "",
|
||||
"delete_filter": "",
|
||||
"delete_filters": "",
|
||||
"deleted_syncjob": "",
|
||||
"deleted_syncjobs": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"dkim_duplicated": "",
|
||||
"domain_footer_modified": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"item_released": "",
|
||||
"items_released": "",
|
||||
"learned_ham": "",
|
||||
"license_modified": "",
|
||||
"nginx_reloaded": "",
|
||||
"password_policy_saved": "",
|
||||
"pushover_settings_edited": "",
|
||||
"qlearn_spam": "",
|
||||
"queue_command_success": "",
|
||||
"recipient_map_entry_deleted": "",
|
||||
"recipient_map_entry_saved": "",
|
||||
"relayhost_added": "",
|
||||
"relayhost_removed": "",
|
||||
"reset_main_logo": "",
|
||||
"rl_saved": "",
|
||||
"rspamd_ui_pw_set": "",
|
||||
"saved_settings": "",
|
||||
"settings_map_added": "",
|
||||
"settings_map_removed": "",
|
||||
"sogo_profile_reset": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"dovecot_restart_success": "",
|
||||
"global_filter_written": "",
|
||||
"logged_in_as": ""
|
||||
"resource_removed": "Usunięto zasób %s"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s używa Yubico Cloud API. Proszę pobrać klucz API dla Twojego klucza <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">here</a>",
|
||||
@@ -1010,15 +342,7 @@
|
||||
"webauthn": "Uwierzytelnianie WebAuthn",
|
||||
"waiting_usb_auth": "<i>Czekam na urządzenie USB...</i><br><br>Wciśnij teraz przycisk na urządzeniu WebAuthn USB.",
|
||||
"waiting_usb_register": "<i> Czekam na urządzenie USB...</i><br><br>Wprowadź swoje hasło powyżej i potwierdź rejestrację WebAuthn przez naciśnięcie przycisku na urządzeniu WebAuthn USB.",
|
||||
"yubi_otp": "Uwierzytelnianie Yubico OTP",
|
||||
"authenticators": "",
|
||||
"init_webauthn": "",
|
||||
"reload_retry": "",
|
||||
"start_webauthn_validation": "",
|
||||
"tfa_token_invalid": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": "",
|
||||
"error_code": ""
|
||||
"yubi_otp": "Uwierzytelnianie Yubico OTP"
|
||||
},
|
||||
"user": {
|
||||
"action": "Działanie",
|
||||
@@ -1105,205 +429,6 @@
|
||||
"username": "Nazwa użytkownika",
|
||||
"week": "Tydzień",
|
||||
"weekly": "Co tydzień",
|
||||
"weeks": "Tygodnie",
|
||||
"last_ui_login": "",
|
||||
"loading": "",
|
||||
"spam_score_reset": "",
|
||||
"status": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"verify": "",
|
||||
"email": "",
|
||||
"login_history": "",
|
||||
"mailbox": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"app_name": "",
|
||||
"apple_connection_profile": "",
|
||||
"from": "",
|
||||
"generate": "",
|
||||
"pushover_sound": "",
|
||||
"value": "",
|
||||
"quarantine_category_info": "",
|
||||
"running": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"title": "",
|
||||
"advanced_settings": "",
|
||||
"app_hint": "",
|
||||
"allowed_protocols": "",
|
||||
"apple_connection_profile_complete": "",
|
||||
"apple_connection_profile_mailonly": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"attribute": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"created_on": "",
|
||||
"direct_protocol_access": "",
|
||||
"email_and_dav": "",
|
||||
"fido2_webauthn": "",
|
||||
"last_mail_login": "",
|
||||
"last_pw_change": "",
|
||||
"no_last_login": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"password": "",
|
||||
"password_repeat": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_info": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"q_add_header": "",
|
||||
"q_all": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_notification_info": "",
|
||||
"recent_successful_connections": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"waiting": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"years": "",
|
||||
"empty": "",
|
||||
"save": "",
|
||||
"sender_acl_disabled": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"expire_in": "",
|
||||
"app_passwds": "",
|
||||
"text": "",
|
||||
"create_app_passwd": "",
|
||||
"delete_ays": ""
|
||||
},
|
||||
"debug": {
|
||||
"size": "",
|
||||
"started_at": "",
|
||||
"started_on": "",
|
||||
"static_logs": "",
|
||||
"show_ip": "",
|
||||
"solr_dead": "",
|
||||
"solr_status": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": "",
|
||||
"architecture": "",
|
||||
"chart_this_server": "",
|
||||
"container_disabled": "",
|
||||
"log_info": "",
|
||||
"online_users": "",
|
||||
"restart_container": "",
|
||||
"success": "",
|
||||
"system_containers": "",
|
||||
"timezone": "",
|
||||
"uptime": "",
|
||||
"update_available": "",
|
||||
"username": "",
|
||||
"wip": "",
|
||||
"containers_info": "",
|
||||
"container_running": "",
|
||||
"in_memory_logs": "",
|
||||
"jvm_memory_solr": "",
|
||||
"last_modified": "",
|
||||
"logs": "",
|
||||
"memory": "",
|
||||
"service": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"disk_usage": "",
|
||||
"docs": "",
|
||||
"error_show_ip": "",
|
||||
"external_logs": "",
|
||||
"history_all_servers": "",
|
||||
"login_time": ""
|
||||
},
|
||||
"oauth2": {
|
||||
"deny": "",
|
||||
"access_denied": "",
|
||||
"authorize_app": "",
|
||||
"permit": "",
|
||||
"profile_desc": "",
|
||||
"scope_ask_permission": "",
|
||||
"profile": ""
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_success": "",
|
||||
"fido2_validation_failed": "",
|
||||
"fn": "",
|
||||
"known_ids": "",
|
||||
"none": "",
|
||||
"register_status": "",
|
||||
"set_fido2": "",
|
||||
"set_fido2_touchid": "",
|
||||
"set_fn": "",
|
||||
"start_fido2_validation": "",
|
||||
"rename": ""
|
||||
},
|
||||
"warning": {
|
||||
"quota_exceeded_scope": "",
|
||||
"session_token": "",
|
||||
"session_ua": "",
|
||||
"no_active_admin": "",
|
||||
"cannot_delete_self": "",
|
||||
"domain_added_sogo_failed": "",
|
||||
"dovecot_restart_failed": "",
|
||||
"fuzzy_learn_error": "",
|
||||
"hash_not_found": "",
|
||||
"ip_invalid": "",
|
||||
"is_not_primary_alias": ""
|
||||
},
|
||||
"datatables": {
|
||||
"paginate": {
|
||||
"next": "",
|
||||
"first": "",
|
||||
"last": "",
|
||||
"previous": ""
|
||||
},
|
||||
"collapse_all": "",
|
||||
"emptyTable": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"thousands": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"expand_all": "",
|
||||
"info": "",
|
||||
"decimal": "",
|
||||
"infoPostFix": ""
|
||||
},
|
||||
"diagnostics": {
|
||||
"dns_records_24hours": "",
|
||||
"dns_records_data": "",
|
||||
"dns_records_status": "",
|
||||
"dns_records_type": "",
|
||||
"optional": "",
|
||||
"dns_records_docs": "",
|
||||
"dns_records": "",
|
||||
"cname_from_a": "",
|
||||
"dns_records_name": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": "",
|
||||
"day": ""
|
||||
"weeks": "Tygodnie"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -107,8 +107,7 @@
|
||||
"username": "Nume de utilizator",
|
||||
"validate": "Validează",
|
||||
"validation_success": "Validat cu succes",
|
||||
"tags": "Etichete",
|
||||
"dry": ""
|
||||
"tags": "Etichete"
|
||||
},
|
||||
"admin": {
|
||||
"access": "Acces",
|
||||
@@ -344,14 +343,7 @@
|
||||
"ip_check_disabled": "Verificarea IP este dezactivată. Puteţi activa la<br> <strong>Sistem > Configuraţie > Opţiuni > Personalizează</strong>",
|
||||
"ip_check_opt_in": "Alegeţi să folosiţi servicile <strong>ipv4.mailcow.email</strong> şi <strong>ipv6.mailcow.email</strong> să rezolvaţi addrese IP externale.",
|
||||
"options": "Opţiuni",
|
||||
"queue_unban": "retractează interzicere",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"allowed_methods": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"allowed_origins": ""
|
||||
"queue_unban": "retractează interzicere"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Accesul a fost respins sau datele formularului sunt invalide",
|
||||
@@ -479,10 +471,7 @@
|
||||
"extended_sender_acl_denied": "lipseşte ACL pentru setarea adrese externe",
|
||||
"template_exists": "Şablon %s deja există",
|
||||
"template_id_invalid": "Şablon ID %s este invalid",
|
||||
"template_name_invalid": "Nume de şablon este invalid",
|
||||
"cors_invalid_origin": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": ""
|
||||
"template_name_invalid": "Nume de şablon este invalid"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Grafic (acest server)",
|
||||
@@ -509,21 +498,7 @@
|
||||
"success": "Succes",
|
||||
"system_containers": "Sistem și Containere",
|
||||
"uptime": "Timp de funcționare",
|
||||
"username": "Utilizator",
|
||||
"architecture": "",
|
||||
"container_running": "",
|
||||
"show_ip": "",
|
||||
"wip": "",
|
||||
"error_show_ip": "",
|
||||
"memory": "",
|
||||
"timezone": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": "",
|
||||
"container_disabled": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"current_time": ""
|
||||
"username": "Utilizator"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Valoare derivată din înregistrarea A/AAAA. Acest lucru este acceptat atâta timp cât înregistrarea indică resursele corecte.",
|
||||
@@ -649,23 +624,7 @@
|
||||
"title": "Editează obiectul",
|
||||
"unchanged_if_empty": "Dacă rămâne neschimbat se lasă necompletat",
|
||||
"username": "Nume de utilizator",
|
||||
"validate_save": "Validează și salvează",
|
||||
"footer_exclude": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"custom_attributes": "",
|
||||
"domain_footer_info_vars": {
|
||||
"custom": "",
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": ""
|
||||
},
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info": "",
|
||||
"domain_footer_plain": "",
|
||||
"pushover_sound": ""
|
||||
"validate_save": "Validează și salvează"
|
||||
},
|
||||
"fido2": {
|
||||
"set_fn": "Setați un nume prietenos",
|
||||
@@ -706,8 +665,7 @@
|
||||
"quarantine": "Carantină",
|
||||
"restart_netfilter": "Repornire netfilter",
|
||||
"restart_sogo": "Repornire SOGo",
|
||||
"user_settings": "Setări utilizator",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Setări utilizator"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "În așteptarea confirmării TFA",
|
||||
@@ -890,13 +848,7 @@
|
||||
"username": "Nume de utilizator",
|
||||
"waiting": "Aşteptare",
|
||||
"weekly": "Săptămânal",
|
||||
"yes": "✓",
|
||||
"mailbox_templates": "",
|
||||
"template": "",
|
||||
"templates": "",
|
||||
"add_template": "",
|
||||
"domain_templates": "",
|
||||
"relay_unknown": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Conectează-te ca proprietar al cutiei poștale pentru a acorda acces prin OAuth2.",
|
||||
@@ -961,20 +913,7 @@
|
||||
"toggle_all": "Comută toate"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Manager de coadă",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"info": "",
|
||||
"legend": ""
|
||||
"queue_manager": "Manager de coadă"
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "Dezactivat",
|
||||
@@ -1066,14 +1005,7 @@
|
||||
"verified_webauthn_login": "Autentificarea WebAuthn verificată",
|
||||
"verified_fido2_login": "Conectare FIDO2 verificată",
|
||||
"verified_yotp_login": "Autentificarea Yubico OTP verificată",
|
||||
"domain_add_dkim_available": "O cheie DKIM deja a existat",
|
||||
"domain_footer_modified": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"cors_headers_edited": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"template_removed": ""
|
||||
"domain_add_dkim_available": "O cheie DKIM deja a existat"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s utilizează API-ul Yubico Cloud. Obțineți o cheie API pentru cheia dvs. de <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">aici</a>",
|
||||
@@ -1098,10 +1030,7 @@
|
||||
"webauthn": "Autentificare WebAuthn",
|
||||
"waiting_usb_auth": "<i>În așteptarea dispozitivului USB...</i><br><br>Apasă acum butonul de pe dispozitivul tău USB WebAuthn.",
|
||||
"waiting_usb_register": "<i>În așteptarea dispozitivului USB...</i><br><br>Introdu parola ta mai sus și confirmă înregistrarea ta WebAuthn atingând butonul de pe dispozitivul tău USB WebAuthn.",
|
||||
"yubi_otp": "Autentificare Yubico OTP",
|
||||
"authenticators": "",
|
||||
"u2f_deprecated_important": "",
|
||||
"u2f_deprecated": ""
|
||||
"yubi_otp": "Autentificare Yubico OTP"
|
||||
},
|
||||
"user": {
|
||||
"action": "Acțiune",
|
||||
@@ -1262,10 +1191,7 @@
|
||||
"weeks": "săptămâni",
|
||||
"with_app_password": "cu parola aplicație",
|
||||
"year": "an",
|
||||
"years": "ani",
|
||||
"attribute": "",
|
||||
"pushover_sound": "",
|
||||
"value": ""
|
||||
"years": "ani"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Nu se poate șterge utilizatorul conectat",
|
||||
@@ -1282,28 +1208,6 @@
|
||||
},
|
||||
"datatables": {
|
||||
"expand_all": "Expandează tot",
|
||||
"decimal": ",",
|
||||
"infoPostFix": "",
|
||||
"emptyTable": "",
|
||||
"thousands": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"paginate": {
|
||||
"first": "",
|
||||
"last": "",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"collapse_all": ""
|
||||
"decimal": ","
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"acl": {
|
||||
"alias_domains": "Создание псевдонимов домена",
|
||||
"app_passwds": "Пароли приложений",
|
||||
"bcc_maps": "Правила BBC",
|
||||
"bcc_maps": "Правила BCC",
|
||||
"delimiter_action": "Обработка тегированной почты",
|
||||
"domain_desc": "Изменение описания домена",
|
||||
"domain_relayhost": "Изменение промежуточных узлов для домена",
|
||||
@@ -348,10 +348,7 @@
|
||||
"ip_check_opt_in": "Согласие на использование сторонних служб <strong>ipv4.mailcow.email</strong> и <strong>ipv6.mailcow.email</strong> для разрешения внешних IP-адресов.",
|
||||
"f2b_manage_external": "Внешнее управление Fail2Ban",
|
||||
"f2b_manage_external_info": "Fail2ban по-прежнему будет вести банлист, но не будет активно устанавливать правила для блокировки трафика. Используйте сгенерированный ниже банлист для внешнего блокирования трафика.",
|
||||
"copy_to_clipboard": "Текст скопирован в буфер обмена!",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": "",
|
||||
"options": ""
|
||||
"copy_to_clipboard": "Текст скопирован в буфер обмена!"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Доступ запрещён, или указаны неверные данные",
|
||||
@@ -392,7 +389,7 @@
|
||||
"imagick_exception": "Ошибка в Imagick при чтении изображения",
|
||||
"img_invalid": "Невозможно проверить файл изображения",
|
||||
"img_tmp_missing": "Невозможно проверить файл изображения: временный файл не найден",
|
||||
"invalid_bcc_map_type": "Неверный тип правила BBC",
|
||||
"invalid_bcc_map_type": "Неверный тип правила BCC",
|
||||
"invalid_destination": "Назначение \"%s\" указано неверно",
|
||||
"invalid_filter_type": "Неверный тип фильтра",
|
||||
"invalid_host": "Хост %s указан неверно",
|
||||
@@ -473,16 +470,7 @@
|
||||
"yotp_verification_failed": "Ошибка валидации Yubico OTP: %s",
|
||||
"cors_invalid_method": "Указан недопустимый метод разрешения",
|
||||
"demo_mode_enabled": "Демонстрационный режим включен",
|
||||
"cors_invalid_origin": "Указан неверный Allow-Origin",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": ""
|
||||
"cors_invalid_origin": "Указан неверный Allow-Origin"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Диаграмма (текущий сервер)",
|
||||
@@ -509,21 +497,7 @@
|
||||
"success": "Успех",
|
||||
"system_containers": "Система и контейнеры",
|
||||
"uptime": "Время работы",
|
||||
"username": "Имя пользователя",
|
||||
"wip": "",
|
||||
"architecture": "",
|
||||
"container_running": "",
|
||||
"container_disabled": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"error_show_ip": "",
|
||||
"memory": "",
|
||||
"show_ip": "",
|
||||
"timezone": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"update_failed": ""
|
||||
"username": "Имя пользователя"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Значение, полученное из записи A/AAAA. Это поддерживается до тех пор, пока запись указывает на правильный ресурс.",
|
||||
@@ -549,7 +523,7 @@
|
||||
"app_passwd": "Пароль приложения",
|
||||
"automap": "Автоматическое слияние папок (\"Sent items\", \"Sent\" => \"Sent\" etc.)",
|
||||
"backup_mx_options": "Параметры резервного копирования MX",
|
||||
"bcc_dest_format": "Назначением для правила BBC должен быть единственный действительный адрес электронной почты.",
|
||||
"bcc_dest_format": "Назначением для правила BCC должен быть единственный действительный адрес электронной почты.",
|
||||
"client_id": "ID клиента",
|
||||
"client_secret": "Секретный ключ пользователя",
|
||||
"comment_info": "Приватный комментарий не виден пользователям, а публичный - отображается рядом с псевдонимом в личном кабинете пользователя",
|
||||
@@ -662,10 +636,7 @@
|
||||
"domain_footer": "Нижний колонтитул домена",
|
||||
"domain_footer_html": "HTML нижний колонтитул",
|
||||
"domain_footer_plain": "ПРОСТОЙ нижний колонтитул",
|
||||
"custom_attributes": "Пользовательские атрибуты",
|
||||
"domain_footer_skip_replies": "",
|
||||
"pushover_sound": "",
|
||||
"sogo_access": ""
|
||||
"custom_attributes": "Пользовательские атрибуты"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "Подтвердить",
|
||||
@@ -706,8 +677,7 @@
|
||||
"quarantine": "Карантин",
|
||||
"restart_netfilter": "Перезапустить netfilter",
|
||||
"restart_sogo": "Перезапустить SOGo",
|
||||
"user_settings": "Настройки пользователя",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Настройки пользователя"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "В ожидании подтверждения TFA",
|
||||
@@ -730,7 +700,7 @@
|
||||
"add": "Добавить",
|
||||
"add_alias": "Добавить псевдоним",
|
||||
"add_alias_expand": "Скопировать псевдонимы на псевдонимы домена",
|
||||
"add_bcc_entry": "Добавить правило BBC",
|
||||
"add_bcc_entry": "Добавить правило BCC",
|
||||
"add_domain": "Добавить домен",
|
||||
"add_domain_alias": "Добавить псевдоним домена",
|
||||
"add_domain_record_first": "Пожалуйста, сначала добавьте домен",
|
||||
@@ -749,14 +719,14 @@
|
||||
"allow_from_smtp_info": "Укажите IPv4/IPv6 адреса и/или подсети.<br>Оставьте поле пустым, чтобы разрешить отправку с любых адресов.",
|
||||
"allowed_protocols": "Разрешенные протоколы",
|
||||
"backup_mx": "Резервный MX",
|
||||
"bcc": "Правила BBC",
|
||||
"bcc": "Правила BCC",
|
||||
"bcc_destination": "Назначение BCC",
|
||||
"bcc_destinations": "Назначение BCC",
|
||||
"bcc_info": "Правила BCC используются для скрытой пересылки копий всех сообщений на другой адрес. Правило типа \"получатель\" используется, когда локальный получатель выступает в качестве получателя почты. Правило типа \"отправитель\" соответствуют тому же принципу. Локальный домен не будут проинформированы о неудачной доставке.",
|
||||
"bcc_local_dest": "Локальный домен",
|
||||
"bcc_map": "Правила BBC",
|
||||
"bcc_map": "Правила BCC",
|
||||
"bcc_map_type": "Тип BCC",
|
||||
"bcc_maps": "Правила BBC",
|
||||
"bcc_maps": "Правила BCC",
|
||||
"bcc_rcpt_map": "Получатель",
|
||||
"bcc_sender_map": "Отправитель",
|
||||
"bcc_to_rcpt": "Переключиться на тип \"получатель\"",
|
||||
@@ -890,13 +860,7 @@
|
||||
"username": "Имя пользователя",
|
||||
"waiting": "В ожидании",
|
||||
"weekly": "Раз в неделю",
|
||||
"yes": "✓",
|
||||
"domain_templates": "",
|
||||
"add_template": "",
|
||||
"mailbox_templates": "",
|
||||
"relay_unknown": "",
|
||||
"templates": "",
|
||||
"template": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Пожалуйста, войдите в систему как владелец почтового аккаунта, чтобы получить доступ через OAuth2.",
|
||||
@@ -961,20 +925,7 @@
|
||||
"type": "Тип"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Очередь на отправку",
|
||||
"delete": "",
|
||||
"info": "",
|
||||
"unhold_mail_legend": "",
|
||||
"flush": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": ""
|
||||
"queue_manager": "Очередь на отправку"
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "Отключен",
|
||||
@@ -1068,12 +1019,7 @@
|
||||
"verified_yotp_login": "Авторизация Yubico OTP пройдена",
|
||||
"cors_headers_edited": "Настройки CORS сохранены",
|
||||
"domain_footer_modified": "Изменения в нижнем колонтитуле домена %s сохранены",
|
||||
"f2b_banlist_refreshed": "Идентификатор банлиста был успешно обновлен.",
|
||||
"domain_add_dkim_available": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"template_removed": ""
|
||||
"f2b_banlist_refreshed": "Идентификатор банлиста был успешно обновлен."
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s использует Yubico Cloud API. Пожалуйста, получите ключ API для вашего ключа <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">здесь</a>",
|
||||
@@ -1099,9 +1045,7 @@
|
||||
"waiting_usb_auth": "<i>Ожидание устройства USB...</i><br><br>Пожалуйста, нажмите кнопку на USB устройстве сейчас.",
|
||||
"waiting_usb_register": "<i>Ожидание устройства USB...</i><br><br>Пожалуйста, введите пароль выше и подтвердите регистрацию, нажав кнопку на USB устройстве.",
|
||||
"yubi_otp": "Yubico OTP аутентификация",
|
||||
"u2f_deprecated": "Похоже, что ваш ключ был зарегистрирован с использованием устаревшего метода U2F. Мы деактивируем для вас двухфакторную аутентификацию и удалим ваш ключ.",
|
||||
"authenticators": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"u2f_deprecated": "Похоже, что ваш ключ был зарегистрирован с использованием устаревшего метода U2F. Мы деактивируем для вас двухфакторную аутентификацию и удалим ваш ключ."
|
||||
},
|
||||
"user": {
|
||||
"action": "Действия",
|
||||
@@ -1264,8 +1208,7 @@
|
||||
"with_app_password": "с паролем приложения",
|
||||
"change_password_hint_app_passwords": "В вашей учетной записи есть {{number_of_app_passwords}} паролей приложений, которые не будут изменены. Чтобы управлять ими, перейдите на вкладку \"Пароли приложений\".",
|
||||
"attribute": "Атрибут",
|
||||
"value": "Значение",
|
||||
"pushover_sound": ""
|
||||
"value": "Значение"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Вы не можете удалить сами себя",
|
||||
@@ -1283,27 +1226,6 @@
|
||||
"datatables": {
|
||||
"collapse_all": "Свернуть все",
|
||||
"expand_all": "Развернуть все",
|
||||
"infoPostFix": "",
|
||||
"decimal": "",
|
||||
"thousands": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"paginate": {
|
||||
"last": "",
|
||||
"first": "",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"emptyTable": "",
|
||||
"info": "",
|
||||
"infoEmpty": "",
|
||||
"infoFiltered": ""
|
||||
"infoPostFix": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
"relay_transport_info": "<div class=\"badge fs-6 bg-info\">Info</div> Definirate lahko preslikave transportov za cilj po meri za to domeno. Če ni nastavljena, se ustvari MX poizvedba.",
|
||||
"syncjob_hint": "Pozor! Gesla se morajo shraniti v plain-text!",
|
||||
"timeout2": "Časovna omejitev za povezavo do lokalnega gostitelja",
|
||||
"dry": ""
|
||||
"dry": "Simuliraj sinhronizacijo"
|
||||
},
|
||||
"admin": {
|
||||
"access": "Dostop",
|
||||
@@ -349,9 +349,9 @@
|
||||
"cors_settings": "Nastavitve CORS",
|
||||
"allowed_methods": "Dovoljene metode za upravljanje dostopa",
|
||||
"allowed_origins": "Upravljanje-dostopa-Dovoljeni-Viri",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": ""
|
||||
"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."
|
||||
},
|
||||
"danger": {
|
||||
"alias_goto_identical": "Alias in goto naslov morata biti identična",
|
||||
@@ -481,8 +481,8 @@
|
||||
"cors_invalid_method": "Navedena neveljavna Allow metoda",
|
||||
"cors_invalid_origin": "Naveden neveljaven Allow-Origin",
|
||||
"invalid_recipient_map_new": "Naveden neveljaven nov prejemnik: %s",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": ""
|
||||
"img_dimensions_exceeded": "Slika presega največje dovoljene dimenzije",
|
||||
"img_size_exceeded": "Slika presega največjo dovoljeno velikost datoteke"
|
||||
},
|
||||
"debug": {
|
||||
"containers_info": "Informacije o vsebniku (containerju)",
|
||||
@@ -518,12 +518,12 @@
|
||||
"update_failed": "Ni mogoče preveriti za posodobitve",
|
||||
"username": "Uporabniško ime",
|
||||
"wip": "Trenutno v delu",
|
||||
"log_info": "",
|
||||
"login_time": "",
|
||||
"logs": "",
|
||||
"memory": "",
|
||||
"online_users": "",
|
||||
"restart_container": ""
|
||||
"log_info": "<p>mailcow <b>in-memory dnevniki</b> se zbirajo v Redis seznamih in se vsako minuto omejijo na LOG_LINES (%d) da se zmanjša obremenitev.\n <br>In-memory dnevniki niso namenjeni trajnemu shranjevanju. Vse aplikacije, ki beležijo dnevnike in-memory, tudi beležijo v Docker daemon in posledično v privzeti gonilnik za dnevnik.\n <br>In-memory dnevniki se naj uporabljajo za odpravljanje manjših napak s containerji.</p>\n <p><b>Eksterni dnevniki</b> se zbirajo preko API-ja posamezne aplikacije.</p>\n <p><b>Statični dnevniki</b> so večinoma dnevniki aktivnosti, ki se ne beležijo v Dockerd, a jih je vseeno treba hraniti (razen API dnevnikov).</p>",
|
||||
"login_time": "Čas",
|
||||
"logs": "Dnevniki",
|
||||
"memory": "Spomin",
|
||||
"online_users": "Prijavljeni uporabniki",
|
||||
"restart_container": "Ponovno zaženi"
|
||||
},
|
||||
"datatables": {
|
||||
"infoFiltered": "(filtrirano od _MAX_ skupaj zapisov)",
|
||||
@@ -548,8 +548,7 @@
|
||||
"aria": {
|
||||
"sortAscending": ": aktivirajte za razvrstitev stolpca naraščajoče",
|
||||
"sortDescending": ": aktivirajte za razvrstitev stolpca padajoče"
|
||||
},
|
||||
"infoPostFix": ""
|
||||
}
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Vrednost pridobljena iz A/AAAA zapisa. To je podprto, če zapis kaže na pravilen resurs.",
|
||||
@@ -565,745 +564,97 @@
|
||||
"edit": {
|
||||
"acl": "ACL (Dovoljenje)",
|
||||
"active": "Aktivno",
|
||||
"maxbytespersecond": "",
|
||||
"footer_exclude": "",
|
||||
"gal_info": "",
|
||||
"inactive": "",
|
||||
"kind": "",
|
||||
"last_modified": "",
|
||||
"lookup_mx": "",
|
||||
"mailbox": "",
|
||||
"mailbox_quota_def": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"maxage": "",
|
||||
"mins_interval": "",
|
||||
"domain_quota": "",
|
||||
"spam_alias": "",
|
||||
"gal": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"domains": "",
|
||||
"dont_check_sender_acl": "",
|
||||
"full_name": "",
|
||||
"edit_alias_domain": "",
|
||||
"encryption": "",
|
||||
"exclude": "",
|
||||
"extended_sender_acl": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_info": "",
|
||||
"pushover": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"spam_filter": "",
|
||||
"skipcrossduplicates": "",
|
||||
"sogo_access": "",
|
||||
"sogo_access_info": "",
|
||||
"sogo_visible": "",
|
||||
"sogo_visible_info": "",
|
||||
"spam_policy": "",
|
||||
"spam_score": "",
|
||||
"subfolder2": "",
|
||||
"syncjob": "",
|
||||
"target_address": "",
|
||||
"title": "",
|
||||
"username": "",
|
||||
"app_name": "",
|
||||
"custom_attributes": "",
|
||||
"delete2": "",
|
||||
"delete2duplicates": "",
|
||||
"generate": "",
|
||||
"grant_types": "",
|
||||
"redirect_uri": "",
|
||||
"domain_footer_plain": "",
|
||||
"extended_sender_acl_info": "",
|
||||
"force_pw_update": "",
|
||||
"force_pw_update_info": "",
|
||||
"mbox_rl_info": "",
|
||||
"multiple_bookings": "",
|
||||
"none_inherit": "",
|
||||
"nexthop": "",
|
||||
"password": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"pushover_sender_regex": "",
|
||||
"alias": "",
|
||||
"max_aliases": "",
|
||||
"max_mailboxes": "",
|
||||
"max_quota": "",
|
||||
"admin": "",
|
||||
"advanced_settings": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"app_passwd": "",
|
||||
"app_passwd_protocols": "",
|
||||
"automap": "",
|
||||
"backup_mx_options": "",
|
||||
"bcc_dest_format": "",
|
||||
"client_id": "",
|
||||
"client_secret": "",
|
||||
"comment_info": "",
|
||||
"created_on": "",
|
||||
"delete1": "",
|
||||
"delete_ays": "",
|
||||
"description": "",
|
||||
"disable_login": "",
|
||||
"domain": "",
|
||||
"domain_admin": "",
|
||||
"domain_footer_info": "",
|
||||
"allow_from_smtp": "Dovoli samo tem IP naslovom da uporabijo <b>SMTP</b>",
|
||||
"bcc_dest_format": "Cilj BCC mora biti en veljaven email naslov.<br>Če morate poslati kopijo na več naslovov, ustvarite alias in ga uporabite tukaj.",
|
||||
"automap": "Poskušaj samodejno preslikati mape (\"Sent items\", \"Sent\" => \"Poslano\" ipd.)",
|
||||
"admin": "Uredi skrbnika",
|
||||
"domain_footer_info_vars": {
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"custom": ""
|
||||
"custom": "{= foo =} - Če ima poštni predal atribut po meri \"foo\" z vrednostjo \"bar\", spremenljivka vrne \"bar\"",
|
||||
"auth_user": "{= auth_user =} - Prijavljeno uporabniško ime, ki ga določi MTA",
|
||||
"from_user": "{= from_user =} - leva stran email naslova uporabnika, npr. za \"moo@mailcow.tld\" vrne \"moo\"",
|
||||
"from_name": "{= from_name =} - Prikazno ime, npr. za \"Mailcow <moo@mailcow.tld>\" vrne \"Mailcow\"",
|
||||
"from_addr": "{= from_addr =} - e-poštni naslov \"Od\"",
|
||||
"from_domain": "{= from_domain =} - domena e-poštnega naslova \"Od\""
|
||||
},
|
||||
"password_repeat": "",
|
||||
"previous": "",
|
||||
"private_comment": "",
|
||||
"public_comment": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_sound": "",
|
||||
"pushover_vars": "",
|
||||
"pushover_verify": "",
|
||||
"quota_mb": "",
|
||||
"quota_warning_bcc": "",
|
||||
"quota_warning_bcc_info": "",
|
||||
"ratelimit": "",
|
||||
"relay_all": "",
|
||||
"relay_all_info": "",
|
||||
"relay_domain": "",
|
||||
"relay_transport_info": "",
|
||||
"relay_unknown_only": "",
|
||||
"relayhost": "",
|
||||
"remove": "",
|
||||
"hostname": "",
|
||||
"resource": "",
|
||||
"save": "",
|
||||
"scope": "",
|
||||
"sender_acl": "",
|
||||
"sender_acl_disabled": "",
|
||||
"sender_acl_info": "",
|
||||
"sieve_desc": "",
|
||||
"sieve_type": "",
|
||||
"target_domain": "",
|
||||
"timeout1": "",
|
||||
"timeout2": "",
|
||||
"unchanged_if_empty": "",
|
||||
"validate_save": ""
|
||||
},
|
||||
"mailbox": {
|
||||
"add_resource": "",
|
||||
"domain_templates": "",
|
||||
"activate": "",
|
||||
"public_comment": "",
|
||||
"set_prefilter": "",
|
||||
"sieve_preset_5": "",
|
||||
"active": "",
|
||||
"add": "",
|
||||
"add_alias": "",
|
||||
"add_alias_expand": "",
|
||||
"add_bcc_entry": "",
|
||||
"bcc_destinations": "",
|
||||
"bcc_local_dest": "",
|
||||
"mailbox_defaults_info": "",
|
||||
"mailbox_defquota": "",
|
||||
"mailbox_templates": "",
|
||||
"multiple_bookings": "",
|
||||
"private_comment": "",
|
||||
"q_add_header": "",
|
||||
"q_all": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_notification": "",
|
||||
"quick_actions": "",
|
||||
"recipient": "",
|
||||
"recipient_map": "",
|
||||
"recipient_map_info": "",
|
||||
"recipient_map_new": "",
|
||||
"recipient_map_new_info": "",
|
||||
"recipient_map_old": "",
|
||||
"recipient_map_old_info": "",
|
||||
"recipient_maps": "",
|
||||
"relay_unknown": "",
|
||||
"running": "",
|
||||
"sender": "",
|
||||
"set_postfilter": "",
|
||||
"sieve_preset_1": "",
|
||||
"sieve_preset_2": "",
|
||||
"sieve_info": "",
|
||||
"sieve_preset_3": "",
|
||||
"sieve_preset_4": "",
|
||||
"sieve_preset_6": "",
|
||||
"sieve_preset_7": "",
|
||||
"sieve_preset_8": "",
|
||||
"sogo_visible": "",
|
||||
"status": "",
|
||||
"target_address": "",
|
||||
"target_domain": "",
|
||||
"template": "",
|
||||
"templates": "",
|
||||
"tls_enforce_in": "",
|
||||
"tls_enforce_out": "",
|
||||
"tls_map_dest_info": "",
|
||||
"tls_map_parameters": "",
|
||||
"tls_map_policy": "",
|
||||
"tls_policy_maps": "",
|
||||
"tls_policy_maps_enforced_tls": "",
|
||||
"tls_policy_maps_long": "",
|
||||
"backup_mx": "",
|
||||
"force_pw_update": "",
|
||||
"gal": "",
|
||||
"last_run": "",
|
||||
"last_run_reset": "",
|
||||
"filter_table": "",
|
||||
"filters": "",
|
||||
"fname": "",
|
||||
"remove": "",
|
||||
"tls_map_dest": "",
|
||||
"add_mailbox": "",
|
||||
"domain_admins": "",
|
||||
"domain_aliases": "",
|
||||
"edit": "",
|
||||
"empty": "",
|
||||
"enable_x": "",
|
||||
"excludes": "",
|
||||
"catch_all": "",
|
||||
"no_record_single": "",
|
||||
"relay_all": "",
|
||||
"action": "",
|
||||
"add_domain": "",
|
||||
"add_domain_alias": "",
|
||||
"add_domain_record_first": "",
|
||||
"add_filter": "",
|
||||
"add_recipient_map_entry": "",
|
||||
"add_template": "",
|
||||
"add_tls_policy_map": "",
|
||||
"address_rewriting": "",
|
||||
"alias": "",
|
||||
"alias_domain_alias_hint": "",
|
||||
"alias_domain_backupmx": "",
|
||||
"aliases": "",
|
||||
"all_domains": "",
|
||||
"allow_from_smtp": "",
|
||||
"allow_from_smtp_info": "",
|
||||
"allowed_protocols": "",
|
||||
"bcc": "",
|
||||
"bcc_destination": "",
|
||||
"bcc_info": "",
|
||||
"bcc_map": "",
|
||||
"bcc_map_type": "",
|
||||
"bcc_maps": "",
|
||||
"bcc_rcpt_map": "",
|
||||
"bcc_sender_map": "",
|
||||
"bcc_to_rcpt": "",
|
||||
"bcc_to_sender": "",
|
||||
"bcc_type": "",
|
||||
"booking_null": "",
|
||||
"booking_0_short": "",
|
||||
"booking_custom": "",
|
||||
"booking_custom_short": "",
|
||||
"booking_ltnull": "",
|
||||
"booking_lt0_short": "",
|
||||
"created_on": "",
|
||||
"daily": "",
|
||||
"deactivate": "",
|
||||
"description": "",
|
||||
"disable_login": "",
|
||||
"disable_x": "",
|
||||
"dkim_domains_selector": "",
|
||||
"dkim_key_length": "",
|
||||
"domain": "",
|
||||
"domain_quota": "",
|
||||
"domain_quota_total": "",
|
||||
"domains": "",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"hourly": "",
|
||||
"in_use": "",
|
||||
"inactive": "",
|
||||
"insert_preset": "",
|
||||
"kind": "",
|
||||
"last_mail_login": "",
|
||||
"last_modified": "",
|
||||
"last_pw_change": "",
|
||||
"mailbox": "",
|
||||
"mailbox_defaults": "",
|
||||
"mailbox_quota": "",
|
||||
"mailboxes": "",
|
||||
"max_aliases": "",
|
||||
"max_mailboxes": "",
|
||||
"max_quota": "",
|
||||
"mins_interval": "",
|
||||
"msg_num": "",
|
||||
"never": "",
|
||||
"no": "",
|
||||
"no_record": "",
|
||||
"open_logs": "",
|
||||
"owner": "",
|
||||
"resources": "",
|
||||
"sieve_preset_header": "",
|
||||
"sogo_visible_n": "",
|
||||
"sogo_visible_y": "",
|
||||
"spam_aliases": "",
|
||||
"stats": "",
|
||||
"sync_jobs": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"table_size": "",
|
||||
"table_size_show_n": "",
|
||||
"tls_map_parameters_info": "",
|
||||
"tls_policy_maps_info": "",
|
||||
"toggle_all": "",
|
||||
"username": "",
|
||||
"waiting": "",
|
||||
"weekly": "",
|
||||
"yes": ""
|
||||
},
|
||||
"user": {
|
||||
"login_history": "",
|
||||
"advanced_settings": "",
|
||||
"alias": "",
|
||||
"alias_create_random": "",
|
||||
"alias_extend_all": "",
|
||||
"alias_full_date": "",
|
||||
"alias_remove_all": "",
|
||||
"action": "",
|
||||
"active": "",
|
||||
"active_sieve": "",
|
||||
"alias_select_validity": "",
|
||||
"alias_time_left": "",
|
||||
"alias_valid_until": "",
|
||||
"delete_ays": "",
|
||||
"direct_aliases": "",
|
||||
"email_and_dav": "",
|
||||
"spamfilter_table_rule": "",
|
||||
"spamfilter_wl": "",
|
||||
"verify": "",
|
||||
"waiting": "",
|
||||
"week": "",
|
||||
"weekly": "",
|
||||
"month": "",
|
||||
"months": "",
|
||||
"sogo_profile_reset_now": "",
|
||||
"spam_aliases": "",
|
||||
"spam_score_reset": "",
|
||||
"spamfilter": "",
|
||||
"value": "",
|
||||
"eas_reset_now": "",
|
||||
"remove": "",
|
||||
"text": "",
|
||||
"no_active_filter": "",
|
||||
"no_last_login": "",
|
||||
"spamfilter_bl_desc": "",
|
||||
"spamfilter_default_score": "",
|
||||
"day": "",
|
||||
"never": "",
|
||||
"pushover_verify": "",
|
||||
"tag_handling": "",
|
||||
"edit": "",
|
||||
"last_ui_login": "",
|
||||
"title": "",
|
||||
"tls_enforce_in": "",
|
||||
"tls_enforce_out": "",
|
||||
"tls_policy": "",
|
||||
"tls_policy_warning": "",
|
||||
"aliases_also_send_as": "",
|
||||
"aliases_send_as_all": "",
|
||||
"app_hint": "",
|
||||
"allowed_protocols": "",
|
||||
"app_name": "",
|
||||
"app_passwds": "",
|
||||
"apple_connection_profile": "",
|
||||
"apple_connection_profile_complete": "",
|
||||
"apple_connection_profile_mailonly": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"attribute": "",
|
||||
"change_password": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"client_configuration": "",
|
||||
"create_app_passwd": "",
|
||||
"create_syncjob": "",
|
||||
"created_on": "",
|
||||
"daily": "",
|
||||
"direct_aliases_desc": "",
|
||||
"direct_protocol_access": "",
|
||||
"eas_reset": "",
|
||||
"eas_reset_help": "",
|
||||
"email": "",
|
||||
"empty": "",
|
||||
"encryption": "",
|
||||
"excludes": "",
|
||||
"expire_in": "",
|
||||
"fido2_webauthn": "",
|
||||
"force_pw_update": "",
|
||||
"from": "",
|
||||
"generate": "",
|
||||
"hour": "",
|
||||
"hourly": "",
|
||||
"hours": "",
|
||||
"in_use": "",
|
||||
"interval": "",
|
||||
"is_catch_all": "",
|
||||
"last_mail_login": "",
|
||||
"last_pw_change": "",
|
||||
"last_run": "",
|
||||
"loading": "",
|
||||
"mailbox": "",
|
||||
"mailbox_details": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"messages": "",
|
||||
"new_password": "",
|
||||
"new_password_repeat": "",
|
||||
"no_record": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"password": "",
|
||||
"password_now": "",
|
||||
"password_repeat": "",
|
||||
"pushover_evaluate_x_prio": "",
|
||||
"pushover_info": "",
|
||||
"pushover_only_x_prio": "",
|
||||
"pushover_sender_array": "",
|
||||
"pushover_sender_regex": "",
|
||||
"pushover_text": "",
|
||||
"pushover_title": "",
|
||||
"pushover_sound": "",
|
||||
"pushover_vars": "",
|
||||
"q_add_header": "",
|
||||
"q_all": "",
|
||||
"q_reject": "",
|
||||
"quarantine_category": "",
|
||||
"quarantine_category_info": "",
|
||||
"quarantine_notification": "",
|
||||
"quarantine_notification_info": "",
|
||||
"recent_successful_connections": "",
|
||||
"running": "",
|
||||
"save": "",
|
||||
"save_changes": "",
|
||||
"sender_acl_disabled": "",
|
||||
"shared_aliases": "",
|
||||
"shared_aliases_desc": "",
|
||||
"show_sieve_filters": "",
|
||||
"sogo_profile_reset": "",
|
||||
"sogo_profile_reset_help": "",
|
||||
"spamfilter_behavior": "",
|
||||
"spamfilter_bl": "",
|
||||
"spamfilter_green": "",
|
||||
"spamfilter_hint": "",
|
||||
"spamfilter_red": "",
|
||||
"spamfilter_table_action": "",
|
||||
"spamfilter_table_add": "",
|
||||
"spamfilter_table_domain_policy": "",
|
||||
"spamfilter_table_empty": "",
|
||||
"spamfilter_table_remove": "",
|
||||
"spamfilter_wl_desc": "",
|
||||
"spamfilter_yellow": "",
|
||||
"status": "",
|
||||
"sync_jobs": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": "",
|
||||
"tag_help_example": "",
|
||||
"tag_help_explain": "",
|
||||
"tag_in_none": "",
|
||||
"tag_in_subfolder": "",
|
||||
"tag_in_subject": "",
|
||||
"user_settings": "",
|
||||
"username": "",
|
||||
"weeks": "",
|
||||
"with_app_password": "",
|
||||
"year": "",
|
||||
"years": ""
|
||||
},
|
||||
"fido2": {
|
||||
"set_fn": "",
|
||||
"rename": "",
|
||||
"set_fido2": "",
|
||||
"set_fido2_touchid": "",
|
||||
"start_fido2_validation": "",
|
||||
"confirm": "",
|
||||
"fido2_auth": "",
|
||||
"fido2_success": "",
|
||||
"fido2_validation_failed": "",
|
||||
"fn": "",
|
||||
"known_ids": "",
|
||||
"none": "",
|
||||
"register_status": ""
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "",
|
||||
"confirm_delete": "",
|
||||
"delete_now": "",
|
||||
"delete_these_items": "",
|
||||
"hibp_check": "",
|
||||
"hibp_nok": "",
|
||||
"hibp_ok": "",
|
||||
"loading": "",
|
||||
"nothing_selected": "",
|
||||
"restart_container": "",
|
||||
"restart_container_info": "",
|
||||
"restart_now": "",
|
||||
"restarting_container": ""
|
||||
},
|
||||
"quarantine": {
|
||||
"qid": "",
|
||||
"quarantine": "",
|
||||
"quick_actions": "",
|
||||
"quick_delete_link": "",
|
||||
"neutral_danger": "",
|
||||
"qitem": "",
|
||||
"download_eml": "",
|
||||
"action": "",
|
||||
"atts": "",
|
||||
"check_hash": "",
|
||||
"confirm": "",
|
||||
"confirm_delete": "",
|
||||
"danger": "",
|
||||
"deliver_inbox": "",
|
||||
"disabled_by_config": "",
|
||||
"empty": "",
|
||||
"high_danger": "",
|
||||
"info": "",
|
||||
"junk_folder": "",
|
||||
"learn_spam_delete": "",
|
||||
"low_danger": "",
|
||||
"medium_danger": "",
|
||||
"notified": "",
|
||||
"qhandler_success": "",
|
||||
"qinfo": "",
|
||||
"quick_info_link": "",
|
||||
"quick_release_link": "",
|
||||
"rcpt": "",
|
||||
"received": "",
|
||||
"recipients": "",
|
||||
"refresh": "",
|
||||
"rejected": "",
|
||||
"release": "",
|
||||
"release_body": "",
|
||||
"release_subject": "",
|
||||
"remove": "",
|
||||
"rewrite_subject": "",
|
||||
"rspamd_result": "",
|
||||
"sender": "",
|
||||
"sender_header": "",
|
||||
"settings_info": "",
|
||||
"show_item": "",
|
||||
"spam": "",
|
||||
"spam_score": "",
|
||||
"subj": "",
|
||||
"table_size": "",
|
||||
"table_size_show_n": "",
|
||||
"text_from_html_content": "",
|
||||
"text_plain_content": "",
|
||||
"toggle_all": "",
|
||||
"type": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"minute": "",
|
||||
"hour": "",
|
||||
"day": "",
|
||||
"disabled": "",
|
||||
"second": ""
|
||||
},
|
||||
"start": {
|
||||
"help": "",
|
||||
"imap_smtp_server_auth_info": "",
|
||||
"mailcow_panel_detail": "",
|
||||
"mailcow_apps_detail": ""
|
||||
},
|
||||
"queue": {
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"deliver_mail": "",
|
||||
"ays": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"queue_manager": "",
|
||||
"show_message": "",
|
||||
"unban": ""
|
||||
},
|
||||
"success": {
|
||||
"acl_saved": "",
|
||||
"admin_added": "",
|
||||
"cors_headers_edited": "",
|
||||
"db_init_complete": "",
|
||||
"delete_filter": "",
|
||||
"delete_filters": "",
|
||||
"deleted_syncjob": "",
|
||||
"deleted_syncjobs": "",
|
||||
"dkim_added": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"dkim_duplicated": "",
|
||||
"dkim_removed": "",
|
||||
"domain_added": "",
|
||||
"domain_admin_removed": "",
|
||||
"domain_footer_modified": "",
|
||||
"domain_modified": "",
|
||||
"domain_removed": "",
|
||||
"dovecot_restart_success": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"domain_admin_added": "",
|
||||
"domain_admin_modified": "",
|
||||
"f2b_modified": "",
|
||||
"forwarding_host_added": "",
|
||||
"resource_modified": "",
|
||||
"resource_removed": "",
|
||||
"rl_saved": "",
|
||||
"reset_main_logo": "",
|
||||
"resource_added": "",
|
||||
"rspamd_ui_pw_set": "",
|
||||
"saved_settings": "",
|
||||
"settings_map_added": "",
|
||||
"settings_map_removed": "",
|
||||
"sogo_profile_reset": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"template_removed": "",
|
||||
"tls_policy_map_entry_deleted": "",
|
||||
"eas_reset": "",
|
||||
"mailbox_added": "",
|
||||
"items_deleted": "",
|
||||
"items_released": "",
|
||||
"learned_ham": "",
|
||||
"license_modified": "",
|
||||
"logged_in_as": "",
|
||||
"password_policy_saved": "",
|
||||
"hash_deleted": "",
|
||||
"app_links": "",
|
||||
"admin_api_modified": "",
|
||||
"admin_modified": "",
|
||||
"admin_removed": "",
|
||||
"alias_added": "",
|
||||
"alias_domain_removed": "",
|
||||
"alias_modified": "",
|
||||
"alias_removed": "",
|
||||
"aliasd_added": "",
|
||||
"aliasd_modified": "",
|
||||
"app_passwd_added": "",
|
||||
"app_passwd_removed": "",
|
||||
"bcc_deleted": "",
|
||||
"bcc_edited": "",
|
||||
"bcc_saved": "",
|
||||
"forwarding_host_removed": "",
|
||||
"global_filter_written": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"item_deleted": "",
|
||||
"item_released": "",
|
||||
"mailbox_modified": "",
|
||||
"mailbox_removed": "",
|
||||
"nginx_reloaded": "",
|
||||
"object_modified": "",
|
||||
"pushover_settings_edited": "",
|
||||
"qlearn_spam": "",
|
||||
"queue_command_success": "",
|
||||
"recipient_map_entry_deleted": "",
|
||||
"recipient_map_entry_saved": "",
|
||||
"relayhost_added": "",
|
||||
"relayhost_removed": "",
|
||||
"tls_policy_map_entry_saved": "",
|
||||
"ui_texts": "",
|
||||
"upload_success": "",
|
||||
"verified_fido2_login": "",
|
||||
"verified_totp_login": "",
|
||||
"verified_webauthn_login": "",
|
||||
"verified_yotp_login": ""
|
||||
},
|
||||
"tfa": {
|
||||
"webauthn": "",
|
||||
"waiting_usb_register": "",
|
||||
"authenticators": "",
|
||||
"api_register": "",
|
||||
"confirm_totp_token": "",
|
||||
"none": "",
|
||||
"select": "",
|
||||
"yubi_otp": "",
|
||||
"waiting_usb_auth": "",
|
||||
"delete_tfa": "",
|
||||
"disable_tfa": "",
|
||||
"enter_qr_code": "",
|
||||
"error_code": "",
|
||||
"init_webauthn": "",
|
||||
"key_id": "",
|
||||
"confirm": "",
|
||||
"key_id_totp": "",
|
||||
"reload_retry": "",
|
||||
"scan_qr_code": "",
|
||||
"set_tfa": "",
|
||||
"start_webauthn_validation": "",
|
||||
"tfa": "",
|
||||
"tfa_token_invalid": "",
|
||||
"totp": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
},
|
||||
"header": {
|
||||
"debug": "",
|
||||
"administration": "",
|
||||
"apps": "",
|
||||
"email": "",
|
||||
"mailcow_system": "",
|
||||
"mailcow_config": "",
|
||||
"quarantine": "",
|
||||
"restart_netfilter": "",
|
||||
"restart_sogo": "",
|
||||
"user_settings": ""
|
||||
},
|
||||
"warning": {
|
||||
"domain_added_sogo_failed": "",
|
||||
"dovecot_restart_failed": "",
|
||||
"fuzzy_learn_error": "",
|
||||
"hash_not_found": "",
|
||||
"ip_invalid": "",
|
||||
"no_active_admin": "",
|
||||
"quota_exceeded_scope": "",
|
||||
"session_token": "",
|
||||
"session_ua": "",
|
||||
"cannot_delete_self": "",
|
||||
"is_not_primary_alias": ""
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "",
|
||||
"no_action": "",
|
||||
"session_expires": ""
|
||||
},
|
||||
"login": {
|
||||
"delayed": "",
|
||||
"fido2_webauthn": "",
|
||||
"login": "",
|
||||
"mobileconfig_info": "",
|
||||
"other_logins": "",
|
||||
"password": "",
|
||||
"username": ""
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "",
|
||||
"authorize_app": "",
|
||||
"deny": "",
|
||||
"permit": "",
|
||||
"profile": "",
|
||||
"profile_desc": "",
|
||||
"scope_ask_permission": ""
|
||||
"dont_check_sender_acl": "Onemogoči kontrolo pošiljatelja za domeno %s (+ alias domene)",
|
||||
"pushover_title": "Naslov obvestila",
|
||||
"domains": "Domene",
|
||||
"extended_sender_acl_info": "Če je DKIM domenski ključ na voljo, ga uvozite.<br>\n Ne pozabite dodati ta strežnik k ustreznemu SPF TXT zapisu.<br>\n Kadar koli je domena ali alias domena dodana k tem strežniku, ki se prekriva z zunanjim naslovom, je zunanji naslov odstranjen.<br>\n uporabite @domain.tld da dovolite pošiljanje kot *@domain.tld.",
|
||||
"lookup_mx": "Cilj je regular expression za ujemanje MX zapisov (<code>.*\\.google\\.com</code> za usmeritev vse pošte na MX, ki se konča z google.com, preko tega skoka)",
|
||||
"maxbytespersecond": "Največ bytov na sekundo <br><small>(0 = neomejeno)</small>",
|
||||
"pushover_sender_array": "Upoštevaj samo sledeče e-poštne naslove pošiljateljev <small>(ločeni z vejico)</small>",
|
||||
"mbox_rl_info": "Ta omejitev 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.",
|
||||
"created_on": "Ustvarjeno",
|
||||
"custom_attributes": "Atributi po meri",
|
||||
"delete1": "Izbriši na viru, ko je končano",
|
||||
"delete2": "Izbriši sporočila na cilju, ki ne obstajajo na viru",
|
||||
"delete2duplicates": "Izbriši dvojnike na cilju",
|
||||
"delete_ays": "Prosim potrdite proces izbrisa.",
|
||||
"description": "Opis",
|
||||
"disable_login": "Onemogoči prijavo (dohodna pošta je še vedno sprejeta)",
|
||||
"domain": "Uredi domeno",
|
||||
"domain_admin": "Uredi domenskega skrbnika",
|
||||
"domain_footer": "Noga za celo domeno",
|
||||
"domain_footer_html": "HTML noga",
|
||||
"pushover_vars": "Če ni definiran noben filter pošiljatelja, bodo upoštevana vsa sporočila.<br>Regex filtre in natančna preverjanja pošiljateljev je mogoče definirati posamezno in bodo obravnavani v nadaljevanju. Niso odvisni drug od drugega.<br>Uporabne spremenljivke za besedilo in naslov (prosimo, upoštevajte politike varstva podatkov)",
|
||||
"pushover_verify": "Preveri poverilnice",
|
||||
"quota_mb": "Omejitev (MiB)",
|
||||
"quota_warning_bcc": "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. <code>Opozorilo omejitve (user@example.com)</code>",
|
||||
"ratelimit": "Omejitev pošiljanja",
|
||||
"advanced_settings": "Napredne nastavitve",
|
||||
"allow_from_smtp_info": "Pustite prazno da dovolite vse pošiljatelje.<br>IPv4/IPv6 naslovi in omrežja.",
|
||||
"allowed_protocols": "Dovoljeni protokoli",
|
||||
"app_name": "Ime aplikacije",
|
||||
"app_passwd": "Geslo aplikacije",
|
||||
"app_passwd_protocols": "Dovoljeni protokoli za geslo aplikacije",
|
||||
"backup_mx_options": "Možnosti posredovanja (relay)",
|
||||
"client_id": "Client ID",
|
||||
"domain_footer_info": "Noge za celo domeno so dodane k vsem izhodnim e-poštnim sporočilom v tej domeni.<br> V nogi se lahko uporabijo sledeče spremenljivke:",
|
||||
"domain_footer_plain": "PLAIN noga",
|
||||
"domain_footer_skip_replies": "Ne dodajaj noge v odgovorih na e-poštna sporočila",
|
||||
"domain_quota": "Omejitev (kvota) domene",
|
||||
"edit_alias_domain": "Uredi alias domeno",
|
||||
"exclude": "Izključi objekte (regex)",
|
||||
"extended_sender_acl": "Naslovi zunanjih pošiljateljev",
|
||||
"force_pw_update": "Obvezna zamenjava gesla ob naslednji prijavi",
|
||||
"force_pw_update_info": "Ta uporabnik se bo lahko prijavil samo v %s. Gesla aplikacij ostajajo v rabi.",
|
||||
"footer_exclude": "Izključi iz noge",
|
||||
"full_name": "Polno ime",
|
||||
"gal": "Globalni seznam naslovov (GAL)",
|
||||
"gal_info": "GAL vsebuje vse objekte v domeni in jih uporabniki ne morejo urejati. Če je onemogočeno, ni podatkov o o zasedenosti objekta! <b>Ponovno zaženite SOGo za uveljavitev sprememb.</b>",
|
||||
"generate": "generiraj",
|
||||
"grant_types": "Vrste dovoljenj",
|
||||
"hostname": "Ime gostitelja",
|
||||
"inactive": "Neaktivno",
|
||||
"last_modified": "Nazadnje spremenjeno",
|
||||
"mailbox": "Uredi poštni predal",
|
||||
"mailbox_quota_def": "Privzeta omejitev/kvota za poštni predal",
|
||||
"mailbox_relayhost_info": "Velja samo za poštni predal in neposredne aliase. Ne prepiše domenskega relay gostitelja.",
|
||||
"max_aliases": "Največ aliasov",
|
||||
"max_mailboxes": "Največ možnih poštnih predalov",
|
||||
"max_quota": "Največja omejitev/kvota na poštni predal (MiB)",
|
||||
"maxage": "Največja starost sporočil (v dnevih), po katerih bo poizvedeno iz oddaljenega vira <br><small>(0 = ne omejuj)</small>",
|
||||
"mins_interval": "Interval (min)",
|
||||
"multiple_bookings": "Več rezervacij",
|
||||
"none_inherit": "Brez / podeduj",
|
||||
"nexthop": "Naslednji skok",
|
||||
"password": "Geslo",
|
||||
"password_repeat": "Potrditev gesla (ponovite)",
|
||||
"previous": "Prejšnja stran",
|
||||
"private_comment": "Zasebni komentar",
|
||||
"public_comment": "Javni komentar",
|
||||
"pushover": "Pushover",
|
||||
"pushover_evaluate_x_prio": "Eskaliraj visoko prednostno pošto [<code>X-Priority: 1</code>]",
|
||||
"pushover_info": "Nastavitve potisnih obvestil bodo veljala za vsa čisto (ne spam) elektronsko pošto dostavljeno v <b>%s</b> vključno z aliasi (deljeni, nedeljeni, označeni)",
|
||||
"pushover_only_x_prio": "Upoštevaj samo pošto z visoko prioriteto [<code>X-Priority: 1</code>]",
|
||||
"pushover_sender_regex": "Upoštevaj sledeči regex za pošiljatelja",
|
||||
"pushover_text": "Besedilo obvestila",
|
||||
"pushover_sound": "Zvok",
|
||||
"encryption": "Šifriranje",
|
||||
"alias": "Uredi alias"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -342,16 +342,7 @@
|
||||
"username": "Prihlasovacie meno",
|
||||
"validate_license_now": "Validovať GUID cez licenčný server",
|
||||
"verify": "Kontrola",
|
||||
"yes": "✓",
|
||||
"queue_unban": "",
|
||||
"allowed_origins": "",
|
||||
"cors_settings": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"allowed_methods": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Prístup zamietnutý alebo nesprávne dáta formulára",
|
||||
@@ -473,16 +464,7 @@
|
||||
"username_invalid": "Používateľské meno %s nemôže byť použité",
|
||||
"validity_missing": "Zadajte periódu platnosti",
|
||||
"value_missing": "Prosím poskytnite všetky hodnoty",
|
||||
"yotp_verification_failed": "Overenie cez OTP Yubico zlyhalo: %s",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"demo_mode_enabled": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"extended_sender_acl_denied": ""
|
||||
"yotp_verification_failed": "Overenie cez OTP Yubico zlyhalo: %s"
|
||||
},
|
||||
"datatables": {
|
||||
"info": "Záznamy _START_ až _END_ z celkom _TOTAL_",
|
||||
@@ -507,8 +489,7 @@
|
||||
"decimal": ",",
|
||||
"thousands": " ",
|
||||
"collapse_all": "Zbaliť všetko",
|
||||
"expand_all": "Rozbaliť všetko",
|
||||
"infoPostFix": ""
|
||||
"expand_all": "Rozbaliť všetko"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Graf (tento server)",
|
||||
@@ -535,21 +516,7 @@
|
||||
"success": "Úspech",
|
||||
"system_containers": "Systém & Kontajnery",
|
||||
"uptime": "Doba behu",
|
||||
"username": "Používateľské meno",
|
||||
"architecture": "",
|
||||
"error_show_ip": "",
|
||||
"update_failed": "",
|
||||
"show_ip": "",
|
||||
"timezone": "",
|
||||
"update_available": "",
|
||||
"no_update_available": "",
|
||||
"wip": "",
|
||||
"current_time": "",
|
||||
"memory": "",
|
||||
"container_running": "",
|
||||
"container_disabled": "",
|
||||
"container_stopped": "",
|
||||
"cores": ""
|
||||
"username": "Používateľské meno"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Hodnota odvodená od A/AAAA záznamu. Toto je podporené len v prípade ak záznam poukazuje na správny zdroj.",
|
||||
@@ -681,17 +648,12 @@
|
||||
"from_domain": "{= from_domain =} - Doména odosielateľa",
|
||||
"auth_user": "{= auth_user =} - Prihlasovacie meno odosielateľa",
|
||||
"from_user": "{= from_user =} - Používateľská časť e-mailovej adresy odosielateľa, napr. pre \"moo@mailcow.tld\" vráti \"moo\"",
|
||||
"from_name": "{= from_name =} - Meno odosielateľa, napr. pre \"Mailcow <moo@mailcow.tld>\" vráti \"Mailcow\"",
|
||||
"custom": ""
|
||||
"from_name": "{= from_name =} - Meno odosielateľa, napr. pre \"Mailcow <moo@mailcow.tld>\" vráti \"Mailcow\""
|
||||
},
|
||||
"domain_footer": "Pätička pre celú doménu",
|
||||
"domain_footer_html": "HTML text",
|
||||
"domain_footer_info": "Pätička pre celú doménu sa pridáva do všetkých odchádzajúcich e-mailov spojených s adresou v rámci tejto domény. <br> Pre pätičku je možné použiť nasledujúce premenné:",
|
||||
"domain_footer_plain": "Obyčajný text",
|
||||
"footer_exclude": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"custom_attributes": "",
|
||||
"pushover_sound": ""
|
||||
"domain_footer_plain": "Obyčajný text"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "Potvrdiť",
|
||||
@@ -921,8 +883,7 @@
|
||||
"username": "Používateľské meno",
|
||||
"waiting": "Čakanie",
|
||||
"weekly": "Týždenný",
|
||||
"yes": "✓",
|
||||
"relay_unknown": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Prosím prihláste sa ako používateľ mailovej schránky, aby ste mohli získať prístup cez OAuth2.",
|
||||
@@ -999,8 +960,7 @@
|
||||
"unhold_mail": "Uvoľniť",
|
||||
"unhold_mail_legend": "Uvoľniť vybrané e-maily na doručenie. (Len v prípade predchádzajúceho podržania)",
|
||||
"hold_mail": "Podržať",
|
||||
"hold_mail_legend": "Podržať vybrané e-maily. (Zabráni ďalším pokusom o doručenie)",
|
||||
"unban": ""
|
||||
"hold_mail_legend": "Podržať vybrané e-maily. (Zabráni ďalším pokusom o doručenie)"
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "Vypnuté",
|
||||
@@ -1095,11 +1055,7 @@
|
||||
"verified_totp_login": "Overené TOTP prihlásenie",
|
||||
"verified_webauthn_login": "Overené WebAuthn prihlásenie",
|
||||
"verified_yotp_login": "Overené Yubico OTP prihlásenie",
|
||||
"domain_footer_modified": "Zmeny v pätičke domény %s boli uložené",
|
||||
"cors_headers_edited": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"domain_add_dkim_available": ""
|
||||
"domain_footer_modified": "Zmeny v pätičke domény %s boli uložené"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s využíva Yubico Cloud API. Prosím, zaobstarajte si API kľúč pre váš kľúč <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">tu</a>",
|
||||
@@ -1126,8 +1082,7 @@
|
||||
"waiting_usb_register": "<i>Čakanie na USB zariadenie...</i><br><br>Prosím zadajte vaše heslo a potvrďte registráciu stlačením tlačidla na vašom USB zariadení.",
|
||||
"yubi_otp": "Yubico OTP autentifikácia",
|
||||
"u2f_deprecated_important": "Zaregistrujte si svoj Kľúč v paneli správcu pomocou novej metódy WebAuthn.",
|
||||
"u2f_deprecated": "Zdá sa, že váš kľúč bol zaregistrovaný pomocou zastaranej metódy U2F. Deaktivujeme vám dvojfaktorovú autentifikáciu a odstránime váš Kľúč.",
|
||||
"authenticators": ""
|
||||
"u2f_deprecated": "Zdá sa, že váš kľúč bol zaregistrovaný pomocou zastaranej metódy U2F. Deaktivujeme vám dvojfaktorovú autentifikáciu a odstránime váš Kľúč."
|
||||
},
|
||||
"user": {
|
||||
"action": "Akcia",
|
||||
@@ -1288,10 +1243,7 @@
|
||||
"weeks": "týždne",
|
||||
"with_app_password": "s heslom aplikácie",
|
||||
"year": "rok",
|
||||
"years": "rokov",
|
||||
"value": "",
|
||||
"attribute": "",
|
||||
"pushover_sound": ""
|
||||
"years": "rokov"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Nemožno vymazať prihláseného používateľa",
|
||||
|
||||
@@ -106,9 +106,7 @@
|
||||
"validate": "Validera",
|
||||
"validation_success": "Korrekt validerad",
|
||||
"app_passwd_protocols": "Tillåtna protokoll för applösenord",
|
||||
"bcc_dest_format": "BCC-destinationen måste vara en enda giltig e-postadress.<br>Om du behöver skicka en kopia till flera adresser skapar du ett alias och använder det här.",
|
||||
"dry": "",
|
||||
"tags": ""
|
||||
"bcc_dest_format": "BCC-destinationen måste vara en enda giltig e-postadress.<br>Om du behöver skicka en kopia till flera adresser skapar du ett alias och använder det här."
|
||||
},
|
||||
"admin": {
|
||||
"access": "Åtkomst",
|
||||
@@ -327,31 +325,7 @@
|
||||
"username": "Användarnamn",
|
||||
"validate_license_now": "Validera installations-ID mot licensservern",
|
||||
"verify": "Verifiera",
|
||||
"yes": "✓",
|
||||
"allowed_origins": "",
|
||||
"allowed_methods": "",
|
||||
"logo_dark_label": "",
|
||||
"cors_settings": "",
|
||||
"logo_normal_label": "",
|
||||
"ip_check": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"copy_to_clipboard": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"f2b_max_ban_time": "",
|
||||
"ip_check_disabled": "",
|
||||
"login_time": "",
|
||||
"oauth2_apps": "",
|
||||
"oauth2_add_client": "",
|
||||
"options": "",
|
||||
"api_read_only": "",
|
||||
"ip_check_opt_in": "",
|
||||
"is_mx_based": "",
|
||||
"queue_unban": "",
|
||||
"rsettings_preset_4": "",
|
||||
"service": "",
|
||||
"success": "",
|
||||
"api_read_write": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Nekad åtkomst, eller ofullständig/ogiltig data",
|
||||
@@ -470,19 +444,7 @@
|
||||
"username_invalid": "Användarnamnet %s kan inte användas",
|
||||
"validity_missing": "Ange en giltighetsperiod",
|
||||
"value_missing": "Ange alla värden",
|
||||
"yotp_verification_failed": "Yubico OTP-verifiering misslyckades: %s",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"demo_mode_enabled": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"template_exists": "",
|
||||
"template_id_invalid": "",
|
||||
"template_name_invalid": ""
|
||||
"yotp_verification_failed": "Yubico OTP-verifiering misslyckades: %s"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Tabell (denna server)",
|
||||
@@ -505,25 +467,7 @@
|
||||
"uptime": "Upptid",
|
||||
"started_on": "Startades",
|
||||
"static_logs": "Statiska loggar",
|
||||
"system_containers": "System & behållare",
|
||||
"success": "",
|
||||
"architecture": "",
|
||||
"login_time": "",
|
||||
"update_available": "",
|
||||
"container_running": "",
|
||||
"container_disabled": "",
|
||||
"container_stopped": "",
|
||||
"cores": "",
|
||||
"current_time": "",
|
||||
"error_show_ip": "",
|
||||
"memory": "",
|
||||
"service": "",
|
||||
"show_ip": "",
|
||||
"timezone": "",
|
||||
"update_failed": "",
|
||||
"username": "",
|
||||
"wip": "",
|
||||
"no_update_available": ""
|
||||
"system_containers": "System & behållare"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "Värde härstammar från A/AAAA-uppslaget. Detta stöds så länge som uppslaget pekar mot rätt resurs.",
|
||||
@@ -641,31 +585,7 @@
|
||||
"title": "Ändra objekt",
|
||||
"unchanged_if_empty": "Lämna blakt, om oförändrat",
|
||||
"username": "Användarnamn",
|
||||
"validate_save": "Validera och spara",
|
||||
"footer_exclude": "",
|
||||
"mailbox_relayhost_info": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"pushover_sound": "",
|
||||
"custom_attributes": "",
|
||||
"sogo_access": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info_vars": {
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"custom": ""
|
||||
},
|
||||
"app_passwd_protocols": "",
|
||||
"domain_footer_info": "",
|
||||
"domain_footer_plain": "",
|
||||
"none_inherit": "",
|
||||
"sogo_access_info": "",
|
||||
"pushover": "",
|
||||
"acl": "",
|
||||
"lookup_mx": ""
|
||||
"validate_save": "Validera och spara"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Avbryt",
|
||||
@@ -678,9 +598,7 @@
|
||||
"restart_container": "Starta om kontainer",
|
||||
"restart_container_info": "<b>Viktigt:</b> En fullständig omstart kan ta ett tag att slutföra, vänta tills att det är klart.",
|
||||
"restart_now": "Starta om nu",
|
||||
"restarting_container": "Startar om kontainern, det kan ta en stund",
|
||||
"hibp_check": "",
|
||||
"nothing_selected": ""
|
||||
"restarting_container": "Startar om kontainern, det kan ta en stund"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Konfiguration & detaljer",
|
||||
@@ -691,8 +609,7 @@
|
||||
"quarantine": "Karantän",
|
||||
"restart_netfilter": "Starta om netfilter",
|
||||
"restart_sogo": "Starta om SOGo",
|
||||
"user_settings": "Användarinställningar",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "Användarinställningar"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "Inväntar en TFA-bekräftelse",
|
||||
@@ -858,30 +775,7 @@
|
||||
"username": "Användarnamn",
|
||||
"waiting": "Väntar",
|
||||
"weekly": "Varje vecka",
|
||||
"yes": "✓",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"templates": "",
|
||||
"template": "",
|
||||
"add_template": "",
|
||||
"catch_all": "",
|
||||
"all_domains": "",
|
||||
"domain_templates": "",
|
||||
"last_pw_change": "",
|
||||
"mailbox_templates": "",
|
||||
"open_logs": "",
|
||||
"recipient": "",
|
||||
"relay_unknown": "",
|
||||
"sender": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": ""
|
||||
"yes": "✓"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Logga in som ägare av en postlåda för att tilldela åtkomst via OAuth2.",
|
||||
@@ -946,20 +840,7 @@
|
||||
"toggle_all": "Markera alla"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Kö-hanteraring",
|
||||
"unban": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": "",
|
||||
"delete": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"show_message": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": ""
|
||||
"queue_manager": "Kö-hanteraring"
|
||||
},
|
||||
"start": {
|
||||
"help": "Visa/dölj hjälppanel",
|
||||
@@ -1043,15 +924,7 @@
|
||||
"verified_totp_login": "Verifierad TOTP inloggning",
|
||||
"verified_webauthn_login": "Verifierad WebAuthn inloggning",
|
||||
"verified_fido2_login": "Verifierad FIDO2 inloggning",
|
||||
"verified_yotp_login": "Verifierad Yubico OTP inloggning",
|
||||
"domain_footer_modified": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"cors_headers_edited": "",
|
||||
"domain_add_dkim_available": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"template_removed": ""
|
||||
"verified_yotp_login": "Verifierad Yubico OTP inloggning"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s använder Yubico Moln-API. Vänligen skaffa en API-nyckel för din nyckel <a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">här</a>",
|
||||
@@ -1076,10 +949,7 @@
|
||||
"webauthn": "WebAuthn-autentisering",
|
||||
"waiting_usb_auth": "<i>Väntar på USB-enhet...</i><br><br>Tryck på knappen på USB-enheten nu.",
|
||||
"waiting_usb_register": "<i>Väntar på USB-enhet...</i><br><br>Vänligen fyll i det övre lösenordsfältet först och tryck sedan på knappen på USB-enheten.",
|
||||
"yubi_otp": "Yubico OTP-autentisering",
|
||||
"authenticators": "",
|
||||
"u2f_deprecated": "",
|
||||
"u2f_deprecated_important": ""
|
||||
"yubi_otp": "Yubico OTP-autentisering"
|
||||
},
|
||||
"fido2": {
|
||||
"set_fn": "Ange ett eget namn",
|
||||
@@ -1093,8 +963,7 @@
|
||||
"start_fido2_validation": "Starta FIDO2 verifiering",
|
||||
"fido2_auth": "Loggain med FIDO2",
|
||||
"fido2_success": "Enheten har registrerats",
|
||||
"fido2_validation_failed": "Verifiering misslyckades",
|
||||
"set_fido2_touchid": ""
|
||||
"fido2_validation_failed": "Verifiering misslyckades"
|
||||
},
|
||||
"user": {
|
||||
"action": "Åtgärd",
|
||||
@@ -1228,37 +1097,7 @@
|
||||
"weekly": "Varje vecka",
|
||||
"weeks": "veckor",
|
||||
"year": "år",
|
||||
"years": "år",
|
||||
"empty": "",
|
||||
"pushover_sound": "",
|
||||
"fido2_webauthn": "",
|
||||
"recent_successful_connections": "",
|
||||
"value": "",
|
||||
"with_app_password": "",
|
||||
"attribute": "",
|
||||
"from": "",
|
||||
"allowed_protocols": "",
|
||||
"apple_connection_profile_with_app_password": "",
|
||||
"change_password_hint_app_passwords": "",
|
||||
"clear_recent_successful_connections": "",
|
||||
"direct_protocol_access": "",
|
||||
"last_pw_change": "",
|
||||
"last_ui_login": "",
|
||||
"login_history": "",
|
||||
"mailbox": "",
|
||||
"mailbox_general": "",
|
||||
"mailbox_settings": "",
|
||||
"open_logs": "",
|
||||
"open_webmail_sso": "",
|
||||
"syncjob_check_log": "",
|
||||
"syncjob_last_run_result": "",
|
||||
"syncjob_EX_OK": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "",
|
||||
"syncjob_EXIT_TLS_FAILURE": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "",
|
||||
"syncjob_EXIT_OVERQUOTA": "",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE_USER1": ""
|
||||
"years": "år"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Inloggade användare kan inte tas bort",
|
||||
@@ -1272,38 +1111,5 @@
|
||||
"quota_exceeded_scope": "Domänkvoten fylld: Endast postlådor med obegränsade kvoter kan skapas på den här domänen.",
|
||||
"session_token": "Formulär-nyckeln är ogiltig: Nyckeln matchar inte",
|
||||
"session_ua": "Formulär-nyckeln är ogiltig: User-Agenten kunde inte valideras"
|
||||
},
|
||||
"datatables": {
|
||||
"info": "",
|
||||
"expand_all": "",
|
||||
"emptyTable": "",
|
||||
"infoFiltered": "",
|
||||
"infoEmpty": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"processing": "",
|
||||
"search": "",
|
||||
"zeroRecords": "",
|
||||
"paginate": {
|
||||
"first": "",
|
||||
"last": "",
|
||||
"next": "",
|
||||
"previous": ""
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"collapse_all": "",
|
||||
"thousands": "",
|
||||
"decimal": "",
|
||||
"infoPostFix": ""
|
||||
},
|
||||
"ratelimit": {
|
||||
"day": "",
|
||||
"disabled": "",
|
||||
"second": "",
|
||||
"minute": "",
|
||||
"hour": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,8 +350,7 @@
|
||||
"reset_limit": "Hashi kaldır",
|
||||
"routing": "Yönlendirme",
|
||||
"rsetting_add_rule": "Kural ekle",
|
||||
"rsetting_content": "Kural içeriği",
|
||||
"add": ""
|
||||
"rsetting_content": "Kural içeriği"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Cannot delete logged in user",
|
||||
@@ -389,8 +388,7 @@
|
||||
"loadingRecords": "Yükleniyor...",
|
||||
"processing": "Lütfen bekleyin...",
|
||||
"search": "Ara:",
|
||||
"zeroRecords": "Eşleşen kayıt bulunamadı",
|
||||
"infoPostFix": ""
|
||||
"zeroRecords": "Eşleşen kayıt bulunamadı"
|
||||
},
|
||||
"edit": {
|
||||
"inactive": "Pasif",
|
||||
|
||||
@@ -349,9 +349,7 @@
|
||||
"queue_unban": "розблокувати",
|
||||
"f2b_manage_external": "Керування Fail2Ban ззовні",
|
||||
"f2b_manage_external_info": "Fail2ban буде підтримувати список заборонених, але не буде активно встановлювати правила для блокування трафіку. Використовуйте згенерований список заборон нижче для зовнішнього блокування трафіку.",
|
||||
"copy_to_clipboard": "Текст скопійовано в буфер обміну!",
|
||||
"logo_normal_label": "",
|
||||
"logo_dark_label": ""
|
||||
"copy_to_clipboard": "Текст скопійовано в буфер обміну!"
|
||||
},
|
||||
"danger": {
|
||||
"alias_domain_invalid": "Неприпустимий псевдонім домену: %s",
|
||||
@@ -393,7 +391,7 @@
|
||||
"last_key": "Останній ключ не можна видалити, натомість вимкніть TFA.",
|
||||
"login_failed": "Введено неправильний логін або пароль",
|
||||
"mailbox_invalid": "Неприпустима адреса поштового акаунту",
|
||||
"mailbox_quota_left_exceeded": "Недостатньо вільного місця (місця залишилося: %d МіБ)",
|
||||
"mailbox_quota_left_exceeded": "Недостатньо вільного місця (залишилося: %d МіБ)",
|
||||
"malformed_username": "Некоректне ім'я користувача",
|
||||
"map_content_empty": "Зміст правила не може бути порожнім",
|
||||
"max_alias_exceeded": "Перевищено максимальну кількість псевдонімів",
|
||||
@@ -481,8 +479,7 @@
|
||||
"template_exists": "Шаблон %s вже існує",
|
||||
"template_id_invalid": "Ідентифікатор шаблону %s недійсний",
|
||||
"template_name_invalid": "Ім'я шаблону невірне",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": ""
|
||||
"img_size_exceeded": "Зображення перевищує максимальний розмір файлу"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Діаграма (цей сервер)",
|
||||
@@ -630,7 +627,7 @@
|
||||
"admin": "Редагувати адміністратора",
|
||||
"allow_from_smtp": "Дозволити <b>SMTP</b> тільки для цих IP",
|
||||
"allow_from_smtp_info": "Вкажіть IPv4/IPv6 адреси та/або підмережі.<br>Залиште поле порожнім, щоб дозволити відправлення з будь-яких адрес.",
|
||||
"bcc_dest_format": "Призначенням правила BBC має бути єдина дійсна адреса електронної пошти.<br>Якщо вам потрібно надіслати копію на кілька адрес, створіть псевдонім і використовуйте його тут.",
|
||||
"bcc_dest_format": "Призначенням правила BCC має бути єдина дійсна адреса електронної пошти.<br>Якщо вам потрібно надіслати копію на кілька адрес, створіть псевдонім і використовуйте його тут.",
|
||||
"comment_info": "Приватний коментар не видно користувачам, а публічний - відображається поряд із псевдонімом в особистому кабінеті користувача",
|
||||
"domain_quota": "Квота домену",
|
||||
"dont_check_sender_acl": "Вимкнути перевірку відправника для домену %s та псевдонімів домену",
|
||||
@@ -664,8 +661,7 @@
|
||||
},
|
||||
"domain_footer_html": "Нижній колонтитул HTML",
|
||||
"domain_footer_plain": "ЗВИЧАЙНИЙ нижній колонтитул",
|
||||
"custom_attributes": "Користувацькі атрибути",
|
||||
"domain_footer_skip_replies": ""
|
||||
"custom_attributes": "Користувацькі атрибути"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "Підтвердити",
|
||||
@@ -730,7 +726,7 @@
|
||||
"add": "Додати",
|
||||
"add_alias": "Додати псевдонім",
|
||||
"add_alias_expand": "Копіювати псевдоніми на псевдоніми домену",
|
||||
"add_bcc_entry": "Додати правило BBC",
|
||||
"add_bcc_entry": "Додати правило BCC",
|
||||
"add_domain": "Додати домен",
|
||||
"add_domain_alias": "Додати псевдонім домену",
|
||||
"add_filter": "Додати фільтр",
|
||||
@@ -750,7 +746,7 @@
|
||||
"bcc_local_dest": "Локальний домен",
|
||||
"bcc_map": "Правила ВВС",
|
||||
"bcc_map_type": "Тип BCC",
|
||||
"bcc_maps": "Правила BBC",
|
||||
"bcc_maps": "Правила BCC",
|
||||
"bcc_rcpt_map": "Одержувач",
|
||||
"bcc_sender_map": "Відправник",
|
||||
"bcc_to_rcpt": "Перейти на тип \"одержувач\"",
|
||||
@@ -1072,8 +1068,7 @@
|
||||
"cors_headers_edited": "Налаштування CORS збережено",
|
||||
"ip_check_opt_in_modified": "Перевірка IP-адреси успішно збережено",
|
||||
"template_removed": "Шаблону із ID %s видалено",
|
||||
"f2b_banlist_refreshed": "Ідентифікатор списку заборонених успішно оновлено.",
|
||||
"domain_footer_modified": ""
|
||||
"f2b_banlist_refreshed": "Ідентифікатор списку заборонених успішно оновлено."
|
||||
},
|
||||
"tfa": {
|
||||
"confirm": "Підтвердьте",
|
||||
@@ -1100,8 +1095,7 @@
|
||||
"set_tfa": "Встановити метод двофакторної перевірки",
|
||||
"u2f_deprecated": "Схоже, ваш ключ був зареєстрований за допомогою застарілого методу U2F. Ми дезактивуємо двофакторну автентифікацію для вас і видалимо ваш ключ.",
|
||||
"waiting_usb_auth": "<i>Очікування пристрою USB...</i><br><br>Будь ласка, натисніть зараз кнопку на USB пристрої.",
|
||||
"waiting_usb_register": "<i>Очікування USB-пристрою...</i><br><br>Будь ласка, введіть пароль вище та підтвердіть реєстрацію, натиснувши кнопку на USB пристрої.",
|
||||
"authenticators": ""
|
||||
"waiting_usb_register": "<i>Очікування USB-пристрою...</i><br><br>Будь ласка, введіть пароль вище та підтвердіть реєстрацію, натиснувши кнопку на USB пристрої."
|
||||
},
|
||||
"user": {
|
||||
"action": "Дії",
|
||||
|
||||
@@ -107,8 +107,7 @@
|
||||
"timeout2": "本地主机连接超时时间",
|
||||
"username": "用户名",
|
||||
"validate": "验证",
|
||||
"validation_success": "验证成功",
|
||||
"dry": ""
|
||||
"validation_success": "验证成功"
|
||||
},
|
||||
"admin": {
|
||||
"access": "权限管理",
|
||||
@@ -339,19 +338,7 @@
|
||||
"yes": "✓",
|
||||
"options": "选项",
|
||||
"f2b_max_ban_time": "最长封禁时间(秒)",
|
||||
"copy_to_clipboard": "复制到粘贴板",
|
||||
"allowed_methods": "",
|
||||
"allowed_origins": "",
|
||||
"logo_dark_label": "",
|
||||
"logo_normal_label": "",
|
||||
"cors_settings": "",
|
||||
"f2b_ban_time_increment": "",
|
||||
"f2b_manage_external": "",
|
||||
"f2b_manage_external_info": "",
|
||||
"ip_check": "",
|
||||
"ip_check_disabled": "",
|
||||
"ip_check_opt_in": "",
|
||||
"queue_unban": ""
|
||||
"copy_to_clipboard": "复制到粘贴板"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "访问被拒绝或者表单数据无效",
|
||||
@@ -472,17 +459,7 @@
|
||||
"value_missing": "请填入所有值",
|
||||
"yotp_verification_failed": "Yubico OTP 认证失败: %s",
|
||||
"template_exists": "模板 %s 已存在",
|
||||
"template_name_invalid": "模板名称无效",
|
||||
"webauthn_authenticator_failed": "",
|
||||
"webauthn_username_failed": "",
|
||||
"cors_invalid_method": "",
|
||||
"cors_invalid_origin": "",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": "",
|
||||
"webauthn_publickey_failed": "",
|
||||
"demo_mode_enabled": "",
|
||||
"extended_sender_acl_denied": "",
|
||||
"template_id_invalid": ""
|
||||
"template_name_invalid": "模板名称无效"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "图表 (此服务器)",
|
||||
@@ -517,13 +494,7 @@
|
||||
"error_show_ip": "无法解析公网IP地址",
|
||||
"show_ip": "显示公网IP",
|
||||
"update_available": "有可用更新",
|
||||
"update_failed": "无法检查更新",
|
||||
"container_stopped": "",
|
||||
"architecture": "",
|
||||
"no_update_available": "",
|
||||
"wip": "",
|
||||
"current_time": "",
|
||||
"timezone": ""
|
||||
"update_failed": "无法检查更新"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "来自 A/AAAA 记录的值。但只要记录指向正确的资源即可。",
|
||||
@@ -647,25 +618,7 @@
|
||||
"title": "编辑对象",
|
||||
"unchanged_if_empty": "如果不更改则留空",
|
||||
"username": "用户名",
|
||||
"validate_save": "验证并保存",
|
||||
"footer_exclude": "",
|
||||
"created_on": "",
|
||||
"domain_footer_skip_replies": "",
|
||||
"last_modified": "",
|
||||
"custom_attributes": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info": "",
|
||||
"domain_footer_info_vars": {
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"custom": ""
|
||||
},
|
||||
"domain_footer_plain": "",
|
||||
"pushover_sound": ""
|
||||
"validate_save": "验证并保存"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "确认",
|
||||
@@ -706,8 +659,7 @@
|
||||
"quarantine": "隔离",
|
||||
"restart_netfilter": "重启 netfilter",
|
||||
"restart_sogo": "重启 SOGo",
|
||||
"user_settings": "用户设置",
|
||||
"mailcow_system": ""
|
||||
"user_settings": "用户设置"
|
||||
},
|
||||
"info": {
|
||||
"awaiting_tfa_confirmation": "等待 TFA 确认",
|
||||
@@ -886,17 +838,7 @@
|
||||
"mailbox_templates": "邮箱模板",
|
||||
"gal": "全局地址列表",
|
||||
"max_aliases": "最大别名数",
|
||||
"max_mailboxes": "最大可能的邮箱数",
|
||||
"goto_ham": "",
|
||||
"goto_spam": "",
|
||||
"templates": "",
|
||||
"template": "",
|
||||
"force_pw_update": "",
|
||||
"last_modified": "",
|
||||
"add_template": "",
|
||||
"created_on": "",
|
||||
"max_quota": "",
|
||||
"relay_unknown": ""
|
||||
"max_mailboxes": "最大可能的邮箱数"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "请作为邮箱所有者登录以使用 OAuth2 授权",
|
||||
@@ -962,19 +904,7 @@
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "队列管理器",
|
||||
"delete": "全部删除",
|
||||
"show_message": "",
|
||||
"unban": "",
|
||||
"unhold_mail": "",
|
||||
"unhold_mail_legend": "",
|
||||
"flush": "",
|
||||
"info": "",
|
||||
"legend": "",
|
||||
"ays": "",
|
||||
"deliver_mail": "",
|
||||
"deliver_mail_legend": "",
|
||||
"hold_mail": "",
|
||||
"hold_mail_legend": ""
|
||||
"delete": "全部删除"
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "禁用",
|
||||
@@ -1066,14 +996,7 @@
|
||||
"verified_fido2_login": "FIDO2 登录验证成功",
|
||||
"verified_totp_login": "TOTP 登录验证成功",
|
||||
"verified_webauthn_login": "WebAuthn 登录验证成功",
|
||||
"verified_yotp_login": "Yubico OTP 登录验证成功",
|
||||
"cors_headers_edited": "",
|
||||
"domain_footer_modified": "",
|
||||
"f2b_banlist_refreshed": "",
|
||||
"ip_check_opt_in_modified": "",
|
||||
"template_added": "",
|
||||
"template_modified": "",
|
||||
"template_removed": ""
|
||||
"verified_yotp_login": "Yubico OTP 登录验证成功"
|
||||
},
|
||||
"tfa": {
|
||||
"api_register": "%s 使用了 Yubico Cloud API,请<a href=\"https://upgrade.yubico.com/getapikey/\" target=\"_blank\">在此</a>为你的密钥获取 API 密钥",
|
||||
@@ -1100,8 +1023,7 @@
|
||||
"webauthn": "WebAuthn 认证",
|
||||
"waiting_usb_auth": "<i>等待 USB 设备中...</i><br><br>现在请触碰你的 WebAuthn USB 设备上的按钮。",
|
||||
"waiting_usb_register": "<i>等待 USB 设备中...</i><br><br>请在上方输入你的密码并请触碰你的 WebAuthn USB 设备上的按钮以确认注册该 WebAuthn 设备。",
|
||||
"yubi_otp": "Yubico OTP 认证",
|
||||
"authenticators": ""
|
||||
"yubi_otp": "Yubico OTP 认证"
|
||||
},
|
||||
"user": {
|
||||
"action": "操作",
|
||||
@@ -1262,10 +1184,7 @@
|
||||
"weeks": "周",
|
||||
"with_app_password": "包含应用密码",
|
||||
"year": "年",
|
||||
"years": "年",
|
||||
"pushover_sound": "",
|
||||
"attribute": "",
|
||||
"value": ""
|
||||
"years": "年"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "不能删除已登录的用户",
|
||||
@@ -1292,18 +1211,6 @@
|
||||
"last": "最后一页",
|
||||
"previous": "上一页",
|
||||
"next": "下一页"
|
||||
},
|
||||
"decimal": "",
|
||||
"infoPostFix": "",
|
||||
"infoFiltered": "",
|
||||
"thousands": "",
|
||||
"lengthMenu": "",
|
||||
"loadingRecords": "",
|
||||
"zeroRecords": "",
|
||||
"aria": {
|
||||
"sortAscending": "",
|
||||
"sortDescending": ""
|
||||
},
|
||||
"emptyTable": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -480,9 +480,7 @@
|
||||
"extended_sender_acl_denied": "缺少設定外部寄件者地址的 ACL",
|
||||
"template_exists": "模板 %s 已存在",
|
||||
"template_id_invalid": "範本 ID %s 無效",
|
||||
"template_name_invalid": "模板名稱無效",
|
||||
"img_dimensions_exceeded": "",
|
||||
"img_size_exceeded": ""
|
||||
"template_name_invalid": "模板名稱無效"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "圖表 (此伺服器)",
|
||||
@@ -522,8 +520,7 @@
|
||||
"update_available": "有可用更新",
|
||||
"no_update_available": "系統已經是最新版本",
|
||||
"update_failed": "無法檢查更新",
|
||||
"wip": "工作正在進行中",
|
||||
"timezone": ""
|
||||
"wip": "工作正在進行中"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "由 A/AAAA 紀錄獲取。只要紀錄指向正確的資源,此功能就會持續運作。",
|
||||
@@ -653,19 +650,7 @@
|
||||
"validate_save": "驗證並儲存",
|
||||
"domain_footer_info": "網域範圍的頁尾將會新增至與該網域內的位址關聯的所有外發電子郵件。 <br> 以下變數可用於頁尾:",
|
||||
"custom_attributes": "自訂屬性",
|
||||
"pushover_sound": "聲音",
|
||||
"domain_footer_skip_replies": "",
|
||||
"domain_footer": "",
|
||||
"domain_footer_html": "",
|
||||
"domain_footer_info_vars": {
|
||||
"auth_user": "",
|
||||
"from_user": "",
|
||||
"from_name": "",
|
||||
"from_addr": "",
|
||||
"from_domain": "",
|
||||
"custom": ""
|
||||
},
|
||||
"domain_footer_plain": ""
|
||||
"pushover_sound": "聲音"
|
||||
},
|
||||
"fido2": {
|
||||
"confirm": "確認",
|
||||
@@ -1084,8 +1069,7 @@
|
||||
"webauthn": "WebAuthn 認證",
|
||||
"waiting_usb_auth": "<i>等待 USB 裝置...</i><br><br>請觸碰 USB 裝置上的按鈕。",
|
||||
"waiting_usb_register": "<i>等待 USB 裝置...</i><br><br>請輸入密碼並觸碰 USB 裝置上的按鈕來確認註冊。",
|
||||
"yubi_otp": "Yubico OTP 認證",
|
||||
"authenticators": ""
|
||||
"yubi_otp": "Yubico OTP 認證"
|
||||
},
|
||||
"user": {
|
||||
"action": "操作",
|
||||
@@ -1287,8 +1271,7 @@
|
||||
"collapse_all": "全部折疊",
|
||||
"emptyTable": "表中沒有可用數據",
|
||||
"thousands": ",",
|
||||
"decimal": ".",
|
||||
"infoPostFix": ""
|
||||
"decimal": "."
|
||||
},
|
||||
"queue": {
|
||||
"deliver_mail_legend": "嘗試重新投遞選定的郵件。",
|
||||
|
||||
31
data/web/reset-password.php
Normal file
31
data/web/reset-password.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';
|
||||
|
||||
if (isset($_SESSION['mailcow_cc_role']) && $_SESSION['mailcow_cc_role'] == 'admin') {
|
||||
header('Location: /debug');
|
||||
exit();
|
||||
}
|
||||
elseif (isset($_SESSION['mailcow_cc_role']) && $_SESSION['mailcow_cc_role'] == 'domainadmin') {
|
||||
header('Location: /mailbox');
|
||||
exit();
|
||||
}
|
||||
elseif (isset($_SESSION['mailcow_cc_role']) && $_SESSION['mailcow_cc_role'] == 'user') {
|
||||
header('Location: /user');
|
||||
exit();
|
||||
}
|
||||
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/header.inc.php';
|
||||
$_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
|
||||
$_SESSION['index_query_string'] = $_SERVER['QUERY_STRING'];
|
||||
|
||||
if (isset($_GET['token'])) $is_reset_token_valid = reset_password("check", $_GET['token']);
|
||||
else $is_reset_token_valid = False;
|
||||
|
||||
$template = 'reset-password.twig';
|
||||
$template_data = [
|
||||
'is_mobileconfig' => str_contains($_SESSION['index_query_string'], 'mobileconfig'),
|
||||
'is_reset_token_valid' => $is_reset_token_valid,
|
||||
'reset_token' => $_GET['token']
|
||||
];
|
||||
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';
|
||||
@@ -22,7 +22,7 @@
|
||||
<li><button class="dropdown-item" data-bs-target="#tab-config-quarantine" aria-selected="false" aria-controls="tab-config-quarantine" role="tab" data-bs-toggle="tab">{{ lang.admin.quarantine }}</button></li>
|
||||
<li><button class="dropdown-item" data-bs-target="#tab-config-quota" aria-selected="false" aria-controls="tab-config-quota" role="tab" data-bs-toggle="tab">{{ lang.admin.quota_notifications }}</button></li>
|
||||
<li><button class="dropdown-item" data-bs-target="#tab-config-rsettings" aria-selected="false" aria-controls="tab-config-rsettings" role="tab" data-bs-toggle="tab">{{ lang.admin.rspamd_settings_map }}</button></li>
|
||||
<li><button class="dropdown-item" data-bs-target="#tab-config-password-policy" aria-selected="false" aria-controls="tab-config-password-policy" role="tab" data-bs-toggle="tab">{{ lang.admin.password_policy }}</button></li>
|
||||
<li><button class="dropdown-item" data-bs-target="#tab-config-password-settings" aria-selected="false" aria-controls="tab-config-password-settings" role="tab" data-bs-toggle="tab">{{ lang.admin.password_settings }}</button></li>
|
||||
<li><button class="dropdown-item" data-bs-target="#tab-config-customize" aria-selected="false" aria-controls="tab-config-customize" role="tab" data-bs-toggle="tab">{{ lang.admin.customize }}</button></li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -51,7 +51,7 @@
|
||||
{% include 'admin/tab-config-quota.twig' %}
|
||||
{% include 'admin/tab-config-rsettings.twig' %}
|
||||
{% include 'admin/tab-config-customize.twig' %}
|
||||
{% include 'admin/tab-config-password-policy.twig' %}
|
||||
{% include 'admin/tab-config-password-settings.twig' %}
|
||||
{% include 'admin/tab-sys-mails.twig' %}
|
||||
{% include 'admin/tab-globalfilter-regex.twig' %}
|
||||
</div>
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
<div class="tab-pane fade" id="tab-config-password-policy" role="tabpanel" aria-labelledby="tab-config-password-policy">
|
||||
<div class="card mb-4">
|
||||
<div class="card-header d-flex fs-5">
|
||||
<button class="btn d-md-none flex-grow-1 text-start" data-bs-target="#collapse-tab-config-password-policy" data-bs-toggle="collapse" aria-controls="collapse-tab-config-password-policy">
|
||||
{{ lang.admin.password_policy }}
|
||||
</button>
|
||||
<span class="d-none d-md-block">{{ lang.admin.password_policy }}</span>
|
||||
</div>
|
||||
<div id="collapse-tab-config-password-policy" class="card-body collapse" data-bs-parent="#admin-content">
|
||||
<form class="form-horizontal" data-id="passwordpolicy" role="form" method="post">
|
||||
{% for name, value in password_complexity %}
|
||||
{% if name == 'length' %}
|
||||
<div class="row mb-4">
|
||||
<label class="control-label col-sm-3 text-sm-end" for="length">{{ lang.admin.password_length }}:</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="number" class="form-control" min="3" max="64" name="length" id="length" value="{{ value }}" required>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<input type="hidden" name="{{ name }}" value="0">
|
||||
<div class="row mb-2">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<input type="checkbox" class="form-check-input" name="{{ name }}" id="{{ name }}" value="1" {% if value == 1 %}checked{% endif %}> {{ lang.admin['password_policy_'~name] }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="row mt-4 mb-2">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm d-block d-sm-inline btn-success" data-item="passwordpolicy" data-action="edit_selected" data-id="passwordpolicy" data-api-url='edit/passwordpolicy' data-api-attr='{}' href="#"><i class="bi bi-check-lg"></i> {{ lang.admin.save }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
102
data/web/templates/admin/tab-config-password-settings.twig
Normal file
102
data/web/templates/admin/tab-config-password-settings.twig
Normal file
@@ -0,0 +1,102 @@
|
||||
<div class="tab-pane fade" id="tab-config-password-settings" role="tabpanel" aria-labelledby="tab-config-password-settings">
|
||||
<div class="card mb-4">
|
||||
<div class="card-header d-flex fs-5">
|
||||
<button class="btn d-md-none flex-grow-1 text-start" data-bs-target="#collapse-tab-config-password-settings" data-bs-toggle="collapse" aria-controls="collapse-tab-config-password-settings">
|
||||
{{ lang.admin.password_settings }}
|
||||
</button>
|
||||
<span class="d-none d-md-block">{{ lang.admin.password_settings }}</span>
|
||||
</div>
|
||||
<div id="collapse-tab-config-password-settings" class="card-body collapse" data-bs-parent="#admin-content">
|
||||
<form class="form-horizontal" data-id="passwordpolicy" role="form" method="post">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<legend>
|
||||
{{ lang.admin.password_policy }}
|
||||
</legend>
|
||||
<hr />
|
||||
</div>
|
||||
</div>
|
||||
{% for name, value in password_complexity %}
|
||||
{% if name == 'length' %}
|
||||
<div class="row mb-4">
|
||||
<label class="control-label col-sm-3 text-sm-end" for="length">{{ lang.admin.password_length }}:</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="number" class="form-control" min="3" max="64" name="length" id="length" value="{{ value }}" required>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<input type="hidden" name="{{ name }}" value="0">
|
||||
<div class="row mb-2">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<input type="checkbox" class="form-check-input" name="{{ name }}" id="{{ name }}" value="1" {% if value == 1 %}checked{% endif %}> {{ lang.admin['password_policy_'~name] }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="row mt-4 mb-2">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm d-block d-sm-inline btn-success" data-item="passwordpolicy" data-action="edit_selected" data-id="passwordpolicy" data-api-url='edit/passwordpolicy' data-api-attr='{}' href="#"><i class="bi bi-check-lg"></i> {{ lang.admin.save }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form class="form" role="form" data-id="pw_reset_notification" method="post" style="margin-top: 50px;">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<legend>
|
||||
{{ lang.admin.password_reset_settings }}
|
||||
</legend>
|
||||
<hr />
|
||||
<small>{{ lang.admin.reset_password_vars|raw }}</small><br><br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<label for="pw_reset_from">{{ lang.admin.quota_notification_sender }}:</label>
|
||||
<input type="email" class="form-control" id="pw_reset_from" name="from" value="{{ pw_reset_data.from }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div>
|
||||
<label for="pw_reset_subject">{{ lang.admin.quota_notification_subject }}:</label>
|
||||
<input type="text" class="form-control" id="pw_reset_subject" name="subject" value="{{ pw_reset_data.subject }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12" data-bs-target="#text_template" style="cursor:pointer" unselectable="on" data-bs-toggle="collapse">
|
||||
<span class="d-block"><i style="font-size:10pt;" class="bi bi-plus-square"></i> {{ lang.admin.password_reset_tmpl_text }}</span>
|
||||
<small>{{ lang.admin.restore_template }}</small>
|
||||
</div>
|
||||
<div id="text_template" class="col-12 collapse">
|
||||
<textarea autocorrect="off" spellcheck="false" autocapitalize="none" class="form-control textarea-code mb-2" rows="20" name="text_tmpl">{{ pw_reset_data.text_tmpl|raw }}</textarea>
|
||||
</div>
|
||||
<div class="col-12 mt-3" data-bs-target="#html_template" style="cursor:pointer" unselectable="on" data-bs-toggle="collapse">
|
||||
<span class="d-block"><i style="font-size:10pt;" class="bi bi-plus-square"></i> {{ lang.admin.password_reset_tmpl_html }}</span>
|
||||
<small>{{ lang.admin.restore_template }}</small>
|
||||
</div>
|
||||
<div id="html_template" class="col-12 collapse">
|
||||
<textarea autocorrect="off" spellcheck="false" autocapitalize="none" class="form-control textarea-code" rows="20" name="html_tmpl">{{ pw_reset_data.html_tmpl|raw }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<div>
|
||||
<br>
|
||||
<a type="button" class="btn btn-sm d-block d-sm-inline btn-success" data-action="edit_selected"
|
||||
data-item="pw_reset_notification"
|
||||
data-id="pw_reset_notification"
|
||||
data-api-url='edit/reset-password-notification'
|
||||
data-api-attr='{}'><i class="bi bi-check-lg"></i> {{ lang.user.save_changes }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -77,7 +77,7 @@
|
||||
<td>Version</td>
|
||||
<td class="text-break">
|
||||
<div class="fw-bolder">
|
||||
<p><a href="{{ mailcow_info.git_project_url }}/releases/tag/{{ mailcow_info.version_tag }}" id="mailcow_version" target="_blank">{{ mailcow_info.version_tag }}</a></p>
|
||||
<p ><a href="#" id="mailcow_version">{{ mailcow_info.version_tag }}</a></p>
|
||||
<p id="mailcow_update"></p>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
<option value="quarantine_notification" {% if template.attributes.acl_quarantine_notification == '1' %} selected{% endif %}>{{ lang.acl["quarantine_notification"] }}</option>
|
||||
<option value="quarantine_category" {% if template.attributes.acl_quarantine_category == '1' %} selected{% endif %}>{{ lang.acl["quarantine_category"] }}</option>
|
||||
<option value="app_passwds" {% if template.attributes.acl_app_passwds == '1' %} selected{% endif %}>{{ lang.acl["app_passwds"] }}</option>
|
||||
<option value="pw_reset" {% if template.attributes.acl_pw_reset == '1' %} selected{% endif %}>{{ lang.acl["pw_reset"] }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -203,6 +203,13 @@
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="password2" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-4">
|
||||
<label class="control-label col-sm-2" for="pw_recovery_email">{{ lang.edit.password_recovery_email }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="email" class="form-control" name="pw_recovery_email" value="{{ result.attributes.recovery_email }}">
|
||||
<small class="text-muted">{{ lang.admin.password_reset_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div data-acl="{{ acl.extend_sender_acl }}" class="row mb-4">
|
||||
<label class="control-label col-sm-2" for="extended_sender_acl">{{ lang.edit.extended_sender_acl }}</label>
|
||||
<div class="col-sm-10">
|
||||
|
||||
@@ -63,6 +63,9 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
<div class="mt-3 mb-4">
|
||||
<a href="/reset-password">{{ lang.login.forgot_password }}</a>
|
||||
</div>
|
||||
{% if login_delay %}
|
||||
<p><div class="my-4 alert alert-info">{{ lang.login.delayed|format(login_delay) }}</b></div></p>
|
||||
{% endif %}
|
||||
|
||||
@@ -149,6 +149,7 @@
|
||||
<option value="quarantine_notification" selected>{{ lang.acl["quarantine_notification"] }}</option>
|
||||
<option value="quarantine_category" selected>{{ lang.acl["quarantine_category"] }}</option>
|
||||
<option value="app_passwds" selected>{{ lang.acl["app_passwds"] }}</option>
|
||||
<option value="pw_reset" selected>{{ lang.acl["pw_reset"] }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -318,6 +319,7 @@
|
||||
<option value="quarantine_notification" selected>{{ lang.acl["quarantine_notification"] }}</option>
|
||||
<option value="quarantine_category" selected>{{ lang.acl["quarantine_category"] }}</option>
|
||||
<option value="app_passwds" selected>{{ lang.acl["app_passwds"] }}</option>
|
||||
<option value="pw_reset" selected>{{ lang.acl["pw_reset"] }}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -309,6 +309,33 @@
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- pw change modal -->
|
||||
<!-- pw recovery email modal -->
|
||||
<div class="modal fade" id="pwRecoveryEmailModal" tabindex="-1" role="dialog" aria-labelledby="pwRecoveryEmailModalLabel">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title">{{ lang.user.pw_recovery_email }}</h3>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="false" data-id="pw_recovery_change" role="form" method="post" autocomplete="off">
|
||||
<div class="row mb-4">
|
||||
<label class="control-label col-sm-3" for="pw_recovery_email">{{ lang.user.email }}</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="email" class="form-control" name="pw_recovery_email" value="{{ mailboxdata.attributes.recovery_email }}">
|
||||
<small class="text-muted">{{ lang.user.password_reset_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="pw_recovery_change" data-item="null" data-api-url='edit/self' data-api-attr='{}' href="#">{{ lang.user.save }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- pw recovery email modal -->
|
||||
<!-- temp alias modal -->
|
||||
<div class="modal fade" id="tempAliasModal" tabindex="-1" role="dialog" aria-labelledby="tempAliasModalLabel">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
|
||||
57
data/web/templates/reset-password.twig
Normal file
57
data/web/templates/reset-password.twig
Normal file
@@ -0,0 +1,57 @@
|
||||
{% extends 'base.twig' %}
|
||||
|
||||
{% block navbar %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row mb-4" style="margin-top: 60px">
|
||||
<div class="col-12 col-md-7 col-lg-6 col-xl-5 ms-auto me-auto">
|
||||
<div class="card">
|
||||
<div class="card-header d-flex align-items-center">
|
||||
<i class="bi bi-person-fill me-2"></i> {{ lang.login.reset_password }}
|
||||
<div class="ms-auto form-check form-switch my-auto d-flex align-items-center">
|
||||
<label class="form-check-label"><i class="bi bi-moon-fill"></i></label>
|
||||
<input class="form-check-input ms-2" type="checkbox" id="dark-mode-toggle">
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="text-center mailcow-logo mb-4">
|
||||
<img class="main-logo" src="{{ logo|default('/img/cow_mailcow.svg') }}" alt="mailcow">
|
||||
<img class="main-logo-dark" src="{{ logo_dark|default('/img/cow_mailcow.svg') }}" alt="mailcow-logo-dark">
|
||||
</div>
|
||||
<legend>{{ ui_texts.main_name|raw }}</legend><hr />
|
||||
|
||||
{% if is_reset_token_valid %}
|
||||
<form method="post" autofill="off">
|
||||
<input type="hidden" name="token" value="{{ reset_token }}" />
|
||||
<input type="password" autocorrect="off" autocapitalize="none" class="form-control mb-2" name="new_password" placeholder="{{ lang.login.new_password }}" />
|
||||
<input type="password" autocorrect="off" autocapitalize="none" class="form-control mb-2" name="new_password2" placeholder="{{ lang.login.new_password_confirm }}" />
|
||||
|
||||
<small id="mismatch_alert" class="text-danger d-none">{{ lang.login.password_mismatch }}</small>
|
||||
<div class="d-flex justify-content-end mt-4" style="position: relative">
|
||||
<button type="submit" class="btn btn-xs-lg d-block d-sm-inline btn-success" name="pw_reset">{{ lang.login.reset_password }}</button>
|
||||
</div>
|
||||
</form>
|
||||
{% elseif reset_token is null %}
|
||||
<form method="post" autofill="off">
|
||||
<input type="text" autocorrect="off" autocapitalize="none" class="form-control mb-2" name="username" placeholder="{{ lang.login.username }}" />
|
||||
|
||||
<div class="d-flex justify-content-end mt-4" style="position: relative">
|
||||
<button type="submit" class="btn btn-xs-lg d-block d-sm-inline btn-success" name="pw_reset_request">{{ lang.login.request_reset_password }}</button>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<p class="text-center">{{ lang.login.invalid_pass_reset_token|raw }}</p>
|
||||
<a href="/">{{ lang.login.back_to_mailcow }}</a>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type='text/javascript'>
|
||||
var csrf_token = '{{ csrf_token }}';
|
||||
var mailcow_cc_username = '{{ mailcow_cc_username }}';
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -50,6 +50,7 @@
|
||||
<p>{{ mailboxdata.quota_used|formatBytes(2) }} / {% if mailboxdata.quota == 0 %}∞{% else %}{{ mailboxdata.quota|formatBytes(2) }}{% endif %}<br>{{ mailboxdata.messages }} {{ lang.user.messages }}</p>
|
||||
<hr>
|
||||
<p><a href="#pwChangeModal" data-bs-toggle="modal"><i class="bi bi-pencil-fill"></i> {{ lang.user.change_password }}</a></p>
|
||||
{% if acl.pw_reset == 1 %}<p><a href="#pwRecoveryEmailModal" data-bs-toggle="modal"><i class="bi bi-pencil-fill"></i> {{ lang.user.pw_recovery_email }}</a></p>{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
services:
|
||||
|
||||
unbound-mailcow:
|
||||
image: mailcow/unbound:1.22
|
||||
image: mailcow/unbound:1.23
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- SKIP_UNBOUND_HEALTHCHECK=${SKIP_UNBOUND_HEALTHCHECK:-n}
|
||||
@@ -80,7 +80,7 @@ services:
|
||||
- clamd
|
||||
|
||||
rspamd-mailcow:
|
||||
image: mailcow/rspamd:1.96
|
||||
image: mailcow/rspamd:1.97
|
||||
stop_grace_period: 30s
|
||||
depends_on:
|
||||
- dovecot-mailcow
|
||||
@@ -90,6 +90,7 @@ services:
|
||||
- IPV6_NETWORK=${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
|
||||
- REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-}
|
||||
- REDIS_SLAVEOF_PORT=${REDIS_SLAVEOF_PORT:-}
|
||||
- SPAMHAUS_DQS_KEY=${SPAMHAUS_DQS_KEY:-}
|
||||
volumes:
|
||||
- ./data/hooks/rspamd:/hooks:Z
|
||||
- ./data/conf/rspamd/custom/:/etc/rspamd/custom:z
|
||||
@@ -167,6 +168,7 @@ services:
|
||||
- DEMO_MODE=${DEMO_MODE:-n}
|
||||
- WEBAUTHN_ONLY_TRUSTED_VENDORS=${WEBAUTHN_ONLY_TRUSTED_VENDORS:-n}
|
||||
- CLUSTERMODE=${CLUSTERMODE:-}
|
||||
- FLATCURVE_EXPERIMENTAL=${FLATCURVE_EXPERIMENTAL:-}
|
||||
restart: always
|
||||
networks:
|
||||
mailcow-network:
|
||||
@@ -174,7 +176,7 @@ services:
|
||||
- phpfpm
|
||||
|
||||
sogo-mailcow:
|
||||
image: mailcow/sogo:1.123
|
||||
image: mailcow/sogo:1.124
|
||||
environment:
|
||||
- DBNAME=${DBNAME}
|
||||
- DBUSER=${DBUSER}
|
||||
@@ -221,7 +223,7 @@ services:
|
||||
- sogo
|
||||
|
||||
dovecot-mailcow:
|
||||
image: mailcow/dovecot:1.30
|
||||
image: mailcow/dovecot:2.0
|
||||
depends_on:
|
||||
- mysql-mailcow
|
||||
- netfilter-mailcow
|
||||
@@ -405,7 +407,7 @@ services:
|
||||
condition: service_started
|
||||
unbound-mailcow:
|
||||
condition: service_healthy
|
||||
image: mailcow/acme:1.88
|
||||
image: mailcow/acme:1.89
|
||||
dns:
|
||||
- ${IPV4_NETWORK:-172.22.1}.254
|
||||
environment:
|
||||
@@ -461,7 +463,7 @@ services:
|
||||
- /lib/modules:/lib/modules:ro
|
||||
|
||||
watchdog-mailcow:
|
||||
image: mailcow/watchdog:2.03
|
||||
image: mailcow/watchdog:2.04
|
||||
dns:
|
||||
- ${IPV4_NETWORK:-172.22.1}.254
|
||||
tmpfs:
|
||||
@@ -478,7 +480,6 @@ services:
|
||||
- mysql-mailcow
|
||||
- acme-mailcow
|
||||
- redis-mailcow
|
||||
|
||||
environment:
|
||||
- IPV6_NETWORK=${IPV6_NETWORK:-fd4d:6169:6c63:6f77::/64}
|
||||
- LOG_LINES=${LOG_LINES:-9999}
|
||||
@@ -594,9 +595,10 @@ services:
|
||||
ofelia-mailcow:
|
||||
image: mcuadros/ofelia:latest
|
||||
restart: always
|
||||
command: daemon --docker
|
||||
command: daemon --docker -f label=com.docker.compose.project=${COMPOSE_PROJECT_NAME}
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME}
|
||||
depends_on:
|
||||
- sogo-mailcow
|
||||
- dovecot-mailcow
|
||||
|
||||
@@ -25,6 +25,16 @@ for bin in openssl curl docker git awk sha1sum grep cut; do
|
||||
if [[ -z $(which ${bin}) ]]; then echo "Cannot find ${bin}, exiting..."; exit 1; fi
|
||||
done
|
||||
|
||||
# Check Docker Version (need at least 24.X)
|
||||
docker_version=$(docker -v | grep -oP '\d+\.\d+\.\d+' | cut -d '.' -f 1)
|
||||
|
||||
if [[ $docker_version -lt 24 ]]; then
|
||||
echo -e "\e[31mCannot find Docker with a Version higher or equals 24.0.0\e[0m"
|
||||
echo -e "\e[33mmailcow needs a newer Docker version to work properly...\e[0m"
|
||||
echo -e "\e[31mPlease update your Docker installation... exiting\e[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if docker compose > /dev/null 2>&1; then
|
||||
if docker compose version --short | grep -e "^2." -e "^v2." > /dev/null 2>&1; then
|
||||
COMPOSE_VERSION=native
|
||||
@@ -147,40 +157,44 @@ done
|
||||
|
||||
MEM_TOTAL=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
|
||||
|
||||
if [ ${MEM_TOTAL} -le "2621440" ]; then
|
||||
echo "Installed memory is <= 2.5 GiB. It is recommended to disable ClamAV to prevent out-of-memory situations."
|
||||
echo "ClamAV can be re-enabled by setting SKIP_CLAMD=n in mailcow.conf."
|
||||
read -r -p "Do you want to disable ClamAV now? [Y/n] " response
|
||||
case $response in
|
||||
[nN][oO]|[nN])
|
||||
SKIP_CLAMD=n
|
||||
if [ -z "${SKIP_CLAMD}" ]; then
|
||||
if [ ${MEM_TOTAL} -le "2621440" ]; then
|
||||
echo "Installed memory is <= 2.5 GiB. It is recommended to disable ClamAV to prevent out-of-memory situations."
|
||||
echo "ClamAV can be re-enabled by setting SKIP_CLAMD=n in mailcow.conf."
|
||||
read -r -p "Do you want to disable ClamAV now? [Y/n] " response
|
||||
case $response in
|
||||
[nN][oO]|[nN])
|
||||
SKIP_CLAMD=n
|
||||
;;
|
||||
*)
|
||||
SKIP_CLAMD=y
|
||||
;;
|
||||
*)
|
||||
SKIP_CLAMD=y
|
||||
;;
|
||||
esac
|
||||
else
|
||||
SKIP_CLAMD=n
|
||||
esac
|
||||
else
|
||||
SKIP_CLAMD=n
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ${MEM_TOTAL} -le "2097152" ]; then
|
||||
echo "Disabling Solr on low-memory system."
|
||||
SKIP_SOLR=y
|
||||
elif [ ${MEM_TOTAL} -le "3670016" ]; then
|
||||
echo "Installed memory is <= 3.5 GiB. It is recommended to disable Solr to prevent out-of-memory situations."
|
||||
echo "Solr is a prone to run OOM and should be monitored. The default Solr heap size is 1024 MiB and should be set in mailcow.conf according to your expected load."
|
||||
echo "Solr can be re-enabled by setting SKIP_SOLR=n in mailcow.conf but will refuse to start with less than 2 GB total memory."
|
||||
read -r -p "Do you want to disable Solr now? [Y/n] " response
|
||||
case $response in
|
||||
[nN][oO]|[nN])
|
||||
SKIP_SOLR=n
|
||||
if [ -z "${SKIP_SOLR}" ]; then
|
||||
if [ ${MEM_TOTAL} -le "2097152" ]; then
|
||||
echo "Disabling Solr on low-memory system."
|
||||
SKIP_SOLR=y
|
||||
elif [ ${MEM_TOTAL} -le "3670016" ]; then
|
||||
echo "Installed memory is <= 3.5 GiB. It is recommended to disable Solr to prevent out-of-memory situations."
|
||||
echo "Solr is a prone to run OOM and should be monitored. The default Solr heap size is 1024 MiB and should be set in mailcow.conf according to your expected load."
|
||||
echo "Solr can be re-enabled by setting SKIP_SOLR=n in mailcow.conf but will refuse to start with less than 2 GB total memory."
|
||||
read -r -p "Do you want to disable Solr now? [Y/n] " response
|
||||
case $response in
|
||||
[nN][oO]|[nN])
|
||||
SKIP_SOLR=n
|
||||
;;
|
||||
*)
|
||||
SKIP_SOLR=y
|
||||
;;
|
||||
*)
|
||||
SKIP_SOLR=y
|
||||
;;
|
||||
esac
|
||||
else
|
||||
SKIP_SOLR=n
|
||||
esac
|
||||
else
|
||||
SKIP_SOLR=n
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${SKIP_BRANCH} != y ]]; then
|
||||
|
||||
@@ -55,10 +55,10 @@ ENV_FILE=${SCRIPT_DIR}/../.env
|
||||
THREADS=$(echo ${THREADS:-1})
|
||||
ARCH=$(uname -m)
|
||||
|
||||
if ! [[ "${THREADS}" =~ ^[1-9]+$ ]] ; then
|
||||
if ! [[ "${THREADS}" =~ ^[1-9][0-9]?$ ]] ; then
|
||||
echo "Thread input is not a number!"
|
||||
exit 1
|
||||
elif [[ "${THREADS}" =~ ^[1-9]+$ ]] ; then
|
||||
elif [[ "${THREADS}" =~ ^[1-9][0-9]?$ ]] ; then
|
||||
echo "Using ${THREADS} Thread(s) for this run."
|
||||
echo "Notice: You can set the Thread count with the THREADS Variable before you run this script."
|
||||
fi
|
||||
@@ -199,7 +199,7 @@ function restore() {
|
||||
case "$1" in
|
||||
vmail)
|
||||
docker stop $(docker ps -qf name=dovecot-mailcow)
|
||||
docker run -it --name mailcow-backup --rm \
|
||||
docker run -i --name mailcow-backup --rm \
|
||||
-v ${RESTORE_LOCATION}:/backup:z \
|
||||
-v $(docker volume ls -qf name=^${CMPS_PRJ}_vmail-vol-1$):/vmail:z \
|
||||
${DEBIAN_DOCKER_IMAGE} /bin/tar --use-compress-program="pigz -d -p ${THREADS}" -Pxvf /backup/backup_vmail.tar.gz
|
||||
@@ -218,7 +218,7 @@ function restore() {
|
||||
;;
|
||||
redis)
|
||||
docker stop $(docker ps -qf name=redis-mailcow)
|
||||
docker run -it --name mailcow-backup --rm \
|
||||
docker run -i --name mailcow-backup --rm \
|
||||
-v ${RESTORE_LOCATION}:/backup:z \
|
||||
-v $(docker volume ls -qf name=^${CMPS_PRJ}_redis-vol-1$):/redis:z \
|
||||
${DEBIAN_DOCKER_IMAGE} /bin/tar --use-compress-program="pigz -d -p ${THREADS}" -Pxvf /backup/backup_redis.tar.gz
|
||||
@@ -226,7 +226,7 @@ function restore() {
|
||||
;;
|
||||
crypt)
|
||||
docker stop $(docker ps -qf name=dovecot-mailcow)
|
||||
docker run -it --name mailcow-backup --rm \
|
||||
docker run -i --name mailcow-backup --rm \
|
||||
-v ${RESTORE_LOCATION}:/backup:z \
|
||||
-v $(docker volume ls -qf name=^${CMPS_PRJ}_crypt-vol-1$):/crypt:z \
|
||||
${DEBIAN_DOCKER_IMAGE} /bin/tar --use-compress-program="pigz -d -p ${THREADS}" -Pxvf /backup/backup_crypt.tar.gz
|
||||
@@ -239,7 +239,7 @@ function restore() {
|
||||
echo -e "Continuing anyhow. If rspamd is crashing opon boot try remove the rspamd volume with docker volume rm ${CMPS_PRJ}_rspamd-vol-1 after you've stopped the stack.\e[0m"
|
||||
sleep 2
|
||||
docker stop $(docker ps -qf name=rspamd-mailcow)
|
||||
docker run -it --name mailcow-backup --rm \
|
||||
docker run -i --name mailcow-backup --rm \
|
||||
-v ${RESTORE_LOCATION}:/backup:z \
|
||||
-v $(docker volume ls -qf name=^${CMPS_PRJ}_rspamd-vol-1$):/rspamd:z \
|
||||
${DEBIAN_DOCKER_IMAGE} /bin/tar --use-compress-program="pigz -d -p ${THREADS}" -Pxvf /backup/backup_rspamd.tar.gz
|
||||
@@ -250,7 +250,7 @@ function restore() {
|
||||
echo -e "Skipping rspamd due to compatibility issues!\e[0m"
|
||||
else
|
||||
docker stop $(docker ps -qf name=rspamd-mailcow)
|
||||
docker run -it --name mailcow-backup --rm \
|
||||
docker run -i --name mailcow-backup --rm \
|
||||
-v ${RESTORE_LOCATION}:/backup:z \
|
||||
-v $(docker volume ls -qf name=^${CMPS_PRJ}_rspamd-vol-1$):/rspamd:z \
|
||||
${DEBIAN_DOCKER_IMAGE} /bin/tar --use-compress-program="pigz -d -p ${THREADS}" -Pxvf /backup/backup_rspamd.tar.gz
|
||||
@@ -259,7 +259,7 @@ function restore() {
|
||||
;;
|
||||
postfix)
|
||||
docker stop $(docker ps -qf name=postfix-mailcow)
|
||||
docker run -it --name mailcow-backup --rm \
|
||||
docker run -i --name mailcow-backup --rm \
|
||||
-v ${RESTORE_LOCATION}:/backup:z \
|
||||
-v $(docker volume ls -qf name=^${CMPS_PRJ}_postfix-vol-1$):/postfix:z \
|
||||
${DEBIAN_DOCKER_IMAGE} /bin/tar --use-compress-program="pigz -d -p ${THREADS}" -Pxvf /backup/backup_postfix.tar.gz
|
||||
@@ -295,7 +295,7 @@ function restore() {
|
||||
${SQLIMAGE} /bin/bash -c "shopt -s dotglob ; /bin/rm -rf /var/lib/mysql/* ; rsync -avh --usermap=root:mysql --groupmap=root:mysql /backup/ /var/lib/mysql/"
|
||||
elif [[ -f "${RESTORE_LOCATION}/backup_mysql.gz" ]]; then
|
||||
docker run \
|
||||
-it --name mailcow-backup --rm \
|
||||
-i --name mailcow-backup --rm \
|
||||
-v $(docker volume ls -qf name=^${CMPS_PRJ}_mysql-vol-1$):/var/lib/mysql/:z \
|
||||
--entrypoint= \
|
||||
-u mysql \
|
||||
|
||||
33
update.sh
33
update.sh
@@ -328,6 +328,16 @@ for bin in curl docker git awk sha1sum grep cut; do
|
||||
fi
|
||||
done
|
||||
|
||||
# Check Docker Version (need at least 24.X)
|
||||
docker_version=$(docker -v | grep -oP '\d+\.\d+\.\d+' | cut -d '.' -f 1)
|
||||
|
||||
if [[ $docker_version -lt 24 ]]; then
|
||||
echo -e "\e[31mCannot find Docker with a Version higher or equals 24.0.0\e[0m"
|
||||
echo -e "\e[33mmailcow needs a newer Docker version to work properly... continuing on your own risk!\e[0m"
|
||||
echo -e "\e[31mPlease update your Docker installation... sleeping 10s\e[0m"
|
||||
sleep 10
|
||||
fi
|
||||
|
||||
export LC_ALL=C
|
||||
DATE=$(date +%Y-%m-%d_%H_%M_%S)
|
||||
BRANCH=$(cd ${SCRIPT_DIR}; git rev-parse --abbrev-ref HEAD)
|
||||
@@ -399,17 +409,18 @@ while (($#)); do
|
||||
-f|--force - Force update, do not ask questions
|
||||
-d|--dev - Enables Developer Mode (No Checkout of update.sh for tests)
|
||||
'
|
||||
exit 1
|
||||
exit 0
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
[[ ! -f mailcow.conf ]] && { echo -e "\e[31mmailcow.conf is missing! Is mailcow installed?\e[0m"; exit 1;}
|
||||
|
||||
chmod 600 mailcow.conf
|
||||
source mailcow.conf
|
||||
|
||||
detect_docker_compose_command
|
||||
|
||||
[[ ! -f mailcow.conf ]] && { echo "mailcow.conf is missing! Is mailcow installed?"; exit 1;}
|
||||
DOTS=${MAILCOW_HOSTNAME//[^.]};
|
||||
if [ ${#DOTS} -lt 1 ]; then
|
||||
echo -e "\e[31mMAILCOW_HOSTNAME (${MAILCOW_HOSTNAME}) is not a FQDN!\e[0m"
|
||||
@@ -424,7 +435,7 @@ elif [ ${#DOTS} -eq 1 ]; then
|
||||
echo "Find more information about why this message exists here: https://github.com/mailcow/mailcow-dockerized/issues/1572"
|
||||
read -r -p "Do you want to proceed anyway? [y/N] " response
|
||||
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
echo "OK. Procceding."
|
||||
echo "OK. Proceeding."
|
||||
else
|
||||
echo "OK. Exiting."
|
||||
exit 1
|
||||
@@ -807,7 +818,7 @@ if ! [ $NEW_BRANCH ]; then
|
||||
echo -e "\e[33mTo change that run the update.sh Script one time with the --stable parameter to switch to stable builds.\e[0m"
|
||||
|
||||
else
|
||||
echo -e "\e[33mYou are receiving updates from a unsupported branch.\e[0m"
|
||||
echo -e "\e[33mYou are receiving updates from an unsupported branch.\e[0m"
|
||||
sleep 1
|
||||
echo -e "\e[33mThe mailcow stack might still work but it is recommended to switch to the master branch (stable builds).\e[0m"
|
||||
echo -e "\e[33mTo change that run the update.sh Script one time with the --stable parameter to switch to stable builds.\e[0m"
|
||||
@@ -818,14 +829,14 @@ elif [ $FORCE ]; then
|
||||
echo -e "\e[31mPlease rerun the update.sh Script without the --force/-f parameter.\e[0m"
|
||||
sleep 1
|
||||
elif [ $NEW_BRANCH == "master" ] && [ $CURRENT_BRANCH != "master" ]; then
|
||||
echo -e "\e[33mYou are about to switch your mailcow Updates to the stable (master) branch.\e[0m"
|
||||
echo -e "\e[33mYou are about to switch your mailcow updates to the stable (master) branch.\e[0m"
|
||||
sleep 1
|
||||
echo -e "\e[33mBefore you do: Please take a backup of all components to ensure that no Data is lost...\e[0m"
|
||||
echo -e "\e[33mBefore you do: Please take a backup of all components to ensure that no data is lost...\e[0m"
|
||||
sleep 1
|
||||
echo -e "\e[31mWARNING: Please see on GitHub or ask in the communitys if a switch to master is stable or not.
|
||||
In some rear cases a Update back to master can destroy your mailcow configuration in case of Database Upgrades etc.
|
||||
Normally a upgrade back to master should be safe during each full release.
|
||||
Check GitHub for Database Changes and Update only if there similar to the full release!\e[0m"
|
||||
echo -e "\e[31mWARNING: Please see on GitHub or ask in the community if a switch to master is stable or not.
|
||||
In some rear cases an update back to master can destroy your mailcow configuration such as database upgrade, etc.
|
||||
Normally an upgrade back to master should be safe during each full release.
|
||||
Check GitHub for Database changes and update only if there similar to the full release!\e[0m"
|
||||
read -r -p "Are you sure you that want to continue upgrading to the stable (master) branch? [y/N] " response
|
||||
if [[ ! "${response}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
echo "OK. If you prepared yourself for that please run the update.sh Script with the --stable parameter again to trigger this process here."
|
||||
@@ -972,7 +983,7 @@ if [ ! $DEV ]; then
|
||||
echo -e "\e[31m\nOh no, what happened?\n=> You most likely added files to your local mailcow instance that were now added to the official mailcow repository. Please move them to another location before updating mailcow.\e[0m"
|
||||
exit 1
|
||||
elif [[ ${MERGE_RETURN} == 1 ]]; then
|
||||
echo -e "\e[93mPotenial conflict, trying to fix...\e[0m"
|
||||
echo -e "\e[93mPotential conflict, trying to fix...\e[0m"
|
||||
git status --porcelain | grep -E "UD|DU" | awk '{print $2}' | xargs rm -v
|
||||
git add -A
|
||||
git commit -m "After update on ${DATE}" > /dev/null
|
||||
|
||||
Reference in New Issue
Block a user