Skip to content

Commit 4ccfedd

Browse files
Merge pull request #7024 from mailcow/staging
๐Ÿ„๐Ÿ›ก๏ธ January 2026 Update | Limited EAS/DAV Access and Restricted Alias Sending
2 parents e8d9315 + c3d8413 commit 4ccfedd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+842
-286
lines changed

โ€Ž.github/workflows/update_postscreen_access_list.ymlโ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
bash helper-scripts/update_postscreen_whitelist.sh
2323
2424
- name: Create Pull Request
25-
uses: peter-evans/create-pull-request@v7
25+
uses: peter-evans/create-pull-request@v8
2626
with:
2727
token: ${{ secrets.mailcow_action_Update_postscreen_access_cidr_pat }}
2828
commit-message: update postscreen_access.cidr

โ€Ždata/Dockerfiles/acme/acme.shโ€Ž

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,25 @@ while true; do
246246
done
247247
VALIDATED_CONFIG_DOMAINS+=("${VALIDATED_CONFIG_DOMAINS_SUBDOMAINS[*]}")
248248
done
249+
250+
# Fetch alias domains where target domain has MTA-STS enabled
251+
if [[ ${AUTODISCOVER_SAN} == "y" ]]; then
252+
SQL_ALIAS_DOMAINS=$(mariadb --skip-ssl --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT ad.alias_domain FROM alias_domain ad INNER JOIN mta_sts m ON ad.target_domain = m.domain WHERE ad.active = 1 AND m.active = 1" -Bs)
253+
if [[ $? -eq 0 ]]; then
254+
while read alias_domain; do
255+
if [[ -z "${alias_domain}" ]]; then
256+
# ignore empty lines
257+
continue
258+
fi
259+
# Only add mta-sts subdomain for alias domains
260+
if [[ "mta-sts.${alias_domain}" != "${MAILCOW_HOSTNAME}" ]]; then
261+
if check_domain "mta-sts.${alias_domain}"; then
262+
VALIDATED_CONFIG_DOMAINS+=("mta-sts.${alias_domain}")
263+
fi
264+
fi
265+
done <<< "${SQL_ALIAS_DOMAINS}"
266+
fi
267+
fi
249268
fi
250269

251270
if check_domain ${MAILCOW_HOSTNAME}; then

โ€Ždata/Dockerfiles/dovecot/Dockerfileโ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ FROM alpine:3.21
33
LABEL maintainer="The Infrastructure Company GmbH <info@servercow.de>"
44

55
# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced extractVersion=^(?<version>.*)$
6-
ARG GOSU_VERSION=1.17
6+
ARG GOSU_VERSION=1.19
77

88
ENV LANG=C.UTF-8
99
ENV LC_ALL=C.UTF-8

โ€Ždata/Dockerfiles/phpfpm/Dockerfileโ€Ž

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ FROM php:8.2-fpm-alpine3.21
33
LABEL maintainer = "The Infrastructure Company GmbH <info@servercow.de>"
44

55
# renovate: datasource=github-tags depName=krakjoe/apcu versioning=semver-coerced extractVersion=^v(?<version>.*)$
6-
ARG APCU_PECL_VERSION=5.1.27
6+
ARG APCU_PECL_VERSION=5.1.28
77
# renovate: datasource=github-tags depName=Imagick/imagick versioning=semver-coerced extractVersion=(?<version>.*)$
8-
ARG IMAGICK_PECL_VERSION=3.8.0
8+
ARG IMAGICK_PECL_VERSION=3.8.1
99
# renovate: datasource=github-tags depName=php/pecl-mail-mailparse versioning=semver-coerced extractVersion=^v(?<version>.*)$
1010
ARG MAILPARSE_PECL_VERSION=3.1.9
1111
# renovate: datasource=github-tags depName=php-memcached-dev/php-memcached versioning=semver-coerced extractVersion=^v(?<version>.*)$
12-
ARG MEMCACHED_PECL_VERSION=3.3.0
12+
ARG MEMCACHED_PECL_VERSION=3.4.0
1313
# renovate: datasource=github-tags depName=phpredis/phpredis versioning=semver-coerced extractVersion=(?<version>.*)$
14-
ARG REDIS_PECL_VERSION=6.2.0
14+
ARG REDIS_PECL_VERSION=6.3.0
1515
# renovate: datasource=github-tags depName=composer/composer versioning=semver-coerced extractVersion=(?<version>.*)$
1616
ARG COMPOSER_VERSION=2.8.6
1717

โ€Ždata/Dockerfiles/postfix/postfix.shโ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,14 +329,17 @@ query = SELECT goto FROM alias
329329
SELECT id FROM alias
330330
WHERE address='%s'
331331
AND (active='1' OR active='2')
332+
AND sender_allowed='1'
332333
), (
333334
SELECT id FROM alias
334335
WHERE address='@%d'
335336
AND (active='1' OR active='2')
337+
AND sender_allowed='1'
336338
)
337339
)
338340
)
339341
AND active='1'
342+
AND sender_allowed='1'
340343
AND (domain IN
341344
(SELECT domain FROM domain
342345
WHERE domain='%d'

โ€Ždata/Dockerfiles/rspamd/Dockerfileโ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
FROM debian:bookworm-slim
1+
FROM debian:trixie-slim
22
LABEL maintainer="The Infrastructure Company GmbH <info@servercow.de>"
33

44
ARG DEBIAN_FRONTEND=noninteractive
5-
ARG RSPAMD_VER=rspamd_3.13.2-1~8bf602278
6-
ARG CODENAME=bookworm
5+
ARG RSPAMD_VER=rspamd_3.14.2-82~90302bc
6+
ARG CODENAME=trixie
77
ENV LC_ALL=C
88

99
RUN apt-get update && apt-get install -y --no-install-recommends \

โ€Ždata/Dockerfiles/sogo/Dockerfileโ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ARG DEBIAN_FRONTEND=noninteractive
66
ARG DEBIAN_VERSION=bookworm
77
ARG SOGO_DEBIAN_REPOSITORY=https://packagingv2.sogo.nu/sogo-nightly-debian/
88
# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced extractVersion=^(?<version>.*)$
9-
ARG GOSU_VERSION=1.17
9+
ARG GOSU_VERSION=1.19
1010
ENV LC_ALL=C
1111

1212
# Prerequisites

โ€Ždata/conf/dovecot/auth/mailcowauth.phpโ€Ž

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,21 @@
8080
}
8181
if ($result === false){
8282
// If it's a SOGo Request, don't check for protocol access
83-
$service = ($isSOGoRequest) ? false : array($post['service'] => true);
84-
$result = apppass_login($post['username'], $post['password'], $service, array(
83+
if ($isSOGoRequest) {
84+
$service = 'SOGO';
85+
$post['service'] = 'NONE';
86+
} else {
87+
$service = $post['service'];
88+
}
89+
90+
$result = apppass_login($post['username'], $post['password'], array(
91+
'service' => $post['service'],
8592
'is_internal' => true,
8693
'remote_addr' => $post['real_rip']
8794
));
8895
if ($result) {
89-
error_log('MAILCOWAUTH: App auth for user ' . $post['username'] . " with service " . $post['service'] . " from IP " . $post['real_rip']);
90-
set_sasl_log($post['username'], $post['real_rip'], $post['service']);
96+
error_log('MAILCOWAUTH: App auth for user ' . $post['username'] . " with service " . $service . " from IP " . $post['real_rip']);
97+
set_sasl_log($post['username'], $post['real_rip'], $service);
9198
}
9299
}
93100
if ($result === false){

0 commit comments

Comments
ย (0)