diff --git a/.github/workflows/generic_build.yml b/.github/workflows/generic_build.yml index 30d8df46..a8acd03b 100644 --- a/.github/workflows/generic_build.yml +++ b/.github/workflows/generic_build.yml @@ -80,7 +80,7 @@ jobs: # NOTE: AMD64 can build within 2 minutes - name: 'Build images' - uses: docker/build-push-action@v6.13.0 + uses: docker/build-push-action@v6.14.0 with: context: . # Build at least the AMD64 image (which runs against the test suite). diff --git a/.github/workflows/generic_publish.yml b/.github/workflows/generic_publish.yml index 72228d51..5b331617 100644 --- a/.github/workflows/generic_publish.yml +++ b/.github/workflows/generic_publish.yml @@ -67,7 +67,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: 'Build and publish images' - uses: docker/build-push-action@v6.13.0 + uses: docker/build-push-action@v6.14.0 with: context: . build-args: | diff --git a/.github/workflows/generic_test.yml b/.github/workflows/generic_test.yml index 1303c8ad..98c568d7 100644 --- a/.github/workflows/generic_test.yml +++ b/.github/workflows/generic_test.yml @@ -43,7 +43,7 @@ jobs: # Importing from the cache should create the image within approx 30 seconds: # NOTE: `qemu` step is not needed as we only test for AMD64. - name: 'Build AMD64 image from cache' - uses: docker/build-push-action@v6.13.0 + uses: docker/build-push-action@v6.14.0 with: context: . tags: mailserver-testing:ci diff --git a/.github/workflows/generic_vulnerability-scan.yml b/.github/workflows/generic_vulnerability-scan.yml index 511ade7a..438a0f03 100644 --- a/.github/workflows/generic_vulnerability-scan.yml +++ b/.github/workflows/generic_vulnerability-scan.yml @@ -42,7 +42,7 @@ jobs: # Importing from the cache should create the image within approx 30 seconds: # NOTE: `qemu` step is not needed as we only test for AMD64. - name: 'Build AMD64 image from cache' - uses: docker/build-push-action@v6.13.0 + uses: docker/build-push-action@v6.14.0 with: context: . tags: mailserver-testing:ci diff --git a/CHANGELOG.md b/CHANGELOG.md index 57adc33d..eae261ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased](https://github.com/docker-mailserver/docker-mailserver/compare/v14.0.0...HEAD) +## [Unreleased](https://github.com/docker-mailserver/docker-mailserver/compare/v15.0.0...HEAD) > **Note**: Changes and additions listed here are contained in the `:edge` image tag. These changes may not be as stable as released changes. +## [v15.0.0](https://github.com/docker-mailserver/docker-mailserver/releases/tag/v15.0.0) + ### Breaking - **saslauthd** mechanism support via ENV `SASLAUTHD_MECHANISMS` with `pam`, `shadow`, `mysql` values has been removed. Only `ldap` and `rimap` remain supported ([#4259](https://github.com/docker-mailserver/docker-mailserver/pull/4259)) @@ -17,6 +19,7 @@ All notable changes to this project will be documented in this file. The format - This has been corrected to `/var/lib/getmail` (_if you have mounted a DMS State Volume to `/var/mail-state`, `/var/lib/getmail` will be symlinked to `/var/mail-state/lib-getmail`_). - To preserve this state when upgrading to DMS v15, **you must manually migrate `getmail/` from the _DMS Config Volume_ to `lib-getmail/` in the _DMS State Volume_.** - `setup email delete ` now requires explicit confirmation if the mailbox data should be deleted ([#4365](https://github.com/docker-mailserver/docker-mailserver/pull/4365)). +- **Rspamd:** Removed deprecated file path check (_DMS config volume: `./rspamd-modules.conf` => `./rspamd/custom-commands.conf`_) ([#4373](https://github.com/docker-mailserver/docker-mailserver/pull/4373)) ### Added @@ -26,7 +29,7 @@ All notable changes to this project will be documented in this file. The format ### Updates -**Internal:** +- **Internal:** - **Removed `VERSION` file** from the repo. Releases of DMS prior to v13 (Nov 2023) would check this to detect new releases ([#3677](https://github.com/docker-mailserver/docker-mailserver/issues/3677), [#4321](https://github.com/docker-mailserver/docker-mailserver/pull/4321)) - During image build, ensure a secure connection when downloading the `fail2ban` package ([#4080](https://github.com/docker-mailserver/docker-mailserver/pull/4080)) - **Documentation:** diff --git a/demo-setups/fetchmail-compose.yaml b/demo-setups/fetchmail-compose.yaml index d8632228..f6e1ddb9 100644 --- a/demo-setups/fetchmail-compose.yaml +++ b/demo-setups/fetchmail-compose.yaml @@ -1,10 +1,10 @@ -# Docs: https://docker-mailserver.github.io/docker-mailserver/v14.0/config/advanced/mail-fetchmail +# Docs: https://docker-mailserver.github.io/docker-mailserver/v15.0/config/advanced/mail-fetchmail # Additional context, with CLI commands for verification: # https://github.com/orgs/docker-mailserver/discussions/3994#discussioncomment-9290570 services: dms-fetch: - image: ghcr.io/docker-mailserver/docker-mailserver:latest # :14.0 + image: ghcr.io/docker-mailserver/docker-mailserver:latest # :15.0 hostname: mail.example.test environment: ENABLE_FETCHMAIL: 1 @@ -26,7 +26,7 @@ services: target: /tmp/docker-mailserver/fetchmail.cf dms-remote: - image: ghcr.io/docker-mailserver/docker-mailserver:latest # :14.0 + image: ghcr.io/docker-mailserver/docker-mailserver:latest # :15.0 hostname: mail.remote.test environment: # Allows for us send a test mail easily by trusting any mail client run within this container (`swaks`): diff --git a/demo-setups/relay-compose.yaml b/demo-setups/relay-compose.yaml index cb4f0846..7bbc9f21 100644 --- a/demo-setups/relay-compose.yaml +++ b/demo-setups/relay-compose.yaml @@ -1,11 +1,11 @@ -# Docs: https://docker-mailserver.github.io/docker-mailserver/v14.0/config/advanced/mail-forwarding/relay-hosts/ +# Docs: https://docker-mailserver.github.io/docker-mailserver/v15.0/config/advanced/mail-forwarding/relay-hosts/ # Additional context, with CLI commands for verification: # https://github.com/docker-mailserver/docker-mailserver/issues/4136#issuecomment-2253693490 services: # This would represent your actual DMS container: dms-sender: - image: mailserver/docker-mailserver:latest # :14.0 + image: mailserver/docker-mailserver:latest # :15.0 hostname: mail.example.test environment: # All outbound mail will be relayed through this host @@ -37,7 +37,7 @@ services: # Pretend this is your third-party relay service: dms-relay: - image: mailserver/docker-mailserver:latest # :14.0 + image: mailserver/docker-mailserver:latest # :15.0 hostname: smtp.relay-service.test environment: # WORKAROUND: Bypass security checks from the mail-client (dms-sender container) @@ -58,7 +58,7 @@ services: # Pretend this is another mail server that your target recipient belongs to (like Gmail): dms-destination: - image: mailserver/docker-mailserver:latest # :14.0 + image: mailserver/docker-mailserver:latest # :15.0 hostname: mail.destination.test # WORKAROUND: dms-relay must be able to resolve DNS for `@destination.test` to the IP of this container: # Normally a MX record would direct mail to the MTA (eg: `mail.destination.test`) diff --git a/docs/content/config/advanced/mail-forwarding/relay-hosts.md b/docs/content/config/advanced/mail-forwarding/relay-hosts.md index 7ef8238c..3d13e93b 100644 --- a/docs/content/config/advanced/mail-forwarding/relay-hosts.md +++ b/docs/content/config/advanced/mail-forwarding/relay-hosts.md @@ -151,6 +151,6 @@ We provide this support via two config files: [wikipedia::smarthost]: https://en.wikipedia.org/wiki/Smart_host [docs::env-relay]: ../../environment.md#relay-host -[dms-repo::helpers-relay]: https://github.com/docker-mailserver/docker-mailserver/blob/v14.0.0/target/scripts/helpers/relay.sh +[dms-repo::helpers-relay]: https://github.com/docker-mailserver/docker-mailserver/blob/v15.0.0/target/scripts/helpers/relay.sh [dms-gh::pr-3607]: https://github.com/docker-mailserver/docker-mailserver/issues/3607 [dms-gh::relay-example]: https://github.com/docker-mailserver/docker-mailserver/issues/3842#issuecomment-1913380639 diff --git a/docs/content/config/security/rspamd.md b/docs/content/config/security/rspamd.md index 45f94c65..7492e285 100644 --- a/docs/content/config/security/rspamd.md +++ b/docs/content/config/security/rspamd.md @@ -139,7 +139,7 @@ To use the web interface you will need to configure a password, [otherwise you w --- - **Related:** A minimal Rspamd `compose.yaml` [example with a reverse-proxy for web access][gh-dms:guide::rspamd-web]. + **Related:** A minimal Rspamd `compose.yaml` [example with a reverse-proxy for web access][gh-dms::guide::rspamd-web]. ### DNS @@ -353,8 +353,8 @@ While _Abusix_ can be integrated into Postfix, Postscreen and a multitude of oth [abusix-docs::rspamd-integration]: https://abusix.com/docs/rspamd/ [spamhaus::faq::dnsbl-usage]: https://www.spamhaus.org/faq/section/DNSBL%20Usage#365 -[dms-repo::rspamd-actions-config]: https://github.com/docker-mailserver/docker-mailserver/tree/v14.0.0/target/rspamd/local.d/actions.conf -[dms-repo::default-rspamd-configuration]: https://github.com/docker-mailserver/docker-mailserver/tree/v14.0.0/target/rspamd +[dms-repo::rspamd-actions-config]: https://github.com/docker-mailserver/docker-mailserver/tree/v15.0.0/target/rspamd/local.d/actions.conf +[dms-repo::default-rspamd-configuration]: https://github.com/docker-mailserver/docker-mailserver/tree/v15.0.0/target/rspamd [gh-dms::guide::valkey]: https://github.com/docker-mailserver/docker-mailserver/issues/4001#issuecomment-2652596692 [gh-dms::guide::rspamd-web]: https://github.com/orgs/docker-mailserver/discussions/4269#discussioncomment-11329588 diff --git a/docs/content/examples/tutorials/dovecot-solr.md b/docs/content/examples/tutorials/dovecot-solr.md index be4c91f6..13a9f0e7 100644 --- a/docs/content/examples/tutorials/dovecot-solr.md +++ b/docs/content/examples/tutorials/dovecot-solr.md @@ -24,39 +24,41 @@ As the official DMS image does not provide `dovecot-solr`, you'll need to includ !!! quote "" === "`user-patches.sh`" - + If you'd prefer to avoid a custom image build. This approach is simpler but with the caveat that any time the container is restarted, you'll have a delay as the package is installed each time. - + ```bash #!/bin/bash - + apt-get update && apt-get install dovecot-solr ``` - + === "`compose.yaml`" - + A custom DMS image does not add much friction. You do not need a separate `Dockerfile` as Docker Compose supports building from an inline `Dockerfile` in your `compose.yaml`. - + The `image` key of the service is swapped for the `build` key instead, as shown below: - + ```yaml services: mailserver: hostname: mail.example.com # The `image` setting now represents the tag for the local build configured below: - image: local/dms:14.0 + image: local/dms:${DMS_TAG?Must set DMS image tag} # Local build (no need to try pull `image` remotely): pull_policy: build # Add this `build` section to your real `compose.yaml` for your DMS service: build: dockerfile_inline: | - FROM docker.io/mailserver/docker-mailserver:14.0 + FROM docker.io/mailserver/docker-mailserver:${DMS_TAG?Must set DMS image tag} RUN apt-get update && apt-get install dovecot-solr ``` - - - Just run `docker compose up` and it will pull DMS and build your custom image to run a container. - - Updating to a new DMS release is straight-forward, just adjust the version tag as you normally would. If you make future changes that don't apply, you may need to force a rebuild. - - This approach only needs to install the package once with the image build itself. This minimizes delay of container startup. + + This approach only needs to install the package once with the image build itself which minimizes the delay of container startup. + + - Just run `DMS_TAG='14.0' docker compose up` and it will pull the DMS image, then build your custom DMS image to run a new container instance. + - Updating to a new DMS release is straight-forward, just adjust the `DMS_TAG` ENV value or change the image tag directly in `compose.yaml` as you normally would to upgrade an image. + - If you make future changes to the `dockerfile_inline` that don't seem to be applied, you may need to force a rebuild with `DMS_TAG='14.0' docker compose up --build`. !!! note "Why doesn't DMS include `dovecot-solr`?" diff --git a/target/scripts/helpers/rspamd.sh b/target/scripts/helpers/rspamd.sh index 1d3e1417..1de0fb6a 100644 --- a/target/scripts/helpers/rspamd.sh +++ b/target/scripts/helpers/rspamd.sh @@ -111,14 +111,6 @@ function _rspamd_handle_user_modules_adjustments() { fi } - # We check for usage of the previous location of the commands file. - # TODO This can be removed after the release of v14.0.0. - local RSPAMD_DMS_CUSTOM_COMMANDS_F_OLD="${RSPAMD_DMS_D}-modules.conf" - readonly RSPAMD_DMS_CUSTOM_COMMANDS_F_OLD - if [[ -f ${RSPAMD_DMS_CUSTOM_COMMANDS_F_OLD} ]]; then - _dms_panic__general "Old custom command file location '${RSPAMD_DMS_CUSTOM_COMMANDS_F_OLD}' is deprecated (use '${RSPAMD_DMS_CUSTOM_COMMANDS_F}' now)" 'Rspamd setup' - fi - if [[ -f "${RSPAMD_DMS_CUSTOM_COMMANDS_F}" ]]; then __rspamd__log 'debug' "Found file '${RSPAMD_DMS_CUSTOM_COMMANDS_F}' - parsing and applying it"