Compare commits

..

76 Commits

Author SHA1 Message Date
FreddleSpl0it
fcf27d640d Merge pull request #5979 from mailcow/staging
2024-07
2024-08-05 08:55:59 +02:00
FreddleSpl0it
cbca306fc1 Merge pull request #5976 from mailcow/fix/get-tfa
2024-07 fixes
2024-08-01 11:04:04 +02:00
Niklas Meyer
6a8986fe4f Merge pull request #5974 from mailcow:update/postscreen_access.cidr
[Postfix] update postscreen_access.cidr
2024-08-01 09:06:42 +02:00
milkmaker
ff34eb12e2 update postscreen_access.cidr 2024-08-01 00:16:46 +00:00
Niklas Meyer
03fccb28e9 Merge pull request #5971 from mailcow/dragoangel-patch-1
Do not add MAILCOW_WHITE on failed DMARC
2024-07-29 09:51:16 +02:00
Dmitriy Alekseev
8fbfd99dd6 Update composites.conf 2024-07-28 13:20:24 +02:00
Dmitriy Alekseev
7f7a869678 Do not add MAILCOW_WHITE on failed DMARC 2024-07-28 13:19:03 +02:00
DerLinkman
73257151c4 postfix: remove forced helo restrictions from master.cf 2024-07-24 15:29:28 +02:00
FreddleSpl0it
efb2572f0f [Web] escapeHtml in relayhosts table 2024-07-22 15:05:43 +02:00
FreddleSpl0it
66aa28b5de [Web] escapeHtml in api_log table 2024-07-22 15:04:29 +02:00
Niklas Meyer
987a027339 Merge pull request #5957 from mailcow/staging
2024-06c
2024-07-12 16:25:01 +02:00
Niklas Meyer
eea81e21f6 Revert "php: Rebase on Debian 12" (#5956)
* Revert "php: Rebase on Debian 12 (#5951)"

This reverts commit 9b478b3859.

* Revert all before "the storm" in php world
2024-07-12 16:21:53 +02:00
Niklas Meyer
a689109f44 Merge pull request #5955 from mailcow/revert-5875-staging_cml
Revert "Update debug.twig to include a link to the git project URL for the mailcow version tag"
2024-07-12 16:05:01 +02:00
Niklas Meyer
58c0a46459 Revert "Update debug.twig to include a link to the git project URL for the mailcow version tag" 2024-07-12 16:04:19 +02:00
Niklas Meyer
2dbe8bf4ca Merge pull request #5952 from mailcow/staging
2024-06b
2024-07-12 10:17:46 +02:00
Niklas Meyer
ef7ec06947 Merge pull request #5930 from mailcow/update/postscreen_access.cidr
[Postfix] update postscreen_access.cidr
2024-07-12 10:16:44 +02:00
DerLinkman
fc7ea7a247 web: remove WIP notice for ARM64 from ui 2024-07-12 10:15:06 +02:00
Niklas Meyer
9b478b3859 php: Rebase on Debian 12 (#5951)
* php: rebuild on debian 12

* Restored one build dockerfile

* cleanup Dockerfile
2024-07-12 09:40:10 +02:00
Niklas Meyer
aadeeb0df3 Merge pull request #5634 from torzech/proper-threads-regex
Enhanced regular expression for THREADS parameter
2024-07-09 10:10:42 +02:00
FreddleSpl0it
f33d82ffc1 [Web] use correct user to fetch TFA authenticators 2024-07-03 15:50:17 +02:00
milkmaker
8e2d3a6db5 update postscreen_access.cidr 2024-07-01 00:16:56 +00:00
Niklas Meyer
70126e1f0c Merge pull request #5926 from mailcow/staging
🌙🐄 Moone Update 2024 | Revision A
2024-06-27 18:07:19 +02:00
Niklas Meyer
b9ae174a6a Merge pull request #5925 from mailcow/revert-5912-weblate-translated
Revert "Translations update from Weblate"
2024-06-27 18:04:41 +02:00
Niklas Meyer
9715c57314 Revert "Translations update from Weblate (#5912)"
This reverts commit 1af9c21a50.
2024-06-27 18:03:01 +02:00
Niklas Meyer
b9f8959d92 Update CONTRIBUTING.md
Added language terms
2024-06-27 13:11:19 +02:00
Niklas Meyer
9c814cc182 Merge pull request #5922 from mailcow/staging
2024-06
2024-06-27 11:15:53 +02:00
Niklas Meyer
cf6594220c dovecot: add Flatcurve FTS Engine as EXPERIMENTAL (#5920)
* dovecot: experimental added flatcurve backend + switch

* dovecot: bump docker image
2024-06-26 11:28:18 +02:00
Niklas Meyer
2cf952eb36 [Postfix] Upgrade to Deb12 + PF to 3.7.10 & Drop TLS 1.0/1.1 per default (#5635)
* postfix: removed TLS1.0/1.1 support (natively)

* postfix: upgrade to deb12 + pf to 3.7.9

* compose: increased postfix tag

* postfix: shortened TLS syntax with new format of 3.6+
2024-06-26 10:44:07 +02:00
DerLinkman
6fc86dd7d3 acme: corrected acme-tiny download path 2024-06-24 10:00:30 +02:00
DerLinkman
bf13af9691 increased rspamd image tag 2024-06-24 10:00:16 +02:00
milkmaker
1af9c21a50 Translations update from Weblate (#5912)
* [Web] Updated lang.ca-es.json

[Web] Updated lang.ca-es.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.cs-cz.json

[Web] Updated lang.cs-cz.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.da-dk.json

[Web] Updated lang.da-dk.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.es-es.json

[Web] Updated lang.es-es.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.fi-fi.json

[Web] Updated lang.fi-fi.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.fr-fr.json

[Web] Updated lang.fr-fr.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.hu-hu.json

[Web] Updated lang.hu-hu.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.ro-ro.json

[Web] Updated lang.ro-ro.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.it-it.json

[Web] Updated lang.it-it.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.lv-lv.json

[Web] Updated lang.lv-lv.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.ko-kr.json

[Web] Updated lang.ko-kr.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.nl-nl.json

[Web] Updated lang.nl-nl.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.pl-pl.json

[Web] Updated lang.pl-pl.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.ru-ru.json

[Web] Updated lang.ru-ru.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.sk-sk.json

[Web] Updated lang.sk-sk.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.sv-se.json

[Web] Updated lang.sv-se.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.zh-cn.json

[Web] Updated lang.zh-cn.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.uk-ua.json

Co-authored-by: Anonymous <noreply@weblate.org>

* [Web] Updated lang.zh-tw.json

[Web] Updated lang.zh-tw.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.pt-pt.json

[Web] Updated lang.pt-pt.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.tr-tr.json

[Web] Updated lang.tr-tr.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.si-si.json

[Web] Updated lang.si-si.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.gr-gr.json

[Web] Updated lang.gr-gr.json

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>

* [Web] Updated lang.nb-no.json

Co-authored-by: Anonymous <noreply@weblate.org>

* [Web] Updated lang.lt-lt.json

Co-authored-by: Anonymous <noreply@weblate.org>

---------

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Peter <magic@kthx.at>
2024-06-24 09:07:46 +02:00
realizelol
443941e687 [Rspamd] Delete overriding obsolete rspamd plugin (#5900)
* [Dockerfiles] rspamd: Delete COPY of metadata_exporter.lua plugin

* [Dockerfiles] rspamd: Delete metadata_exporter.lua plugin file

* Dockerfile: changed way of installing rspamd (granular version)

---------

Co-authored-by: DerLinkman <niklas.meyer@servercow.de>
2024-06-24 09:07:12 +02:00
renovate[bot]
527577b438 chore(deps): update docker/build-push-action action to v6 (#5910)
Signed-off-by: milkmaker <milkmaker@mailcow.de>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-17 17:38:21 +02:00
milkmaker
9daf2d80c0 Translations update from Weblate (#5908)
* [Web] Updated lang.fr-fr.json

Co-authored-by: Paul FERA <paulfera17@gmail.com>

* [Web] Updated lang.lv-lv.json

[Web] Updated lang.lv-lv.json

Co-authored-by: Deniss <mailcow@rigaden.me>
Co-authored-by: Edgars Andersons <Edgars+Mailcow+Weblate@gaitenis.id.lv>

---------

Co-authored-by: Paul FERA <paulfera17@gmail.com>
Co-authored-by: Deniss <mailcow@rigaden.me>
Co-authored-by: Edgars Andersons <Edgars+Mailcow+Weblate@gaitenis.id.lv>
2024-06-16 19:21:46 +02:00
Daniel
38b0641742 Remove unnecessary log lines in Postfix's log (#5817)
* Update main.cf

In order to avoid unnecessary log lines, changed:

smtpd_discard_ehlo_keywords = chunking
to this one:

# The non-logging alternative:
smtpd_discard_ehlo_keywords = chunking, silent-discard

Update main.cf to remove unnecessary log lines in Postfix log
2024-06-10 14:51:55 +02:00
Niklas Meyer
f675af5bb0 Merge pull request #5902 from mailcow/feat/nextcloud-deprecation
nextcloud: add deprecation notice once script start
2024-06-10 14:33:53 +02:00
DerLinkman
533c4e7956 nextcloud: add deprecation notice once script start 2024-06-10 14:21:13 +02:00
Niklas Meyer
1b2c2c0037 Merge pull request #5690 from mailcow:renovate/nextcloud-server-28.x
chore(deps): update dependency nextcloud/server to v28.0.6
2024-06-10 13:57:09 +02:00
Niklas Meyer
97768494e1 Merge pull request #5880 from PierrePlt:fix/blocking-last-logins
Fix blocking last logins fetching
2024-06-10 12:40:43 +02:00
Lasagne
4a052da289 Add switch to skip fetching certificates auto{config,discover} subdomains (#5838)
* Add ACME_DONT_FETCH_CERTS_FOR_HTTP_SUBDOMAINS to acme.sh

* Add ACME_DONT_FETCH_CERTS_FOR_HTTP_SUBDOMAINS to docker-compose.yml

* Add ACME_DONT_FETCH_CERTS_FOR_HTTP_SUBDOMAINS to generate_config.sh

* Add ACME_DONT_FETCH_CERTS_FOR_HTTP_SUBDOMAINS to update.sh

* AUTODISCOVER_SAN instead of long string

default on,
default is fetching certs for auto{discover,conf}

* AUTODISCOVER_SAN instead of long string

also flipped

* AUTODISCOVER_SAN instead of long string

flipped default meaning

* fix explanation for AUTODISCOVER_SAN

* AUTODISCOVER_SAN instead of long string

and flipped meaning of the bool

* fix AUTODISCOVER_SAN explanation

* Merge branch 'mailcow:staging' into staging

* update.sh: corrected syntax for mailcow.conf insertion
2024-06-10 12:33:02 +02:00
Niklas Meyer
18d7a55b15 Merge pull request #5901 from mailcow:sorbs
Remove discontinued SORBS DNSBL
2024-06-10 12:18:43 +02:00
Michael Kuron
9ca2fb7ccf Remove discontinued SORBS DNSBL 2024-06-08 12:29:08 +02:00
Niklas Meyer
b4e8355827 Merge pull request #5845 from iamspido:patch-1
remove version from docker-compose.yml
2024-06-06 15:30:15 +02:00
DerLinkman
e0bde1c459 compose: removed all versions declarations (DEPRECATED) 2024-06-06 15:29:34 +02:00
Niklas Meyer
27c007ebd3 Merge pull request #5750 from DocFraggle:staging
Fix unbound healthcheck.sh to log all messages to logfile
2024-06-06 15:27:40 +02:00
Niklas Meyer
8f3ea09732 Merge pull request #5893 from mailcow/feat/base-os
os: updated all Alpine containers to 3.20
2024-06-05 13:10:10 +02:00
DerLinkman
af626d98d3 dovecot: fixed sa-rules download 2024-06-05 13:07:12 +02:00
Niklas Meyer
34b0574e56 Merge pull request #5886 from Thomas2500:patch-1
Switch IP2Country lookup backend to shortened version
2024-06-05 12:37:31 +02:00
Niklas Meyer
49d738809b Merge pull request #5863 from mailcow:update/postscreen_access.cidr
[Postfix] update postscreen_access.cidr
2024-06-05 12:32:56 +02:00
Niklas Meyer
2fa3a22eca Merge pull request #5875 from CallMeLeon167:staging_cml
Update debug.twig to include a link to the git project URL for the mailcow version tag
2024-06-05 12:31:33 +02:00
Niklas Meyer
dc5eb6f92e Merge pull request #5883 from mailcow:renovate/alpine-3.x
chore(deps): update alpine docker tag to v3.20
2024-06-05 12:27:28 +02:00
DerLinkman
ba8902f0b1 os: updated all Alpine containers to 3.20 2024-06-05 11:52:48 +02:00
milkmaker
11e9a77840 update postscreen_access.cidr 2024-06-01 00:15:03 +00:00
Thomas Bella
64cd7e74c5 Switch IP2Country lookup backend to shortened version
Improves performance of #5880
2024-05-28 20:29:05 +02:00
renovate[bot]
cac65d081e chore(deps): update dependency nextcloud/server to v28.0.6
Signed-off-by: milkmaker <milkmaker@mailcow.de>
2024-05-28 12:54:13 +00:00
renovate[bot]
e5ada994be Update alpine Docker tag to v3.20
Signed-off-by: milkmaker <milkmaker@mailcow.de>
2024-05-22 18:17:51 +00:00
Pierre Pelletier
6ba2459645 Fixed blocking last connection fetching 2024-05-18 11:38:41 +00:00
DerLinkman
58f63aad08 [UI] Corrected Sieve Preset 1 (Fixed Regex) 2024-05-13 15:02:41 +02:00
milkmaker
8a8687a63c [Web] Updated lang.zh-cn.json (#5876)
Co-authored-by: Koala Ng <tonghoil@hotmail.com>
2024-05-10 22:38:08 +02:00
Leon Schmidt
f7f93c360d fix formatting of the mailcow version tag link 2024-05-10 19:56:31 +02:00
Leon
c160e1f68e Update debug.twig 2024-05-10 15:57:36 +02:00
Leon Schmidt
47c08ab8d2 Update debug.twig target="_blank" attribute for the mailcow version tag link 2024-05-10 15:17:49 +02:00
Leon Schmidt
cd83ffbaa2 Update debug.twig to include a link to the git project URL for the mailcow version tag 2024-05-10 15:09:27 +02:00
milkmaker
e12981a821 [Web] Updated lang.zh-cn.json (#5873)
Co-authored-by: Koala Ng <tonghoil@hotmail.com>
2024-05-07 17:44:37 +02:00
Ramis
47fd1bb894 Update lang.ru-ru.json (#5865)
Update lang

Co-authored-by: Patrick Schult <75116288+FreddleSpl0it@users.noreply.github.com>
2024-05-03 14:05:43 +02:00
milkmaker
20582b6353 [Web] Updated lang.lv-lv.json (#5862)
Co-authored-by: Edgars Andersons <Edgars+Mailcow+Weblate@gaitenis.id.lv>
2024-04-30 18:28:09 +02:00
IamSpido
c8ff5387c0 remove version from docker-compose.yml
With docker version 25.05 the version 2.1 in docker-compose.yml will be obsolete.
docker-compose.yml: `version` is obsolete
2024-04-16 14:10:44 +02:00
Mitchell van Bijleveld
7cb138d515 Improve Dutch translation (#5840) 2024-04-11 21:36:45 +02:00
milkmaker
3dd4c45fab Translations update from Weblate (#5839)
* [Web] Updated lang.hu-hu.json

Co-authored-by: David Csillag <csillag.david.istvan@gmail.com>
Co-authored-by: milkmaker <milkmaker@mailcow.de>

* [Web] Updated lang.lv-lv.json

Co-authored-by: Edgars Andersons <Edgars+Mailcow+Weblate@gaitenis.id.lv>
Co-authored-by: milkmaker <milkmaker@mailcow.de>

---------

Co-authored-by: David Csillag <csillag.david.istvan@gmail.com>
Co-authored-by: Edgars Andersons <Edgars+Mailcow+Weblate@gaitenis.id.lv>
2024-04-10 21:55:31 +02:00
polido
549539bec9 Update lang.pt-pt.json (#5832)
Co-authored-by: Patrick Schult <75116288+FreddleSpl0it@users.noreply.github.com>
2024-04-08 17:48:41 +02:00
milkmaker
e449cac464 Translations update from Weblate (#5835)
* [Web] Updated lang.fr-fr.json

Co-authored-by: Quiwy <github@quiwy.ninja>

* [Web] Updated lang.sv-se.json

Co-authored-by: André J <aj@nadox.se>

---------

Co-authored-by: Quiwy <github@quiwy.ninja>
Co-authored-by: André J <aj@nadox.se>
2024-04-08 17:47:43 +02:00
milkmaker
62e458f39b [Web] Updated lang.fr-fr.json (#5824)
Co-authored-by: Quiwy <github@quiwy.ninja>
2024-04-04 19:23:02 +02:00
FreddleSpl0it
b37caaf9e5 [Web] secure container_ctrl.php 2024-04-04 16:30:35 +02:00
FreddleSpl0it
7660ca89ae [Web] break loop if rspamd_map is valid 2024-04-04 16:29:58 +02:00
Hailer, Christian
02a55ce9db Fix unbound healthcheck.sh to log all messages to logfile 2024-02-19 09:26:29 +01:00
Tomasz Orzechowski
6dc0bdbfa3 Proper number of threads regex. 2024-01-09 22:03:24 +01:00
61 changed files with 884 additions and 1164 deletions

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -1,3 +1,3 @@
FROM debian:bullseye-slim
FROM debian:bookworm-slim
RUN apt update && apt install pigz

View File

@@ -1,4 +1,4 @@
FROM alpine:3.19
FROM alpine:3.20
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"

View File

@@ -1,4 +1,4 @@
FROM alpine:3.19
FROM alpine:3.20
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"

View File

@@ -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")

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -1,4 +1,4 @@
FROM alpine:3.19
FROM alpine:3.20
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
WORKDIR /app

View File

@@ -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:

View File

@@ -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

View File

@@ -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}"

View File

@@ -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

View File

@@ -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')

View File

@@ -1,4 +1,4 @@
@version: 3.28
@version: 3.38
@include "scl.conf"
options {
chain_hostnames(off);

View File

@@ -1,4 +1,4 @@
@version: 3.28
@version: 3.38
@include "scl.conf"
options {
chain_hostnames(off);

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18
FROM alpine:3.20
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"

View File

@@ -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

View File

@@ -1,4 +1,4 @@
FROM alpine:3.18
FROM alpine:3.20
LABEL maintainer "The Infrastructure Company GmbH <info@servercow.de>"
# Installation

View File

@@ -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

View File

@@ -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\)/

View File

@@ -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 #

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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";

View File

@@ -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";

View File

@@ -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();

View File

@@ -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)) {

View File

@@ -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 {

View File

@@ -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) {

View File

@@ -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.

View File

@@ -397,7 +397,10 @@ jQuery(function($){
{
title: lang.host,
data: 'hostname',
defaultContent: ''
defaultContent: '',
render: function (data, type) {
return escapeHtml(data);
}
},
{
title: lang.username,

View File

@@ -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");

View File

@@ -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'));
});

View File

@@ -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 dune 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 nest 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 lexpé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 lexpé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 lexpé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 lexpé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 % dutilisation.",
"quota_notifications_vars": "{{percent}} égale le quota actuel de lutilisateur<br>{{username}} est le nom de la boîte",
"quota_notifications_vars": "{{percent}} égale le quota actuel de lutilisateur<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 dapparition 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 lexemple 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": "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": "&#8226 ; 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 dun 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 dun 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 dutilisateur 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 na 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 lexpé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 dactivité, 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 dactivité, 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 lenregistrement A/AAAA. Ceci est supporté tant que lenregistrement 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 dautomatiser 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é nest pas visible pour lutilisateur, tandis quun 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 lexpé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 lexpéditeur externe",
"extended_sender_acl_info": "Une clé de domaine DKIM doit être importée, si disponible.<br>\r\n Noubliez pas dajouter ce serveur à lenregistrement TXT SPF correspondant.<br>\r\n Chaque fois quun domaine ou un alias de domaine est ajouté à ce serveur, et qui chevauche une adresse externe, ladresse 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 lutilisateur connecté. Une limite tarifaire pour les boîtes remplace une limite tarifaire pour lensemble 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 lutilisateur connecté. Une limite d'envoi pour les boîtes de réception remplace une limite d'envoi pour lensemble 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 sappliqueront à 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 sappliqueront à 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 lexpéditeur : <small>(séparées par des virgules)</small>",
"pushover_sender_array": "Ne tenir compte que des adresses de courriel suivantes de lexpéditeur : <small>(séparées par des virgules)</small>",
"pushover_sender_regex": "Tenir compte de lexpéditeur regex suivant",
"pushover_text": "Texte de la notification",
"pushover_title": "Titre de la notification",
"pushover_vars": "Lorsque aucun filtre dexpéditeur nest défini, tous les messages seront considérés.<br>Les filtres Regex ainsi que les vérifications exactes de lexpé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 nest 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 lexpéditeur",
"remove": "Enlever",
"resource": "Ressource",
@@ -582,12 +598,12 @@
"scope": "Portée",
"sender_acl": "Permettre denvoyer comme",
"sender_acl_disabled": "<span class=\"badge fs-6 bg-danger\">Le contrôle de lexpéditeur est désactivé</span>",
"sender_acl_info": "Si lutilisateur de la boîte A est autorisé à envoyer en tant quutilisateur de la boîte B, ladresse de lexpéditeur nest pas automatiquement affichée comme sélectionnable du champ \"from\" dans SOGo.<br>\r\n Lutilisateur B de la boîte doit créer une délégation dans Sogo pour permettre à lutilisateur 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 sapplique pas aux adresses alias.",
"sender_acl_info": "Si lutilisateur de la boîte de réception A est autorisé à envoyer en tant quutilisateur de la boîte de réception B, ladresse de lexpéditeur nest pas automatiquement affichée comme sélectionnable du champ \"de\" dans SOGo.<br>\n Lutilisateur B de la boîte de réception doit créer une délégation dans Sogo pour permettre à lutilisateur 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 sapplique 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 napparaî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 napparaî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 &lt;moo@mailcow.tld&gt ;\" 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 quil soit terminé.",
"restart_container_info": "<b>Important :</b> Un redémarrage en douceur peut prendre un certain temps, veuillez attendre quil 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 quutilisateur de la boîte pour télécharger le profil de connexion Apple demandé.",
"mobileconfig_info": "Veuillez vous connecter en tant quutilisateur 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 dabord 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 ladresse",
"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. dune 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. dune 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 ladresse de destination dun 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 lordre décrit. Ni un script \"rejeter\" ni un \"garder\" narrê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 lordre décrit. Ni un script « rejeter » ni un « garder » narrê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 le-mail dun 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 dun 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 lexpé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 nexiste 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 nexiste 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": "&#10003;"
"yes": "&#10003;",
"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 laccès via Oauth2.",
"access_denied": "Veuillez vous connecter en tant que propriétaire de la boîte de réception pour accorder laccè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 dutilisateur, 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 daide",
"imap_smtp_server_auth_info": "Veuillez utiliser votre adresse e-mail complète et le mécanisme dauthentification 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 dauthentification 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 à lAPI ont été enregistrées",
"admin_modified": "Les modifications apportées à ladministrateur 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 dapplication",
"app_passwd_added": "Ajout dun nouveau mot de passe dapplication",
"app_passwd_removed": "Suppression de lidentifiant du mot de passe de lapplication %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 lutilisateur %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 didentification.",
"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 lobjet %s enregistrée",
"rl_saved": "Limite d'envoi pour lobjet %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 lentré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 linterface 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 dun périphérique USB…</i><br><br>Sil vous plaît appuyez maintenant sur le bouton de votre périphérique USB WebAuthn.",
"waiting_usb_register": "<i>En attente dun 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 quutilisateur",
"aliases_send_as_all": "Ne pas vérifier laccès de lexpéditeur pour les domaines suivants et leurs alias",
"app_hint": "Les mots de passe dapplication sont des mots de passe alternatifs pour votre connexion IMAP, SMTP, Caldav, Carddav et EAS. Le nom dutilisateur reste inchangé.<br>SOGo n'est pas disponible au travers de mots de passe.",
"app_hint": "Les mots de passe dapplication sont des mots de passe alternatifs pour votre connexion IMAP, SMTP, Caldav, Carddav et EAS. Le nom dutilisateur 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 dalias directes sont affectées par le filtre anti-spam et les paramètres de politique TLS.",
"eas_reset": "Réinitialiser le cache de lappareil Activesync",
"eas_reset_help": "Dans de nombreux cas, une réinitialisation du cache de lappareil 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 lappareil ActiveSync",
"eas_reset_help": "Dans de nombreux cas, une réinitialisation du cache de lappareil 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 sappliqueront à 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 lexpéditeur : <small>(comma-separated)</small>",
"pushover_sender_array": "Tenir compte des adresses de courriel suivantes de lexpé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": "Lorsquaucun filtre dexpéditeur nest défini, tous les messages seront considérés.<br>Les filtres Regex ainsi que les vérifications exactes de lexpé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 dexpéditeur nest défini, tous les messages seront considérés.<br>Les filtres Regex ainsi que les vérifications exactes de lexpé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 quun 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 quun 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 lexpé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 à lutilisateur 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 lutilisateur",
"show_sieve_filters": "Afficher le filtre sieve actif de lutilisateur",
"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 nest appliqué quaux alias directs (alias avec une seule boîte cible), à lexclusion des alias tous azimuts et dune 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 nest appliqué quaux alias directs (alias avec une seule boîte de réception cible), à lexclusion des alias tous azimuts et dune 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 nest appliqué quaux alias directs (alias avec une seule boîte cible), à lexclusion des alias catch-all et dune 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 nest appliqué quaux alias directs (alias avec une seule boîte de réception cible), à lexclusion des alias catch-all et dune 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 dappliquer 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 sapplique à 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 dappliquer 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 sapplique à 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 lutilisateur connecté",
@@ -1120,9 +1211,32 @@
"fuzzy_learn_error": "Erreur dapprentissage 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é"
}
}

View File

@@ -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.&lt;domain&gt;, autodiscover.&lt;domain&gt;).<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"
}
}

View File

@@ -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.&lt;domain&gt;, autodiscover.&lt;domain&gt;).<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 &#8226; Pirmsfiltrs &#8226; Lietotāja skripti &#8226; Pēcfiltrs &#8226; 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"
}
}

View File

@@ -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",

View File

@@ -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"

View File

@@ -1224,6 +1224,8 @@
"session_ua": "Неверный токен формы: ошибка проверки User-Agent"
},
"datatables": {
"collapse_all": "Свернуть все",
"expand_all": "Развернуть все",
"infoPostFix": ""
}
}

View File

@@ -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",

View File

@@ -336,7 +336,9 @@
"validate_license_now": "通过证书服务器验证 GUID",
"verify": "验证",
"yes": "&#10003;",
"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": "下一页"
}
}
}

View File

@@ -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 }}',

View File

@@ -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>

View File

@@ -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}

View File

@@ -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

View File

@@ -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

View File

@@ -1,4 +1,3 @@
version: '2.1'
services:
unbound-mailcow:
build: ./data/Dockerfiles/unbound

View File

@@ -1,4 +1,3 @@
version: '2.1'
services:
clamd-mailcow:

View File

@@ -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"

View File

@@ -2,7 +2,6 @@
## Set haproxy_trusted_networks in Dovecots extra.conf!
##
version: '2.1'
services:
dovecot-mailcow:

View File

@@ -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

View File

@@ -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"