mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2026-02-19 15:46:23 +00:00
Compare commits
76 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcf27d640d | ||
|
|
cbca306fc1 | ||
|
|
6a8986fe4f | ||
|
|
ff34eb12e2 | ||
|
|
03fccb28e9 | ||
|
|
8fbfd99dd6 | ||
|
|
7f7a869678 | ||
|
|
73257151c4 | ||
|
|
efb2572f0f | ||
|
|
66aa28b5de | ||
|
|
987a027339 | ||
|
|
eea81e21f6 | ||
|
|
a689109f44 | ||
|
|
58c0a46459 | ||
|
|
2dbe8bf4ca | ||
|
|
ef7ec06947 | ||
|
|
fc7ea7a247 | ||
|
|
9b478b3859 | ||
|
|
aadeeb0df3 | ||
|
|
f33d82ffc1 | ||
|
|
8e2d3a6db5 | ||
|
|
70126e1f0c | ||
|
|
b9ae174a6a | ||
|
|
9715c57314 | ||
|
|
b9f8959d92 | ||
|
|
9c814cc182 | ||
|
|
cf6594220c | ||
|
|
2cf952eb36 | ||
|
|
6fc86dd7d3 | ||
|
|
bf13af9691 | ||
|
|
1af9c21a50 | ||
|
|
443941e687 | ||
|
|
527577b438 | ||
|
|
9daf2d80c0 | ||
|
|
38b0641742 | ||
|
|
f675af5bb0 | ||
|
|
533c4e7956 | ||
|
|
1b2c2c0037 | ||
|
|
97768494e1 | ||
|
|
4a052da289 | ||
|
|
18d7a55b15 | ||
|
|
9ca2fb7ccf | ||
|
|
b4e8355827 | ||
|
|
e0bde1c459 | ||
|
|
27c007ebd3 | ||
|
|
8f3ea09732 | ||
|
|
af626d98d3 | ||
|
|
34b0574e56 | ||
|
|
49d738809b | ||
|
|
2fa3a22eca | ||
|
|
dc5eb6f92e | ||
|
|
ba8902f0b1 | ||
|
|
11e9a77840 | ||
|
|
64cd7e74c5 | ||
|
|
cac65d081e | ||
|
|
e5ada994be | ||
|
|
6ba2459645 | ||
|
|
58f63aad08 | ||
|
|
8a8687a63c | ||
|
|
f7f93c360d | ||
|
|
c160e1f68e | ||
|
|
47c08ab8d2 | ||
|
|
cd83ffbaa2 | ||
|
|
e12981a821 | ||
|
|
47fd1bb894 | ||
|
|
20582b6353 | ||
|
|
c8ff5387c0 | ||
|
|
7cb138d515 | ||
|
|
3dd4c45fab | ||
|
|
549539bec9 | ||
|
|
e449cac464 | ||
|
|
62e458f39b | ||
|
|
b37caaf9e5 | ||
|
|
7660ca89ae | ||
|
|
02a55ce9db | ||
|
|
6dc0bdbfa3 |
2
.github/workflows/rebuild_backup_image.yml
vendored
2
.github/workflows/rebuild_backup_image.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
password: ${{ secrets.BACKUPIMAGEBUILD_ACTION_DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
|
||||
@@ -1,31 +1,33 @@
|
||||
# Contribution Guidelines (Last modified on 18th December 2023)
|
||||
# Contribution Guidelines (Last modified on 27th June 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)
|
||||
## Pull Requests (Last modified on 27th June 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 **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.*
|
||||
6. 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.
|
||||
7. 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 27th June 2024)
|
||||
|
||||
If you plan to report a issue within mailcow please read and understand the following rules:
|
||||
|
||||
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:
|
||||
1. Read your logs; follow them to see what the reason for your problem is.
|
||||
@@ -36,4 +38,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,8 +1,8 @@
|
||||
FROM alpine:3.18
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG PIP_BREAK_SYSTEM_PACKAGES=1
|
||||
|
||||
RUN apk upgrade --no-cache \
|
||||
&& apk add --update --no-cache \
|
||||
bash \
|
||||
@@ -15,9 +15,7 @@ RUN apk upgrade --no-cache \
|
||||
tini \
|
||||
tzdata \
|
||||
python3 \
|
||||
py3-pip \
|
||||
&& pip3 install --upgrade pip \
|
||||
&& pip3 install acme-tiny
|
||||
acme-tiny --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community/
|
||||
|
||||
COPY acme.sh /srv/acme.sh
|
||||
COPY functions.sh /srv/functions.sh
|
||||
|
||||
@@ -33,6 +33,10 @@ if [[ "${ONLY_MAILCOW_HOSTNAME}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
ONLY_MAILCOW_HOSTNAME=y
|
||||
fi
|
||||
|
||||
if [[ "${AUTODISCOVER_SAN}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
AUTODISCOVER_SAN=y
|
||||
fi
|
||||
|
||||
# Request individual certificate for every domain
|
||||
if [[ "${ENABLE_SSL_SNI}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
ENABLE_SSL_SNI=y
|
||||
@@ -211,7 +215,11 @@ while true; do
|
||||
ADDITIONAL_SAN_ARR+=($i)
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${AUTODISCOVER_SAN} == "y" ]]; then
|
||||
# Fetch certs for autoconfig and autodiscover subdomains
|
||||
ADDITIONAL_WC_ARR+=('autodiscover' 'autoconfig')
|
||||
fi
|
||||
|
||||
if [[ ${SKIP_IP_CHECK} != "y" ]]; then
|
||||
# Start IP detection
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
FROM debian:bullseye-slim
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
RUN apt update && apt install pigz
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.19
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.19
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
|
||||
@@ -358,8 +358,8 @@ class DockerApi:
|
||||
for line in cmd_response.split("\n"):
|
||||
if '$2$' in line:
|
||||
hash = line.strip()
|
||||
hash_out = re.search('\$2\$.+$', hash).group(0)
|
||||
rspamd_passphrase_hash = re.sub('[^0-9a-zA-Z\$]+', '', hash_out.rstrip())
|
||||
hash_out = re.search(r'\$2\$.+$', hash).group(0)
|
||||
rspamd_passphrase_hash = re.sub(r'[^0-9a-zA-Z\$]+', '', hash_out.rstrip())
|
||||
rspamd_password_filename = "/etc/rspamd/override.d/worker-controller-password.inc"
|
||||
cmd = '''/bin/echo 'enable_password = "%s";' > %s && cat %s''' % (rspamd_passphrase_hash, rspamd_password_filename, rspamd_password_filename)
|
||||
cmd_response = self.exec_cmd_container(container, cmd, user="_rspamd")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.19
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced extractVersion=^(?<version>.*)$
|
||||
@@ -24,6 +24,7 @@ RUN addgroup -g 5000 vmail \
|
||||
envsubst \
|
||||
ca-certificates \
|
||||
curl \
|
||||
coreutils \
|
||||
jq \
|
||||
lua \
|
||||
lua-cjson \
|
||||
@@ -62,7 +63,7 @@ RUN addgroup -g 5000 vmail \
|
||||
perl-package-stash-xs \
|
||||
perl-par-packer \
|
||||
perl-parse-recdescent \
|
||||
perl-lockfile-simple --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community/ \
|
||||
perl-lockfile-simple \
|
||||
libproc \
|
||||
perl-readonly \
|
||||
perl-regexp-common \
|
||||
@@ -104,13 +105,12 @@ RUN addgroup -g 5000 vmail \
|
||||
dovecot-pigeonhole-plugin \
|
||||
dovecot-pop3d \
|
||||
dovecot-fts-solr \
|
||||
dovecot-fts-flatcurve \
|
||||
&& arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) \
|
||||
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$arch" \
|
||||
&& chmod +x /usr/local/bin/gosu \
|
||||
&& gosu nobody true
|
||||
|
||||
# RUN cpan LockFile::Simple
|
||||
|
||||
COPY trim_logs.sh /usr/local/bin/trim_logs.sh
|
||||
COPY clean_q_aged.sh /usr/local/bin/clean_q_aged.sh
|
||||
COPY syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
|
||||
@@ -129,6 +129,7 @@ COPY stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
|
||||
COPY quarantine_notify.py /usr/local/bin/quarantine_notify.py
|
||||
COPY quota_notify.py /usr/local/bin/quota_notify.py
|
||||
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
|
||||
|
||||
@@ -29,6 +29,7 @@ ${REDIS_CMDLINE} SET DOVECOT_REPL_HEALTH 1 > /dev/null
|
||||
# Create missing directories
|
||||
[[ ! -d /etc/dovecot/sql/ ]] && mkdir -p /etc/dovecot/sql/
|
||||
[[ ! -d /etc/dovecot/lua/ ]] && mkdir -p /etc/dovecot/lua/
|
||||
[[ ! -d /etc/dovecot/conf.d/ ]] && mkdir -p /etc/dovecot/conf.d/
|
||||
[[ ! -d /var/vmail/_garbage ]] && mkdir -p /var/vmail/_garbage
|
||||
[[ ! -d /var/vmail/sieve ]] && mkdir -p /var/vmail/sieve
|
||||
[[ ! -d /etc/sogo ]] && mkdir -p /etc/sogo
|
||||
@@ -109,7 +110,14 @@ EOF
|
||||
|
||||
echo -n ${ACL_ANYONE} > /etc/dovecot/acl_anyone
|
||||
|
||||
if [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
if [[ "${FLATCURVE_EXPERIMENTAL}" =~ ^([yY][eE][sS]|[yY]) ]]; then
|
||||
echo -e "\e[33mActivating Flatcurve as FTS Backend...\e[0m"
|
||||
echo -e "\e[33mDepending on your previous setup a full reindex might be needed... \e[0m"
|
||||
echo -e "\e[34mVisit https://docs.mailcow.email/manual-guides/Dovecot/u_e-dovecot-fts/#fts-related-dovecot-commands to learn how to reindex\e[0m"
|
||||
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify fts fts_flatcurve listescape replication' > /etc/dovecot/mail_plugins
|
||||
echo -n 'quota imap_quota imap_acl acl zlib imap_zlib imap_sieve mail_crypt mail_crypt_acl notify mail_log fts fts_flatcurve listescape replication' > /etc/dovecot/mail_plugins_imap
|
||||
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl fts fts_flatcurve notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
||||
elif [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify listescape replication' > /etc/dovecot/mail_plugins
|
||||
echo -n 'quota imap_quota imap_acl acl zlib imap_zlib imap_sieve mail_crypt mail_crypt_acl notify listescape replication mail_log' > /etc/dovecot/mail_plugins_imap
|
||||
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
||||
@@ -239,6 +247,47 @@ function script_deinit()
|
||||
end
|
||||
EOF
|
||||
|
||||
# Temporarily set FTS depending on user choice inside mailcow.conf. Will be removed as soon as Solr is dropped
|
||||
if [[ "${FLATCURVE_EXPERIMENTAL}" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
cat <<EOF > /etc/dovecot/conf.d/fts.conf
|
||||
# Autogenerated by mailcow
|
||||
plugin {
|
||||
fts_autoindex = yes
|
||||
fts_autoindex_exclude = \Junk
|
||||
fts_autoindex_exclude2 = \Trash
|
||||
fts = flatcurve
|
||||
|
||||
# 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
|
||||
fts_filters = normalizer-icu snowball stopwords
|
||||
fts_filters_en = lowercase snowball english-possessive stopwords
|
||||
}
|
||||
EOF
|
||||
elif [[ ! "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
||||
cat <<EOF > /etc/dovecot/conf.d/fts.conf
|
||||
# Autogenerated by mailcow
|
||||
plugin {
|
||||
fts = solr
|
||||
fts_autoindex = yes
|
||||
fts_autoindex_exclude = \Junk
|
||||
fts_autoindex_exclude2 = \Trash
|
||||
fts_solr = url=http://solr:8983/solr/dovecot-fts/
|
||||
|
||||
fts_tokenizers = generic email-address
|
||||
fts_tokenizer_generic = algorithm=simple
|
||||
|
||||
fts_filters = normalizer-icu snowball stopwords
|
||||
fts_filters_en = lowercase snowball english-possessive stopwords
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
|
||||
|
||||
# Replace patterns in app-passdb.lua
|
||||
sed -i "s/__DBUSER__/${DBUSER}/g" /etc/dovecot/lua/passwd-verify.lua
|
||||
sed -i "s/__DBPASS__/${DBPASS}/g" /etc/dovecot/lua/passwd-verify.lua
|
||||
@@ -343,7 +392,6 @@ mail_replica = tcp:${MAILCOW_REPLICA_IP}:${DOVEADM_REPLICA_PORT}
|
||||
EOF
|
||||
fi
|
||||
|
||||
|
||||
# 401 is user dovecot
|
||||
if [[ ! -s /mail_crypt/ecprivkey.pem || ! -s /mail_crypt/ecpubkey.pem ]]; then
|
||||
openssl ecparam -name prime256v1 -genkey | openssl pkey -out /mail_crypt/ecprivkey.pem
|
||||
@@ -387,7 +435,8 @@ chmod +x /usr/lib/dovecot/sieve/rspamd-pipe-ham \
|
||||
/usr/local/bin/maildir_gc.sh \
|
||||
/usr/local/sbin/stop-supervisor.sh \
|
||||
/usr/local/bin/quota_notify.py \
|
||||
/usr/local/bin/repl_health.sh
|
||||
/usr/local/bin/repl_health.sh \
|
||||
/usr/local/bin/optimize-fts.sh
|
||||
|
||||
# Prepare environment file for cronjobs
|
||||
printenv | sed 's/^\(.*\)$/export \1/g' > /source_env.sh
|
||||
|
||||
7
data/Dockerfiles/dovecot/optimize-fts.sh
Normal file
7
data/Dockerfiles/dovecot/optimize-fts.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ && ! "${FLATCURVE_EXPERIMENTAL}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
exit 0
|
||||
else
|
||||
doveadm fts optimize -A
|
||||
fi
|
||||
@@ -11,7 +11,7 @@ else
|
||||
fi
|
||||
|
||||
# Deploy
|
||||
curl --connect-timeout 15 --retry 10 --max-time 30 http://www.spamassassin.heinlein-support.de/$(dig txt 1.4.3.spamassassin.heinlein-support.de +short | tr -d '"' | tr -dc '0-9').tar.gz --output /tmp/sa-rules-heinlein.tar.gz
|
||||
curl --connect-timeout 15 --retry 10 --max-time 30 https://www.spamassassin.heinlein-support.de/$(dig txt 1.4.3.spamassassin.heinlein-support.de +short | tr -d '"' | tr -dc '0-9').tar.gz --output /tmp/sa-rules-heinlein.tar.gz
|
||||
if gzip -t /tmp/sa-rules-heinlein.tar.gz; then
|
||||
tar xfvz /tmp/sa-rules-heinlein.tar.gz -C /tmp/sa-rules-heinlein
|
||||
cat /tmp/sa-rules-heinlein/*cf > /etc/rspamd/custom/sa-rules
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.19
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@@ -80,16 +80,16 @@ def refreshF2bregex():
|
||||
global exit_code
|
||||
if not r.get('F2B_REGEX'):
|
||||
f2bregex = {}
|
||||
f2bregex[1] = 'mailcow UI: Invalid password for .+ by ([0-9a-f\.:]+)'
|
||||
f2bregex[2] = 'Rspamd UI: Invalid password by ([0-9a-f\.:]+)'
|
||||
f2bregex[3] = 'warning: .*\[([0-9a-f\.:]+)\]: SASL .+ authentication failed: (?!.*Connection lost to authentication server).+'
|
||||
f2bregex[4] = 'warning: non-SMTP command from .*\[([0-9a-f\.:]+)]:.+'
|
||||
f2bregex[5] = 'NOQUEUE: reject: RCPT from \[([0-9a-f\.:]+)].+Protocol error.+'
|
||||
f2bregex[6] = '-login: Disconnected.+ \(auth failed, .+\): user=.*, method=.+, rip=([0-9a-f\.:]+),'
|
||||
f2bregex[7] = '-login: Aborted login.+ \(auth failed .+\): user=.+, rip=([0-9a-f\.:]+), lip.+'
|
||||
f2bregex[8] = '-login: Aborted login.+ \(tried to use disallowed .+\): user=.+, rip=([0-9a-f\.:]+), lip.+'
|
||||
f2bregex[9] = 'SOGo.+ Login from \'([0-9a-f\.:]+)\' for user .+ might not have worked'
|
||||
f2bregex[10] = '([0-9a-f\.:]+) \"GET \/SOGo\/.* HTTP.+\" 403 .+'
|
||||
f2bregex[1] = r'mailcow UI: Invalid password for .+ by ([0-9a-f\.:]+)'
|
||||
f2bregex[2] = r'Rspamd UI: Invalid password by ([0-9a-f\.:]+)'
|
||||
f2bregex[3] = r'warning: .*\[([0-9a-f\.:]+)\]: SASL .+ authentication failed: (?!.*Connection lost to authentication server).+'
|
||||
f2bregex[4] = r'warning: non-SMTP command from .*\[([0-9a-f\.:]+)]:.+'
|
||||
f2bregex[5] = r'NOQUEUE: reject: RCPT from \[([0-9a-f\.:]+)].+Protocol error.+'
|
||||
f2bregex[6] = r'-login: Disconnected.+ \(auth failed, .+\): user=.*, method=.+, rip=([0-9a-f\.:]+),'
|
||||
f2bregex[7] = r'-login: Aborted login.+ \(auth failed .+\): user=.+, rip=([0-9a-f\.:]+), lip.+'
|
||||
f2bregex[8] = r'-login: Aborted login.+ \(tried to use disallowed .+\): user=.+, rip=([0-9a-f\.:]+), lip.+'
|
||||
f2bregex[9] = r'SOGo.+ Login from \'([0-9a-f\.:]+)\' for user .+ might not have worked'
|
||||
f2bregex[10] = r'([0-9a-f\.:]+) \"GET \/SOGo\/.* HTTP.+\" 403 .+'
|
||||
r.set('F2B_REGEX', json.dumps(f2bregex, ensure_ascii=False))
|
||||
else:
|
||||
try:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.19
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG PIP_BREAK_SYSTEM_PACKAGES=1
|
||||
|
||||
@@ -24,6 +24,7 @@ done
|
||||
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)
|
||||
echo "Could not get mysql-mailcow container id... trying again"
|
||||
sleep 2
|
||||
done
|
||||
echo "MySQL @ ${CONTAINER_ID}"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM debian:bullseye-slim
|
||||
FROM debian:bookworm-slim
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
@@ -415,12 +415,6 @@ postscreen_dnsbl_sites = wl.mailspike.net=127.0.0.[18;19;20]*-2
|
||||
b.barracudacentral.org=127.0.0.2*7
|
||||
bl.mailspike.net=127.0.0.2*5
|
||||
bl.mailspike.net=127.0.0.[10;11;12]*4
|
||||
dnsbl.sorbs.net=127.0.0.10*8
|
||||
dnsbl.sorbs.net=127.0.0.5*6
|
||||
dnsbl.sorbs.net=127.0.0.7*3
|
||||
dnsbl.sorbs.net=127.0.0.8*2
|
||||
dnsbl.sorbs.net=127.0.0.6*2
|
||||
dnsbl.sorbs.net=127.0.0.9*2
|
||||
EOF
|
||||
fi
|
||||
DNSBL_CONFIG=$(grep -v '^#' /opt/postfix/conf/dns_blocklists.cf | grep '\S')
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -2,6 +2,7 @@ FROM debian:bullseye-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
|
||||
|
||||
@@ -12,11 +13,14 @@ RUN apt-get update && apt-get install -y \
|
||||
apt-transport-https \
|
||||
dnsutils \
|
||||
netcat \
|
||||
&& apt-key adv --fetch-keys https://rspamd.com/apt-stable/gpg.key \
|
||||
&& echo "deb https://rspamd.com/apt-stable/ $CODENAME main" > /etc/apt/sources.list.d/rspamd.list \
|
||||
&& apt-get update \
|
||||
&& apt-get --no-install-recommends -y install rspamd redis-tools procps nano \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
wget \
|
||||
redis-tools \
|
||||
procps \
|
||||
nano \
|
||||
&& 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 \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/*\
|
||||
&& apt-get autoremove --purge \
|
||||
&& apt-get clean \
|
||||
&& mkdir -p /run/rspamd \
|
||||
@@ -25,7 +29,6 @@ RUN apt-get update && apt-get install -y \
|
||||
&& sed -i 's/#analysis_keyword_table > 0/analysis_cat_table.macro_exist == "M"/g' /usr/share/rspamd/lualib/lua_scanners/oletools.lua
|
||||
|
||||
COPY settings.conf /etc/rspamd/settings.conf
|
||||
COPY metadata_exporter.lua /usr/share/rspamd/plugins/metadata_exporter.lua
|
||||
COPY set_worker_password.sh /set_worker_password.sh
|
||||
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||
|
||||
|
||||
@@ -1,632 +0,0 @@
|
||||
--[[
|
||||
Copyright (c) 2016, Andrew Lewis <nerf@judo.za.org>
|
||||
Copyright (c) 2016, Vsevolod Stakhov <vsevolod@highsecure.ru>
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
]]--
|
||||
|
||||
if confighelp then
|
||||
return
|
||||
end
|
||||
|
||||
-- A plugin that pushes metadata (or whole messages) to external services
|
||||
|
||||
local redis_params
|
||||
local lua_util = require "lua_util"
|
||||
local rspamd_http = require "rspamd_http"
|
||||
local rspamd_util = require "rspamd_util"
|
||||
local rspamd_logger = require "rspamd_logger"
|
||||
local ucl = require "ucl"
|
||||
local E = {}
|
||||
local N = 'metadata_exporter'
|
||||
|
||||
local settings = {
|
||||
pusher_enabled = {},
|
||||
pusher_format = {},
|
||||
pusher_select = {},
|
||||
mime_type = 'text/plain',
|
||||
defer = false,
|
||||
mail_from = '',
|
||||
mail_to = 'postmaster@localhost',
|
||||
helo = 'rspamd',
|
||||
email_template = [[From: "Rspamd" <$mail_from>
|
||||
To: $mail_to
|
||||
Subject: Spam alert
|
||||
Date: $date
|
||||
MIME-Version: 1.0
|
||||
Message-ID: <$our_message_id>
|
||||
Content-type: text/plain; charset=utf-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Authenticated username: $user
|
||||
IP: $ip
|
||||
Queue ID: $qid
|
||||
SMTP FROM: $from
|
||||
SMTP RCPT: $rcpt
|
||||
MIME From: $header_from
|
||||
MIME To: $header_to
|
||||
MIME Date: $header_date
|
||||
Subject: $header_subject
|
||||
Message-ID: $message_id
|
||||
Action: $action
|
||||
Score: $score
|
||||
Symbols: $symbols]],
|
||||
}
|
||||
|
||||
local function get_general_metadata(task, flatten, no_content)
|
||||
local r = {}
|
||||
local ip = task:get_from_ip()
|
||||
if ip and ip:is_valid() then
|
||||
r.ip = tostring(ip)
|
||||
else
|
||||
r.ip = 'unknown'
|
||||
end
|
||||
r.user = task:get_user() or 'unknown'
|
||||
r.qid = task:get_queue_id() or 'unknown'
|
||||
r.subject = task:get_subject() or 'unknown'
|
||||
r.action = task:get_metric_action('default')
|
||||
|
||||
local s = task:get_metric_score('default')[1]
|
||||
r.score = flatten and string.format('%.2f', s) or s
|
||||
|
||||
local fuzzy = task:get_mempool():get_variable("fuzzy_hashes", "fstrings")
|
||||
if fuzzy and #fuzzy > 0 then
|
||||
local fz = {}
|
||||
for _,h in ipairs(fuzzy) do
|
||||
table.insert(fz, h)
|
||||
end
|
||||
if not flatten then
|
||||
r.fuzzy = fz
|
||||
else
|
||||
r.fuzzy = table.concat(fz, ', ')
|
||||
end
|
||||
else
|
||||
r.fuzzy = 'unknown'
|
||||
end
|
||||
|
||||
local rcpt = task:get_recipients('smtp')
|
||||
if rcpt then
|
||||
local l = {}
|
||||
for _, a in ipairs(rcpt) do
|
||||
table.insert(l, a['addr'])
|
||||
end
|
||||
if not flatten then
|
||||
r.rcpt = l
|
||||
else
|
||||
r.rcpt = table.concat(l, ', ')
|
||||
end
|
||||
else
|
||||
r.rcpt = 'unknown'
|
||||
end
|
||||
local from = task:get_from('smtp')
|
||||
if ((from or E)[1] or E).addr then
|
||||
r.from = from[1].addr
|
||||
else
|
||||
r.from = 'unknown'
|
||||
end
|
||||
local syminf = task:get_symbols_all()
|
||||
if flatten then
|
||||
local l = {}
|
||||
for _, sym in ipairs(syminf) do
|
||||
local txt
|
||||
if sym.options then
|
||||
local topt = table.concat(sym.options, ', ')
|
||||
txt = sym.name .. '(' .. string.format('%.2f', sym.score) .. ')' .. ' [' .. topt .. ']'
|
||||
else
|
||||
txt = sym.name .. '(' .. string.format('%.2f', sym.score) .. ')'
|
||||
end
|
||||
table.insert(l, txt)
|
||||
end
|
||||
r.symbols = table.concat(l, '\n\t')
|
||||
else
|
||||
r.symbols = syminf
|
||||
end
|
||||
local function process_header(name)
|
||||
local hdr = task:get_header_full(name)
|
||||
if hdr then
|
||||
local l = {}
|
||||
for _, h in ipairs(hdr) do
|
||||
table.insert(l, h.decoded)
|
||||
end
|
||||
if not flatten then
|
||||
return l
|
||||
else
|
||||
return table.concat(l, '\n')
|
||||
end
|
||||
else
|
||||
return 'unknown'
|
||||
end
|
||||
end
|
||||
if not no_content then
|
||||
r.header_from = process_header('from')
|
||||
r.header_to = process_header('to')
|
||||
r.header_subject = process_header('subject')
|
||||
r.header_date = process_header('date')
|
||||
r.message_id = task:get_message_id()
|
||||
end
|
||||
return r
|
||||
end
|
||||
|
||||
local formatters = {
|
||||
default = function(task)
|
||||
return task:get_content(), {}
|
||||
end,
|
||||
email_alert = function(task, rule, extra)
|
||||
local meta = get_general_metadata(task, true)
|
||||
local display_emails = {}
|
||||
local mail_targets = {}
|
||||
meta.mail_from = rule.mail_from or settings.mail_from
|
||||
local mail_rcpt = rule.mail_to or settings.mail_to
|
||||
if type(mail_rcpt) ~= 'table' then
|
||||
table.insert(display_emails, string.format('<%s>', mail_rcpt))
|
||||
table.insert(mail_targets, mail_rcpt)
|
||||
else
|
||||
for _, e in ipairs(mail_rcpt) do
|
||||
table.insert(display_emails, string.format('<%s>', e))
|
||||
table.insert(mail_targets, mail_rcpt)
|
||||
end
|
||||
end
|
||||
if rule.email_alert_sender then
|
||||
local x = task:get_from('smtp')
|
||||
if x and string.len(x[1].addr) > 0 then
|
||||
table.insert(mail_targets, x)
|
||||
table.insert(display_emails, string.format('<%s>', x[1].addr))
|
||||
end
|
||||
end
|
||||
if rule.email_alert_user then
|
||||
local x = task:get_user()
|
||||
if x then
|
||||
table.insert(mail_targets, x)
|
||||
table.insert(display_emails, string.format('<%s>', x))
|
||||
end
|
||||
end
|
||||
if rule.email_alert_recipients then
|
||||
local x = task:get_recipients('smtp')
|
||||
if x then
|
||||
for _, e in ipairs(x) do
|
||||
if string.len(e.addr) > 0 then
|
||||
table.insert(mail_targets, e.addr)
|
||||
table.insert(display_emails, string.format('<%s>', e.addr))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
meta.mail_to = table.concat(display_emails, ', ')
|
||||
meta.our_message_id = rspamd_util.random_hex(12) .. '@rspamd'
|
||||
meta.date = rspamd_util.time_to_string(rspamd_util.get_time())
|
||||
return lua_util.template(rule.email_template or settings.email_template, meta), { mail_targets = mail_targets}
|
||||
end,
|
||||
json = function(task)
|
||||
return ucl.to_format(get_general_metadata(task), 'json-compact')
|
||||
end
|
||||
}
|
||||
|
||||
local function is_spam(action)
|
||||
return (action == 'reject' or action == 'add header' or action == 'rewrite subject')
|
||||
end
|
||||
|
||||
local selectors = {
|
||||
default = function(task)
|
||||
return true
|
||||
end,
|
||||
is_spam = function(task)
|
||||
local action = task:get_metric_action('default')
|
||||
return is_spam(action)
|
||||
end,
|
||||
is_spam_authed = function(task)
|
||||
if not task:get_user() then
|
||||
return false
|
||||
end
|
||||
local action = task:get_metric_action('default')
|
||||
return is_spam(action)
|
||||
end,
|
||||
is_reject = function(task)
|
||||
local action = task:get_metric_action('default')
|
||||
return (action == 'reject')
|
||||
end,
|
||||
is_reject_authed = function(task)
|
||||
if not task:get_user() then
|
||||
return false
|
||||
end
|
||||
local action = task:get_metric_action('default')
|
||||
return (action == 'reject')
|
||||
end,
|
||||
}
|
||||
|
||||
local function maybe_defer(task, rule)
|
||||
if rule.defer then
|
||||
rspamd_logger.warnx(task, 'deferring message')
|
||||
task:set_pre_result('soft reject', 'deferred', N)
|
||||
end
|
||||
end
|
||||
|
||||
local pushers = {
|
||||
redis_pubsub = function(task, formatted, rule)
|
||||
local _,ret,upstream
|
||||
local function redis_pub_cb(err)
|
||||
if err then
|
||||
rspamd_logger.errx(task, 'got error %s when publishing on server %s',
|
||||
err, upstream:get_addr())
|
||||
return maybe_defer(task, rule)
|
||||
end
|
||||
return true
|
||||
end
|
||||
ret,_,upstream = rspamd_redis_make_request(task,
|
||||
redis_params, -- connect params
|
||||
nil, -- hash key
|
||||
true, -- is write
|
||||
redis_pub_cb, --callback
|
||||
'PUBLISH', -- command
|
||||
{rule.channel, formatted} -- arguments
|
||||
)
|
||||
if not ret then
|
||||
rspamd_logger.errx(task, 'error connecting to redis')
|
||||
maybe_defer(task, rule)
|
||||
end
|
||||
end,
|
||||
http = function(task, formatted, rule)
|
||||
local function http_callback(err, code)
|
||||
if err then
|
||||
rspamd_logger.errx(task, 'got error %s in http callback', err)
|
||||
return maybe_defer(task, rule)
|
||||
end
|
||||
if code ~= 200 then
|
||||
rspamd_logger.errx(task, 'got unexpected http status: %s', code)
|
||||
return maybe_defer(task, rule)
|
||||
end
|
||||
return true
|
||||
end
|
||||
local hdrs = {}
|
||||
if rule.meta_headers then
|
||||
local gm = get_general_metadata(task, false, true)
|
||||
local pfx = rule.meta_header_prefix or 'X-Rspamd-'
|
||||
for k, v in pairs(gm) do
|
||||
if type(v) == 'table' then
|
||||
hdrs[pfx .. k] = ucl.to_format(v, 'json-compact')
|
||||
else
|
||||
hdrs[pfx .. k] = v
|
||||
end
|
||||
end
|
||||
end
|
||||
rspamd_http.request({
|
||||
task=task,
|
||||
url=rule.url,
|
||||
body=formatted,
|
||||
callback=http_callback,
|
||||
mime_type=rule.mime_type or settings.mime_type,
|
||||
headers=hdrs,
|
||||
})
|
||||
end,
|
||||
send_mail = function(task, formatted, rule, extra)
|
||||
local lua_smtp = require "lua_smtp"
|
||||
local function sendmail_cb(ret, err)
|
||||
if not ret then
|
||||
rspamd_logger.errx(task, 'SMTP export error: %s', err)
|
||||
maybe_defer(task, rule)
|
||||
end
|
||||
end
|
||||
|
||||
lua_smtp.sendmail({
|
||||
task = task,
|
||||
host = rule.smtp,
|
||||
port = rule.smtp_port or settings.smtp_port or 25,
|
||||
from = rule.mail_from or settings.mail_from,
|
||||
recipients = extra.mail_targets or rule.mail_to or settings.mail_to,
|
||||
helo = rule.helo or settings.helo,
|
||||
timeout = rule.timeout or settings.timeout,
|
||||
}, formatted, sendmail_cb)
|
||||
end,
|
||||
}
|
||||
|
||||
local opts = rspamd_config:get_all_opt(N)
|
||||
if not opts then return end
|
||||
local process_settings = {
|
||||
select = function(val)
|
||||
selectors.custom = assert(load(val))()
|
||||
end,
|
||||
format = function(val)
|
||||
formatters.custom = assert(load(val))()
|
||||
end,
|
||||
push = function(val)
|
||||
pushers.custom = assert(load(val))()
|
||||
end,
|
||||
custom_push = function(val)
|
||||
if type(val) == 'table' then
|
||||
for k, v in pairs(val) do
|
||||
pushers[k] = assert(load(v))()
|
||||
end
|
||||
end
|
||||
end,
|
||||
custom_select = function(val)
|
||||
if type(val) == 'table' then
|
||||
for k, v in pairs(val) do
|
||||
selectors[k] = assert(load(v))()
|
||||
end
|
||||
end
|
||||
end,
|
||||
custom_format = function(val)
|
||||
if type(val) == 'table' then
|
||||
for k, v in pairs(val) do
|
||||
formatters[k] = assert(load(v))()
|
||||
end
|
||||
end
|
||||
end,
|
||||
pusher_enabled = function(val)
|
||||
if type(val) == 'string' then
|
||||
if pushers[val] then
|
||||
settings.pusher_enabled[val] = true
|
||||
else
|
||||
rspamd_logger.errx(rspamd_config, 'Pusher type: %s is invalid', val)
|
||||
end
|
||||
elseif type(val) == 'table' then
|
||||
for _, v in ipairs(val) do
|
||||
if pushers[v] then
|
||||
settings.pusher_enabled[v] = true
|
||||
else
|
||||
rspamd_logger.errx(rspamd_config, 'Pusher type: %s is invalid', val)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
for k, v in pairs(opts) do
|
||||
local f = process_settings[k]
|
||||
if f then
|
||||
f(opts[k])
|
||||
else
|
||||
settings[k] = v
|
||||
end
|
||||
end
|
||||
if type(settings.rules) ~= 'table' then
|
||||
-- Legacy config
|
||||
settings.rules = {}
|
||||
if not next(settings.pusher_enabled) then
|
||||
if pushers.custom then
|
||||
rspamd_logger.infox(rspamd_config, 'Custom pusher implicitly enabled')
|
||||
settings.pusher_enabled.custom = true
|
||||
else
|
||||
-- Check legacy options
|
||||
if settings.url then
|
||||
rspamd_logger.warnx(rspamd_config, 'HTTP pusher implicitly enabled')
|
||||
settings.pusher_enabled.http = true
|
||||
end
|
||||
if settings.channel then
|
||||
rspamd_logger.warnx(rspamd_config, 'Redis Pubsub pusher implicitly enabled')
|
||||
settings.pusher_enabled.redis_pubsub = true
|
||||
end
|
||||
if settings.smtp and settings.mail_to then
|
||||
rspamd_logger.warnx(rspamd_config, 'SMTP pusher implicitly enabled')
|
||||
settings.pusher_enabled.send_mail = true
|
||||
end
|
||||
end
|
||||
end
|
||||
if not next(settings.pusher_enabled) then
|
||||
rspamd_logger.errx(rspamd_config, 'No push backend enabled')
|
||||
return
|
||||
end
|
||||
if settings.formatter then
|
||||
settings.format = formatters[settings.formatter]
|
||||
if not settings.format then
|
||||
rspamd_logger.errx(rspamd_config, 'No such formatter: %s', settings.formatter)
|
||||
return
|
||||
end
|
||||
end
|
||||
if settings.selector then
|
||||
settings.select = selectors[settings.selector]
|
||||
if not settings.select then
|
||||
rspamd_logger.errx(rspamd_config, 'No such selector: %s', settings.selector)
|
||||
return
|
||||
end
|
||||
end
|
||||
for k in pairs(settings.pusher_enabled) do
|
||||
local formatter = settings.pusher_format[k]
|
||||
local selector = settings.pusher_select[k]
|
||||
if not formatter then
|
||||
settings.pusher_format[k] = settings.formatter or 'default'
|
||||
rspamd_logger.infox(rspamd_config, 'Using default formatter for %s pusher', k)
|
||||
else
|
||||
if not formatters[formatter] then
|
||||
rspamd_logger.errx(rspamd_config, 'No such formatter: %s - disabling %s', formatter, k)
|
||||
settings.pusher_enabled.k = nil
|
||||
end
|
||||
end
|
||||
if not selector then
|
||||
settings.pusher_select[k] = settings.selector or 'default'
|
||||
rspamd_logger.infox(rspamd_config, 'Using default selector for %s pusher', k)
|
||||
else
|
||||
if not selectors[selector] then
|
||||
rspamd_logger.errx(rspamd_config, 'No such selector: %s - disabling %s', selector, k)
|
||||
settings.pusher_enabled.k = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
if settings.pusher_enabled.redis_pubsub then
|
||||
redis_params = rspamd_parse_redis_server(N)
|
||||
if not redis_params then
|
||||
rspamd_logger.errx(rspamd_config, 'No redis servers are specified')
|
||||
settings.pusher_enabled.redis_pubsub = nil
|
||||
else
|
||||
local r = {}
|
||||
r.backend = 'redis_pubsub'
|
||||
r.channel = settings.channel
|
||||
r.defer = settings.defer
|
||||
r.selector = settings.pusher_select.redis_pubsub
|
||||
r.formatter = settings.pusher_format.redis_pubsub
|
||||
settings.rules[r.backend:upper()] = r
|
||||
end
|
||||
end
|
||||
if settings.pusher_enabled.http then
|
||||
if not settings.url then
|
||||
rspamd_logger.errx(rspamd_config, 'No URL is specified')
|
||||
settings.pusher_enabled.http = nil
|
||||
else
|
||||
local r = {}
|
||||
r.backend = 'http'
|
||||
r.url = settings.url
|
||||
r.mime_type = settings.mime_type
|
||||
r.defer = settings.defer
|
||||
r.selector = settings.pusher_select.http
|
||||
r.formatter = settings.pusher_format.http
|
||||
settings.rules[r.backend:upper()] = r
|
||||
end
|
||||
end
|
||||
if settings.pusher_enabled.send_mail then
|
||||
if not (settings.mail_to and settings.smtp) then
|
||||
rspamd_logger.errx(rspamd_config, 'No mail_to and/or smtp setting is specified')
|
||||
settings.pusher_enabled.send_mail = nil
|
||||
else
|
||||
local r = {}
|
||||
r.backend = 'send_mail'
|
||||
r.mail_to = settings.mail_to
|
||||
r.mail_from = settings.mail_from
|
||||
r.helo = settings.hello
|
||||
r.smtp = settings.smtp
|
||||
r.smtp_port = settings.smtp_port
|
||||
r.email_template = settings.email_template
|
||||
r.defer = settings.defer
|
||||
r.selector = settings.pusher_select.send_mail
|
||||
r.formatter = settings.pusher_format.send_mail
|
||||
settings.rules[r.backend:upper()] = r
|
||||
end
|
||||
end
|
||||
if not next(settings.pusher_enabled) then
|
||||
rspamd_logger.errx(rspamd_config, 'No push backend enabled')
|
||||
return
|
||||
end
|
||||
elseif not next(settings.rules) then
|
||||
lua_util.debugm(N, rspamd_config, 'No rules enabled')
|
||||
return
|
||||
end
|
||||
if not settings.rules or not next(settings.rules) then
|
||||
rspamd_logger.errx(rspamd_config, 'No rules enabled')
|
||||
return
|
||||
end
|
||||
local backend_required_elements = {
|
||||
http = {
|
||||
'url',
|
||||
},
|
||||
smtp = {
|
||||
'mail_to',
|
||||
'smtp',
|
||||
},
|
||||
redis_pubsub = {
|
||||
'channel',
|
||||
},
|
||||
}
|
||||
local check_element = {
|
||||
selector = function(k, v)
|
||||
if not selectors[v] then
|
||||
rspamd_logger.errx(rspamd_config, 'Rule %s has invalid selector %s', k, v)
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end,
|
||||
formatter = function(k, v)
|
||||
if not formatters[v] then
|
||||
rspamd_logger.errx(rspamd_config, 'Rule %s has invalid formatter %s', k, v)
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end,
|
||||
}
|
||||
local backend_check = {
|
||||
default = function(k, rule)
|
||||
local reqset = backend_required_elements[rule.backend]
|
||||
if reqset then
|
||||
for _, e in ipairs(reqset) do
|
||||
if not rule[e] then
|
||||
rspamd_logger.errx(rspamd_config, 'Rule %s misses required setting %s', k, e)
|
||||
settings.rules[k] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
for sett, v in pairs(rule) do
|
||||
local f = check_element[sett]
|
||||
if f then
|
||||
if not f(sett, v) then
|
||||
settings.rules[k] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
backend_check.redis_pubsub = function(k, rule)
|
||||
if not redis_params then
|
||||
redis_params = rspamd_parse_redis_server(N)
|
||||
end
|
||||
if not redis_params then
|
||||
rspamd_logger.errx(rspamd_config, 'No redis servers are specified')
|
||||
settings.rules[k] = nil
|
||||
else
|
||||
backend_check.default(k, rule)
|
||||
end
|
||||
end
|
||||
setmetatable(backend_check, {
|
||||
__index = function()
|
||||
return backend_check.default
|
||||
end,
|
||||
})
|
||||
for k, v in pairs(settings.rules) do
|
||||
if type(v) == 'table' then
|
||||
local backend = v.backend
|
||||
if not backend then
|
||||
rspamd_logger.errx(rspamd_config, 'Rule %s has no backend', k)
|
||||
settings.rules[k] = nil
|
||||
elseif not pushers[backend] then
|
||||
rspamd_logger.errx(rspamd_config, 'Rule %s has invalid backend %s', k, backend)
|
||||
settings.rules[k] = nil
|
||||
else
|
||||
local f = backend_check[backend]
|
||||
f(k, v)
|
||||
end
|
||||
else
|
||||
rspamd_logger.errx(rspamd_config, 'Rule %s has bad type: %s', k, type(v))
|
||||
settings.rules[k] = nil
|
||||
end
|
||||
end
|
||||
|
||||
local function gen_exporter(rule)
|
||||
return function (task)
|
||||
if task:has_flag('skip') then return end
|
||||
local selector = rule.selector or 'default'
|
||||
local selected = selectors[selector](task)
|
||||
if selected then
|
||||
lua_util.debugm(N, task, 'Message selected for processing')
|
||||
local formatter = rule.formatter or 'default'
|
||||
local formatted, extra = formatters[formatter](task, rule)
|
||||
if formatted then
|
||||
pushers[rule.backend](task, formatted, rule, extra)
|
||||
else
|
||||
lua_util.debugm(N, task, 'Formatter [%s] returned non-truthy value [%s]', formatter, formatted)
|
||||
end
|
||||
else
|
||||
lua_util.debugm(N, task, 'Selector [%s] returned non-truthy value [%s]', selector, selected)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not next(settings.rules) then
|
||||
rspamd_logger.errx(rspamd_config, 'No rules enabled')
|
||||
lua_util.disable_module(N, "config")
|
||||
end
|
||||
for k, r in pairs(settings.rules) do
|
||||
rspamd_config:register_symbol({
|
||||
name = 'EXPORT_METADATA_' .. k,
|
||||
type = 'idempotent',
|
||||
callback = gen_exporter(r),
|
||||
priority = 10,
|
||||
flags = 'empty,explicit_disable,ignore_passthrough',
|
||||
})
|
||||
end
|
||||
@@ -1,7 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
if [[ "${FLATCURVE_EXPERIMENTAL}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
echo "FLATCURVE_EXPERIMENTAL=y, skipping Solr but enabling Flatcurve as FTS for Dovecot!"
|
||||
echo "Solr will be removed in the future!"
|
||||
sleep 365d
|
||||
exit 0
|
||||
elif [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
echo "SKIP_SOLR=y, skipping Solr..."
|
||||
echo "HINT: You could try the newer FTS Backend Flatcurve, which is currently in experimental state..."
|
||||
echo "Simply set FLATCURVE_EXPERIMENTAL=y inside your mailcow.conf and restart the stack afterwards!"
|
||||
echo "Solr will be removed in the future!"
|
||||
sleep 365d
|
||||
exit 0
|
||||
fi
|
||||
@@ -57,5 +65,11 @@ if [[ "${1}" == "--bootstrap" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Starting up Solr..."
|
||||
echo -e "\e[31mSolr is deprecated! You can try the new FTS System now by enabling FLATCURVE_EXPERIMENTAL=y inside mailcow.conf and restarting the stack\e[0m"
|
||||
echo -e "\e[31mSolr will be removed completely soon!\e[0m"
|
||||
|
||||
sleep 15
|
||||
|
||||
exec gosu solr solr-foreground
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.18
|
||||
FROM alpine:3.20
|
||||
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
|
||||
@@ -5,9 +5,13 @@ if [[ "${SKIP_UNBOUND_HEALTHCHECK}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||
SKIP_UNBOUND_HEALTHCHECK=y
|
||||
fi
|
||||
|
||||
# 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
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S"): $1" >> /var/log/healthcheck.log
|
||||
}
|
||||
|
||||
# General Ping function to check general pingability
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.18
|
||||
FROM alpine:3.20
|
||||
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
|
||||
|
||||
# Installation
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
auth_mechanisms = plain login
|
||||
#mail_debug = yes
|
||||
#auth_debug = yes
|
||||
#log_debug = category=fts-flatcurve # Activate Logging for Flatcurve FTS Searchings
|
||||
log_path = syslog
|
||||
disable_plaintext_auth = yes
|
||||
# Uncomment on NFS share
|
||||
@@ -194,9 +195,6 @@ plugin {
|
||||
acl_shared_dict = file:/var/vmail/shared-mailboxes.db
|
||||
acl = vfile
|
||||
acl_user = %u
|
||||
fts = solr
|
||||
fts_autoindex = yes
|
||||
fts_solr = url=http://solr:8983/solr/dovecot-fts/
|
||||
quota = dict:Userquota::proxy::sqlquota
|
||||
quota_rule2 = Trash:storage=+100%%
|
||||
sieve = /var/vmail/sieve/%u.sieve
|
||||
@@ -305,6 +303,7 @@ replication_dsync_parameters = -d -l 30 -U -n INBOX
|
||||
!include_try /etc/dovecot/extra.conf
|
||||
!include_try /etc/dovecot/sogo-sso.conf
|
||||
!include_try /etc/dovecot/shared_namespace.conf
|
||||
!include_try /etc/dovecot/conf.d/fts.conf
|
||||
# </Includes>
|
||||
default_client_limit = 10400
|
||||
default_vsz_limit = 1024 M
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
if /^\s*Received:.*Authenticated sender.*\(Postcow\)/
|
||||
#/^Received: from .*? \([\w-.]* \[.*?\]\)\s+\(Authenticated sender: (.+)\)\s+by.+\(Postcow\) with (E?SMTPS?A?) id ([A-F0-9]+).+;.*?/
|
||||
/^Received: from .*? \([\w-.]* \[.*?\]\)(.*|\n.*)\(Authenticated sender: (.+)\)\s+by.+\(Postcow\) with (.*)/
|
||||
/^Received: from .*? \([\w\-.]* \[.*?\]\)(.*|\n.*)\(Authenticated sender: (.+)\)\s+by.+\(Postcow\) with (.*)/
|
||||
REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with $3
|
||||
endif
|
||||
if /^\s*Received: from.* \(.*dovecot-mailcow.*mailcow-network.*\).*\(Postcow\)/
|
||||
|
||||
@@ -114,14 +114,14 @@ smtpd_tls_loglevel = 1
|
||||
|
||||
# Mandatory protocols and ciphers are used when a connections is enforced to use TLS
|
||||
# Does _not_ apply to enforced incoming TLS settings per mailbox
|
||||
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||
lmtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||
smtp_tls_mandatory_protocols = >=TLSv1.2
|
||||
lmtp_tls_mandatory_protocols = >=TLSv1.2
|
||||
smtpd_tls_mandatory_protocols = >=TLSv1.2
|
||||
smtpd_tls_mandatory_ciphers = high
|
||||
|
||||
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||
lmtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||
smtp_tls_protocols = >=TLSv1.2
|
||||
lmtp_tls_protocols = >=TLSv1.2
|
||||
smtpd_tls_protocols = >=TLSv1.2
|
||||
|
||||
smtpd_tls_security_level = may
|
||||
tls_preempt_cipherlist = yes
|
||||
@@ -163,12 +163,12 @@ transport_maps = pcre:/opt/postfix/conf/custom_transport.pcre,
|
||||
proxy:mysql:/opt/postfix/conf/sql/mysql_transport_maps.cf
|
||||
smtp_sasl_auth_soft_bounce = no
|
||||
postscreen_discard_ehlo_keywords = silent-discard, dsn, chunking
|
||||
smtpd_discard_ehlo_keywords = chunking
|
||||
compatibility_level = 2
|
||||
smtpd_discard_ehlo_keywords = chunking, silent-discard
|
||||
compatibility_level = 3.7
|
||||
smtputf8_enable = no
|
||||
# Define protocols for SMTPS and submission service
|
||||
submission_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||
smtps_smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||
submission_smtpd_tls_mandatory_protocols = >=TLSv1.2
|
||||
smtps_smtpd_tls_mandatory_protocols = >=TLSv1.2
|
||||
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,qmqpd_authorized_clients
|
||||
|
||||
# DO NOT EDIT ANYTHING BELOW #
|
||||
|
||||
@@ -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 Mon Apr 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/
|
||||
# 2009 total rules
|
||||
# 1954 total rules
|
||||
2a00:1450:4000::/36 permit
|
||||
2a01:111:f400::/48 permit
|
||||
2a01:111:f403:8000::/50 permit
|
||||
@@ -13,37 +13,35 @@
|
||||
2.207.151.53 permit
|
||||
3.70.123.177 permit
|
||||
3.93.157.0/24 permit
|
||||
3.94.40.108 permit
|
||||
3.129.120.190 permit
|
||||
3.137.16.58 permit
|
||||
3.210.190.0/24 permit
|
||||
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
|
||||
13.110.224.0/20 permit
|
||||
13.111.0.0/16 permit
|
||||
13.111.191.0/24 permit
|
||||
15.200.21.50 permit
|
||||
15.200.44.248 permit
|
||||
15.200.201.185 permit
|
||||
17.41.0.0/16 permit
|
||||
17.57.155.0/24 permit
|
||||
17.57.156.0/24 permit
|
||||
17.58.0.0/16 permit
|
||||
17.142.0.0/15 permit
|
||||
18.156.89.250 permit
|
||||
18.157.243.190 permit
|
||||
18.194.95.56 permit
|
||||
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
|
||||
@@ -65,10 +63,8 @@
|
||||
20.107.239.64/30 permit
|
||||
20.112.250.133 permit
|
||||
20.118.139.208/30 permit
|
||||
20.185.213.160/27 permit
|
||||
20.185.213.224/27 permit
|
||||
20.141.10.196 permit
|
||||
20.185.214.0/27 permit
|
||||
20.185.214.2 permit
|
||||
20.185.214.32/27 permit
|
||||
20.185.214.64/27 permit
|
||||
20.231.239.246 permit
|
||||
@@ -107,21 +103,21 @@
|
||||
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.168.0/23 permit
|
||||
46.19.170.16 permit
|
||||
46.226.48.0/21 permit
|
||||
46.228.36.37 permit
|
||||
@@ -182,11 +178,8 @@
|
||||
50.18.125.237 permit
|
||||
50.18.126.162 permit
|
||||
50.31.32.0/19 permit
|
||||
50.56.130.220 permit
|
||||
50.56.130.221 permit
|
||||
51.137.58.21 permit
|
||||
51.140.75.55 permit
|
||||
51.144.100.179 permit
|
||||
50.31.36.205 permit
|
||||
50.56.130.220/30 permit
|
||||
52.1.14.157 permit
|
||||
52.5.230.59 permit
|
||||
52.27.5.72 permit
|
||||
@@ -194,19 +187,19 @@
|
||||
52.28.63.81 permit
|
||||
52.36.138.31 permit
|
||||
52.37.142.146 permit
|
||||
52.50.24.208 permit
|
||||
52.58.216.183 permit
|
||||
52.59.143.3 permit
|
||||
52.60.41.5 permit
|
||||
52.60.115.116 permit
|
||||
52.61.91.9 permit
|
||||
52.71.0.205 permit
|
||||
52.82.172.0/22 permit
|
||||
52.94.124.0/28 permit
|
||||
52.95.48.152/29 permit
|
||||
52.95.49.88/29 permit
|
||||
52.96.91.34 permit
|
||||
52.96.111.82 permit
|
||||
52.96.214.50 permit
|
||||
52.96.172.98 permit
|
||||
52.96.222.194 permit
|
||||
52.96.222.226 permit
|
||||
52.96.223.2 permit
|
||||
@@ -215,8 +208,6 @@
|
||||
52.100.0.0/14 permit
|
||||
52.103.0.0/17 permit
|
||||
52.119.213.144/28 permit
|
||||
52.160.39.140 permit
|
||||
52.165.175.144 permit
|
||||
52.185.106.240/28 permit
|
||||
52.200.59.0/24 permit
|
||||
52.205.61.79 permit
|
||||
@@ -227,15 +218,12 @@
|
||||
52.222.75.85 permit
|
||||
52.222.89.228 permit
|
||||
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
|
||||
54.174.52.0/24 permit
|
||||
54.174.53.128/30 permit
|
||||
54.174.57.0/24 permit
|
||||
54.174.59.0/24 permit
|
||||
54.174.60.0/23 permit
|
||||
@@ -267,7 +255,6 @@
|
||||
62.201.172.32/27 permit
|
||||
62.253.227.114 permit
|
||||
63.80.14.0/23 permit
|
||||
63.111.28.137 permit
|
||||
63.128.21.0/24 permit
|
||||
63.143.57.128/25 permit
|
||||
63.143.59.128/25 permit
|
||||
@@ -283,17 +270,6 @@
|
||||
64.127.115.252 permit
|
||||
64.132.88.0/23 permit
|
||||
64.132.92.0/24 permit
|
||||
64.147.123.17 permit
|
||||
64.147.123.18 permit
|
||||
64.147.123.19 permit
|
||||
64.147.123.20 permit
|
||||
64.147.123.21 permit
|
||||
64.147.123.24 permit
|
||||
64.147.123.25 permit
|
||||
64.147.123.26 permit
|
||||
64.147.123.27 permit
|
||||
64.147.123.28 permit
|
||||
64.147.123.29 permit
|
||||
64.147.123.128/27 permit
|
||||
64.207.219.7 permit
|
||||
64.207.219.8 permit
|
||||
@@ -348,24 +324,9 @@
|
||||
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.111.4.25 permit
|
||||
66.111.4.26 permit
|
||||
66.111.4.27 permit
|
||||
66.111.4.28 permit
|
||||
66.111.4.29 permit
|
||||
66.111.4.221 permit
|
||||
66.111.4.222 permit
|
||||
66.111.4.224 permit
|
||||
66.111.4.225 permit
|
||||
66.111.4.229 permit
|
||||
66.111.4.230 permit
|
||||
66.119.150.192/26 permit
|
||||
66.135.202.0/27 permit
|
||||
66.135.215.0/24 permit
|
||||
66.135.222.1 permit
|
||||
66.162.193.226/31 permit
|
||||
66.163.184.0/24 permit
|
||||
66.163.185.0/24 permit
|
||||
@@ -471,15 +432,17 @@
|
||||
69.65.42.195 permit
|
||||
69.65.49.192/29 permit
|
||||
69.72.32.0/20 permit
|
||||
69.72.40.93 permit
|
||||
69.72.40.94/31 permit
|
||||
69.72.40.96/30 permit
|
||||
69.72.47.205 permit
|
||||
69.147.84.227 permit
|
||||
69.162.98.0/24 permit
|
||||
69.169.224.0/20 permit
|
||||
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.3.237.64/28 permit
|
||||
72.14.192.0/18 permit
|
||||
72.21.192.0/19 permit
|
||||
72.21.217.142 permit
|
||||
@@ -595,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
|
||||
@@ -1164,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
|
||||
@@ -1286,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
|
||||
@@ -1297,6 +1259,7 @@
|
||||
108.175.30.45 permit
|
||||
108.177.8.0/21 permit
|
||||
108.177.96.0/19 permit
|
||||
108.179.144.0/20 permit
|
||||
109.237.142.0/24 permit
|
||||
111.221.23.128/25 permit
|
||||
111.221.26.0/27 permit
|
||||
@@ -1320,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
|
||||
@@ -1377,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
|
||||
@@ -1406,6 +1356,12 @@
|
||||
139.180.17.0/24 permit
|
||||
141.148.159.229 permit
|
||||
141.193.32.0/23 permit
|
||||
141.193.184.32/27 permit
|
||||
141.193.184.64/26 permit
|
||||
141.193.184.128/25 permit
|
||||
141.193.185.32/27 permit
|
||||
141.193.185.64/26 permit
|
||||
141.193.185.128/25 permit
|
||||
143.55.224.0/21 permit
|
||||
143.55.232.0/22 permit
|
||||
143.55.236.0/22 permit
|
||||
@@ -1419,8 +1375,7 @@
|
||||
144.178.38.0/24 permit
|
||||
145.253.228.160/29 permit
|
||||
145.253.239.128/29 permit
|
||||
146.20.14.105 permit
|
||||
146.20.14.107 permit
|
||||
146.20.14.104/30 permit
|
||||
146.20.112.0/26 permit
|
||||
146.20.113.0/24 permit
|
||||
146.20.191.0/24 permit
|
||||
@@ -1441,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
|
||||
@@ -1451,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
|
||||
@@ -1495,11 +1450,9 @@
|
||||
163.47.180.0/22 permit
|
||||
163.114.130.16 permit
|
||||
163.114.132.120 permit
|
||||
164.177.132.168 permit
|
||||
164.177.132.169 permit
|
||||
164.177.132.170 permit
|
||||
164.177.132.171 permit
|
||||
165.173.128.0/24 permit
|
||||
163.114.134.16 permit
|
||||
163.114.135.16 permit
|
||||
164.177.132.168/30 permit
|
||||
166.78.68.0/22 permit
|
||||
166.78.68.221 permit
|
||||
166.78.69.169 permit
|
||||
@@ -1508,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
|
||||
@@ -1526,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
|
||||
@@ -1575,9 +1524,13 @@
|
||||
185.80.93.227 permit
|
||||
185.80.95.31 permit
|
||||
185.90.20.0/22 permit
|
||||
185.138.56.128/25 permit
|
||||
185.189.236.0/22 permit
|
||||
185.211.120.0/22 permit
|
||||
185.250.236.0/22 permit
|
||||
185.250.239.148 permit
|
||||
185.250.239.168 permit
|
||||
185.250.239.190 permit
|
||||
188.125.68.132 permit
|
||||
188.125.68.152/31 permit
|
||||
188.125.68.156 permit
|
||||
@@ -1645,7 +1598,6 @@
|
||||
193.122.128.100 permit
|
||||
193.123.56.63 permit
|
||||
194.19.134.0/25 permit
|
||||
194.64.234.128/27 permit
|
||||
194.64.234.129 permit
|
||||
194.106.220.0/23 permit
|
||||
194.113.24.0/22 permit
|
||||
@@ -1667,9 +1619,13 @@
|
||||
198.37.144.0/20 permit
|
||||
198.37.152.186 permit
|
||||
198.61.254.0/23 permit
|
||||
198.61.254.21 permit
|
||||
198.61.254.231 permit
|
||||
198.178.234.57 permit
|
||||
198.244.48.0/20 permit
|
||||
198.244.59.30 permit
|
||||
198.244.59.33 permit
|
||||
198.244.59.35 permit
|
||||
198.244.60.0/22 permit
|
||||
198.245.80.0/20 permit
|
||||
198.245.81.0/24 permit
|
||||
@@ -1678,13 +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.82.2 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,7 +1683,6 @@
|
||||
203.209.230.76/31 permit
|
||||
204.11.168.0/21 permit
|
||||
204.13.11.48/29 permit
|
||||
204.13.11.48/30 permit
|
||||
204.14.232.0/21 permit
|
||||
204.14.232.64/28 permit
|
||||
204.14.234.64/28 permit
|
||||
@@ -1742,9 +1691,6 @@
|
||||
204.92.114.187 permit
|
||||
204.92.114.203 permit
|
||||
204.92.114.204/31 permit
|
||||
204.132.224.66 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
|
||||
@@ -1763,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
|
||||
@@ -1780,14 +1727,12 @@
|
||||
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
|
||||
207.68.176.0/26 permit
|
||||
207.68.176.96/27 permit
|
||||
207.97.204.96 permit
|
||||
207.97.204.97 permit
|
||||
207.97.204.96/29 permit
|
||||
207.126.144.0/20 permit
|
||||
207.171.160.0/19 permit
|
||||
207.211.30.64/26 permit
|
||||
@@ -1826,7 +1771,6 @@
|
||||
208.71.42.212/31 permit
|
||||
208.71.42.214 permit
|
||||
208.72.249.240/29 permit
|
||||
208.74.204.0/22 permit
|
||||
208.74.204.5 permit
|
||||
208.74.204.9 permit
|
||||
208.75.120.0/22 permit
|
||||
@@ -1842,6 +1786,9 @@
|
||||
209.46.117.168 permit
|
||||
209.46.117.179 permit
|
||||
209.61.151.0/24 permit
|
||||
209.61.151.236 permit
|
||||
209.61.151.249 permit
|
||||
209.61.151.251 permit
|
||||
209.67.98.46 permit
|
||||
209.67.98.59 permit
|
||||
209.85.128.0/17 permit
|
||||
@@ -1951,7 +1898,6 @@
|
||||
216.39.62.60/31 permit
|
||||
216.39.62.136/29 permit
|
||||
216.39.62.144/31 permit
|
||||
216.46.168.0/24 permit
|
||||
216.58.192.0/19 permit
|
||||
216.66.217.240/29 permit
|
||||
216.71.138.33 permit
|
||||
@@ -1966,9 +1912,6 @@
|
||||
216.99.5.68 permit
|
||||
216.109.114.32/27 permit
|
||||
216.109.114.64/29 permit
|
||||
216.113.160.0/24 permit
|
||||
216.113.172.0/25 permit
|
||||
216.113.175.0/24 permit
|
||||
216.128.126.97 permit
|
||||
216.136.162.65 permit
|
||||
216.136.162.120/29 permit
|
||||
@@ -2007,6 +1950,8 @@
|
||||
2620:109:c00d:104::/64 permit
|
||||
2620:10d:c090:400::8:1 permit
|
||||
2620:10d:c091:400::8:1 permit
|
||||
2620:10d:c09b:400::8:1 permit
|
||||
2620:10d:c09c:400::8:1 permit
|
||||
2620:119:50c0:207::/64 permit
|
||||
2620:119:50c0:207::215 permit
|
||||
2800:3f0:4000::/36 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,4 @@
|
||||
rbls {
|
||||
sorbs {
|
||||
symbol = "RBL_SORBS";
|
||||
rbl = "dnsbl.sorbs.net";
|
||||
returncodes {
|
||||
# http:// www.sorbs.net/general/using.shtml
|
||||
RBL_SORBS_HTTP = "127.0.0.2";
|
||||
RBL_SORBS_SOCKS = "127.0.0.3";
|
||||
RBL_SORBS_MISC = "127.0.0.4";
|
||||
RBL_SORBS_SMTP = "127.0.0.5";
|
||||
RBL_SORBS_RECENT = "127.0.0.6";
|
||||
RBL_SORBS_WEB = "127.0.0.7";
|
||||
RBL_SORBS_DUL = "127.0.0.10";
|
||||
RBL_SORBS_BLOCK = "127.0.0.8";
|
||||
RBL_SORBS_ZOMBIE = "127.0.0.9";
|
||||
}
|
||||
}
|
||||
interserver_ip {
|
||||
symbol = "RBL_INTERSERVER_IP";
|
||||
rbl = "rbl.interserver.net";
|
||||
|
||||
@@ -5,46 +5,6 @@ symbols = {
|
||||
"RBL_UCEPROTECT_LEVEL2" {
|
||||
score = 1.5;
|
||||
}
|
||||
"RBL_SORBS" {
|
||||
score = 0.0;
|
||||
description = "Unrecognised result from SORBS RBL";
|
||||
}
|
||||
"RBL_SORBS_HTTP" {
|
||||
score = 2.5;
|
||||
description = "List of Open HTTP Proxy Servers.";
|
||||
}
|
||||
"RBL_SORBS_SOCKS" {
|
||||
score = 2.5;
|
||||
description = "List of Open SOCKS Proxy Servers.";
|
||||
}
|
||||
"RBL_SORBS_MISC" {
|
||||
score = 1.0;
|
||||
description = "List of open Proxy Servers not listed in the SOCKS or HTTP lists.";
|
||||
}
|
||||
"RBL_SORBS_SMTP" {
|
||||
score = 4.0;
|
||||
description = "List of Open SMTP relay servers.";
|
||||
}
|
||||
"RBL_SORBS_RECENT" {
|
||||
score = 2.0;
|
||||
description = "List of hosts that have been noted as sending spam/UCE/UBE to the admins of SORBS within the last 28 days (includes new.spam.dnsbl.sorbs.net).";
|
||||
}
|
||||
"RBL_SORBS_WEB" {
|
||||
score = 2.0;
|
||||
description = "List of web (WWW) servers which have spammer abusable vulnerabilities (e.g. FormMail scripts)";
|
||||
}
|
||||
"RBL_SORBS_DUL" {
|
||||
score = 2.0;
|
||||
description = "Dynamic IP Address ranges (NOT a Dial Up list!)";
|
||||
}
|
||||
"RBL_SORBS_BLOCK" {
|
||||
score = 0.5;
|
||||
description = "List of hosts demanding that they never be tested by SORBS.";
|
||||
}
|
||||
"RBL_SORBS_ZOMBIE" {
|
||||
score = 2.0;
|
||||
description = "List of networks hijacked from their original owners, some of which have already used for spamming.";
|
||||
}
|
||||
"RECEIVED_SPAMHAUS_XBL" {
|
||||
weight = 0.0;
|
||||
description = "Received address is listed in ZEN XBL";
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
<?php
|
||||
|
||||
// Block requests by checking the 'Sec-Fetch-Dest' header.
|
||||
if (isset($_SERVER['HTTP_SEC_FETCH_DEST']) && $_SERVER['HTTP_SEC_FETCH_DEST'] !== 'empty') {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';
|
||||
if (!isset($_SESSION['mailcow_cc_role']) || $_SESSION['mailcow_cc_role'] != 'admin') {
|
||||
exit();
|
||||
|
||||
@@ -284,17 +284,17 @@ function last_login($action, $username, $sasl_limit_days = 7, $ui_offset = 1) {
|
||||
}
|
||||
if (!$sasl[$k]['location']) {
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL,"https://dfdata.bella.network/lookup/" . $sasl[$k]['real_rip']);
|
||||
curl_setopt($curl, CURLOPT_URL,"https://dfdata.bella.network/country/" . $sasl[$k]['real_rip']);
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curl, CURLOPT_USERAGENT, 'Moocow');
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
|
||||
$ip_data = curl_exec($curl);
|
||||
if (!curl_errno($curl)) {
|
||||
$ip_data_array = json_decode($ip_data, true);
|
||||
if ($ip_data_array !== false and !empty($ip_data_array['location']['shortcountry'])) {
|
||||
$sasl[$k]['location'] = $ip_data_array['location']['shortcountry'];
|
||||
if ($ip_data_array !== false and !empty($ip_data_array['shortcountry'])) {
|
||||
$sasl[$k]['location'] = $ip_data_array['shortcountry'];
|
||||
try {
|
||||
$redis->hSet('IP_SHORTCOUNTRY', $sasl[$k]['real_rip'], $ip_data_array['location']['shortcountry']);
|
||||
$redis->hSet('IP_SHORTCOUNTRY', $sasl[$k]['real_rip'], $ip_data_array['shortcountry']);
|
||||
}
|
||||
catch (RedisException $e) {
|
||||
$_SESSION['return'][] = array(
|
||||
@@ -1560,7 +1560,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)) {
|
||||
|
||||
@@ -145,17 +145,22 @@ function rspamd_maps($_action, $_data = null) {
|
||||
$maps = (array)$_data['map'];
|
||||
$valid_maps = array();
|
||||
foreach ($maps as $map) {
|
||||
$is_valid = false;
|
||||
foreach ($RSPAMD_MAPS as $rspamd_map_type) {
|
||||
if (!in_array($map, $rspamd_map_type)) {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, '-'),
|
||||
'msg' => array('global_map_invalid', $map)
|
||||
);
|
||||
} else {
|
||||
array_push($valid_maps, $map);
|
||||
if (in_array($map, $rspamd_map_type)) {
|
||||
$is_valid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($is_valid) {
|
||||
array_push($valid_maps, $map);
|
||||
} else {
|
||||
$_SESSION['return'][] = array(
|
||||
'type' => 'danger',
|
||||
'log' => array(__FUNCTION__, $_action, '-'),
|
||||
'msg' => array('global_map_invalid', $map)
|
||||
);
|
||||
}
|
||||
}
|
||||
foreach ($valid_maps as $map) {
|
||||
try {
|
||||
|
||||
@@ -49,7 +49,6 @@ $globalVariables = [
|
||||
'app_links' => customize('get', 'app_links'),
|
||||
'is_root_uri' => (parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) == '/'),
|
||||
'uri' => $_SERVER['REQUEST_URI'],
|
||||
'last_login' => last_login('get', $_SESSION['mailcow_cc_username'], 7, 0)['ui']['time']
|
||||
];
|
||||
|
||||
foreach ($globalVariables as $globalVariableName => $globalVariableValue) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
headline: lang.sieve_preset_1
|
||||
content: |
|
||||
require ["reject","body","regex"];
|
||||
if anyof (body :raw :regex ["filename=.*\.doc","filename=.*\.exe","filename=.*\.moo"]) {
|
||||
if anyof (body :raw :regex ["filename=\".*\\.(doc|exe|moo)\""]) {
|
||||
reject text:
|
||||
doc, exe and moo are dangerous file extensions.
|
||||
Why would you do that? I am a sad cow.
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -676,5 +676,5 @@ jQuery(function($){
|
||||
onVisible("[id^=wl_policy_mailbox_table]", () => draw_wl_policy_mailbox_table());
|
||||
onVisible("[id^=sync_job_table]", () => draw_sync_job_table());
|
||||
onVisible("[id^=app_passwd_table]", () => draw_app_passwd_table());
|
||||
last_logins('get');
|
||||
onVisible("[id^=recent-logins]", () => last_logins('get'));
|
||||
});
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"spam_score": "Score SPAM",
|
||||
"syncjobs": "Tâches de synchronisation",
|
||||
"tls_policy": "Politique TLS",
|
||||
"unlimited_quota": "Quota illimité pour les boites de courriel",
|
||||
"unlimited_quota": "Quota illimité pour les boîtes de réception",
|
||||
"domain_desc": "Modifier la description du domaine",
|
||||
"domain_relayhost": "Changer le relais pour un domaine",
|
||||
"mailbox_relayhost": "Changer le relais d’une boîte de réception"
|
||||
@@ -52,7 +52,7 @@
|
||||
"delete2duplicates": "Supprimer les doubles à destination",
|
||||
"description": "Description",
|
||||
"destination": "Destination",
|
||||
"disable_login": "Désactiver l'authentification (les e-mails entrants resteront acceptés)",
|
||||
"disable_login": "Désactiver l'authentification (les courriels entrants resteront acceptés)",
|
||||
"domain": "domaine",
|
||||
"domain_matches_hostname": "Le domaine %s correspond à la machine (hostname)",
|
||||
"domain_quota_m": "Quota total du domaine (Mo)",
|
||||
@@ -68,11 +68,11 @@
|
||||
"hostname": "Nom d'hôte",
|
||||
"inactive": "Inactif",
|
||||
"kind": "Type",
|
||||
"mailbox_quota_def": "Quota boîte mail par défaut",
|
||||
"mailbox_quota_m": "Quota max par boîte (Mo)",
|
||||
"mailbox_quota_def": "Quota boîte de réception par défaut",
|
||||
"mailbox_quota_m": "Quota max par boîte de réception (Mo)",
|
||||
"mailbox_username": "Identifiant (partie gauche d'une adresse de courriel)",
|
||||
"max_aliases": "Nombre maximal d'alias",
|
||||
"max_mailboxes": "Nombre maximal de boîtes",
|
||||
"max_mailboxes": "Nombre maximal de boîtes de réception",
|
||||
"mins_interval": "Période de relève (minutes)",
|
||||
"multiple_bookings": "Inscriptions multiples",
|
||||
"nexthop": "Suivant",
|
||||
@@ -84,10 +84,10 @@
|
||||
"public_comment": "Commentaire public",
|
||||
"quota_mb": "Quota (Mo)",
|
||||
"relay_all": "Relayer tous les destinataires",
|
||||
"relay_all_info": "↪ Si vous choissisez <b>de ne pas</b> relayer tous les destinataires, vous devez ajouter une boîte (\"aveugle\") pour chaque destinataire simple qui doit être relayé.",
|
||||
"relay_all_info": "↪ Si vous choissisez <b>de ne pas</b> relayer tous les destinataires, vous devez ajouter une boîte de réception (\"aveugle\") pour chaque destinataire simple qui doit être relayé.",
|
||||
"relay_domain": "Relayer ce domaine",
|
||||
"relay_transport_info": "<div class=\"badge fs-6 bg-info\">Info</div> Vous pouvez définir des cartes de transport vers une destination personnalisée pour ce domaine. sinon, une recherche MX sera effectuée.",
|
||||
"relay_unknown_only": "Relayer uniquement les boîtes inexistantes. Les boîtes existantes seront livrées localement.",
|
||||
"relay_unknown_only": "Relayer uniquement les boîtes de réception inexistantes. Les boîtes de réception existantes seront livrées localement.",
|
||||
"relayhost_wrapped_tls_info": "Veuillez <b>ne pas</b> utiliser des ports TLS wrappés (généralement utilisés sur le port 465).<br>\r\nUtilisez n'importe quel port non encapsulé et lancez STARTTLS. Une politique TLS pour appliquer TLS peut être créée dans \"Cartes de politique TLS\".",
|
||||
"select": "Veuillez sélectionner…",
|
||||
"select_domain": "Sélectionner d'abord un domaine",
|
||||
@@ -96,7 +96,7 @@
|
||||
"skipcrossduplicates": "Ignorer les messages en double dans les dossiers (premier arrivé, premier servi)",
|
||||
"subscribeall": "S'abonner à tous les dossiers",
|
||||
"syncjob": "Ajouter une tâche de synchronisation",
|
||||
"syncjob_hint": "Sachez que les mots de passe seront sauvegardés en clair !",
|
||||
"syncjob_hint": "Sachez que les mots de passe seront enregistrés en clair !",
|
||||
"target_address": "Aller à l'adresse",
|
||||
"target_address_info": "<small>Adresse(s) de courriel complète(s) (séparées par des virgules).</small>",
|
||||
"target_domain": "Domaine cible",
|
||||
@@ -105,7 +105,7 @@
|
||||
"username": "Nom d'utilisateur",
|
||||
"validate": "Valider",
|
||||
"validation_success": "Validation réussie",
|
||||
"bcc_dest_format": "La destination Cci doit être une seule adresse e-mail valide.<br>Si vous avez besoin d'envoyer une copie à plusieurs adresses, créez un alias et utilisez-le ici.",
|
||||
"bcc_dest_format": "La destination Cci doit être une seule adresse de courriel valide.<br>Si vous avez besoin d'envoyer une copie à plusieurs adresses, créez un alias et utilisez-le ici.",
|
||||
"tags": "Etiquettes",
|
||||
"app_passwd_protocols": "Protocoles autorisés pour le mot de passe de l'application",
|
||||
"dry": "Simuler la synchronisation"
|
||||
@@ -194,7 +194,7 @@
|
||||
"generate": "générer",
|
||||
"guid": "GUID - Identifiant de l'instance",
|
||||
"guid_and_license": "GUID & Licence",
|
||||
"hash_remove_info": "La suppression d'un hachage ratelimit (s'il existe toujours) réinitialisera complètement son compteur.<br>\r\n Chaque hachage est indiqué par une couleur individuelle.",
|
||||
"hash_remove_info": "La suppression d'un hachage limite d'envoi (s'il existe toujours) réinitialisera complètement son compteur.<br>\n Chaque hachage est indiqué par une couleur individuelle.",
|
||||
"help_text": "Remplacer le texte d'aide sous le masque de connexion (HTML autorisé)",
|
||||
"host": "Hôte",
|
||||
"html": "HTML",
|
||||
@@ -203,7 +203,7 @@
|
||||
"in_use_by": "Utilisé par",
|
||||
"inactive": "Inactif",
|
||||
"include_exclude": "Inclure/Exclure",
|
||||
"include_exclude_info": "Par défaut - sans sélection - <b>toutes les boîtes</b> sont adressées",
|
||||
"include_exclude_info": "Par défaut - sans sélection - <b>toutes les boîte de réception</b> sont adressées",
|
||||
"includes": "Inclure ces destinataires",
|
||||
"last_applied": "Dernière application",
|
||||
"license_info": "Une licence n’est pas requise, mais contribue au développement.<br><a href=\"https://www.servercow.de/mailcow?lang=en#sal\" target=\"_blank\" alt=\"SAL order\">Enregistrer votre GUID ici</a> or <a href=\"https://www.servercow.de/mailcow?lang=en#support\" target=\"_blank\" alt=\"Support order\">acheter le support pour votre intallation Mailcow.</a>",
|
||||
@@ -222,7 +222,7 @@
|
||||
"no_record": "Aucun enregistrement",
|
||||
"oauth2_client_id": "Client ID",
|
||||
"oauth2_client_secret": "Secret client",
|
||||
"oauth2_info": "L'implémentation OAuth2 prend en charge le type d'autorisation \"Authorization Code\" et émet des jetons d'actualisation.<br>\nLe serveur émet également automatiquement de nouveaux jetons d'actualisation, après qu'un jeton d'actualisation a été utilisé.<br><br>\n→ La portée par défaut est <i>profile</i>. Seuls les utilisateurs d'une boîte peuvent être authentifiés par rapport à OAuth2. Si le paramètre scope est omis, il revient au <i>profile</i>.<br>\n→ Le paramètre <i>state</i> doit être envoyé par le client dans le cadre de la demande d'autorisation.<br><br>\nChemins d'accès aux requêtes vers l'API OAuth <br>\n<ul>\n <li>Point de terminaison d'autorisation : <code>/oauth/authorize</code></li>\n <li>Point de terminaison du jeton : <code>/oauth/token</code></li>\n <li>Page de ressource : <code>/oauth/profile</code></li>\n</ul>\nLa régénération du secret client ne fera pas expirer les codes d'autorisation existants, mais ils ne pourront pas renouveler leur jeton.<br><br>\nLa révocation des jetons clients entraînera la fin immédiate de toutes les sessions actives. Tous les clients doivent se ré-authentifier.",
|
||||
"oauth2_info": "L'implémentation OAuth2 prend en charge le type d'autorisation \"Authorization Code\" et émet des jetons d'actualisation.<br>\nLe serveur émet également automatiquement de nouveaux jetons d'actualisation, après qu'un jeton d'actualisation a été utilisé.<br><br>\n→ La portée par défaut est <i>profile</i>. Seuls les utilisateurs d'une boîte de réception peuvent être authentifiés par rapport à OAuth2. Si le paramètre scope est omis, il revient au <i>profile</i>.<br>\n→ Le paramètre <i>state</i> doit être envoyé par le client dans le cadre de la demande d'autorisation.<br><br>\nChemins d'accès aux requêtes vers l'API OAuth <br>\n<ul>\n <li>Point de terminaison d'autorisation : <code>/oauth/authorize</code></li>\n <li>Point de terminaison du jeton : <code>/oauth/token</code></li>\n <li>Page de ressource : <code>/oauth/profile</code></li>\n</ul>\nLa régénération du secret client ne fera pas expirer les codes d'autorisation existants, mais ils ne pourront pas renouveler leur jeton.<br><br>\nLa révocation des jetons clients entraînera la fin immédiate de toutes les sessions actives. Tous les clients doivent se ré-authentifier.",
|
||||
"oauth2_redirect_uri": "URI de redirection",
|
||||
"oauth2_renew_secret": "Générer un nouveau secret client",
|
||||
"oauth2_revoke_tokens": "Révoquer tous les jetons",
|
||||
@@ -237,24 +237,24 @@
|
||||
"quarantine_max_age": "Âge maximun en jour(s)<br><small>La valeur doit être égale ou supérieure à 1 jour.</small>",
|
||||
"quarantine_max_size": "Taille maximum en Mo (les éléments plus grands sont mis au rebut):<br><small>0 ne signifie <b>pas</b> illimité.</small>",
|
||||
"quarantine_max_score": "Ignorer la notification si le score de spam est au dessus de cette valeur :<br><small>Par défaut : 9999.0</small>",
|
||||
"quarantine_notification_html": "Modèle de courriel de notification:<br><small>Laisser vide pour restaurer le modèle par défaut.</small>",
|
||||
"quarantine_notification_sender": "Notification par e-mail de l’expéditeur",
|
||||
"quarantine_notification_html": "Modèle de courriel de notification :<br><small>Laisser vide pour restaurer le modèle par défaut.</small>",
|
||||
"quarantine_notification_sender": "Notification par courriel de l’expéditeur",
|
||||
"quarantine_notification_subject": "Objet du courriel de notification",
|
||||
"quarantine_redirect": "<b>Rediriger toutes les notifications</b> vers ce destinataire:<br><small>Laisser vide pour désactiver. <b>Courrier non signé et non coché. Doit être livré en interne seulement.</b></small>",
|
||||
"quarantine_release_format": "Format des éléments diffusés",
|
||||
"quarantine_release_format_att": "En pièce jointe",
|
||||
"quarantine_release_format_raw": "Original non modifié",
|
||||
"quarantine_retention_size": "Rétentions par boîte:<br><small>0 indique <b>inactive</b>.</small>",
|
||||
"quota_notification_html": "Modèle de courriel de notification:<br><small>Laisser vide pour restaurer le modèle par défaut.</small>",
|
||||
"quota_notification_sender": "Notification par e-mail de l’expéditeur",
|
||||
"quarantine_retention_size": "Rétentions par boîte de réception:<br><small>0 indique <b>inactive</b>.</small>",
|
||||
"quota_notification_html": "Modèle de courriel de notification :<br><small>Laisser vide pour restaurer le modèle par défaut.</small>",
|
||||
"quota_notification_sender": "Notification par courriel de l’expéditeur",
|
||||
"quota_notification_subject": "Objet du courriel de notification",
|
||||
"quota_notifications": "Notifications de quotas",
|
||||
"quota_notifications_info": "Les notications de quota sont envoyées aux utilisateurs une fois lors du passage à 80 % et une fois lors du passage à 95 % d’utilisation.",
|
||||
"quota_notifications_vars": "{{percent}} égale le quota actuel de l’utilisateur<br>{{username}} est le nom de la boîte",
|
||||
"quota_notifications_vars": "{{percent}} égale le quota actuel de l’utilisateur<br>{{username}} est le nom de la boîte de réception",
|
||||
"r_active": "Restrictions actives",
|
||||
"r_inactive": "Restrictions inactives",
|
||||
"r_info": "Les éléments grisés/désactivés sur la liste des restrictions actives ne sont pas considérés comme des restrictions valides pour Mailcow et ne peuvent pas être déplacés. Des restrictions inconnues seront établies par ordre d’apparition de toute façon. <br>Vous pouvez ajouter de nouveaux éléments dans le code <code>inc/vars.local.inc.php</code> pour pouvoir les basculer.",
|
||||
"rate_name": "Nom du taux",
|
||||
"rate_name": "Nom de la limite",
|
||||
"recipients": "Destinataires",
|
||||
"refresh": "Rafraîchir",
|
||||
"regen_api_key": "Regénérer la clé API",
|
||||
@@ -274,9 +274,9 @@
|
||||
"rsetting_no_selection": "Veuillez sélectionner une règle",
|
||||
"rsetting_none": "Pas de règles disponibles",
|
||||
"rsettings_insert_preset": "Insérer un exemple de préréglage \"%s\"",
|
||||
"rsettings_preset_1": "Désactiver tout sauf DKIM et la limite tarifaire pour les utilisateurs authentifiés",
|
||||
"rsettings_preset_1": "Désactiver tout sauf DKIM et la limite d'envoi pour les utilisateurs authentifiés",
|
||||
"rsettings_preset_2": "Les postmasters veulent du spam",
|
||||
"rsettings_preset_3": "Autoriser uniquement des expéditeurs particuliers pour une boîte (c.-à-d. utilisation comme boîte interne seulement)",
|
||||
"rsettings_preset_3": "Autoriser uniquement des expéditeurs particuliers pour une boîte de réception (c.-à-d. utilisation comme boîte de réception interne seulement)",
|
||||
"rspamd_com_settings": "Un nom de paramètre sera généré automatiquement, voir l’exemple de préréglages ci-dessous. Pour plus de détails voir : <a href=\"https://rspamd.com/doc/configuration/settings.html#settings-structure\" target=\"_blank\">Docs Rspamd</a>",
|
||||
"rspamd_global_filters": "Cartes des filtres globaux",
|
||||
"rspamd_global_filters_agree": "Je serai prudent !",
|
||||
@@ -312,7 +312,7 @@
|
||||
"ui_header_announcement_type_warning": "Important",
|
||||
"ui_header_announcement_type_danger": "Très important",
|
||||
"ui_texts": "Textes et étiquettes de l'interface utilisateur",
|
||||
"unban_pending": "unban en attente",
|
||||
"unban_pending": "Débanissement en attente",
|
||||
"unchanged_if_empty": "Si non modifié, laisser en blanc",
|
||||
"upload": "Charger",
|
||||
"username": "Nom d'utilisateur",
|
||||
@@ -338,7 +338,12 @@
|
||||
"oauth2_apps": "Applications OAuth2",
|
||||
"password_length": "Longueur des mots de passe",
|
||||
"password_policy_chars": "Doit contenir au moins une lettre",
|
||||
"password_policy_length": "La longueur minimale du mot de passe est de %d"
|
||||
"password_policy_length": "La longueur minimale du mot de passe est de %d",
|
||||
"f2b_manage_external_info": "Fail2ban maintiendra la liste de bannissement, mais ne définira pas activement de règles pour bloquer le trafic. Utilisez la liste de bannissement générée ci-dessous pour bloquer le trafic de manière externe.",
|
||||
"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"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Accès refusé ou données de formulaire non valides",
|
||||
@@ -352,9 +357,9 @@
|
||||
"app_passwd_id_invalid": "Le mot de passe ID %s de l'application est non valide",
|
||||
"bcc_empty": "La destination BCC destination ne peut pas être vide",
|
||||
"bcc_exists": "Une carte de transport BCC %s existe pour le type %s",
|
||||
"bcc_must_be_email": "Le destination BCC %s n'est pas une adresse e-mail valide",
|
||||
"bcc_must_be_email": "La destination BCC %s n'est pas une adresse de courriel valide",
|
||||
"comment_too_long": "Le commentaire est trop long, 160 caractère max sont permis",
|
||||
"defquota_empty": "Le quota par défaut par boîte ne doit pas être 0.",
|
||||
"defquota_empty": "Le quota par défaut par boîte de réception doit pas être 0.",
|
||||
"description_invalid": "La description des ressources pour %s est non valide",
|
||||
"dkim_domain_or_sel_exists": "Une clé DKIM pour \"%s\" existe et ne sera pas écrasée",
|
||||
"dkim_domain_or_sel_invalid": "Domaine ou sélection DKIM non valide : %s",
|
||||
@@ -389,22 +394,22 @@
|
||||
"invalid_recipient_map_old": "Destinataire original spécifié non valide : %s",
|
||||
"ip_list_empty": "La liste des adresses IP autorisées ne peut pas être vide",
|
||||
"is_alias": "%s est déjà connu comme une adresse alias",
|
||||
"is_alias_or_mailbox": "%s est déjà connu comme un alias, une boîte ou une adresse alias développée à partir d’un domaine alias.",
|
||||
"is_alias_or_mailbox": "%s est déjà connu comme un alias, une boîte de réception ou une adresse alias développée à partir d’un domaine alias.",
|
||||
"is_spam_alias": "%s est déjà connu comme une adresse alias temporaire (alias d'adresse spam)",
|
||||
"last_key": "La dernière clé ne peut pas être supprimée, veuillez désactiver TFA à la place.",
|
||||
"login_failed": "La connexion a échoué",
|
||||
"mailbox_defquota_exceeds_mailbox_maxquota": "Le quota par défaut dépasse la limite maximale du quota",
|
||||
"mailbox_invalid": "Le nom de la boîte n'est pas valide",
|
||||
"mailbox_invalid": "Le nom de la boîte de réception n'est pas valide",
|
||||
"mailbox_quota_exceeded": "Le quota dépasse la limite du domaine (max. %d Mo)",
|
||||
"mailbox_quota_exceeds_domain_quota": "Le quota maximum dépasse la limite du quota de domaine",
|
||||
"mailbox_quota_exceeds_domain_quota": "Le quota maximal dépasse la limite du quota de domaine",
|
||||
"mailbox_quota_left_exceeded": "Espace libre insuffisant (espace libre : %d Mio)",
|
||||
"mailboxes_in_use": "Le max. des boîtes doit être supérieur ou égal à %d",
|
||||
"mailboxes_in_use": "Le max. des boîtes de réception doit être supérieur ou égal à %d",
|
||||
"malformed_username": "Nom d’utilisateur malformé",
|
||||
"map_content_empty": "Le contenu de la carte ne peut pas être vide",
|
||||
"max_alias_exceeded": "Le nombre max. d'aliases est dépassé",
|
||||
"max_mailbox_exceeded": "Le nombre max. de boîte est dépassé (%d of %d)",
|
||||
"max_quota_in_use": "Le quota de la boîte doit être supérieur ou égal à %d Mo",
|
||||
"maxquota_empty": "Le quota maximum par boîte ne doit pas être de 0.",
|
||||
"max_mailbox_exceeded": "Le nombre max. de boîte de réception est dépassé (%d of %d)",
|
||||
"max_quota_in_use": "Le quota de la boîte de réception doit être supérieur ou égal à %d Mo",
|
||||
"maxquota_empty": "Le quota maximum par boîte de réception ne doit pas être de 0.",
|
||||
"mysql_error": "Erreur MySQL : %s",
|
||||
"nginx_reload_failed": "Le rechargement de Nginx a échoué : %s",
|
||||
"network_host_invalid": "Réseau ou hôte non valide : %s",
|
||||
@@ -429,15 +434,15 @@
|
||||
"release_send_failed": "Le message n’a pas pu être diffusé : %s",
|
||||
"reset_f2b_regex": "Le filtre regex n'a pas pu être réinitialisé à temps, veuillez réessayer ou attendre quelques secondes de plus et recharger le site web.",
|
||||
"resource_invalid": "Le nom de la resource %s n'est pas valide",
|
||||
"rl_timeframe": "Le délai limite du taux est incorrect",
|
||||
"rspamd_ui_pw_length": "Le mot de passe de l'interface Rspamd doit être de 6 caratères au minimum",
|
||||
"rl_timeframe": "Le délai de la limite d'envoi est incorrect",
|
||||
"rspamd_ui_pw_length": "Le mot de passe de l'interface Rspamd doit être de 6 caractères au minimum",
|
||||
"script_empty": "Le script ne peut pas être vide",
|
||||
"sender_acl_invalid": "La valeur ACL de l’expéditeur %s est invalide",
|
||||
"set_acl_failed": "Impossible de définir ACL",
|
||||
"set_acl_failed": "Impossible de définir l'ACL",
|
||||
"settings_map_invalid": "La carte des paramètres %s est invalide",
|
||||
"sieve_error": "Erreur d'analyse syntaxique Sieve : %s",
|
||||
"spam_learn_error": "Erreur d'apprentissage du spam : %s",
|
||||
"subject_empty": "Le sujet ne peut^pas être vide",
|
||||
"subject_empty": "Le sujet ne peut pas être vide",
|
||||
"target_domain_invalid": "Le domaine cible %s n'est pas valide",
|
||||
"targetd_not_found": "Le domaine cible %s est introuvable",
|
||||
"targetd_relay_domain": "Le domaine cible %s est un domaine de relais",
|
||||
@@ -449,7 +454,7 @@
|
||||
"tls_policy_map_parameter_invalid": "Le paramètre Policy est invalide",
|
||||
"totp_verification_failed": "Echec de la vérification TOTP",
|
||||
"transport_dest_exists": "La destination de transport \"%s\" existe",
|
||||
"webauthn_verification_failed": "Echec de la vérification WebAuthn : %s",
|
||||
"webauthn_verification_failed": "Échec de la vérification WebAuthn : %s",
|
||||
"fido2_verification_failed": "La vérification FIDO2 a échoué : %s",
|
||||
"unknown": "Une erreur inconnue est survenue",
|
||||
"unknown_tfa_method": "Methode TFA inconnue",
|
||||
@@ -458,13 +463,18 @@
|
||||
"validity_missing": "Veuillez attribuer une période de validité",
|
||||
"value_missing": "Veuillez fournir toutes les valeurs",
|
||||
"yotp_verification_failed": "La vérification Yubico OTP a échoué : %s",
|
||||
"webauthn_authenticator_failed": "L'authentificateur selectionné est introuvable",
|
||||
"webauthn_authenticator_failed": "L'authentificateur sélectionné est introuvable",
|
||||
"demo_mode_enabled": "Le mode de démonstration est activé",
|
||||
"template_exists": "La template %s existe déja",
|
||||
"template_id_invalid": "Le numéro de template %s est invalide",
|
||||
"template_name_invalid": "Le nom de la template est invalide",
|
||||
"template_exists": "Le modèle %s existe déjà",
|
||||
"template_id_invalid": "Le numéro de modèle %s est invalide",
|
||||
"template_name_invalid": "Le nom du modèle est invalide",
|
||||
"img_dimensions_exceeded": "L'image dépasse les dimensions maximales",
|
||||
"img_size_exceeded": "L'image dépasse la taille maximale de fichier"
|
||||
"img_size_exceeded": "L'image dépasse la taille maximale de fichier",
|
||||
"webauthn_publickey_failed": "Aucune clé publique n'a été stockée pour l'authentificateur sélectionné.",
|
||||
"cors_invalid_method": "Allow-Method specifiée invalide",
|
||||
"cors_invalid_origin": "Allow-Origin spécifiée invalide",
|
||||
"extended_sender_acl_denied": "ACL manquante pour définir les adresses des expéditeurs externes",
|
||||
"webauthn_username_failed": "L'authentificateur sélectionné appartient à un autre compte"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "Graphique (ce serveur)",
|
||||
@@ -474,7 +484,7 @@
|
||||
"history_all_servers": "Historique (tous les serveurs)",
|
||||
"in_memory_logs": "Logs En-mémoire",
|
||||
"jvm_memory_solr": "Utilisation mémoire JVM",
|
||||
"log_info": "<p>Les logs <b>En-mémoire</b> Mailcow sont collectés dans des listes Redis et découpées en LOG_LINES (%d) chaque minute pour réduire la charge.\r\n <br>Les logs En-mémoire ne sont pas destinés à être persistants. Toutes les applications qui se connectent en mémoire, se connectent également au démon Docker et donc au pilote de journalisation par défaut.\r\n <br>Le type de journal en mémoire doit être utilisé pour déboguer les problèmes mineurs avec les conteneurs.</p>\r\n <p><b>Les logs externes</b> sont collectés via l'API de l'application concernée.</p>\r\n <p>Les journaux <b>statiques</b> sont principalement des journaux d’activité, qui ne sont pas enregistrés dans Dockerd, mais qui doivent toujours être persistants (sauf pour les logs API).</p>",
|
||||
"log_info": "<p>Les logs <b>En-mémoire</b> Mailcow sont collectés dans des listes Redis et découpées en LOG_LINES (%d) chaque minute pour réduire la charge.\n <br>Les logs En-mémoire ne sont pas destinés à être persistants. Toutes les applications qui se connectent en mémoire, se connectent également au démon Docker, et donc au pilote de journalisation par défaut.\n <br>Le type de journal en mémoire doit être utilisé pour déboguer les problèmes mineurs avec les conteneurs.</p>\n <p><b>Les logs externes</b> sont collectés via l'API de l'application concernée.</p>\n <p>Les journaux <b>statiques</b> sont principalement des journaux d’activité, qui ne sont pas enregistrés dans Dockerd, mais qui doivent toujours être persistants (sauf pour les logs API).</p>",
|
||||
"logs": "Logs",
|
||||
"restart_container": "Redémarrer",
|
||||
"solr_dead": "Solr est en cours de démarrage, désactivé ou mort.",
|
||||
@@ -487,7 +497,13 @@
|
||||
"uptime": "Disponibilité",
|
||||
"started_on": "Démarré à",
|
||||
"static_logs": "Logs statiques",
|
||||
"system_containers": "Système & Conteneurs"
|
||||
"system_containers": "Système & Conteneurs",
|
||||
"timezone": "Fuseau horaire",
|
||||
"username": "Nom d'utilisateur",
|
||||
"wip": "En cours de réalisation",
|
||||
"architecture": "Architecture",
|
||||
"cores": "Cœurs",
|
||||
"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.",
|
||||
@@ -496,7 +512,7 @@
|
||||
"dns_records_docs": "Veuillez également consulter <a target=\"_blank\" href=\"https://docs.mailcow.email/getstarted/prerequisite-dns\">la documentation</a>.",
|
||||
"dns_records_data": "Données correcte",
|
||||
"dns_records_name": "Nom",
|
||||
"dns_records_status": "Etat courant",
|
||||
"dns_records_status": "État courant",
|
||||
"dns_records_type": "Type",
|
||||
"optional": "Cet enregistrement est optionel."
|
||||
},
|
||||
@@ -511,7 +527,7 @@
|
||||
"app_passwd": "Mot de passe de l'application",
|
||||
"automap": "Essayer d’automatiser les dossiers (\"Sent items\", \"Sent\" => \"Sent\" etc.)",
|
||||
"backup_mx_options": "Options Backup MX",
|
||||
"bcc_dest_format": "La destination BCC doit être une seule adresse e-mail valide.",
|
||||
"bcc_dest_format": "La destination BCC doit être une seule adresse de courriel valide.",
|
||||
"client_id": "ID client",
|
||||
"client_secret": "Secret client",
|
||||
"comment_info": "Un commentaire privé n’est pas visible pour l’utilisateur, tandis qu’un commentaire public est affiché comme infobulle lorsque vous le placez dans un aperçu des utilisateurs",
|
||||
@@ -527,7 +543,7 @@
|
||||
"domains": "Domaines",
|
||||
"dont_check_sender_acl": "Désactiver la vérification de l’expéditeur pour le domaine %s (+ alias de domaines)",
|
||||
"edit_alias_domain": "Édition des alias de domaine",
|
||||
"encryption": "Cryptage",
|
||||
"encryption": "Chiffrement",
|
||||
"exclude": "Exclure des objets (regex)",
|
||||
"extended_sender_acl": "Adresses de l’expéditeur externe",
|
||||
"extended_sender_acl_info": "Une clé de domaine DKIM doit être importée, si disponible.<br>\r\n N’oubliez pas d’ajouter ce serveur à l’enregistrement TXT SPF correspondant.<br>\r\n Chaque fois qu’un domaine ou un alias de domaine est ajouté à ce serveur, et qui chevauche une adresse externe, l’adresse externe est supprimée.<br>\r\n Utiliser @domain.tld pour permettre l'envoi comme *@domain.tld.",
|
||||
@@ -542,14 +558,14 @@
|
||||
"inactive": "Inactif",
|
||||
"kind": "Type",
|
||||
"last_modified": "Dernière modification",
|
||||
"mailbox": "Édition de la boîte mail",
|
||||
"mailbox_quota_def": "Quota par défaut de la boîte",
|
||||
"mailbox": "Édition de la boîte de réception",
|
||||
"mailbox_quota_def": "Quota par défaut de la boîte de réception",
|
||||
"max_aliases": "Nombre max. d'alias",
|
||||
"max_mailboxes": "Nombre max. de boîtes possibles",
|
||||
"max_quota": "Quota max. par boîte mail (Mo)",
|
||||
"max_mailboxes": "Nombre max. de boîte de réception possibles",
|
||||
"max_quota": "Quota max. par boîte de réception (Mo)",
|
||||
"maxage": "Âge maximal en jours des messages qui seront consultés à distance<br><small>(0 = ignorer la durée)</small>",
|
||||
"maxbytespersecond": "Octets max. par seconde <br><small>(0 = pas de limite)</small>",
|
||||
"mbox_rl_info": "Cette limite de taux est appliquée au nom de connexion SASL, elle correspond à toute adresse \"from\" utilisée par l’utilisateur connecté. Une limite tarifaire pour les boîtes remplace une limite tarifaire pour l’ensemble du domaine.",
|
||||
"mbox_rl_info": "Cette limite d'envoi est appliquée au nom de connexion SASL, elle correspond à toute adresse \"from\" utilisée par l’utilisateur connecté. Une limite d'envoi pour les boîtes de réception remplace une limite d'envoi pour l’ensemble du domaine.",
|
||||
"mins_interval": "Intervalle (min)",
|
||||
"multiple_bookings": "Réservations multiples",
|
||||
"nexthop": "Saut suivant",
|
||||
@@ -559,22 +575,22 @@
|
||||
"private_comment": "Commentaire privé",
|
||||
"public_comment": "Commentaire public",
|
||||
"pushover_evaluate_x_prio": "Acheminement du courrier hautement prioritaire [<code>X-Priority: 1</code>]",
|
||||
"pushover_info": "Les paramètres de notification push s’appliqueront à tout le courrier propre (non spam) livré à <b>%s</b> y compris les alias (partagés, non partagés, étiquetés).",
|
||||
"pushover_info": "Les paramètres de notification push s’appliqueront à tout le courrier propre (non-spam) livré à <b>%s</b> y compris les alias (partagés, non partagés, étiquetés).",
|
||||
"pushover_only_x_prio": "Ne tenir compte que du courrier hautement prioritaire [<code>X-Priority: 1</code>]",
|
||||
"pushover_sender_array": "Ne tenir compte que des adresses électroniques suivantes de l’expéditeur : <small>(séparées par des virgules)</small>",
|
||||
"pushover_sender_array": "Ne tenir compte que des adresses de courriel suivantes de l’expéditeur : <small>(séparées par des virgules)</small>",
|
||||
"pushover_sender_regex": "Tenir compte de l’expéditeur regex suivant",
|
||||
"pushover_text": "Texte de la notification",
|
||||
"pushover_title": "Titre de la notification",
|
||||
"pushover_vars": "Lorsque aucun filtre d’expéditeur n’est défini, tous les messages seront considérés.<br>Les filtres Regex ainsi que les vérifications exactes de l’expéditeur peuvent être définis individuellement et seront considérés de façon séquentielle. Ils ne dépendent pas les uns des autres.<br>Variables utilisables pour le texte et le titre (veuillez prendre note des politiques de protection des données)",
|
||||
"pushover_verify": "Vérifier les justificatifs",
|
||||
"pushover_verify": "Vérifier les informations d'identification",
|
||||
"quota_mb": "Quota (Mo)",
|
||||
"ratelimit": "Limite de taux",
|
||||
"redirect_uri": "Redirection/rappel URL",
|
||||
"ratelimit": "Limite d'envoi",
|
||||
"redirect_uri": "URL de redirection/callback",
|
||||
"relay_all": "Relayer tous les destinataires",
|
||||
"relay_all_info": "↪ Si vous <b>ne choissisez pas</b> de relayer tous les destinataires, vous devrez ajouter une boîte (\"aveugle\") pour chaque destinataire qui devrait être relayé.",
|
||||
"relay_all_info": "↪ Si vous <b>ne choisissez pas</b> de relayer tous les destinataires, vous devrez ajouter une boîte de réception (\"aveugle\") pour chaque destinataire qui devrait être relayé.",
|
||||
"relay_domain": "Relayer ce domaine",
|
||||
"relay_transport_info": "<div class=\"badge fs-6 bg-info\">Info</div> Vous pouvez définir des cartes de transport vers une destination personnalisée pour ce domaine. Si elle n’est pas configurée, une recherche MX sera effectuée.",
|
||||
"relay_unknown_only": "Relais des boîtes non existantes seulement. Les boîtes existantes seront livrées localement..",
|
||||
"relay_unknown_only": "Relais des boîtes de réception non existantes seulement. Les boîtes de réception existantes seront livrées localement.",
|
||||
"relayhost": "Transports dépendant de l’expéditeur",
|
||||
"remove": "Enlever",
|
||||
"resource": "Ressource",
|
||||
@@ -582,12 +598,12 @@
|
||||
"scope": "Portée",
|
||||
"sender_acl": "Permettre d’envoyer comme",
|
||||
"sender_acl_disabled": "<span class=\"badge fs-6 bg-danger\">Le contrôle de l’expéditeur est désactivé</span>",
|
||||
"sender_acl_info": "Si l’utilisateur de la boîte A est autorisé à envoyer en tant qu’utilisateur de la boîte B, l’adresse de l’expéditeur n’est pas automatiquement affichée comme sélectionnable du champ \"from\" dans SOGo.<br>\r\n L’utilisateur B de la boîte doit créer une délégation dans Sogo pour permettre à l’utilisateur A de la boîte de sélectionner son adresse comme expéditeur. Pour déléguer une boîte dans Sogo, utilisez le menu (trois points) à droite du nom de votre boîte dans le coin supérieur gauche dans la vue de courrier. Ce comportement ne s’applique pas aux adresses alias.",
|
||||
"sender_acl_info": "Si l’utilisateur de la boîte de réception A est autorisé à envoyer en tant qu’utilisateur de la boîte de réception B, l’adresse de l’expéditeur n’est pas automatiquement affichée comme sélectionnable du champ \"de\" dans SOGo.<br>\n L’utilisateur B de la boîte de réception doit créer une délégation dans Sogo pour permettre à l’utilisateur A de la boîte de réception de sélectionner son adresse comme expéditeur. Pour déléguer une boîte de réception dans Sogo, utilisez le menu (trois points) à droite du nom de votre boîte dans le coin supérieur gauche dans la vue de courrier. Ce comportement ne s’applique pas aux adresses alias.",
|
||||
"sieve_desc": "Description courte",
|
||||
"sieve_type": "Type de filtre",
|
||||
"skipcrossduplicates": "Ignorer les messages en double dans les dossiers (premier arrivé, premier servi)",
|
||||
"sogo_visible": "Alias visible dans SOGo",
|
||||
"sogo_visible_info": "Cette option affecte uniquement les objets qui peuvent être affichés dans SOGo (adresses alias partagées ou non partagées pointant vers au moins une boîte mail locale). Si caché, un alias n’apparaîtra pas comme expéditeur sélectionnable dans SOGo.",
|
||||
"sogo_visible_info": "Cette option affecte uniquement les objets qui peuvent être affichés dans SOGo (adresses alias partagées ou non partagées pointant vers au moins une boîte de réception locale). Si caché, un alias n’apparaîtra pas comme expéditeur sélectionnable dans SOGo.",
|
||||
"spam_alias": "Créer ou modifier des adresses alias limitées dans le temps",
|
||||
"spam_filter": "Filtre spam",
|
||||
"spam_policy": "Ajouter ou supprimer des éléments à la liste blanche/noire",
|
||||
@@ -601,9 +617,32 @@
|
||||
"title": "Éditer l'objet",
|
||||
"unchanged_if_empty": "Si non modifié, laisser en blanc",
|
||||
"username": "Nom d'utilisateur",
|
||||
"validate_save": "Valider et sauver",
|
||||
"validate_save": "Valider et enregistrer",
|
||||
"lookup_mx": "La destination est une expression régulière qui doit correspondre avec le nom du MX (<code>.*\\.google\\.com</code> pour acheminer tout le courrier destiné à un MX se terminant par google.com via ce saut)",
|
||||
"mailbox_relayhost_info": "S'applique uniquement à la boîte aux lettres et aux alias directs, remplace le relayhost du domaine."
|
||||
"mailbox_relayhost_info": "S'applique uniquement à la boîte de réception et aux alias directs, remplace le relayhost du domaine.",
|
||||
"acl": "ACL (Permission)",
|
||||
"footer_exclude": "Exclure du pied de page",
|
||||
"custom_attributes": "Attributs personnalisés",
|
||||
"domain_footer_info_vars": {
|
||||
"from_addr": "{= from_addr =} - Partie de l'enveloppe relative à l'adresse de provenance",
|
||||
"from_domain": "{= from_domain =} - Partie de l'enveloppe provenant du domaine",
|
||||
"custom": "{= foo =} - Si la boîte de réception possède l'attribut personnalisé \"foo\" avec la valeur \"bar\", elle renvoie \"bar\"",
|
||||
"auth_user": "{= auth_user =} - Nom d'utilisateur authentifié spécifié par un MTA",
|
||||
"from_user": "{= from_user =} -La partie utilisateur de l'enveloppe, par exemple, pour \"moo@mailcow.tld\", renvoie \"moo\"",
|
||||
"from_name": "{= from_name =} - À partir du nom de l'enveloppe, par exemple, pour \"Mailcow <moo@mailcow.tld> ;\" on obtient \"Mailcow\""
|
||||
},
|
||||
"domain_footer_skip_replies": "Ignorer le pied de page des courriels de réponse",
|
||||
"domain_footer": "Pied de page du domaine",
|
||||
"domain_footer_html": "Pied de page HTML",
|
||||
"domain_footer_info": "Les pieds de page du domaine sont ajoutés à tous les courriels sortants associés à une adresse au sein de ce domaine. <br> Les variables suivantes peuvent être utilisées pour le pied de page :",
|
||||
"domain_footer_plain": "Pied de page",
|
||||
"app_passwd_protocols": "Protocoles autorisés pour le mot de passe d'application",
|
||||
"created_on": "Créé le",
|
||||
"none_inherit": "Aucun / Héritage",
|
||||
"quota_warning_bcc": "Avertissement sur les quotas BCC",
|
||||
"quota_warning_bcc_info": "Les avertissements seront envoyés en copies séparées aux destinataires suivants. Le sujet sera précédé du nom d'utilisateur correspondant entre parenthèses, par exemple : <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"
|
||||
},
|
||||
"footer": {
|
||||
"cancel": "Annuler",
|
||||
@@ -614,15 +653,16 @@
|
||||
"hibp_ok": "Aucune correspondance trouvée.",
|
||||
"loading": "Veuillez patienter…",
|
||||
"restart_container": "Redémarrer le conteneur",
|
||||
"restart_container_info": "<b>Important:</b> Un redémarrage en douceur peut prendre un certain temps, veuillez attendre qu’il soit terminé.",
|
||||
"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"
|
||||
"restarting_container": "Redémarrage du conteneur, cela peut prendre un certain temps",
|
||||
"nothing_selected": "Rien n'est sélectionné"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Configuration & détails",
|
||||
"apps": "Applications",
|
||||
"debug": "Information Système",
|
||||
"email": "E-Mail",
|
||||
"email": "Courriel",
|
||||
"mailcow_config": "Configuration",
|
||||
"quarantine": "Quarantaine",
|
||||
"restart_netfilter": "Redémarrer Netfilter",
|
||||
@@ -638,7 +678,7 @@
|
||||
"delayed": "La connexion a été retardée de %s secondes.",
|
||||
"fido2_webauthn": "FIDO2/WebAuthn Login",
|
||||
"login": "Connexion",
|
||||
"mobileconfig_info": "Veuillez vous connecter en tant qu’utilisateur de la boîte pour télécharger le profil de connexion Apple demandé.",
|
||||
"mobileconfig_info": "Veuillez vous connecter en tant qu’utilisateur de la boîte de réception pour télécharger le profil de connexion Apple demandé.",
|
||||
"other_logins": "Clé d'authentification",
|
||||
"password": "Mot de passe",
|
||||
"username": "Nom d'utilisateur"
|
||||
@@ -646,7 +686,7 @@
|
||||
"mailbox": {
|
||||
"action": "Action",
|
||||
"activate": "Activer",
|
||||
"active": "Active",
|
||||
"active": "Actif",
|
||||
"add": "Ajouter",
|
||||
"add_alias": "Ajouter un alias",
|
||||
"add_bcc_entry": "Ajouter une carte BCC",
|
||||
@@ -654,19 +694,19 @@
|
||||
"add_domain_alias": "Ajouter un alias de domaine",
|
||||
"add_domain_record_first": "Veuillez d’abord ajouter un domaine",
|
||||
"add_filter": "Ajouter un filtre",
|
||||
"add_mailbox": "Ajouter une boîte",
|
||||
"add_mailbox": "Ajouter une boîte de réception",
|
||||
"add_recipient_map_entry": "Ajouter la carte du destinataire",
|
||||
"add_resource": "Ajouter une ressource",
|
||||
"add_tls_policy_map": "Ajouter la carte de la politique des TLS",
|
||||
"address_rewriting": "Réécriture de l’adresse",
|
||||
"alias": "Alias",
|
||||
"alias_domain_alias_hint": "Les alias <b>ne sont pas</b> appliqués automatiquement sur les alias de domaine. Un alias d'adresse <code>my-alias@domain</code> <b>ne couvre pas</b> l'adresse <code>my-alias@alias-domain</code> (où \"alias-domain\" est un alias imaginaire pour \"domain\").<br>Veuillez utiliser un filtre à tamis pour rediriger le courrier vers une boîte externe (voir l'onglet \"Filtres\" ou utilisez SOGo -> Forwarder).",
|
||||
"alias_domain_alias_hint": "Les alias <b>ne sont pas</b> appliqués automatiquement sur les alias de domaine. Un alias d'adresse <code>my-alias@domain</code> <b>ne couvre pas</b> l'adresse <code>my-alias@alias-domain</code> (où \"alias-domain\" est un alias imaginaire pour \"domain\").<br>Veuillez utiliser un filtre à tamis pour rediriger le courrier vers une boîte de réception externe (voir l'onglet « Filtres » ou utilisez SOGo → Transférer).",
|
||||
"alias_domain_backupmx": "Alias de domaine inactif pour le domaine relais",
|
||||
"aliases": "Aliases",
|
||||
"allow_from_smtp": "Restreindre l'utilisation de <b>SMTP</b> à ces adresses IP",
|
||||
"allow_from_smtp_info": "Laissez vide pour autoriser tous les expéditeurs.<br>Adresses IPv4/IPv6 et réseaux.",
|
||||
"allowed_protocols": "Protocoles autorisés",
|
||||
"backup_mx": "Sauvegarde MX",
|
||||
"backup_mx": "Domaine de relais",
|
||||
"bcc": "BCC",
|
||||
"bcc_destination": "Destination BCC",
|
||||
"bcc_destinations": "Destinations BCC",
|
||||
@@ -682,9 +722,9 @@
|
||||
"bcc_type": "Type de BCC",
|
||||
"booking_null": "Toujours montrer comme libre",
|
||||
"booking_0_short": "Toujours libre",
|
||||
"booking_custom": "Limite rigide à un nombre de réservations personnalisé",
|
||||
"booking_custom_short": "Limite rigide",
|
||||
"booking_ltnull": "Illimité, mais afficher aussi occupé lorsque réservé",
|
||||
"booking_custom": "Limitation stricte à un nombre personnalisé de réservations",
|
||||
"booking_custom_short": "Limite stricte",
|
||||
"booking_ltnull": "Illimité, mais indiqué comme occupé lors de la réservation",
|
||||
"booking_lt0_short": "Limite souple",
|
||||
"daily": "Quotidiennement",
|
||||
"deactivate": "Désactiver",
|
||||
@@ -700,32 +740,32 @@
|
||||
"domain_quota_total": "Quota total du domaine",
|
||||
"domains": "Domaines",
|
||||
"edit": "Éditer",
|
||||
"empty": "Pas de résulats",
|
||||
"empty": "Pas de résultats",
|
||||
"enable_x": "Activer",
|
||||
"excludes": "Exclut",
|
||||
"filter_table": "Table de filtre",
|
||||
"excludes": "Exclus",
|
||||
"filter_table": "Table de filtrage",
|
||||
"filters": "Filtres",
|
||||
"fname": "Nom complet",
|
||||
"force_pw_update": "Forcer la mise à jour du mot de passe à la prochaine ouverture de session",
|
||||
"gal": "Carnet d'Adresses Global (GAL)",
|
||||
"hourly": "Horaire",
|
||||
"hourly": "Toutes les heures",
|
||||
"in_use": "Utilisé (%)",
|
||||
"inactive": "Inactif",
|
||||
"insert_preset": "Insérer un exemple de préréglage \"%s\"",
|
||||
"kind": "Type",
|
||||
"last_mail_login": "Dernière connexion mail",
|
||||
"last_modified": "Dernière modification",
|
||||
"last_run": "Dernière éxécution",
|
||||
"last_run": "Dernière exécution",
|
||||
"last_run_reset": "Calendrier suivant",
|
||||
"mailbox": "Mailbox",
|
||||
"mailbox_defquota": "Taille de boîte par défaut",
|
||||
"mailbox_quota": "Taille max. d’une boîte",
|
||||
"mailboxes": "Boîtes mail",
|
||||
"mailbox": "Boîte de réception",
|
||||
"mailbox_defquota": "Taille de boîte de réception par défaut",
|
||||
"mailbox_quota": "Taille max. d’une boîte de réception",
|
||||
"mailboxes": "Boîtes de réception",
|
||||
"mailbox_defaults": "Paramètres par défaut",
|
||||
"mailbox_defaults_info": "Définir les paramètres par défaut pour les nouvelles boîtes aux lettres.",
|
||||
"mailbox_defaults_info": "Définir les paramètres par défaut pour les nouvelles boîtes de réception.",
|
||||
"max_aliases": "Nombre maximal d'alias",
|
||||
"max_mailboxes": "Nombre maximal de boîtes",
|
||||
"max_quota": "Quota max. par boîte mail",
|
||||
"max_mailboxes": "Nombre maximal de boîte de réception",
|
||||
"max_quota": "Quota max. par boîte de réception",
|
||||
"mins_interval": "Intervalle (min)",
|
||||
"msg_num": "Message #",
|
||||
"multiple_bookings": "Réservations multiples",
|
||||
@@ -736,18 +776,18 @@
|
||||
"owner": "Propriétaire",
|
||||
"private_comment": "Commentaire privé",
|
||||
"public_comment": "Commentaire public",
|
||||
"q_add_header": "Courriers indésirables",
|
||||
"q_all": " quand déplacé dans le dossier spam ou rejeté",
|
||||
"q_reject": "Rejecté",
|
||||
"q_add_header": "lorsqu'il est déplacé dans le dossier Indésirables",
|
||||
"q_all": " quand déplacé dans le dossier indésirables ou rejeté",
|
||||
"q_reject": "en cas de refus",
|
||||
"quarantine_notification": "Avis de quarantaine",
|
||||
"quarantine_category": "Catégorie de la notification de quarantaine",
|
||||
"quick_actions": "Actions",
|
||||
"recipient_map": "Carte du destinataire",
|
||||
"recipient_map_info": "Les cartes des destinataires sont utilisées pour remplacer l’adresse de destination d’un message avant sa livraison.",
|
||||
"recipient_map_new": "Nouveau destinataire",
|
||||
"recipient_map_new_info": "La destination de la carte du destinataire doit être une adresse électronique valide.",
|
||||
"recipient_map_new_info": "La destination de la carte du destinataire doit être une adresse de courriel valide.",
|
||||
"recipient_map_old": "Destinataire original",
|
||||
"recipient_map_old_info": "Une carte de destination originale doit être une adresse e-mail valide ou un nom de domaine.",
|
||||
"recipient_map_old_info": "Une carte de destination originale doit être une adresse de courriel valide ou un nom de domaine.",
|
||||
"recipient_maps": "Cartes des bénéficiaires",
|
||||
"relay_all": "Relayer tous les destinataires",
|
||||
"remove": "Supprimer",
|
||||
@@ -755,16 +795,16 @@
|
||||
"running": "En fonctionnement",
|
||||
"set_postfilter": "Marquer comme postfiltre",
|
||||
"set_prefilter": "Marquer comme préfiltre",
|
||||
"sieve_info": "Vous pouvez stocker plusieurs filtres par utilisateur, mais un seul préfiltre et un seul postfiltre peuvent être actifs en même temps.<br>\r\nChaque filtre sera traité dans l’ordre décrit. Ni un script \"rejeter\" ni un \"garder\" n’arrêtera le traitement des autres scripts. Les modifications apportées aux scripts de tamis globaux déclencheront un redémarrage de Dovecot.<br><br>Préfiltre de tamis global → Préfiltre → Scripts utilisateur → Postfiltre → Postfiltre du tamis global",
|
||||
"sieve_info": "Vous pouvez stocker plusieurs filtres par utilisateur, mais un seul préfiltre et un seul postfiltre peuvent être actifs simultanément.<br>\nChaque filtre sera traité dans l’ordre décrit. Ni un script « rejeter » ni un « garder » n’arrêtera le traitement des autres scripts. Les modifications apportées aux scripts de tamis globaux déclencheront un redémarrage de Dovecot.<br><br>Préfiltre de tamis global → Préfiltre → Scripts utilisateur → Postfiltre → Postfiltre du tamis global",
|
||||
"sieve_preset_1": "Jeter le courrier avec les types de fichiers dangereux probables",
|
||||
"sieve_preset_2": "Toujours marquer l’e-mail d’un expéditeur spécifique comme vu",
|
||||
"sieve_preset_3": "Jeter en silence, arrêter tout traitement supplémentaire du tamis",
|
||||
"sieve_preset_4": "Fichier dans INBOX, éviter le traitement ultérieur par filtres à tamis",
|
||||
"sieve_preset_2": "Toujours marquer l'adresse de courriel d’un expéditeur spécifique comme vu",
|
||||
"sieve_preset_3": "Jeter en silence, arrêter tout traitement supplémentaire par filtre sieve",
|
||||
"sieve_preset_4": "Fichier dans INBOX, éviter le traitement ultérieur par filtres sieve",
|
||||
"sieve_preset_5": "Répondeur auto (vacances)",
|
||||
"sieve_preset_6": "Rejeter le courrier avec réponse",
|
||||
"sieve_preset_7": "Rediriger et garder/déposer",
|
||||
"sieve_preset_8": "Supprimer le message envoyé à une adresse alias dont fait partie l’expéditeur",
|
||||
"sieve_preset_header": "Voir les exemples de préréglages ci-dessous. Pour plus de détails voir <a href=\"https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)\" target=\"_blank\">Wikipedia</a>.",
|
||||
"sieve_preset_8": "Rediriger les courriels d'un expéditeur spécifique, les marquer comme lus et les classer dans des sous-dossiers.",
|
||||
"sieve_preset_header": "Voir les exemples de préréglages ci-dessous. Pour plus de détails, voir <a href=\"https://en.wikipedia.org/wiki/Sieve_(mail_filtering_language)\" target=\"_blank\">Wikipédia</a>.",
|
||||
"sogo_visible": "Alias visible dans SOGo",
|
||||
"sogo_visible_n": "Masquer alias dans SOGo",
|
||||
"sogo_visible_y": "Afficher alias dans SOGo",
|
||||
@@ -785,19 +825,29 @@
|
||||
"tls_map_policy": "Politique",
|
||||
"tls_policy_maps": "Cartes des politiques des TLS",
|
||||
"tls_policy_maps_info": "Cette carte de politique remplace les règles de transport TLS sortantes indépendamment des paramètres de politique TLS des utilisateurs.<br>\r\n Veuillez vérifier <a href=\"http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps\" target=\"_blank\">la doc \"smtp_tls_policy_maps\" </a> pour plus d'informations.",
|
||||
"tls_policy_maps_enforced_tls": "Ces politiques remplaceront également le comportement des utilisateurs de boîtes qui appliquent les connexions TLS sortantes. Si aucune politique n’existe ci-dessous, ces utilisateurs appliqueront les valeurs par défaut spécifiées comme <code>smtp_tls_mandatory_protocols</code> et <code>smtp_tls_mandatory_ciphers</code>.",
|
||||
"tls_policy_maps_enforced_tls": "Ces politiques remplaceront également le comportement des utilisateurs de boîtes de réception qui appliquent les connexions TLS sortantes. Si aucune politique n’existe ci-dessous, ces utilisateurs appliqueront les valeurs par défaut spécifiées comme <code>smtp_tls_mandatory_protocols</code> et <code>smtp_tls_mandatory_ciphers</code>.",
|
||||
"tls_policy_maps_long": "Contournement de la carte de politique TLS sortante",
|
||||
"toggle_all": "Tout basculer",
|
||||
"username": "Nom d'utilisateur",
|
||||
"waiting": "En attente",
|
||||
"weekly": "Hebdomadaire",
|
||||
"yes": "✓"
|
||||
"yes": "✓",
|
||||
"add_alias_expand": "Étendre l'alias aux alias de domaine",
|
||||
"catch_all": "Catch-All",
|
||||
"created_on": "Créé le",
|
||||
"goto_ham": "Apprendre comme <b>ham</b>",
|
||||
"goto_spam": "Apprendre comme <b>pourriel</b>",
|
||||
"last_pw_change": "Dernier changement de mot de passe",
|
||||
"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"
|
||||
},
|
||||
"oauth2": {
|
||||
"access_denied": "Veuillez vous connecter en tant que propriétaire de la boîte pour accorder l’accès via 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.",
|
||||
"authorize_app": "Autoriser l'application",
|
||||
"deny": "Refuser",
|
||||
"permit": "Autorise l'application",
|
||||
"permit": "Autoriser l'application",
|
||||
"profile": "Profil",
|
||||
"profile_desc": "Afficher les informations personnelles : nom d’utilisateur, nom complet, créé, modifié, actif",
|
||||
"scope_ask_permission": "Une application demande les permissions suivantes"
|
||||
@@ -810,8 +860,8 @@
|
||||
"confirm_delete": "Confirmer la suppression de cet élément.",
|
||||
"danger": "Danger",
|
||||
"deliver_inbox": "Envoyer dans la boîte de reception",
|
||||
"disabled_by_config": "La configuration actuelle du système désactive la fonctionnalité de quarantaine. Veuillez définir \"retentions par boîte\" et une \"taille maximum\" pour les éléments en quarantaine.",
|
||||
"settings_info": "Quantité maximum d'éléments à mettre en quarantaine : %s<br>Taille maximale des e-mails : %s MiB",
|
||||
"disabled_by_config": "La configuration actuelle du système désactive la fonctionnalité de quarantaine. Veuillez définir « retentions par boîte » et une « taille maximale » pour les éléments en quarantaine.",
|
||||
"settings_info": "Quantité maximale d'éléments à mettre en quarantaine : %s<br>Taille maximale des courriels : %s MiB",
|
||||
"download_eml": "Télécharger (.eml)",
|
||||
"empty": "Pas de résultat",
|
||||
"high_danger": "Haut",
|
||||
@@ -824,7 +874,7 @@
|
||||
"notified": "Notifié",
|
||||
"qhandler_success": "Demande envoyée avec succès au système. Vous pouvez maintenant fermer la fenêtre.",
|
||||
"qid": "Rspamd QID",
|
||||
"qinfo": "Le système de quarantaine enregistrera le courrier rejeté dans la base de données (l'expéditeur n'aura <em> pas </em> l'impression d'un courrier remis) ainsi que le courrier, qui est remis sous forme de copie dans le dossier indésirable d'une boîte aux lettres.\r\n <br>\"Apprendre comme spam et supprimer\" apprendra un message comme spam via le théorème Bayesianet calculera également des hachages flous pour refuser des messages similaires à l'avenir.\r\n <br>Veuillez noter que l'apprentissage de plusieurs messages peut prendre du temps, selon votre système. <br> Les éléments figurant sur la liste noire sont exclus de la quarantaine.",
|
||||
"qinfo": "Le système de quarantaine enregistrera le courrier rejeté dans la base de données (l'expéditeur n'aura <em> pas </em> l'impression d'un courrier remis) ainsi que le courrier, remis sous forme de copie dans le dossier indésirable d'une boîte de réception.\n <br>« Apprendre comme spam et supprimer » apprendra un message comme spam via le théorème Bayésien calculera également des hachages flous pour refuser des messages similaires à l'avenir.\n <br>Veuillez noter que l'apprentissage de plusieurs messages peut prendre du temps, selon votre système. <br> Les éléments figurant sur la liste noire sont exclus de la quarantaine.",
|
||||
"qitem": "Élément de quarantaine",
|
||||
"quarantine": "Quarantaine",
|
||||
"quick_actions": "Actions",
|
||||
@@ -856,26 +906,34 @@
|
||||
"toggle_all": "Tout basculer"
|
||||
},
|
||||
"queue": {
|
||||
"queue_manager": "Gestion de la file d'attente"
|
||||
"queue_manager": "Gestion de la file d'attente",
|
||||
"hold_mail": "Garder",
|
||||
"legend": "Fonctions d'action de la file d'attente du courrier :",
|
||||
"info": "La file d'attente contient tous les courriels en attente de livraison. Si un courriel reste longtemps dans la file d'attente, il est automatiquement supprimé par le système.<br>Le message d'erreur du courriel concerné indique pourquoi le courriel n'a pas pu être distribué.",
|
||||
"deliver_mail_legend": "Tentatives de réexpédition des courriers sélectionnés.",
|
||||
"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)"
|
||||
},
|
||||
"start": {
|
||||
"help": "Afficher/masquer le panneau d’aide",
|
||||
"imap_smtp_server_auth_info": "Veuillez utiliser votre adresse e-mail complète et le mécanisme d’authentification PLAIN.<br>\r\nVos données de connexion seront cryptées par le cryptage obligatoire côté serveur.",
|
||||
"mailcow_apps_detail": "Utiliser une application mailcow pour accéder à vos messages, calendrier, contacts et plus.",
|
||||
"mailcow_panel_detail": "<b>Les administrateurs de domaines</b> peuvent créer, modifier or supprimer des boîtes et alias, changer de domaines et lire de plus amples renseignements sur les domaines qui leurs sont attribués.<br>\r\n<b>Les utilisateurs de boîtes</b> sont en mesure de créer des alias limités dans le temps (alias spam), de modifier leurs mots de passe et les paramètres du filtre anti-spam."
|
||||
"imap_smtp_server_auth_info": "Veuillez utiliser votre adresse courriel complète et le mécanisme d’authentification PLAIN.<br>\nVos données de connexion seront cryptées par le cryptage obligatoire côté serveur.",
|
||||
"mailcow_apps_detail": "Utiliser une application mailcow pour accéder à vos messages, vos calendriers, vos contacts et plus.",
|
||||
"mailcow_panel_detail": "<b>Les administrateurs de domaines</b> peuvent créer, modifier, ou supprimer des boîtes de réception et alias, changer de domaines et lire de plus amples renseignements sur les domaines qui leur sont attribués.<br>\n<b>Les utilisateurs de boîtes de réception</b> sont en mesure de créer des alias limités dans le temps (alias spam), de modifier leurs mots de passe et les paramètres du filtre anti-spam."
|
||||
},
|
||||
"success": {
|
||||
"acl_saved": "ACL (Access Control List) pour l'objet %s sauvé",
|
||||
"admin_added": "Administrateur %s a été ajoutées",
|
||||
"acl_saved": "ACL (Access Control List) pour l'objet %s enregistré",
|
||||
"admin_added": "Administrateur %s a été ajouté",
|
||||
"admin_api_modified": "Les modifications apportées à l’API ont été enregistrées",
|
||||
"admin_modified": "Les modifications apportées à l’administrateur ont été enregistrées",
|
||||
"admin_removed": "Administrateur %s a été effacé",
|
||||
"alias_added": "L'adresse alias %s (%d) a été ajoutée",
|
||||
"alias_domain_removed": "L'alias de domaine %s a été effacé",
|
||||
"alias_modified": "Le changement de l'adresse alias %s a été sauvegardée",
|
||||
"alias_modified": "Le changement de l'adresse alias %s a été enregistré",
|
||||
"alias_removed": "L'alias %s a été effacé",
|
||||
"aliasd_added": "Alias de domaine %s ajouté",
|
||||
"aliasd_modified": "Les changements de l'alias de domaine %s ont été sauvegardés",
|
||||
"aliasd_modified": "Les changements de l'alias de domaine %s ont été enregistrés",
|
||||
"app_links": "Modifications enregistrées dans les liens d’application",
|
||||
"app_passwd_added": "Ajout d’un nouveau mot de passe d’application",
|
||||
"app_passwd_removed": "Suppression de l’identifiant du mot de passe de l’application %s",
|
||||
@@ -887,14 +945,14 @@
|
||||
"delete_filters": "Filtres supprimés : %s",
|
||||
"deleted_syncjob": "ID du travail de synchronisation supprimé : %s",
|
||||
"deleted_syncjobs": "Travail de synchronisation supprimé : %s",
|
||||
"dkim_added": "La clé DKIM %s a été sauvegardée",
|
||||
"dkim_duplicated": "La clé DKIM pour e domaine %s a été copiée vers %s",
|
||||
"dkim_added": "La clé DKIM %s a été enregistrée",
|
||||
"dkim_duplicated": "La clé DKIM pour le domaine %s a été copiée vers %s",
|
||||
"dkim_removed": "La clé DKIM %s a été supprimée",
|
||||
"domain_added": "Domaine ajouté %s",
|
||||
"domain_admin_added": "L'administrateur de domaine %s a été ajouté",
|
||||
"domain_admin_modified": "Les modifications de l'administrateur de domaine %s ont été sauvées",
|
||||
"domain_admin_modified": "Les modifications de l'administrateur de domaine %s ont été enregistrées",
|
||||
"domain_admin_removed": "L'administrateur de domaine %s a été supprimé",
|
||||
"domain_modified": "Les modification du domaine %s ont été sauvées",
|
||||
"domain_modified": "Les modifications du domaine %s ont été enregistrées",
|
||||
"domain_removed": "Le domaine %s a été supprimé",
|
||||
"dovecot_restart_success": "Dovecot a été relancé avec succès",
|
||||
"eas_reset": "Les périphériques Activesync pour l’utilisateur %s ont été réinitialisés",
|
||||
@@ -910,40 +968,47 @@
|
||||
"learned_ham": "ID %s acquis avec succès comme ham",
|
||||
"license_modified": "Les modifications apportées à la licence ont été enregistrées",
|
||||
"logged_in_as": "Connecté en tant que %s",
|
||||
"mailbox_added": "La boîte mail %s a été ajoutée",
|
||||
"mailbox_modified": "Les modifications de la boîte %s ont été sauvées",
|
||||
"mailbox_removed": "La boîte %s a été supprimée",
|
||||
"mailbox_added": "La boîte de réception %s a été ajoutée",
|
||||
"mailbox_modified": "Les modifications de la boîte de réception %s ont été enregistrées",
|
||||
"mailbox_removed": "La boîte de réception %s a été supprimée",
|
||||
"nginx_reloaded": "Nginx a été rechargé",
|
||||
"object_modified": "Les changements de %s ont été sauvés",
|
||||
"object_modified": "Les changements de %s ont été enregistrés",
|
||||
"pushover_settings_edited": "Paramètres Pushover réglés avec succès, veuillez vérifier les informations d’identification.",
|
||||
"qlearn_spam": "Le message ID %s a été appris comme spam et supprimé",
|
||||
"queue_command_success": "Queue de commande terminée avec succès",
|
||||
"recipient_map_entry_deleted": "La carte du destinataire ID %s a été effacée",
|
||||
"recipient_map_entry_saved": "L'entrée de la carte du bénéficiaire \"%s\" a été sauvée",
|
||||
"recipient_map_entry_saved": "L'entrée de la carte du bénéficiaire \"%s\" a été enregistrée",
|
||||
"relayhost_added": "L'entrée de la carte %s a été ajoutée",
|
||||
"relayhost_removed": "L'entrée de la carte %s a été supprimée",
|
||||
"reset_main_logo": "Réinitialisation du logo par défaut",
|
||||
"resource_added": "La ressource %s a été ajoutée",
|
||||
"resource_modified": "Les modifications apportées à la boîte %s ont été enregistrées",
|
||||
"resource_modified": "Les modifications apportées à la boîte de réception %s ont été enregistrées",
|
||||
"resource_removed": "La ressource %s a été supprimée",
|
||||
"rl_saved": "Limite de taux pour l’objet %s enregistrée",
|
||||
"rl_saved": "Limite d'envoi pour l’objet %s enregistrée",
|
||||
"rspamd_ui_pw_set": "Mot de passe de l'interface Rspamd sauvegardé avec succès",
|
||||
"saved_settings": "Paramètres enregistrés",
|
||||
"settings_map_added": "Ajout de l’entrée de la carte des paramètres",
|
||||
"settings_map_removed": "Suppression de la carte des paramètres ID %s",
|
||||
"sogo_profile_reset": "Le profil SOGo profile pour l'utilisateur %s est remis à zéro",
|
||||
"tls_policy_map_entry_deleted": "La carte de stratégie TLS ID %s a été supprimé",
|
||||
"tls_policy_map_entry_saved": "La carte de stratégie TLS ID \"%s\" a été sauvée",
|
||||
"tls_policy_map_entry_deleted": "La carte de stratégie TLS ID %s a été supprimée",
|
||||
"tls_policy_map_entry_saved": "La carte de stratégie TLS ID \"%s\" a été enregistrée",
|
||||
"ui_texts": "Enregistrement des modifications apportées aux textes de l’interface utilisateur",
|
||||
"upload_success": "Fichier téléchargé avec succès",
|
||||
"verified_totp_login": "Authentification TOTP vérifiée",
|
||||
"verified_webauthn_login": "Authentification WebAuthn vérifiée",
|
||||
"verified_fido2_login": "Authentification FIDO2 vérifiée",
|
||||
"verified_yotp_login": "Authentification Yubico OTP vérifiée"
|
||||
"verified_yotp_login": "Authentification Yubico OTP vérifiée",
|
||||
"cors_headers_edited": "Les paramètres CORS ont été enregistrés",
|
||||
"domain_footer_modified": "Les modifications apportées au pied de page du domaine %s ont été enregistrées",
|
||||
"f2b_banlist_refreshed": "L'ID de la liste de ban a été actualisé avec succès.",
|
||||
"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"
|
||||
},
|
||||
"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\">here</a>",
|
||||
"confirm": "confirmer",
|
||||
"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>",
|
||||
"confirm": "Confirmer",
|
||||
"confirm_totp_token": "Veuillez confirmer vos modifications en saisissant le jeton généré",
|
||||
"delete_tfa": "Désactiver TFA",
|
||||
"disable_tfa": "Désactiver TFA jusqu’à la prochaine ouverture de session réussie",
|
||||
@@ -964,21 +1029,25 @@
|
||||
"webauthn": "Authentification WebAuthn",
|
||||
"waiting_usb_auth": "<i>En attente d’un périphérique USB…</i><br><br>S’il vous plaît appuyez maintenant sur le bouton de votre périphérique USB WebAuthn.",
|
||||
"waiting_usb_register": "<i>En attente d’un périphérique USB…</i><br><br>Veuillez entrer votre mot de passe ci-dessus et confirmer votre inscription WebAuthn en appuyant sur le bouton de votre périphérique USB WebAuthn.",
|
||||
"yubi_otp": "Authentification OTP Yubico"
|
||||
"yubi_otp": "Authentification OTP Yubico",
|
||||
"authenticators": "Authentificateurs",
|
||||
"u2f_deprecated_important": "Veuillez enregistrer votre clé dans le panneau d'administration avec la nouvelle méthode WebAuthn.",
|
||||
"u2f_deprecated": "Il semble que votre clé ait été enregistrée à l'aide de la méthode U2F obsolète. Nous allons désactiver l'authentification à deux facteurs pour vous et supprimer votre clé."
|
||||
},
|
||||
"fido2": {
|
||||
"set_fn": "Définir un nom",
|
||||
"fn": "Nom",
|
||||
"rename": "renommer",
|
||||
"rename": "Renommer",
|
||||
"confirm": "Confirmer",
|
||||
"register_status": "Etat de l'enregistrement",
|
||||
"register_status": "État de l'enregistrement",
|
||||
"known_ids": "Identifiant(s) connu(s)",
|
||||
"none": "Désactivé",
|
||||
"set_fido2": "Enregistrer un nouvel appareil FIDO2",
|
||||
"start_fido2_validation": "Tester la validation FIDO2",
|
||||
"fido2_auth": "Se connecter avec FIDO2",
|
||||
"fido2_success": "L'appareil est enregistré avec succès",
|
||||
"fido2_validation_failed": "La validation a échoué"
|
||||
"fido2_validation_failed": "La validation a échoué",
|
||||
"set_fido2_touchid": "Enregistrer Touch ID sur Apple M1"
|
||||
},
|
||||
"user": {
|
||||
"action": "Action",
|
||||
@@ -995,9 +1064,9 @@
|
||||
"alias_valid_until": "Valide jusque",
|
||||
"aliases_also_send_as": "Aussi autorisé à envoyer en tant qu’utilisateur",
|
||||
"aliases_send_as_all": "Ne pas vérifier l’accès de l’expéditeur pour les domaines suivants et leurs alias",
|
||||
"app_hint": "Les mots de passe d’application sont des mots de passe alternatifs pour votre connexion IMAP, SMTP, Caldav, Carddav et EAS. Le nom d’utilisateur reste inchangé.<br>SOGo n'est pas disponible au travers de mots de passe.",
|
||||
"app_hint": "Les mots de passe d’application sont des mots de passe alternatifs pour votre connexion IMAP, SMTP, Caldav, Carddav et EAS. Le nom d’utilisateur reste inchangé.<br>SOGo n'est pas disponible au travers des mots de passe d'application.",
|
||||
"app_name": "Nom d'application",
|
||||
"app_passwds": "Mots de passe de l'application",
|
||||
"app_passwds": "Mots de passe d'applications",
|
||||
"apple_connection_profile": "Profil de connexion Apple",
|
||||
"apple_connection_profile_complete": "Ce profil de connexion inclut les paramètres IMAP et SMTP ainsi que les chemins Caldav (calendriers) et Carddav (contacts) pour un appareil Apple.",
|
||||
"apple_connection_profile_mailonly": "Ce profil de connexion inclut les paramètres de configuration IMAP et SMTP pour un périphérique Apple.",
|
||||
@@ -1010,14 +1079,14 @@
|
||||
"delete_ays": "Veuillez confirmer le processus de suppression.",
|
||||
"direct_aliases": "Adresses alias directes",
|
||||
"direct_aliases_desc": "Les adresses d’alias directes sont affectées par le filtre anti-spam et les paramètres de politique TLS.",
|
||||
"eas_reset": "Réinitialiser le cache de l’appareil Activesync",
|
||||
"eas_reset_help": "Dans de nombreux cas, une réinitialisation du cache de l’appareil aidera à récupérer un profil Activesync cassé.<br><b>Attention :</b> Tous les éléments seront à nouveau téléchargés !",
|
||||
"eas_reset": "Réinitialiser le cache de l’appareil ActiveSync",
|
||||
"eas_reset_help": "Dans de nombreux cas, une réinitialisation du cache de l’appareil aidera à récupérer un profil ActiveSync cassé.<br><b>Attention :</b> Tous les éléments seront de nouveau téléchargés !",
|
||||
"eas_reset_now": "Réinitialiser maintenant",
|
||||
"edit": "Éditer",
|
||||
"email": "E-mail",
|
||||
"email_and_dav": "E-mail, calendriers et contacts",
|
||||
"encryption": "Cryptage",
|
||||
"excludes": "Exclut",
|
||||
"email": "Courriel",
|
||||
"email_and_dav": "Courriel, calendriers et contacts",
|
||||
"encryption": "Chiffrement",
|
||||
"excludes": "Exclus",
|
||||
"expire_in": "Expire dans",
|
||||
"force_pw_update": "Vous <b>devez</b> définir un nouveau mot de passe pour pouvoir accéder aux services liés aux logiciels de groupe.",
|
||||
"generate": "générer",
|
||||
@@ -1030,7 +1099,7 @@
|
||||
"last_mail_login": "Dernière connexion mail",
|
||||
"last_run": "Dernière exécution",
|
||||
"loading": "Chargement…",
|
||||
"mailbox_details": "Détails de la boîte",
|
||||
"mailbox_details": "Détails",
|
||||
"messages": "messages",
|
||||
"never": "jamais",
|
||||
"new_password": "Nouveau mot de passe",
|
||||
@@ -1044,27 +1113,27 @@
|
||||
"pushover_evaluate_x_prio": "Acheminement du courrier hautement prioritaire [<code>X-Priority: 1</code>]",
|
||||
"pushover_info": "Les paramètres de notification push s’appliqueront à tout le courrier propre (non spam) livré à <b>%s</b> y compris les alias (partagés, non partagés, étiquetés).",
|
||||
"pushover_only_x_prio": "Ne tenir compte que du courrier hautement prioritaire [<code>X-Priority: 1</code>]",
|
||||
"pushover_sender_array": "Tenez compte des adresses courriel suivantes de l’expéditeur : <small>(comma-separated)</small>",
|
||||
"pushover_sender_array": "Tenir compte des adresses de courriel suivantes de l’expéditeur : <small>(comma-separated)</small>",
|
||||
"pushover_sender_regex": "Apparier les expéditeurs par le regex suivant",
|
||||
"pushover_text": "Texte de notification",
|
||||
"pushover_title": "Titre de la notification",
|
||||
"pushover_vars": "Lorsqu’aucun filtre d’expéditeur n’est défini, tous les messages seront considérés.<br>Les filtres Regex ainsi que les vérifications exactes de l’expéditeur peuvent être définis individuellement et seront considérés de façon séquentielle. Ils ne dépendent pas les uns des autres.<br>Variables utilisables pour le texte et le titre (veuillez prendre note des politiques de protection des données)",
|
||||
"pushover_verify": "Vérifier les justificatifs",
|
||||
"pushover_vars": "Lorsque aucun filtre d’expéditeur n’est défini, tous les messages seront considérés.<br>Les filtres Regex ainsi que les vérifications exactes de l’expéditeur peuvent être définis individuellement et seront considérés de façon séquentielle. Ils ne dépendent pas les uns des autres.<br>Variables utilisables pour le texte et le titre (veuillez prendre note des politiques de protection des données)",
|
||||
"pushover_verify": "Vérifier les identifiants",
|
||||
"q_add_header": "Courrier indésirable",
|
||||
"q_all": "Toutes les catégories",
|
||||
"q_reject": "Rejeté",
|
||||
"quarantine_notification": "Avis de quarantaine",
|
||||
"quarantine_category": "Catégorie de la notification de quarantaine",
|
||||
"quarantine_notification_info": "Une fois qu’un avis a été envoyé, les articles seront marqués comme \"notified\" et aucune autre notification ne sera envoyée pour ce point particulier.",
|
||||
"quarantine_category_info": "La catégorie de notification \"Rejeté\" inclut le courrier qui a été rejeté, tandis que \"Dossier indésirable\" informera un utilisateur des e-mails qui ont été placés dans le dossier indésirable.",
|
||||
"quarantine_notification_info": "Une fois qu’un avis a été envoyé, les articles seront marqués comme « notifiés » et aucune autre notification ne sera envoyée pour ce point particulier.",
|
||||
"quarantine_category_info": "La catégorie de notification « Rejeté » inclut le courrier rejeté, tandis que « Dossier indésirable » informera un utilisateur des courriels placés dans le dossier indésirable.",
|
||||
"remove": "Enlever",
|
||||
"running": "En fonction",
|
||||
"save": "Sauvegarder les changements",
|
||||
"save_changes": "Sauvegarder les changements",
|
||||
"running": "En fonctionnement",
|
||||
"save": "Enregistrer les changements",
|
||||
"save_changes": "Enregistrer les changements",
|
||||
"sender_acl_disabled": "<span class=\"badge fs-6 bg-danger\">Le contrôle de l’expéditeur est désactivé</span>",
|
||||
"shared_aliases": "Adresses alias partagées",
|
||||
"shared_aliases_desc": "Les alias partagés ne sont pas affectés par les paramètres spécifiques à l’utilisateur tels que le filtre anti-spam ou la politique de chiffrement. Les filtres anti-spam correspondants ne peuvent être effectués que par un administrateur en tant que politique de domaine.",
|
||||
"show_sieve_filters": "Afficher le filtre de tamis actif de l’utilisateur",
|
||||
"show_sieve_filters": "Afficher le filtre sieve actif de l’utilisateur",
|
||||
"sogo_profile_reset": "Remise à zéro du profil SOGo",
|
||||
"sogo_profile_reset_help": "Ceci détruira un profil Sogo des utilisateurs et <b>supprimera toutes les données de contact et de calendrier irrécupérables</b>.",
|
||||
"sogo_profile_reset_now": "Remise à zéro du profil maintenant",
|
||||
@@ -1073,10 +1142,10 @@
|
||||
"spamfilter": "Filtre de spam",
|
||||
"spamfilter_behavior": "Note",
|
||||
"spamfilter_bl": "Liste noire (BlackList)",
|
||||
"spamfilter_bl_desc": "Les adresses de courriel sur la liste noire de <b>always (toujours)</b> peuvent être classées comme des pourriels et rejetées. Des caractères génériques peuvent être utilisés. Un filtre n’est appliqué qu’aux alias directs (alias avec une seule boîte cible), à l’exclusion des alias tous azimuts et d’une boîte elle-même.",
|
||||
"spamfilter_bl_desc": "Les adresses de courriel sur la liste noire de <b>toujours</b> peuvent être classées comme des pourriels et rejetées. Des caractères génériques peuvent être utilisés. Un filtre n’est appliqué qu’aux alias directs (alias avec une seule boîte de réception cible), à l’exclusion des alias tous azimuts et d’une boîte de réception elle-même.",
|
||||
"spamfilter_default_score": "Valeurs par défaut",
|
||||
"spamfilter_green": "Vert : ce message n'est pas un spam",
|
||||
"spamfilter_hint": "La première valeur indique un \"faible score de spam\", la seconde représente un \"haut score de spam\".",
|
||||
"spamfilter_hint": "La première valeur indique un « faible score de spam », la seconde représente un « haut score de spam ».",
|
||||
"spamfilter_red": "Rouge : Ce message est un spam et sera rejeté par le serveur",
|
||||
"spamfilter_table_action": "Action",
|
||||
"spamfilter_table_add": "Ajouter un élément",
|
||||
@@ -1085,12 +1154,12 @@
|
||||
"spamfilter_table_remove": "supprimer",
|
||||
"spamfilter_table_rule": "Règle",
|
||||
"spamfilter_wl": "Liste blanche (WhiteList)",
|
||||
"spamfilter_wl_desc": "La liste blanche est programmé pour <b> ne jamais</b> classer comme spam les adresses e-mail qu'elle contient. Des caractères génériques peuvent être utilisés. Un filtre n’est appliqué qu’aux alias directs (alias avec une seule boîte cible), à l’exclusion des alias catch-all et d’une boîte mail.",
|
||||
"spamfilter_wl_desc": "La liste blanche est programmée pour <b> ne jamais</b> classer comme spam les adresses de courriel qu'elle contient. Des caractères génériques peuvent être utilisés. Un filtre n’est appliqué qu’aux alias directs (alias avec une seule boîte de réception cible), à l’exclusion des alias catch-all et d’une boîte de réception.",
|
||||
"spamfilter_yellow": "Jaune : ce message est peut être un spam, il sera étiqueté comme spam et déplacé vers votre dossier Pourriel",
|
||||
"status": "Statut",
|
||||
"sync_jobs": "Jobs de synchronisation",
|
||||
"tag_handling": "Régler la manipulation du courrier étiqueté",
|
||||
"tag_help_example": "Exemple pour une adresse e-mail étiquetée : me<b>+Facebook</b>@example.org",
|
||||
"tag_help_example": "Exemple pour une adresse de courriel étiquetée : me<b>+Facebook</b>@example.org",
|
||||
"tag_help_explain": "Dans un sous-dossier : un nouveau sous-dossier nommé selon l'étiquette sera créé sous INBOX (\"INBOX/Facebook\").<br>\nDans le sujet : le nom des balises sera ajouté au début du sujet de l'e-mail, exemple : \"[Facebook] My News\".",
|
||||
"tag_in_none": "Ne rien faire",
|
||||
"tag_in_subfolder": "Dans un sous dossier",
|
||||
@@ -1100,7 +1169,7 @@
|
||||
"tls_enforce_in": "Appliquer le TLS entrant",
|
||||
"tls_enforce_out": "Appliquer le TLS sortant",
|
||||
"tls_policy": "Politique de chiffrement",
|
||||
"tls_policy_warning": "<strong>Attention:</strong> Si vous décidez d’appliquer le transfert de courrier chiffré, vous risquez de perdre des courriels.<br>Les messages qui ne satisfont pas à la politique seront renvoyés avec une erreur grave par le système de messagerie.<br>Cette option s’applique à votre adresse courriel principale (login name), toutes les adresses dérivées de domaines alias ainsi que les adresses alias <b>avec cette seule boîte</b> comme cible.",
|
||||
"tls_policy_warning": "<strong>Attention :</strong> Si vous décidez d’appliquer le transfert de courrier chiffré, vous risquez de perdre des courriels.<br>Les messages qui ne satisfont pas à la politique seront renvoyés avec une erreur grave par le système de messagerie.<br>Cette option s’applique à votre adresse courriel principale (login name), toutes les adresses dérivées de domaines alias ainsi que les adresses alias <b>avec cette seule boîte de réception</b> comme cible.",
|
||||
"user_settings": "Paramètres utilisateur",
|
||||
"username": "Nom d'utilisateur",
|
||||
"verify": "Vérification",
|
||||
@@ -1111,7 +1180,29 @@
|
||||
"months": "mois",
|
||||
"year": "année",
|
||||
"years": "années",
|
||||
"with_app_password": "avec le mot de passe de l'application"
|
||||
"with_app_password": "avec le mot de passe de l'application",
|
||||
"apple_connection_profile_with_app_password": "Un nouveau mot de passe est généré et ajouté au profil, de sorte qu'aucun mot de passe ne doit être saisi lors de la configuration de votre appareil. Ne partagez pas le fichier car il vous donne un accès complet à votre boîte de réception.",
|
||||
"attribute": "Attribut",
|
||||
"direct_protocol_access": "Cet utilisateur de la boîte aux lettres dispose d'un <b>accès externe direct</b> aux protocoles et applications suivants. Votre administrateur contrôle ce paramètre. Il est possible de créer des mots de passe d'application pour accorder l'accès à des protocoles et des applications individuels.<br>Le bouton « Connexion au webmail » permet une connexion unique à SOGo et est toujours disponible.",
|
||||
"open_webmail_sso": "Connexion au webmail",
|
||||
"recent_successful_connections": "Voir les connexions réussies",
|
||||
"syncjob_EXIT_TLS_FAILURE": "Problème de connexion chiffrée",
|
||||
"syncjob_EXIT_AUTHENTICATION_FAILURE": "Problème d'authentification",
|
||||
"syncjob_EXIT_OVERQUOTA": "La boîte de réception cible a dépassé le quota",
|
||||
"login_history": "Historique des connexions",
|
||||
"change_password_hint_app_passwords": "Votre compte a %d mots de passe d'application qui ne seront pas modifiés. Pour les gérer, allez dans l'onglet Mots de passe de l'application.",
|
||||
"clear_recent_successful_connections": "Vider l'historique des connexions réussies",
|
||||
"created_on": "Créé le",
|
||||
"last_ui_login": "Dernière connexion sur l'interface",
|
||||
"syncjob_check_log": "Vérifier le journal",
|
||||
"syncjob_last_run_result": "Résultat du dernier lancement",
|
||||
"syncjob_EX_OK": "Succès",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE": "Problème de connexion",
|
||||
"syncjob_EXIT_CONNECTION_FAILURE_HOST1": "Impossible de se connecter au serveur distant",
|
||||
"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"
|
||||
},
|
||||
"warning": {
|
||||
"cannot_delete_self": "Impossible de supprimer l’utilisateur connecté",
|
||||
@@ -1120,9 +1211,32 @@
|
||||
"fuzzy_learn_error": "Erreur d’apprentissage du hachage flou: %s",
|
||||
"hash_not_found": "Hachage non trouvé ou déjà supprimé",
|
||||
"ip_invalid": "IP non valide ignorée : %s",
|
||||
"no_active_admin": "Impossible de désactiver le dernier administrateur active",
|
||||
"quota_exceeded_scope": "Dépassement du quota de domaine : Seules des boîtes illimitées peuvent être créées dans ce domaine.",
|
||||
"no_active_admin": "Impossible de désactiver le dernier administrateur actif",
|
||||
"quota_exceeded_scope": "Dépassement du quota de domaine : Seules des boîtes de réception illimitées peuvent être créées dans ce domaine.",
|
||||
"session_token": "Jeton de formulaire invalide : Jeton différent",
|
||||
"session_ua": "Jeton de formulaire invalide : erreur de validation User-Agent"
|
||||
"session_ua": "Jeton de formulaire invalide : erreur de validation User-Agent",
|
||||
"is_not_primary_alias": "Alias non primaire ignoré %s"
|
||||
},
|
||||
"datatables": {
|
||||
"decimal": ".",
|
||||
"expand_all": "Tout déplier",
|
||||
"thousands": ",",
|
||||
"paginate": {
|
||||
"first": "Premier",
|
||||
"last": "Dernier"
|
||||
},
|
||||
"aria": {
|
||||
"sortAscending": ": activer pour trier les colonnes en ordre croissant",
|
||||
"sortDescending": ": activer pour trier les colonnes en ordre décroissant"
|
||||
},
|
||||
"infoEmpty": "Affichage de 0 à 0 de 0 entrées",
|
||||
"infoFiltered": "(filtré à partir de _MAX_ entrées totales)",
|
||||
"lengthMenu": "Afficher les entrées _MENU_",
|
||||
"loadingRecords": "Chargement…",
|
||||
"processing": "Veuillez patienter…",
|
||||
"collapse_all": "Tout réduire"
|
||||
},
|
||||
"ratelimit": {
|
||||
"disabled": "Désactivé"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,114 @@
|
||||
"activate_api": "API aktiválása",
|
||||
"activate_send": "Küldés gomb aktiválása",
|
||||
"add": "Hozzáad",
|
||||
"active": "Aktív"
|
||||
"active": "Aktív",
|
||||
"api_info": "Az API még fejlesztés alatt áll. A dokumentáció megtalálható a <a href=\"/api\">/api</a> alatt",
|
||||
"allowed_methods": "Hozzáférés-Szabályozás-Engedélyezési-Módszerek",
|
||||
"logo_normal_label": "Normál",
|
||||
"logo_dark_label": "Sötét üzemmódhoz invertálva",
|
||||
"f2b_regex_info": "Figyelembe vett naplók: SOGo, Postfix, Dovecot, PHP-FPM.",
|
||||
"f2b_retry_window": "Újrapróbálkozási ablak (s) a maximális próbálkozásokhoz",
|
||||
"f2b_whitelist": "Fehérlistás hálózatok/hostok",
|
||||
"filter_table": "Szűrő táblázat",
|
||||
"forwarding_hosts": "Továbbító hostok",
|
||||
"forwarding_hosts_add_hint": "Megadhat IPv4/IPv6 címeket, hálózatokat CIDR jelölésben, állomásneveket (amelyek IP-címekre lesznek feloldva) vagy tartományneveket (amelyek IP-címekre lesznek feloldva az SPF rekordok vagy ezek hiányában az MX rekordok lekérdezésével).",
|
||||
"from": "A címről",
|
||||
"copy_to_clipboard": "Szöveg másolva a vágólapra!",
|
||||
"f2b_manage_external": "A Fail2Ban külső kezelése",
|
||||
"f2b_manage_external_info": "A Fail2ban továbbra is karbantartja a tiltólistát, de nem állít be aktívan szabályokat a forgalom blokkolására. Használja az alábbi generált tiltólistát a forgalom külső blokkolásához.",
|
||||
"f2b_max_ban_time": "Maximális tiltási idő (s)",
|
||||
"f2b_netban_ipv4": "IPv4 alhálózat mérete, amelyre tilalmat kell alkalmazni (8-32)",
|
||||
"f2b_netban_ipv6": "IPv6 alhálózat mérete, amelyre tilalmat kell alkalmazni (8-128)",
|
||||
"f2b_parameters": "Fail2ban paraméterek",
|
||||
"forwarding_hosts_hint": "A bejövő üzeneteket feltétel nélkül elfogadják az itt felsorolt összes állomásról. Ezeket az állomáshelyeket nem ellenőrzik a DNSBL-ek alapján, és nem vetik alá a szürkelistázásnak. A tőlük érkező spameket a rendszer soha nem utasítja el, de opcionálisan a Junk mappába iktathatja őket. Leggyakrabban olyan levelezőszerverek megadására használjuk, amelyeken olyan szabályt állítottunk be, amely a bejövő e-maileket a mailcow-kiszolgálóra továbbítja.",
|
||||
"guid_and_license": "GUID & Licenc",
|
||||
"help_text": "Súgó szöveg felülírása a bejelentkezési maszk alatt (HTML engedélyezett)",
|
||||
"html": "HTML",
|
||||
"import": "Import",
|
||||
"ip_check": "IP ellenőrzés",
|
||||
"ip_check_disabled": "Az IP-ellenőrzés le van tiltva. Bekapcsolhatja a következő menüpont alatt<br> <strong>Rendszer > Beállítások > Opciók > Személyreszabás</strong>",
|
||||
"is_mx_based": "MX alapú",
|
||||
"last_applied": "Utoljára alkalmazott",
|
||||
"link": "Link",
|
||||
"loading": "Kérjük, várj...",
|
||||
"login_time": "Bejelentkezési idő",
|
||||
"f2b_list_info": "Egy feketelistán szereplő állomás vagy hálózat mindig nagyobb súlyú, mint egy fehérlistás entitás. <b>A lista frissítései néhány másodpercig tartanak.</b>",
|
||||
"f2b_ban_time_increment": "A tiltási idő minden egyes tiltással növekszik",
|
||||
"additional_rows": " - további sorokat adtak hozzá",
|
||||
"admin": "Adminisztrátor",
|
||||
"admin_details": "Rendszergazda adatok szerkesztése",
|
||||
"admin_domains": "Domain hozzárendelések",
|
||||
"f2b_max_attempts": "Max. próbálkozások",
|
||||
"generate": "generálni",
|
||||
"admins": "Adminisztrátorok",
|
||||
"admins_ldap": "LDAP rendszergazdák",
|
||||
"allowed_origins": "Hozzáférés-Szabályozás-Engedélyezési-Származás",
|
||||
"api_allow_from": "API-hozzáférés engedélyezése ezekről az IP/CIDR hálózati jelölésekről",
|
||||
"api_key": "API-kulcs",
|
||||
"api_read_only": "Csak olvasható hozzáférés",
|
||||
"api_read_write": "Olvasás-írás hozzáférés",
|
||||
"api_skip_ip_check": "IP-ellenőrzés kihagyása az API esetében",
|
||||
"cors_settings": "CORS beállítások",
|
||||
"guid": "GUID - egyedi példányazonosító",
|
||||
"dkim_to": "A címre",
|
||||
"dkim_to_title": "Céltartomány(ok) - felülírásra kerül",
|
||||
"domain": "Domain",
|
||||
"domain_admin": "Domain adminisztrátor",
|
||||
"domain_admins": "Domain adminisztrátorok",
|
||||
"domain_s": "Domain(ek)",
|
||||
"duplicate": "Duplikátum",
|
||||
"duplicate_dkim": "Duplikált DKIM bejegyzés",
|
||||
"edit": "Szerkesztés",
|
||||
"empty": "Nincs eredmény",
|
||||
"excludes": "Kizárja ezeket a kedvezményezetteket",
|
||||
"f2b_ban_time": "Tilalmi idő (s)",
|
||||
"f2b_blacklist": "Feketelistás hálózatok/hostok",
|
||||
"f2b_filter": "Regex szűrők",
|
||||
"logo_info": "A képed 40px magasságúra lesz méretezve a felső navigációs sávhoz és max. 250px szélességűre a kezdőlaphoz. A skálázható grafika használata erősen ajánlott.",
|
||||
"dkim_add_key": "ARC/DKIM kulcs hozzáadása",
|
||||
"dkim_domains_selector": "Válogató",
|
||||
"dkim_domains_wo_keys": "A hiányzó kulcsokkal rendelkező tartományok kiválasztása",
|
||||
"dkim_from": "A címről",
|
||||
"dkim_from_title": "Forrás tartomány, ahonnan az adatokat másolni kell",
|
||||
"dkim_key_length": "DKIM kulcs hossza (bit)",
|
||||
"dkim_key_missing": "Kulcs hiányzik",
|
||||
"import_private_key": "Privát kulcs importálása",
|
||||
"in_use_by": "Használja a",
|
||||
"inactive": "Inaktív",
|
||||
"include_exclude": "Beleértve/Kivéve",
|
||||
"include_exclude_info": "Alapértelmezés szerint - kiválasztás nélkül - <b>minden postafiók</b> címzésre kerül.",
|
||||
"includes": "Vegye fel ezeket a címzetteket",
|
||||
"add_row": "Sor hozzáadása",
|
||||
"host": "Host",
|
||||
"active_rspamd_settings_map": "Aktív beállítások térképe",
|
||||
"add_admin": "Adminisztrátor hozzáadása",
|
||||
"add_forwarding_host": "Továbbító állomás hozzáadása",
|
||||
"add_relayhost": "Feladófüggő szállítás hozzáadása",
|
||||
"add_relayhost_hint": "Felhívjuk figyelmed, hogy ha vannak hitelesítési adatok, azok egyszerű szövegként kerülnek tárolásra.",
|
||||
"add_settings_rule": "Beállítási szabály hozzáadása",
|
||||
"add_transport": "Szállítás hozzáadása",
|
||||
"add_transports_hint": "Felhívjuk figyelmed, hogy ha vannak hitelesítési adatok, azok egyszerű szövegként kerülnek tárolásra.",
|
||||
"advanced_settings": "Speciális beállítások",
|
||||
"change_logo": "Logó módosítása",
|
||||
"dkim_key_unused": "Nem használt kulcs",
|
||||
"add_domain_admin": "Tartományi rendszergazda hozzáadása",
|
||||
"dkim_key_valid": "Érvényes kulcs",
|
||||
"dkim_keys": "ARC/DKIM kulcsok",
|
||||
"dkim_overwrite_key": "A meglévő DKIM kulcs felülírása",
|
||||
"dkim_private_key": "Privát kulcs",
|
||||
"app_links": "App linkek",
|
||||
"app_name": "Alkalmazás neve",
|
||||
"arrival_time": "Érkezési idő (szerveridő)",
|
||||
"authed_user": "Azonosított felhasználó",
|
||||
"ays": "Biztos, hogy folytatni akarod?",
|
||||
"ban_list_info": "A tiltott IP-címek listáját lásd alább: <b>hálózat (fennmaradó tiltási idő) - [akciók]</b>.<br />A tiltás feloldására várakozó IP-ket néhány másodpercen belül eltávolítjuk az aktív tiltási listáról.<br />A piros címkék a feketelistán szereplő aktív állandó tiltásokat jelzik.",
|
||||
"configuration": "Konfiguráció",
|
||||
"convert_html_to_text": "HTML átalakítása egyszerű szöveggé",
|
||||
"credentials_transport_warning": "<b>Figyelmeztetés</b>: Egy új közlekedési térképbejegyzés hozzáadása frissíti a hitelesítő adatokat minden olyan bejegyzéshez, amelynek a következő ugrás oszlopa megegyezik.",
|
||||
"customize": "Testreszabás",
|
||||
"destination": "Célállomás",
|
||||
"customer_id": "Ügyfél azonosító",
|
||||
"apps_name": "\"mailcow Apps\" név"
|
||||
},
|
||||
"edit": {
|
||||
"active": "Aktív",
|
||||
@@ -57,7 +164,7 @@
|
||||
"header": {
|
||||
"administration": "Beállítások és részletek",
|
||||
"apps": "Appok",
|
||||
"debug": "Rendszer információ",
|
||||
"debug": "Információ",
|
||||
"email": "E-Mail",
|
||||
"mailcow_config": "Beállítások",
|
||||
"quarantine": "Karantén",
|
||||
@@ -399,13 +506,89 @@
|
||||
"protocol_access": "Protokoll-hozzáférés módosítása",
|
||||
"quarantine_attachments": "Karantén mellékletek",
|
||||
"quarantine_category": "Karantén értesítési kategória módosítása",
|
||||
"quarantine_notification": "Karantén értesítések módosítása"
|
||||
"quarantine_notification": "Karantén értesítések módosítása",
|
||||
"eas_reset": "EAS-eszközök alaphelyzetbe állítása",
|
||||
"extend_sender_acl": "Küldő ACL külső címekkel való bővítésének engedélyezése",
|
||||
"mailbox_relayhost": "Relayhost módosítása egy postafiókhoz",
|
||||
"prohibited": "ACL által tiltott",
|
||||
"pushover": "Pushover",
|
||||
"ratelimit": "Mérték határ",
|
||||
"recipient_maps": "Címzett térképek",
|
||||
"smtp_ip_access": "Az SMTP engedélyezett állomásainak módosítása",
|
||||
"sogo_profile_reset": "SOGo profil visszaállítása",
|
||||
"spam_alias": "Ideiglenes álnevek",
|
||||
"spam_policy": "Fekete/Fehér lista",
|
||||
"spam_score": "Spam pontszám",
|
||||
"syncjobs": "Szinkronizálási feladatok",
|
||||
"tls_policy": "TLS szabályzat",
|
||||
"unlimited_quota": "Korlátlan kvóta a postafiókok számára",
|
||||
"sogo_access": "A SOGo-hozzáférés kezelésének lehetővé tétele"
|
||||
},
|
||||
"diagnostics": {
|
||||
"dns_records": "DNS bejegyzések"
|
||||
},
|
||||
"add": {
|
||||
"username": "Felhasználónév",
|
||||
"validation_success": "Sikeres ellenőrzés"
|
||||
"validation_success": "Sikeres ellenőrzés",
|
||||
"mailbox_quota_def": "Alapértelmezett postafiók kvóta",
|
||||
"password_repeat": "Megerősítő jelszó (ismétlés)",
|
||||
"post_domain_add": "A \"sogo-mailcow\" SOGo konténert újra kell indítani egy új tartomány hozzáadása után!<br><br>Kiegészítésképpen a tartományok DNS-konfigurációját is felül kell vizsgálni. A DNS-konfiguráció jóváhagyása után indítsa újra az \"acme-mailcow\"-t, hogy automatikusan generáljon tanúsítványokat az új tartományhoz (autoconfig.<domain>, autodiscover.<domain>).<br>Ez a lépés opcionális, és 24 óránként megismétlődik.",
|
||||
"dry": "Szinkronizálás szimulálása",
|
||||
"inactive": "Inaktív",
|
||||
"kind": "Kedves",
|
||||
"mailbox_quota_m": "Maximális kvóta postafiókonként (MiB)",
|
||||
"mailbox_username": "Felhasználónév (az e-mail cím bal oldali része)",
|
||||
"max_aliases": "Max. lehetséges álnevek",
|
||||
"max_mailboxes": "Max. lehetséges postafiókok",
|
||||
"mins_interval": "A lekérdezési időköz (perc)",
|
||||
"password": "Jelszó",
|
||||
"port": "Port",
|
||||
"public_comment": "Nyilvános megjegyzés",
|
||||
"target_domain": "Céltartomány",
|
||||
"timeout1": "Időtúllépés a távoli állomáshoz való csatlakozáskor",
|
||||
"timeout2": "Időtúllépés a helyi állomáshoz való csatlakozáskor",
|
||||
"validate": "Érvényesítsd",
|
||||
"description": "Leírás",
|
||||
"destination": "Célállomás",
|
||||
"disable_login": "Bejelentkezés letiltása (a bejövő leveleket továbbra is elfogadja)",
|
||||
"domain_matches_hostname": "Domain %s megegyezik a hostnévvel",
|
||||
"domain_quota_m": "Teljes tartományi kvóta (MiB)",
|
||||
"enc_method": "Titkosítási módszer",
|
||||
"exclude": "Objektumok kizárása (regex)",
|
||||
"full_name": "Teljes név",
|
||||
"gal": "Globális címlista",
|
||||
"goto_ham": "Tanulj <span class=\"text-success\"><b>sonkaként</b></span>",
|
||||
"goto_null": "Leveleket csendben eldobni",
|
||||
"goto_spam": "Tanuld <span class=\"text-danger\"><b>spamként</b></span>",
|
||||
"syncjob_hint": "Ne feledje, hogy a jelszavakat egyszerű szöveges formában kell elmenteni!",
|
||||
"target_address": "Továbbítási címek",
|
||||
"target_address_info": "<small>Teljes e-mail cím(ek) (vesszővel elválasztva).</small>",
|
||||
"bcc_dest_format": "A BCC-célpontnak egyetlen érvényes e-mail címnek kell lennie.<br>Ha több címre kell másolatot küldenie, hozzon létre egy aliast, és használja azt.",
|
||||
"comment_info": "A privát megjegyzés nem látható a felhasználó számára, míg a nyilvános megjegyzés tooltip-ként jelenik meg, amikor a felhasználó áttekintésében a megjegyzésre mutat.",
|
||||
"custom_params": "Egyéni paraméterek",
|
||||
"gal_info": "A GAL tartalmazza a tartomány összes objektumát, és egyetlen felhasználó sem szerkesztheti. A SOGo-ban a Szabad/Elfoglalt információ hiányzik, ha ki van kapcsolva! <b>Indítsa újra a SOGo-t a változások alkalmazásához.</b>",
|
||||
"hostname": "Házigazda",
|
||||
"backup_mx_options": "Továbbítási opciók",
|
||||
"custom_params_hint": "Megfelelő: --param=xy, Rossz: --param xy",
|
||||
"delete1": "Törlés a forrásból, ha befejeződött",
|
||||
"delete2": "A forráson kívüli üzenetek törlése a célállomáson",
|
||||
"delete2duplicates": "Duplikáltak törlése a célállomáson",
|
||||
"domain": "Domain",
|
||||
"nexthop": "Következő hop",
|
||||
"tags": "Címkék",
|
||||
"app_password": "Alkalmazás jelszó hozzáadása",
|
||||
"private_comment": "Privát megjegyzés",
|
||||
"alias_address_info": "<small>Teljes e-mail cím(ek) vagy @example.com, egy domainhez tartozó összes üzenetet elfogásához (vesszővel elválasztva). <b>csak mailcow tartományok</b>.</small>",
|
||||
"generate": "generál",
|
||||
"activate_filter_warn": "Az összes többi szűrő deaktiválódik, ha az aktív opció be van jelölve.",
|
||||
"active": "Aktív",
|
||||
"add": "Hozzáad",
|
||||
"add_domain_only": "Csak domain hozzáadása",
|
||||
"add_domain_restart": "Domain hozzáadása és a SOGo újraindítása",
|
||||
"alias_address": "Alias cím(ek)",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
"eas_reset": "EAS ierīču atiestatīšana",
|
||||
"extend_sender_acl": "Ļauj paplašināt sūtītāja ACL ar ārējām adresēm",
|
||||
"login_as": "Pieteikšanās kā pastkastes lietotājam",
|
||||
"mailbox_relayhost": "Pasta kastītes relayhost maiņa"
|
||||
"mailbox_relayhost": "Pasta kastītes relayhost maiņa",
|
||||
"prohibited": "Aizliegts ar ACL",
|
||||
"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.",
|
||||
@@ -33,7 +35,7 @@
|
||||
"delete2duplicates": "Dzēst dublikātus galamērķī",
|
||||
"description": "Apraksts",
|
||||
"domain": "Domēns",
|
||||
"domain_quota_m": "Kopējā domēna kvota (MiB)",
|
||||
"domain_quota_m": "Kopējā domēna kvota (MiB)",
|
||||
"enc_method": "Šifrēšanas metode",
|
||||
"exclude": "Izslēgt objektus (regex)",
|
||||
"full_name": "Pilns vārds",
|
||||
@@ -52,7 +54,7 @@
|
||||
"post_domain_add": "SOGO konteineru \"sogo-mailcow\" ir nepieciešams pārsāknēt pēc jauna domēna pievienošanas.<br><br>Papildus vajadzētu pārskatīt domēnu DNS konfigurāciju. Tiklīdz DNS konfigurācija ir apstiprināta, jāpārsāknē \"acme-mailcow\", lai automātiski izveidotu sertifikātus jaunajam domēnam (autoconfig.<domain>, autodiscover.<domain>).<br>Šis solis ir izvēles un tiks atkārtots ik pēc 24 stundām.",
|
||||
"quota_mb": "Kvota (MiB)",
|
||||
"relay_all": "Pārsūtīt visus saņēmējus",
|
||||
"relay_all_info": "<small>Ja izvēlies <b>nepārsūtīt</b> visus saņēmējus, tad Tev būs nepieciešams pievienot (\"tukšu\") pastkasti katram saņēmējam, kas būtu jāpārsūta.</small>",
|
||||
"relay_all_info": "↪ Ja izvēlies <b>nepārsūtīt</b> visus saņēmējus, tad Tev būs nepieciešams pievienot (\"aklo\") pastkasti katram saņēmējam, kas būtu jāpārsūta.",
|
||||
"relay_domain": "Pārsūtīt šo domēnu",
|
||||
"select": "Lūdzu izvēlaties...",
|
||||
"select_domain": "Lūdzu sākumā izvēlaties domēnu",
|
||||
@@ -104,14 +106,14 @@
|
||||
"f2b_ban_time": "Aizlieguma laiks (s)",
|
||||
"f2b_max_attempts": "Maks. piegājieni",
|
||||
"f2b_netban_ipv4": "IPv4 apakštīkla izmērs, lai piemērotu aizliegumu uz (8-32)",
|
||||
"f2b_netban_ipv6": "IPv6 apakštīkla izmērs, lai piemērotu aizliegumu uz (8-128)",
|
||||
"f2b_netban_ipv6": "IPv6 apakštīkla izmērs, lai piemērotu aizliegumu uz (8-128)",
|
||||
"f2b_parameters": "Fail2ban parametri",
|
||||
"f2b_retry_window": "Atkārtošanas logs (s) priekš maks. piegājiena",
|
||||
"f2b_whitelist": "Baltā saraksta tīkls/hosts",
|
||||
"filter_table": "Filtru tabula",
|
||||
"forwarding_hosts": "Hostu pārsūtīšana",
|
||||
"forwarding_hosts_add_hint": "Jūs varat norādīt IPv4/IPv6 addreses, tīklu iekš CIDR apzīmējuma, hosta nosaukumu (kas tiks atrisinātas IP adresēs), vai domēna vārdos (kas tiks atrisināts IP adresēs vaicājot SPF ierakstus vai, ja tādu nav, MX ierakstus).",
|
||||
"forwarding_hosts_hint": "Ienākošie ziņojumi ir bez nosacījumiem pieņemti no visiem šeit norādītajiem hostiem. Pēc tam šie hosti netiek pārbaudīti pret DNSBL vai pakļauti Greylistei. No tiem saņemtās mēstules nekad netiek noraidītas, bet pēc izvēles tās var pārvietot mapē Nevēlamais. Visbiežāk to izmanto, lai precizētu pasta serverus, kuros ir iestatīts noteikums, kas pārsūta ienākošos e-pasta ziņojumus uz jūsu mailcow serveri.",
|
||||
"forwarding_hosts_add_hint": "Var norādīt vai nu IPv4/IPv6 addreses, tīklu ar CIDR apzīmējumu, saimniekdatoru nosaukumus (kas tiks atrisināti IP adresēs) vai arī domēna vārdus (kas tiks atrisināti IP adresēs, vaicājot SPF ierakstus, vai, ja tādu nav, MX ierakstus).",
|
||||
"forwarding_hosts_hint": "Ienākošie ziņojumi tiek bez nosacījumiem pieņemti no visiem šeit norādītajiem saimniekdatoriem. Tie tad netiek pārbaudīti pret DNSBL vai pakļauti ievietošanai pelēkajā sarakstā. No tiem saņemtās mēstules nekad netiek noraidītas, bet pēc izvēles tās var pārvietot mapē \"Nevēlams\". Visbiežāk to izmanto, lai norādītu pasta serverus, kuros ir uzstādīts nosacījums, kas pārsūta ienākošās e-pasta vēstules uz Tavu mailcow serveri.",
|
||||
"help_text": "Ignorēt palīdzības tekstu zem pieteikšanās maskas (HTML ir atļauta)",
|
||||
"host": "Hosts",
|
||||
"import": "Importēt",
|
||||
@@ -120,7 +122,7 @@
|
||||
"inactive": "Neaktīvs",
|
||||
"link": "Saite",
|
||||
"loading": "Lūgums uzgaidīt...",
|
||||
"logo_info": "Jūsu attēls augšējā navigācijas joslā tiks palielināts līdz 40 pikseļiem un maks. sākumlapas platums par 250 pikseļi. Ir ļoti ieteicama pielāgojama grafikaYour image will be scaled to a height of 40px for the top navigation bar and a max. width of 250px for the start page. Ir ļoti ieteicama pielāgojamā grafika",
|
||||
"logo_info": "Tavs attēls augšējā pārvietošanās joslā tiks mērogots līdz 40 pikseļiem un ne vairāk par 250 pikseļiem platumā sākumlapā. Ļoti ieteicams izmantot mērogojamus attēlus.",
|
||||
"main_name": "\"mailcow UI\" nosaukums",
|
||||
"merged_vars_hint": "Pelēkās rindas tika apvienotas <code>vars.(local.)inc.php</code> un nevar tikt modificētas.",
|
||||
"no_new_rows": "Papildu rindas nav pieejamas",
|
||||
@@ -130,11 +132,11 @@
|
||||
"private_key": "Privāta atslēga",
|
||||
"quarantine": "Karantīna",
|
||||
"quarantine_exclude_domains": "Neņemt vērā domēnus un aizstājdomēnus",
|
||||
"quarantine_max_size": "Maks. izmērs MiB (lielāki vienumi ir atbrīvoti):",
|
||||
"quarantine_retention_size": "Atlikumi pastkastēs:",
|
||||
"quarantine_max_size": "Lielākais pieļaujamais izmērs MiB (lielāki vienumi tiek atmesti):<br><small>0 <b>nenorāda</b> neierobežotu.</small>",
|
||||
"quarantine_retention_size": "Paturējumi katrā pastkastē:<br><small>0 norāda, ka ir <b>atspējoti</b>.</small>",
|
||||
"r_active": "Aktīvie ierobežojumi",
|
||||
"r_inactive": "Neaktīvie ierobežojumi",
|
||||
"r_info": " Pelēki/atslēgti elementi aktīvo ierobežojumu sarakstā nav zināmi kā mailcow spēkā esoši ierobežojumi un tos nevar pārvietot. Jebkurā gadījumā nezināmi ierobežojumi tiks sakārtoti pēc pievienošanas. <br>Jūs varat pievienot jaunus elementus <code>inc/vars.local.inc.php</code>, lai varētu tos pārslēgt.",
|
||||
"r_info": "Pelēkie/atspējotie vienumi spēkā esošo ierobežojumu sarakstā mailcow nav zināmi kā derīgi ierobežojumi, un tos nevar pārvietot. Nezināmi ierobežojumi jebkurā gadījumā parādīšanas secībā. <br>Jaunus vienumus var pievienot <code>inc/vars.local.inc.php</code>, lai varētu tos pārslēgt.",
|
||||
"recipients": "Adresāts",
|
||||
"refresh": "Atsvaidzināt",
|
||||
"regen_api_key": "Reģenerēt API atslēgu",
|
||||
@@ -160,9 +162,10 @@
|
||||
"generate": "izveidot",
|
||||
"message": "Ziņojums",
|
||||
"last_applied": "Pēdējoreiz pielietots",
|
||||
"f2b_regex_info": "Vērā ņemtie žurnāli: SOGO, Postfix, Dovecot, PHP-FPM",
|
||||
"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>"
|
||||
"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>"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "Piekļuve liegta, vai nepareizi dati",
|
||||
@@ -187,7 +190,7 @@
|
||||
"invalid_mime_type": "Nederīgs mime tips",
|
||||
"is_alias": "%s jau ir zināma kā aizstājadrese",
|
||||
"is_alias_or_mailbox": "%s jau ir zināms kā aizstājvārds, pastkaste vai aizstājadrese, kas ir izvērsta no aizstājdomēna.",
|
||||
"is_spam_alias": "%s jau ir zināma kā pagaidu aizstājadrese (aizstājadrese mēstulēm)",
|
||||
"is_spam_alias": "%s jau ir zināma kā pagaidu aizstājadrese (mēstuļu aizstājadrese)",
|
||||
"last_key": "Pēdējo atslēgu nevar izdzēst, tā vietā jāatspējo divpakāpju pārbaude.",
|
||||
"login_failed": "Ielogošanās neveiksmīga",
|
||||
"mailbox_invalid": "Pastkastes vārds ir nederīgs",
|
||||
@@ -216,7 +219,7 @@
|
||||
"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 pareizo resursu.",
|
||||
"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.",
|
||||
"dns_records": "DNS Ieraksti",
|
||||
"dns_records_24hours": "Lūdzu ņemiet vērā, ka DNS izmaiņas var aizņemt laiku līdz 24 stundām, lai pareizi varētu atspoguļot izmaiņas šajā lapā. Tas ir paredzēts, lai jūs varētu viegli uzzināt, kā konfigurēt savus DNS ierakstus un pārbaudīt, vai visi jūsu ieraksti ir pareizi saglabāti DNS.",
|
||||
"dns_records_data": "Pareizi dati",
|
||||
@@ -261,7 +264,7 @@
|
||||
"previous": "Iepriekšējā lapa",
|
||||
"quota_mb": "Kvota (MiB)",
|
||||
"relay_all": "Pārsūtīt visus adresātus",
|
||||
"relay_all_info": "<small>Ja tu izvēlies <b>nepārsūtīt</b> visus adresātus, tad tev vajadzēs pievienot (\"tukšu\") pastkasti katram saņēmējam, kas būtu jāpārsūta.</small>",
|
||||
"relay_all_info": "↪ Ja izvēlies <b>nepārsūtīt</b> visus adresātus, tad tev vajadzēs pievienot (\"aklo\") pastkasti katram saņēmējam, kas būtu jāpārsūta.",
|
||||
"relay_domain": "Pārsūtīt domēnu",
|
||||
"remove": "Noņemt",
|
||||
"resource": "Resurss",
|
||||
@@ -270,9 +273,9 @@
|
||||
"sieve_desc": "Īss apraksts",
|
||||
"sieve_type": "Filtra tips",
|
||||
"skipcrossduplicates": "Izlaist dublētus ziņojumus pa mapēm (pirmais nāk, pirmais kalpo)",
|
||||
"spam_alias": "Izveidot vai mainīt laika ierobežotas alias adreses",
|
||||
"spam_policy": "Pievienot vai noņemt vienības baltajā-/melnajā sarakstā",
|
||||
"spam_score": "Iestatīt pielāgotu surogātpastu",
|
||||
"spam_alias": "Izveidot vai mainīt laika ierobežotas aizstājadreses",
|
||||
"spam_policy": "Pievienot vai noņemt vienumus baltajā-/melnajā sarakstā",
|
||||
"spam_score": "Iestatīt pielāgotu surogātpasta vērtējumu",
|
||||
"subfolder2": "Sinhronizēt galamērķa apakšmapē<br><small>(tukšs = neizmantot apakšmapi)</small>",
|
||||
"syncjob": "Rediģēt sinhronizācijas darbu",
|
||||
"target_address": "Iet uz adresi/ēm <small>(komatu atdalītas)</small>",
|
||||
@@ -295,15 +298,15 @@
|
||||
"cancel": "Atcelt",
|
||||
"confirm_delete": "Apstiprināt dzēšanu",
|
||||
"delete_now": "Dzēst tagad",
|
||||
"delete_these_items": "Lūdzu apstipriniet darbīku šiem abjektiem:",
|
||||
"delete_these_items": "Lūgums apstiprināt izmaiņas šim objekta Id",
|
||||
"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": "Restartēt "
|
||||
"restart_now": "Pārsāknēt tagad"
|
||||
},
|
||||
"header": {
|
||||
"administration": "Administrēšana",
|
||||
"debug": "Atkļūdošana",
|
||||
"administration": "Konfigurācija un informācija",
|
||||
"debug": "Informācija",
|
||||
"email": "E-pasts",
|
||||
"mailcow_config": "Konfigurācija",
|
||||
"quarantine": "Karantīna",
|
||||
@@ -315,7 +318,7 @@
|
||||
"no_action": "No action applicable"
|
||||
},
|
||||
"login": {
|
||||
"delayed": "Pieslēgšanās aizkavējās par %s sekundēm.",
|
||||
"delayed": "Pieteikšanās tika aizkavēta %s sekundēm.",
|
||||
"login": "Pieslēgties",
|
||||
"password": "Parole",
|
||||
"username": "Lietotājvārds"
|
||||
@@ -325,22 +328,22 @@
|
||||
"activate": "Activate",
|
||||
"active": "Aktīvs",
|
||||
"add": "Pievienot",
|
||||
"add_alias": "Pievienot alias",
|
||||
"add_alias": "Pievienot aizstājvārdu",
|
||||
"add_bcc_entry": "Pievienot BCC karti",
|
||||
"add_domain": "Pievienot domēnu",
|
||||
"add_domain_alias": "Pievienot domēna alias",
|
||||
"add_domain_alias": "Pievienot domēna aizstājvārdu",
|
||||
"add_filter": "Pievienot filtru",
|
||||
"add_mailbox": "Pievienot pastkasti",
|
||||
"add_recipient_map_entry": "Pievienot saņēmēja karti",
|
||||
"add_resource": "Pievienot resursu",
|
||||
"address_rewriting": "Adreses pārrakstīšana",
|
||||
"alias": "Alias",
|
||||
"aliases": "Aliases",
|
||||
"alias": "Aizstājvārds",
|
||||
"aliases": "Aizstājvārdi",
|
||||
"backup_mx": "Rezerves kopija MX",
|
||||
"bcc": "BCC",
|
||||
"bcc_destination": "BCC galamērķi/s",
|
||||
"bcc_destinations": "BCC galamērķi/s",
|
||||
"bcc_info": "BCC kartes tiek izmantotas, lai klusu pārsūtītu visu ziņojumu kopijas uz citu adresi. Saņēmēja kartes tipa ieraksts tiek izmantots, kad vietējais galamērķis darbojas kā pasta adresāts. Sūtītāja kartes atbilst vienam un tam pašam principam. <br/>\r\n Vietējais galamērķis netiks informēts par piegādes neveiksmi. ",
|
||||
"bcc_info": "BCC kartes tiek izmantotas, lai klusi pārsūtītu visu ziņojumu kopijas uz citu adresi. Saņēmēja kartes veida ieraksts tiek izmantots, kad vietējais galamērķis darbojas kā pasta saņēmējs. Sūtītāja kartes atbilst vienam un tam pašam principam.<br/>\n Vietējais galamērķis netiks informēts par neizdevušos piegādi.",
|
||||
"bcc_local_dest": "Vietējais galamērķis",
|
||||
"bcc_map_type": "BCC veids",
|
||||
"bcc_maps": "BCC kartes",
|
||||
@@ -354,7 +357,7 @@
|
||||
"dkim_key_length": "DKIM atslēgas garums (bits)",
|
||||
"domain": "Domēns",
|
||||
"domain_admins": "Domēna administratori",
|
||||
"domain_aliases": "Domēna aliases",
|
||||
"domain_aliases": "Domēna aizstājvārdi",
|
||||
"domain_quota": "Kvota",
|
||||
"domain_quota_total": "Kopējais domēna ierobežojums",
|
||||
"domains": "Domēns",
|
||||
@@ -372,7 +375,7 @@
|
||||
"last_run_reset": "Ievietot sarakstā kā nākamo",
|
||||
"mailbox_quota": "Maks. pastkastes izmērs",
|
||||
"mailboxes": "Pastkaste",
|
||||
"max_aliases": "Maks. iespejamās aliases",
|
||||
"max_aliases": "Lielākais aizstājvārdu skaits",
|
||||
"max_mailboxes": "Maks. iespējamās pastkastes",
|
||||
"max_quota": "Maks. kvota uz pastkasti",
|
||||
"mins_interval": "Intervāls (min)",
|
||||
@@ -392,11 +395,11 @@
|
||||
"running": "Darbojas",
|
||||
"set_postfilter": "Atzīmēt kā pēcfiltru",
|
||||
"set_prefilter": "Atzīmēt kā pimrsfiltru",
|
||||
"sieve_info": "Jūs varat saglabāt vairākus filtrus katram lietotājam, bet tikai viens pirmsfiltrs un viens pēcfiltrs var būt aktīvs vienlaicīgi.<br>\r\nKatrs filtrs tiks apstrādāts aprakstītajā kārtībā. Kļūdains vai izdots skripts \"Paturēt;\" pārtrauks turpmāko skriptu apstrādi.<br>\r\n<a href=\"https://github.com/mailcow/mailcow-dockerized/blob/master/data/conf/dovecot/global_sieve_before\" target=\"_blank\">Global sieve prefilter</a> → Pirmsfiltrs → Lietotāja skripts → Pēcfiltrs → <a href=\"https://github.com/mailcow/mailcow-dockerized/blob/master/data/conf/dovecot/global_sieve_after\" target=\"_blank\">Global sieve postfilter</a>",
|
||||
"spam_aliases": "Temp. alias",
|
||||
"sieve_info": "Katram lietotājam var saglabāt vairākus filtrus, bet tikai viens pirmsfiltrs un viens pēcfiltrs var darboties vienlaicīgi.<br>\nKatrs filtrs tiks apstrādāts norādītajā kārtībā. Ne kļūdains skripts, ne izdots \"keep;\" nepārtrauks turpmāko skriptu apstrādi. Vispārējo sieve skriptu izmaiņas izsauks Dovecot pārsāknēšanu.<br><br>Vispārējais sieve pirmsfiltrs • Pirmsfiltrs • Lietotāja skripti • Pēcfiltrs • Vispārējais sieve pēcfiltrs",
|
||||
"spam_aliases": "Pagaidu aizstājvārds",
|
||||
"status": "Status",
|
||||
"sync_jobs": "Sinhronizācijas darbi",
|
||||
"target_address": "Doties uz adresi",
|
||||
"target_address": "Doties uz adresi",
|
||||
"target_domain": "Mērķa domēns",
|
||||
"tls_enforce_in": "Piespiest TLS ienākošajiem",
|
||||
"tls_enforce_out": "Piespiest TLS izejošajiem",
|
||||
@@ -411,7 +414,13 @@
|
||||
"mailbox": "Pastkaste",
|
||||
"sieve_preset_2": "Vienmēr atzīmēt noteikta sūtītāja e-pastu kā izlasītu",
|
||||
"open_logs": "Atvērt žurnālus",
|
||||
"sieve_preset_8": "Pārvirzīt noteikta sūtītāja e-pastu, atzīmēt kā izlasītu un ievietot to apakšmapē"
|
||||
"sieve_preset_8": "Pārvirzīt noteikta sūtītāja e-pastu, atzīmēt kā izlasītu un ievietot to apakšmapē",
|
||||
"sogo_visible": "Aizstājvārds ir redzams SOGo",
|
||||
"sogo_visible_n": "Paslēpt aizstājvārdu SOGo",
|
||||
"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"
|
||||
},
|
||||
"quarantine": {
|
||||
"action": "Darbības",
|
||||
@@ -445,18 +454,18 @@
|
||||
},
|
||||
"start": {
|
||||
"help": "Rādīt/Paslēp palīdzības paneli",
|
||||
"imap_smtp_server_auth_info": "Lūdzu, izmantojiet pilnu e-pasta adresi un PLAIN autentifikācijas mehānismu.<br>\r\nJūsu pieteikšanās dati tiks šifrēti, izmantojot servera puses obligātu šifrēšanu",
|
||||
"imap_smtp_server_auth_info": "Lūgums izmantot pilnu e-pasta adresi un PLAIN autentifikācijas mehānismu.<br>\nPieteikšanās dati tiks šifrēti ar servera puses obligātu šifrēšanu.",
|
||||
"mailcow_apps_detail": "Izmantojiet lietotni mailcow, lai piekļūtu savam pastam, kalendāram, kontaktiem un citām lietām.",
|
||||
"mailcow_panel_detail": "<b>Domēna administrators</b> izveidot, mainīt vai dzēst pastkastes un aliases, mainīt domēnus un lasīt papildu informāciju par saviem piešķirtajiem domēniem.<br>\r\n <b>Pastkastes lietotāji</b> var izveidot ierobežotus laika ierobežojumus (surogātpasta aliases), mainīt paroli un surogātpasta filtru iestatījumus."
|
||||
"mailcow_panel_detail": "<b>Domēna pārvaldītāji</b> izveido, maina vai izdzēš pastkastes un aizstājvārdus, maina domēnus un lasa papildu informāciju par piešķirtajiem domēniem.<br>\n<b>Pastkastes lietotāji</b> var izveidot laikā ierobežotus aizstājvārdus (surogātpasta aizstājvārdus), mainīt savu paroli un surogātpasta atlasīšanas iestatījumus."
|
||||
},
|
||||
"success": {
|
||||
"admin_modified": "Izmaiņas administrātoram ir saglabātas",
|
||||
"alias_added": "Aliasi pievienoti",
|
||||
"alias_domain_removed": "Alias domēns %s tika noņemts",
|
||||
"alias_modified": "Izmaiņas aliasiem %s ir saglabātas",
|
||||
"alias_removed": "Alias %s ir noņemts",
|
||||
"aliasd_added": "Pievients alias domēnam %s",
|
||||
"aliasd_modified": "Izmaiņas aloas domēnam %s ir saglabātas",
|
||||
"alias_added": "Aizstājadrese %s (%d) tika pievienota",
|
||||
"alias_domain_removed": "Aizstājdomēns %s tika noņemts",
|
||||
"alias_modified": "Aizstājadreses izmaiņas %s tika saglabātas",
|
||||
"alias_removed": "Aizstājvārds %s tika noņemts",
|
||||
"aliasd_added": "Pievienots aizstājdomēns %s",
|
||||
"aliasd_modified": "Aizstājdomēna %s izmaiņas tika saglabātas",
|
||||
"app_links": "Saglabāt izmaiņas lietotņu saitēm",
|
||||
"dkim_added": "DKIM atslēga saglabāta",
|
||||
"dkim_removed": "DKIM atslēga %s ir noņemta",
|
||||
@@ -467,7 +476,7 @@
|
||||
"domain_modified": "Izmaiņas domēnam %s ir saglabātas",
|
||||
"domain_removed": "Domēns %s ir noņemts",
|
||||
"eas_reset": "ActiveSync ierīces priekš lietotāja %s tika atiestatītas",
|
||||
"f2b_modified": "Izmaiņas Fail2ban parameteriem ir saglabātas",
|
||||
"f2b_modified": "Fail2ban parametru izmaiņas tika saglabātas",
|
||||
"forwarding_host_added": "Pāradresācijas hosts %s pievienotsd",
|
||||
"forwarding_host_removed": "Pāradresācijas hosts %s noņemts",
|
||||
"item_deleted": "Vērtība %s veiksmīgi dzēsta",
|
||||
@@ -492,7 +501,7 @@
|
||||
"confirm_totp_token": "Lūdzu apstipriniet Jūsu izmaiņas ievadot uzģenerēto tekstu",
|
||||
"delete_tfa": "Atspējot TFA",
|
||||
"disable_tfa": "Atspējot TFA līdz nākamajai veiksmīgai pieteikšanās",
|
||||
"enter_qr_code": "Jūsu TOTP kods, ja Jūsu ierīce nevar noskanēt QR kodus.",
|
||||
"enter_qr_code": "TOTP kods, ja Tava ierīce nevar nolasīt kvadrātkodus",
|
||||
"key_id": "Jūsu YubiKey identifikators",
|
||||
"key_id_totp": "Identifikators Jūsu atslēgai",
|
||||
"none": "Deaktivizēt",
|
||||
@@ -510,24 +519,24 @@
|
||||
"action": "Rīcība",
|
||||
"active": "Aktīvs",
|
||||
"active_sieve": "Aktīvais filtrs",
|
||||
"alias": "Alias",
|
||||
"alias_create_random": "Ģenerēt nejaušā nosaukuma alias",
|
||||
"alias_extend_all": "Pagarināt alias par 1 stundu",
|
||||
"alias": "Aizstājvārds",
|
||||
"alias_create_random": "Izveidot nejaušu aizstājvārdu",
|
||||
"alias_extend_all": "Pagarināt aizstājvārdus par 1 stundu",
|
||||
"alias_full_date": "d.m.Y, H:i:s T",
|
||||
"alias_remove_all": "Noņemt visus alias",
|
||||
"alias_remove_all": "Noņemt visus aizstājvārdus",
|
||||
"alias_select_validity": "Derīguma periods",
|
||||
"alias_time_left": "Laiks atlicis",
|
||||
"alias_valid_until": "Derīgs līdz",
|
||||
"aliases_also_send_as": "Atļauts arī sūtīt kā lietotājam",
|
||||
"aliases_send_as_all": "Nepārbaudīt sūtītāja peikļuvi domēnam/iem un alias domēniem",
|
||||
"aliases_send_as_all": "Nepārbaudīt sūtītāja piekļuvi šiem domēniem un to aizstājdomēniem",
|
||||
"change_password": "Nomainīt paroli",
|
||||
"client_configuration": "Parādīt konfigurācijas piemērus dažādām iekārtām",
|
||||
"client_configuration": "Parādīt konfigurācijas norādes e-pasta klientiem un tālruņiem",
|
||||
"create_syncjob": "Izveidot jaunu sinhronizācijas darbu",
|
||||
"day": "Dienas",
|
||||
"direct_aliases": "Tiešas alias adreses",
|
||||
"direct_aliases_desc": "Tiešie alias tiek ietekmēti no spam filtra un TLS politikas iestatījumiem affected by spam filter and TLS policy settings.",
|
||||
"direct_aliases": "Tiešas aizstājadreses",
|
||||
"direct_aliases_desc": "Tiešās aizstājadreses ir surogātpasta atlasīšanas un TLS nosacījumu iestatījumu ietekmētas.",
|
||||
"eas_reset": "Atiestatīt ActiveSync ierīces kešatmiņu",
|
||||
"eas_reset_help": "Daudzos gadījumos ierīces kešatmiņas atiestatīšana palīdz atjaunot bojāto ActiveSync profilu.<br><b>Uzmanību:</b> Visi elementi tiks atkārtoti ielādēti!",
|
||||
"eas_reset_help": "Daudzos gadījumos ierīces kešatmiņas atiestatīšana palīdz atjaunot bojāto ActiveSync profilu.<br><b>Uzmanību:</b> visi vienumi tiks atkārtoti lejupielādēti!",
|
||||
"eas_reset_now": "Atiestatīt tagad",
|
||||
"edit": "Labot",
|
||||
"encryption": "Šifrēšana",
|
||||
@@ -550,15 +559,15 @@
|
||||
"remove": "Noņemt",
|
||||
"running": "Running",
|
||||
"save_changes": "Saglabāt izmaiņas",
|
||||
"shared_aliases": "Koplietotās alias adreses",
|
||||
"shared_aliases_desc": "Koplietotais alias netiek ietekmēts no lietotāju darbībām. Pielāgots spam filtra iestatījums var būt arhivēts no domēna ietvaros uzstādīta noteikuma no administrātora..",
|
||||
"shared_aliases": "Kopīgotās aizstājadreses",
|
||||
"shared_aliases_desc": "Tādi lietotāja iestatījumi kā surogātpasta atlasīšana vai šifrēšanas nosacījumi neietekmē kopīgotos aizstājvārdus. Atbilstošu surogātpasta atlasi var izveidot tikai pārvaldītājs kā domēnu aptverošu nosacījumu.",
|
||||
"show_sieve_filters": "Parādīt aktīvā lietotāja Sieve filtru",
|
||||
"spam_aliases": "Pagaidu e-pasta alias",
|
||||
"spam_aliases": "Pagaidu e-pasta aizstājvārdi",
|
||||
"spamfilter": "Mēstuļu filtrs",
|
||||
"spamfilter_behavior": "Reitings",
|
||||
"spamfilter_bl": "Melnais saraksts",
|
||||
"spamfilter_bl_desc": "Melajā sarakstā iekļautās adreses vienmēr tiks uzskatītas par mēstulēm.",
|
||||
"spamfilter_default_score": "Noklusētās vērtības:",
|
||||
"spamfilter_bl_desc": "No melnajā sarakstā iekļautajām e-pasta adresēm saņemtās vēstules <b>vienmēr</b> tiks atzīmētas kā mēstules un noraidītas. Noraidītais pasts <b>netiks</b> ievietots karantīnā. Var izmantot aizstājzīmes. Atlasīšana tiek pielietota tikai tiešiem aizstājvārdiem (aizstājvārdiem ar vienu mērķa pastkasti), izņemot visu tverošos aizstājvārdus un pašu pastkasti.",
|
||||
"spamfilter_default_score": "Noklusējuma vērtības",
|
||||
"spamfilter_green": "Zaļš: šī nav mēstule",
|
||||
"spamfilter_hint": "Pirmā vērtība norāda uz zemu \"Spam vērtējumu\" vērtējumu, otra vērtība par \"Augstu spam vērtējumu\".",
|
||||
"spamfilter_red": "Sarkans: Šī vēstule noteikti ir spams un tiek nekavējoties noraidīta",
|
||||
@@ -569,7 +578,7 @@
|
||||
"spamfilter_table_remove": "noņemt",
|
||||
"spamfilter_table_rule": "Noteikums",
|
||||
"spamfilter_wl": "Baltais saraksts",
|
||||
"spamfilter_wl_desc": "Baltajā sarakstā iekļautās adreses nekad netiks klasificētas kā mēstules.",
|
||||
"spamfilter_wl_desc": "No baltā saraksta e-pasta adresēm saņemtās vēstules <b>nekad</b> netiks atzīmētas kā mēstules. Var tikt izmantotas aizstājzīmes. Atlase tiek piemērota tikai tiešiem aizstājvārdiem (aizstājvārdiem ar vienu mērķa pastkasti), izņemot visu tverošos aizstājvārdus un pašu pastkasti.",
|
||||
"spamfilter_yellow": "Dzeltens: šī vēstule visticamāk ir spams un tiks pārvietota uz Junk mapi",
|
||||
"status": "Status",
|
||||
"sync_jobs": "Sinhronizācijas uzdevumi",
|
||||
@@ -588,7 +597,9 @@
|
||||
"waiting": "Waiting",
|
||||
"week": "Nedēļa",
|
||||
"weeks": "Nedēļas",
|
||||
"open_logs": "Atvērt žurnālus"
|
||||
"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)."
|
||||
},
|
||||
"datatables": {
|
||||
"paginate": {
|
||||
@@ -608,6 +619,7 @@
|
||||
},
|
||||
"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."
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
"filter_table": "Filtertabel",
|
||||
"forwarding_hosts": "Forwarding hosts",
|
||||
"forwarding_hosts_add_hint": "Het is mogelijk om IPv4- of IPv6-adressen, netwerken in CIDR-notatie, hostnames (worden omgezet naar IP-adressen) of domeinnamen (worden tevens omgezet naar IP-adressen of, bij gebrek daaraan, MX-records) op te geven.",
|
||||
"forwarding_hosts_hint": "Inkomende berichten worden onvoorwaardelijk geaccepteerd vanaf iedere host hieronder vermeld. Deze hosts worden hierdoor niet gecontroleerd op DNSBLs, en zullen de greylisting omzeilen. Spam wordt daarentegen zoals gebruikelijk in de spamfolder geplaatst. Dit wordt vaak gebruikt om mailservers te specificeren die forwarden naar deze Mailcow-server.",
|
||||
"forwarding_hosts_hint": "Inkomende berichten worden onvoorwaardelijk geaccepteerd vanaf iedere host hieronder vermeld. Deze hosts worden hierdoor niet gecontroleerd op DNSBLs, en zullen de greylisting omzeilen. Spam wordt daarentegen zoals gebruikelijk in de spamfolder geplaatst. Dit wordt vaak gebruikt om mailservers te specificeren die alles doorsturen naar deze Mailcow-server.",
|
||||
"from": "Afzender",
|
||||
"generate": "genereer",
|
||||
"guid": "Identificatienummer - GUID",
|
||||
@@ -295,7 +295,7 @@
|
||||
"to_top": "Naar boven",
|
||||
"transport_dest_format": "Voorbeeld: example.org, .example.org, *, mailbox@example.org (meerdere waarden zijn kommagescheiden)",
|
||||
"transport_maps": "Transport-maps",
|
||||
"transports_hint": "→ Een transport-map wordt boven een afzendergebonden transport-map verkozen.<br>→ Het uitgaande versleutelingsbeleid van individuele gebruikers wordt genegeerd en kan uitsluitend worden gehandhaafd doormiddel van globaal versleutelingsbeleid.<br>→ De transportservice is altijd \"smtp:\" en zal daarom met TLS proberen te verbinden. Wrapped TLS (SMTPS) wordt niet ondersteund.<br>→ Adressen overeenkomend met \"/localhost$/\" zullen altijd via \"local:\" getransporteerd worden, hierdoor zullen \"*\"-bestemmingen niet van toepassing zijn op deze adressen.<br>→ Om de aanmeldingsgegevens van een (voorbeeld) nexthop \"[host]:25\" te bepalen, zoekt Postfix <b>altijd</b> naar \"nexthop\" voodat er wordt gekeken naar \"[nexthop]:25\". Dit maakt het onmogelijk om \"nexthop\" en \"[nexthop]:25\" tegelijkertijd te gebruiken.",
|
||||
"transports_hint": "→ Een transport-map wordt boven een afzendergebonden transport-map verkozen.<br>→ Het uitgaande versleutelingsbeleid van individuele gebruikers wordt genegeerd en kan uitsluitend worden gehandhaafd door middel van globaal versleutelingsbeleid.<br>→ De transportservice is altijd \"smtp:\" en zal daarom met TLS proberen te verbinden. Wrapped TLS (SMTPS) wordt niet ondersteund.<br>→ Adressen overeenkomend met \"/localhost$/\" zullen altijd via \"local:\" getransporteerd worden, hierdoor zullen \"*\"-bestemmingen niet van toepassing zijn op deze adressen.<br>→ Om de aanmeldingsgegevens van een (voorbeeld) nexthop \"[host]:25\" te bepalen, zoekt Postfix <b>altijd</b> naar \"nexthop\" voodat er wordt gekeken naar \"[nexthop]:25\". Dit maakt het onmogelijk om \"nexthop\" en \"[nexthop]:25\" tegelijkertijd te gebruiken.",
|
||||
"ui_footer": "Footer (HTML toegestaan)",
|
||||
"ui_header_announcement": "Aankondigingen",
|
||||
"ui_header_announcement_active": "Activeer aankondiging",
|
||||
@@ -473,7 +473,7 @@
|
||||
"history_all_servers": "Geschiedenis (alle servers)",
|
||||
"in_memory_logs": "Geheugenlogs",
|
||||
"jvm_memory_solr": "JVM-geheugengebruik",
|
||||
"log_info": "<p>Mailcows <b>geheugenlogs</b> worden elke minuut afgesneden naar maximaal %d regels (LOG_LINES) om de stabiliteit te garanderen.<br>Geheugenlogs zijn niet bedoeld om bewaard te blijven. Alle applicaties die geheugenlogs schrijven worden ook naar het Docker-proces gelogd.<br>De geheugenlogs kunnen gebruikt worden voor het oplossen van problemen met bepaalde containers.</p><p><b>Externe logs</b> worden verzameld doormiddel van de API van deze applicaties.</p><p><b>Statische logs</b> zijn activiteitenlogs die niet naar het Docker-proces worden gelogd, maar wel bewaard moeten blijven (uitgezonderd API-logs).</p>",
|
||||
"log_info": "<p>Mailcows <b>geheugenlogs</b> worden elke minuut afgesneden naar maximaal %d regels (LOG_LINES) om de stabiliteit te garanderen.<br>Geheugenlogs zijn niet bedoeld om bewaard te blijven. Alle applicaties die geheugenlogs schrijven worden ook naar het Docker-proces gelogd.<br>De geheugenlogs kunnen gebruikt worden voor het oplossen van problemen met bepaalde containers.</p><p><b>Externe logs</b> worden verzameld door middel van de API van deze applicaties.</p><p><b>Statische logs</b> zijn activiteitenlogs die niet naar het Docker-proces worden gelogd, maar wel bewaard moeten blijven (uitgezonderd API-logs).</p>",
|
||||
"logs": "Logs",
|
||||
"restart_container": "Herstart",
|
||||
"solr_dead": "Solr is uitgeschakeld, uitgevallen of nog bezig met opstarten.",
|
||||
@@ -684,7 +684,7 @@
|
||||
"add_tls_policy_map": "Voeg versleutelingsbeleid toe",
|
||||
"address_rewriting": "Adresomleidingen",
|
||||
"alias": "Alias",
|
||||
"alias_domain_alias_hint": "Aliassen worden <b>niet</b> automatisch toegepast op domeinaliassen. Aliasadres <code>alias@domein</code> dekt het adres <code>alias@alias-domein</code> <b>niet</b> (waarbij \"alias-domein\" een aliasdomein is voor \"domein\").<br>Gebruik een filter om mail te forwarden naar een externe mailbox (zie het tabje \"Filters\" of gebruik SOGo -> Doorsturen).",
|
||||
"alias_domain_alias_hint": "Aliassen worden <b>niet</b> automatisch toegepast op domeinaliassen. Aliasadres <code>alias@domein</code> dekt het adres <code>alias@alias-domein</code> <b>niet</b> (waarbij \"alias-domein\" een aliasdomein is voor \"domein\").<br>Gebruik een filter om mail door te sturen naar een externe mailbox (zie het tabje \"Filters\" of gebruik SOGo -> Doorsturen).",
|
||||
"alias_domain_backupmx": "Aliasdomein inactief voor geforward domein",
|
||||
"aliases": "Aliassen",
|
||||
"allow_from_smtp": "Sta enkel de volgende IP-adressen toe voor <b>SMTP</b>",
|
||||
@@ -694,7 +694,7 @@
|
||||
"bcc": "BCC",
|
||||
"bcc_destination": "BCC-bestemming",
|
||||
"bcc_destinations": "BCC-bestemmingen",
|
||||
"bcc_info": "BCC-maps worden gebruikt om kopieën van alle berichten naar een ander adres te forwarden.<br>Wees er van bewust dat er geen melding wordt gedaan van een mislukte aflevering.",
|
||||
"bcc_info": "BCC-maps worden gebruikt om kopieën van alle berichten naar een ander adres door te sturen.<br>Wees er van bewust dat er geen melding wordt gedaan van een mislukte aflevering.",
|
||||
"bcc_local_dest": "Lokale bestemming",
|
||||
"bcc_map": "BCC-map",
|
||||
"bcc_map_type": "BCC-type",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"domain_quota_m": "Total de espaço por domínio (MiB):",
|
||||
"full_name": "Nome:",
|
||||
"mailbox_quota_m": "Máximo espaço por conta (MiB):",
|
||||
"mailbox_username": "Usuário (primeira parte do endereço de email):",
|
||||
"mailbox_username": "Utilizador (primeira parte do endereço de email):",
|
||||
"max_aliases": "Máximo de apelidos:",
|
||||
"max_mailboxes": "Máximo de contas:",
|
||||
"password": "Senha:",
|
||||
@@ -96,7 +96,7 @@
|
||||
"sender_acl_invalid": "Campo Sender ACL é inválido",
|
||||
"target_domain_invalid": "O endereço de Domínio Destino é inválido",
|
||||
"targetd_not_found": "Domínio de Destino não encontrado",
|
||||
"username_invalid": "Nome de usuário inválido",
|
||||
"username_invalid": "Nome de utilizador inválido",
|
||||
"validity_missing": "Você deve definir um período de validade"
|
||||
},
|
||||
"edit": {
|
||||
@@ -138,7 +138,7 @@
|
||||
"administration": "Administração",
|
||||
"email": "E-Mail",
|
||||
"mailcow_config": "Configuração",
|
||||
"user_settings": "Configurações do usuário"
|
||||
"user_settings": "Configurações do utilizador"
|
||||
},
|
||||
"info": {
|
||||
"no_action": "Nenhuma ação foi definida"
|
||||
@@ -147,7 +147,7 @@
|
||||
"delayed": "Sua entrada será atrasada por %s segundos.",
|
||||
"login": "Entrar",
|
||||
"password": "Senha",
|
||||
"username": "Usuário"
|
||||
"username": "Utilizador"
|
||||
},
|
||||
"mailbox": {
|
||||
"action": "Ação",
|
||||
@@ -186,7 +186,7 @@
|
||||
"target_domain": "Domínio Destino",
|
||||
"tls_enforce_in": "Forçar TLS na entrada",
|
||||
"tls_enforce_out": "Forçar TLS na saída",
|
||||
"username": "Usuário"
|
||||
"username": "Utilizador"
|
||||
},
|
||||
"quarantine": {
|
||||
"action": "Ação",
|
||||
@@ -199,7 +199,7 @@
|
||||
"help": "Mostrar/Ocultar painel de ajuda",
|
||||
"imap_smtp_server_auth_info": "Utilize o endereço de email completo com o método de autentucação PLAIN.<br>\r\nOs dados de login serão encryptados pelo servidor.",
|
||||
"mailcow_apps_detail": "Use um mailcow app para acessar seus emails, calendário, contatos e outras informações.",
|
||||
"mailcow_panel_detail": "<b>Administradores:</b> podem criar, alterar ou apagar contas e apelidos , alterar domínios e outras informações de seus domínios atribuídos.<br>\r\n\t<b>Usuários:</b> podem criar apelidos por tempo determinado , alterar senha e configuração do nível do filtro de spam."
|
||||
"mailcow_panel_detail": "<b>Administradores:</b> podem criar, alterar ou apagar contas e apelidos , alterar domínios e outras informações de seus domínios atribuídos.<br>\r\n\t<b>utilizadors:</b> podem criar apelidos por tempo determinado , alterar senha e configuração do nível do filtro de spam."
|
||||
},
|
||||
"success": {
|
||||
"admin_modified": "Administrador alterado com sucesso",
|
||||
@@ -267,7 +267,7 @@
|
||||
"tls_enforce_out": "Forçar TLS na saída",
|
||||
"tls_policy": "Regras de Encryptação",
|
||||
"tls_policy_warning": "<strong>Aviso:</strong> Se você selecionar para forçar o envio encryptado , alguns emails poderão ser rejeitados.<br>Mensages que não satisfizerem as politicas dos outros servidores serão rejeitadas definitivamente.",
|
||||
"user_settings": "Configurações do usuário",
|
||||
"user_settings": "Configurações do utilizador",
|
||||
"username": "Administrador",
|
||||
"week": "Semana",
|
||||
"weeks": "Semanas"
|
||||
|
||||
@@ -1224,6 +1224,8 @@
|
||||
"session_ua": "Неверный токен формы: ошибка проверки User-Agent"
|
||||
},
|
||||
"datatables": {
|
||||
"collapse_all": "Свернуть все",
|
||||
"expand_all": "Развернуть все",
|
||||
"infoPostFix": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
"exclude": "Exkludera objekt (regex-filter)",
|
||||
"full_name": "Fullständiga namn",
|
||||
"gal": "Global adressbok",
|
||||
"gal_info": "Den global adressboken innehåller alla objekt i en domän och kan inte redigeras av någon användare. Informationen om tillgänglighet i SOGo är endast synlig när den globala adressboken är påslagen. <b>Starta om SOGo för att tillämpa ändringar.</b>",
|
||||
"gal_info": "Den global adressboken innehåller alla objekt i en domän och kan inte redigeras av någon användare. Informationen om tillgänglighet i SOGo är endast synlig när den globala adressboken är påslagen. <b>Starta om SOGo för att tillämpa ändringar.</b>",
|
||||
"generate": "generera",
|
||||
"goto_ham": "Markera detta som en <span class=\"text-success\"><b>felaktig spam-registrering</b>, detta kommer förhindra liknande fel i framtiden</span>",
|
||||
"goto_null": "Kasta e-postmeddelanande omedelbart",
|
||||
|
||||
@@ -336,7 +336,9 @@
|
||||
"validate_license_now": "通过证书服务器验证 GUID",
|
||||
"verify": "验证",
|
||||
"yes": "✓",
|
||||
"options": "选项"
|
||||
"options": "选项",
|
||||
"f2b_max_ban_time": "最长封禁时间(秒)",
|
||||
"copy_to_clipboard": "复制到粘贴板"
|
||||
},
|
||||
"danger": {
|
||||
"access_denied": "访问被拒绝或者表单数据无效",
|
||||
@@ -456,7 +458,8 @@
|
||||
"validity_missing": "请设置有效期",
|
||||
"value_missing": "请填入所有值",
|
||||
"yotp_verification_failed": "Yubico OTP 认证失败: %s",
|
||||
"template_exists": "模板 %s 已存在"
|
||||
"template_exists": "模板 %s 已存在",
|
||||
"template_name_invalid": "模板名称无效"
|
||||
},
|
||||
"debug": {
|
||||
"chart_this_server": "图表 (此服务器)",
|
||||
@@ -487,7 +490,11 @@
|
||||
"container_disabled": "容器已被停止或禁用",
|
||||
"container_running": "运行中",
|
||||
"cores": "核心数",
|
||||
"memory": "内存"
|
||||
"memory": "内存",
|
||||
"error_show_ip": "无法解析公网IP地址",
|
||||
"show_ip": "显示公网IP",
|
||||
"update_available": "有可用更新",
|
||||
"update_failed": "无法检查更新"
|
||||
},
|
||||
"diagnostics": {
|
||||
"cname_from_a": "来自 A/AAAA 记录的值。但只要记录指向正确的资源即可。",
|
||||
@@ -903,7 +910,7 @@
|
||||
"disabled": "禁用",
|
||||
"second": "msgs / 秒",
|
||||
"minute": "msgs / 分钟",
|
||||
"hour": "msgs / 小说",
|
||||
"hour": "msgs / 小时",
|
||||
"day": "msgs / 天"
|
||||
},
|
||||
"start": {
|
||||
@@ -1202,7 +1209,8 @@
|
||||
"paginate": {
|
||||
"first": "第一页",
|
||||
"last": "最后一页",
|
||||
"previous": "上一页"
|
||||
"previous": "上一页",
|
||||
"next": "下一页"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,7 +146,6 @@
|
||||
var lang_fido2 = {{ lang_fido2|raw }};
|
||||
var docker_timeout = {{ docker_timeout|raw }} * 1000;
|
||||
var mailcow_cc_role = '{{ mailcow_cc_role }}';
|
||||
var last_login = '{{ last_login }}';
|
||||
var mailcow_info = {
|
||||
version_tag: '{{ mailcow_info.version_tag }}',
|
||||
last_version_tag: '{{ mailcow_info.last_version_tag }}',
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
<li class="login-history" data-days="31"><a class="dropdown-item" href="#">1 {{ lang.user.month }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="last-login mt-4"></div>
|
||||
<div class="last-login mt-4" id="recent-logins"></div>
|
||||
<span class="clear-last-logins mt-2">
|
||||
{{ lang.user.clear_recent_successful_connections }}
|
||||
</span>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
version: '2.1'
|
||||
services:
|
||||
|
||||
unbound-mailcow:
|
||||
image: mailcow/unbound:1.21
|
||||
image: mailcow/unbound:1.22
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- SKIP_UNBOUND_HEALTHCHECK=${SKIP_UNBOUND_HEALTHCHECK:-n}
|
||||
@@ -62,7 +61,7 @@ services:
|
||||
- redis
|
||||
|
||||
clamd-mailcow:
|
||||
image: mailcow/clamd:1.65
|
||||
image: mailcow/clamd:1.66
|
||||
restart: always
|
||||
depends_on:
|
||||
unbound-mailcow:
|
||||
@@ -81,7 +80,7 @@ services:
|
||||
- clamd
|
||||
|
||||
rspamd-mailcow:
|
||||
image: mailcow/rspamd:1.95
|
||||
image: mailcow/rspamd:1.96
|
||||
stop_grace_period: 30s
|
||||
depends_on:
|
||||
- dovecot-mailcow
|
||||
@@ -222,7 +221,7 @@ services:
|
||||
- sogo
|
||||
|
||||
dovecot-mailcow:
|
||||
image: mailcow/dovecot:1.28.2
|
||||
image: mailcow/dovecot:1.30
|
||||
depends_on:
|
||||
- mysql-mailcow
|
||||
- netfilter-mailcow
|
||||
@@ -265,6 +264,7 @@ services:
|
||||
- REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-}
|
||||
- REDIS_SLAVEOF_PORT=${REDIS_SLAVEOF_PORT:-}
|
||||
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
|
||||
- FLATCURVE_EXPERIMENTAL=${FLATCURVE_EXPERIMENTAL:-n}
|
||||
ports:
|
||||
- "${DOVEADM_PORT:-127.0.0.1:19991}:12345"
|
||||
- "${IMAP_PORT:-143}:143"
|
||||
@@ -290,7 +290,7 @@ services:
|
||||
ofelia.job-exec.dovecot_sarules.schedule: "@every 24h"
|
||||
ofelia.job-exec.dovecot_sarules.command: "/bin/bash -c \"/usr/local/bin/sa-rules.sh\""
|
||||
ofelia.job-exec.dovecot_fts.schedule: "@every 24h"
|
||||
ofelia.job-exec.dovecot_fts.command: "/usr/bin/curl http://solr:8983/solr/dovecot-fts/update?optimize=true"
|
||||
ofelia.job-exec.dovecot_fts.command: "/bin/bash -c \"/usr/local/bin/gosu vmail /usr/local/bin/optimize-fts.sh\""
|
||||
ofelia.job-exec.dovecot_repl_health.schedule: "@every 5m"
|
||||
ofelia.job-exec.dovecot_repl_health.command: "/bin/bash -c \"/usr/local/bin/gosu vmail /usr/local/bin/repl_health.sh\""
|
||||
ulimits:
|
||||
@@ -305,7 +305,7 @@ services:
|
||||
- dovecot
|
||||
|
||||
postfix-mailcow:
|
||||
image: mailcow/postfix:1.74
|
||||
image: mailcow/postfix:1.75
|
||||
depends_on:
|
||||
mysql-mailcow:
|
||||
condition: service_started
|
||||
@@ -405,13 +405,14 @@ services:
|
||||
condition: service_started
|
||||
unbound-mailcow:
|
||||
condition: service_healthy
|
||||
image: mailcow/acme:1.87
|
||||
image: mailcow/acme:1.88
|
||||
dns:
|
||||
- ${IPV4_NETWORK:-172.22.1}.254
|
||||
environment:
|
||||
- LOG_LINES=${LOG_LINES:-9999}
|
||||
- ACME_CONTACT=${ACME_CONTACT:-}
|
||||
- ADDITIONAL_SAN=${ADDITIONAL_SAN}
|
||||
- AUTODISCOVER_SAN=${AUTODISCOVER_SAN:-y}
|
||||
- MAILCOW_HOSTNAME=${MAILCOW_HOSTNAME}
|
||||
- DBNAME=${DBNAME}
|
||||
- DBUSER=${DBUSER}
|
||||
@@ -441,7 +442,7 @@ services:
|
||||
- acme
|
||||
|
||||
netfilter-mailcow:
|
||||
image: mailcow/netfilter:1.58
|
||||
image: mailcow/netfilter:1.59
|
||||
stop_grace_period: 30s
|
||||
restart: always
|
||||
privileged: true
|
||||
@@ -460,7 +461,7 @@ services:
|
||||
- /lib/modules:/lib/modules:ro
|
||||
|
||||
watchdog-mailcow:
|
||||
image: mailcow/watchdog:2.02
|
||||
image: mailcow/watchdog:2.03
|
||||
dns:
|
||||
- ${IPV4_NETWORK:-172.22.1}.254
|
||||
tmpfs:
|
||||
@@ -532,7 +533,7 @@ services:
|
||||
- watchdog
|
||||
|
||||
dockerapi-mailcow:
|
||||
image: mailcow/dockerapi:2.07
|
||||
image: mailcow/dockerapi:2.08
|
||||
security_opt:
|
||||
- label=disable
|
||||
restart: always
|
||||
@@ -553,7 +554,7 @@ services:
|
||||
|
||||
##### Will be removed soon #####
|
||||
solr-mailcow:
|
||||
image: mailcow/solr:1.8.2
|
||||
image: mailcow/solr:1.8.3
|
||||
restart: always
|
||||
depends_on:
|
||||
- netfilter-mailcow
|
||||
@@ -565,6 +566,7 @@ services:
|
||||
- TZ=${TZ}
|
||||
- SOLR_HEAP=${SOLR_HEAP:-1024}
|
||||
- SKIP_SOLR=${SKIP_SOLR:-y}
|
||||
- FLATCURVE_EXPERIMENTAL=${FLATCURVE_EXPERIMENTAL:-n}
|
||||
networks:
|
||||
mailcow-network:
|
||||
aliases:
|
||||
@@ -572,7 +574,7 @@ services:
|
||||
################################
|
||||
|
||||
olefy-mailcow:
|
||||
image: mailcow/olefy:1.12
|
||||
image: mailcow/olefy:1.13
|
||||
restart: always
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
|
||||
@@ -336,6 +336,13 @@ MAILDIR_GC_TIME=7200
|
||||
|
||||
ADDITIONAL_SAN=
|
||||
|
||||
# Obtain certificates for autodiscover.* and autoconfig.* domains.
|
||||
# This can be useful to switch off in case you are in a scenario where a reverse proxy already handles those.
|
||||
# There are mixed scenarios where ports 80,443 are occupied and you do not want to share certs
|
||||
# between services. So acme-mailcow obtains for maildomains and all web-things get handled
|
||||
# in the reverse proxy.
|
||||
AUTODISCOVER_SAN=y
|
||||
|
||||
# Additional server names for mailcow UI
|
||||
#
|
||||
# Specify alternative addresses for the mailcow UI to respond to
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: '2.1'
|
||||
services:
|
||||
unbound-mailcow:
|
||||
build: ./data/Dockerfiles/unbound
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: '2.1'
|
||||
services:
|
||||
|
||||
clamd-mailcow:
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: '2.1'
|
||||
services:
|
||||
|
||||
php-fpm-mailcow:
|
||||
@@ -26,6 +25,6 @@ services:
|
||||
- /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock
|
||||
|
||||
mysql-mailcow:
|
||||
image: alpine:3.19
|
||||
image: alpine:3.20
|
||||
command: /bin/true
|
||||
restart: "no"
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
## Set haproxy_trusted_networks in Dovecots extra.conf!
|
||||
##
|
||||
|
||||
version: '2.1'
|
||||
services:
|
||||
|
||||
dovecot-mailcow:
|
||||
|
||||
@@ -1,6 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
# renovate: datasource=github-releases depName=nextcloud/server versioning=semver extractVersion=^v(?<version>.*)$
|
||||
NEXTCLOUD_VERSION=28.0.1
|
||||
NEXTCLOUD_VERSION=28.0.6
|
||||
|
||||
display_warning() {
|
||||
local message=("$@")
|
||||
local max_length=0
|
||||
|
||||
for line in "${message[@]}"; do
|
||||
if (( ${#line} > max_length )); then
|
||||
max_length=${#line}
|
||||
fi
|
||||
done
|
||||
|
||||
local border=$(printf '%*s' "$((max_length + 4))" '' | tr ' ' '#')
|
||||
|
||||
echo -e "\e[31m${border}"
|
||||
for line in "${message[@]}"; do
|
||||
printf "\e[31m# %-*s #\n" "$max_length" "$line"
|
||||
done
|
||||
echo -e "\e[31m${border}"
|
||||
echo -e "\e[0m"
|
||||
}
|
||||
|
||||
display_warning "WARNING: This Script is deprecated and will be removed in December 2024!" \
|
||||
"mailcow will drop this installation/maintenance script within December 2024..." \
|
||||
"To ensure you can still use your Nextcloud Datas, please migrate to a standalone" \
|
||||
"Nextcloud instance either on a new Host or this host." \
|
||||
"You can either use Nextcloud in Docker or install it manually." \
|
||||
" "\
|
||||
"mailcow will NOT DELETE any Nextcloud Data, even when this script was removed!!"
|
||||
|
||||
echo -e "Waiting 5 seconds before continuing..."
|
||||
|
||||
|
||||
sleep 5
|
||||
|
||||
echo -ne "Checking prerequisites..."
|
||||
sleep 1
|
||||
|
||||
13
update.sh
13
update.sh
@@ -450,6 +450,7 @@ CONFIG_ARRAY=(
|
||||
"SKIP_CLAMD"
|
||||
"SKIP_IP_CHECK"
|
||||
"ADDITIONAL_SAN"
|
||||
"AUTODISCOVER_SAN"
|
||||
"DOVEADM_PORT"
|
||||
"IPV4_NETWORK"
|
||||
"IPV6_NETWORK"
|
||||
@@ -715,6 +716,18 @@ for option in ${CONFIG_ARRAY[@]}; do
|
||||
echo '# Comma separated list without spaces! Example: ADDITIONAL_SERVER_NAMES=a.b.c,d.e.f' >> mailcow.conf
|
||||
echo 'ADDITIONAL_SERVER_NAMES=' >> mailcow.conf
|
||||
fi
|
||||
|
||||
elif [[ ${option} == "AUTODISCOVER_SAN" ]]; then
|
||||
if ! grep -q ${option} mailcow.conf; then
|
||||
echo "Adding new option \"${option}\" to mailcow.conf"
|
||||
echo '# Obtain certificates for autodiscover.* and autoconfig.* domains.' >> mailcow.conf
|
||||
echo '# This can be useful to switch off in case you are in a scenario where a reverse proxy already handles those.' >> mailcow.conf
|
||||
echo '# There are mixed scenarios where ports 80,443 are occupied and you do not want to share certs' >> mailcow.conf
|
||||
echo '# between services. So acme-mailcow obtains for maildomains and all web-things get handled' >> mailcow.conf
|
||||
echo '# in the reverse proxy.' >> mailcow.conf
|
||||
echo 'AUTODISCOVER_SAN=y' >> mailcow.conf
|
||||
fi
|
||||
|
||||
elif [[ ${option} == "ACME_CONTACT" ]]; then
|
||||
if ! grep -q ${option} mailcow.conf; then
|
||||
echo "Adding new option \"${option}\" to mailcow.conf"
|
||||
|
||||
Reference in New Issue
Block a user