From 2e176339baa8461bfdfd171c2918b47b4d2d4306 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it <75116288+FreddleSpl0it@users.noreply.github.com> Date: Tue, 10 Mar 2026 10:01:18 +0100 Subject: [PATCH 01/70] [Watchdog] Fix Nagios MariaDB client SSL compatibility with Alpine 3.23 --- data/Dockerfiles/watchdog/Dockerfile | 1 + data/Dockerfiles/watchdog/client.cnf | 3 +++ data/Dockerfiles/watchdog/watchdog.sh | 8 ++++---- docker-compose.yml | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 data/Dockerfiles/watchdog/client.cnf diff --git a/data/Dockerfiles/watchdog/Dockerfile b/data/Dockerfiles/watchdog/Dockerfile index 831086733..54854ea1a 100644 --- a/data/Dockerfiles/watchdog/Dockerfile +++ b/data/Dockerfiles/watchdog/Dockerfile @@ -37,5 +37,6 @@ RUN apk add --update \ COPY watchdog.sh /watchdog.sh COPY check_mysql_slavestatus.sh /usr/lib/nagios/plugins/check_mysql_slavestatus.sh COPY check_dns.sh /usr/lib/mailcow/check_dns.sh +COPY client.cnf /etc/my.cnf.d/client.cnf CMD ["/watchdog.sh"] diff --git a/data/Dockerfiles/watchdog/client.cnf b/data/Dockerfiles/watchdog/client.cnf new file mode 100644 index 000000000..f078f3cbe --- /dev/null +++ b/data/Dockerfiles/watchdog/client.cnf @@ -0,0 +1,3 @@ +[client] +ssl = false +ssl-verify-server-cert = false diff --git a/data/Dockerfiles/watchdog/watchdog.sh b/data/Dockerfiles/watchdog/watchdog.sh index 558aaa197..020f3f838 100755 --- a/data/Dockerfiles/watchdog/watchdog.sh +++ b/data/Dockerfiles/watchdog/watchdog.sh @@ -38,7 +38,7 @@ if [[ ! -p /tmp/com_pipe ]]; then fi # Wait for containers -while ! mariadb-admin status --ssl=false --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do +while ! mariadb-admin status --skip-ssl --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do echo "Waiting for SQL..." sleep 2 done @@ -359,8 +359,8 @@ mysql_checks() { while [ ${err_count} -lt ${THRESHOLD} ]; do touch /tmp/mysql-mailcow; echo "$(tail -50 /tmp/mysql-mailcow)" > /tmp/mysql-mailcow err_c_cur=${err_count} - /usr/lib/nagios/plugins/check_mysql -s /var/run/mysqld/mysqld.sock -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) - /usr/lib/nagios/plugins/check_mysql_query -s /var/run/mysqld/mysqld.sock -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} -q "SELECT COUNT(*) FROM information_schema.tables" 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) + /usr/lib/nagios/plugins/check_mysql -f /etc/my.cnf.d/client.cnf -s /var/run/mysqld/mysqld.sock -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) + /usr/lib/nagios/plugins/check_mysql_query -f /etc/my.cnf.d/client.cnf -s /var/run/mysqld/mysqld.sock -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} -q "SELECT COUNT(*) FROM information_schema.tables" 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) [ ${err_c_cur} -eq ${err_count} ] && [ ! $((${err_count} - 1)) -lt 0 ] && err_count=$((${err_count} - 1)) diff_c=1 [ ${err_c_cur} -ne ${err_count} ] && diff_c=$(( ${err_c_cur} - ${err_count} )) progress "MySQL/MariaDB" ${THRESHOLD} $(( ${THRESHOLD} - ${err_count} )) ${diff_c} @@ -384,7 +384,7 @@ mysql_repl_checks() { while [ ${err_count} -lt ${THRESHOLD} ]; do touch /tmp/mysql_repl_checks; echo "$(tail -50 /tmp/mysql_repl_checks)" > /tmp/mysql_repl_checks err_c_cur=${err_count} - /usr/lib/nagios/plugins/check_mysql_slavestatus.sh -S /var/run/mysqld/mysqld.sock -u root -p ${DBROOT} 2>> /tmp/mysql_repl_checks 1>&2; err_count=$(( ${err_count} + $? )) + /usr/lib/nagios/plugins/check_mysql_slavestatus.sh -o /etc/my.cnf.d/client.cnf -S /var/run/mysqld/mysqld.sock -u root -p ${DBROOT} 2>> /tmp/mysql_repl_checks 1>&2; err_count=$(( ${err_count} + $? )) [ ${err_c_cur} -eq ${err_count} ] && [ ! $((${err_count} - 1)) -lt 0 ] && err_count=$((${err_count} - 1)) diff_c=1 [ ${err_c_cur} -ne ${err_count} ] && diff_c=$(( ${err_c_cur} - ${err_count} )) progress "MySQL/MariaDB replication" ${THRESHOLD} $(( ${THRESHOLD} - ${err_count} )) ${diff_c} diff --git a/docker-compose.yml b/docker-compose.yml index fbf1125fc..1d77b9b82 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -526,7 +526,7 @@ services: - /lib/modules:/lib/modules:ro watchdog-mailcow: - image: ghcr.io/mailcow/watchdog:2.10 + image: ghcr.io/mailcow/watchdog:2.11 dns: - ${IPV4_NETWORK:-172.22.1}.254 tmpfs: From e7ea3aa6083e23faef1ad7b858f690f4b07a8c48 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it <75116288+FreddleSpl0it@users.noreply.github.com> Date: Tue, 10 Mar 2026 10:31:50 +0100 Subject: [PATCH 02/70] [SOGo] Fix draft folder creation by adding /var/spool/sogo directory --- data/Dockerfiles/sogo/Dockerfile | 4 ++-- docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/Dockerfiles/sogo/Dockerfile b/data/Dockerfiles/sogo/Dockerfile index d118b6492..5d83c4eb5 100644 --- a/data/Dockerfiles/sogo/Dockerfile +++ b/data/Dockerfiles/sogo/Dockerfile @@ -146,8 +146,8 @@ RUN echo "/usr/lib64" > /etc/ld.so.conf.d/sogo.conf \ # Create sogo user and group RUN groupadd -r -g 999 sogo \ && useradd -r -u 999 -g sogo -d /var/lib/sogo -s /bin/bash -c "SOGo Daemon" sogo \ - && mkdir -p /var/lib/sogo /var/run/sogo /var/log/sogo \ - && chown -R sogo:sogo /var/lib/sogo /var/run/sogo /var/log/sogo + && mkdir -p /var/lib/sogo /var/run/sogo /var/log/sogo /var/spool/sogo \ + && chown -R sogo:sogo /var/lib/sogo /var/run/sogo /var/log/sogo /var/spool/sogo # Create symlinks for SOGo binaries RUN ln -s /usr/local/sbin/sogod /usr/sbin/sogod \ diff --git a/docker-compose.yml b/docker-compose.yml index 1d77b9b82..82c14749e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -200,7 +200,7 @@ services: - phpfpm sogo-mailcow: - image: ghcr.io/mailcow/sogo:5.12.5-1 + image: ghcr.io/mailcow/sogo:5.12.5-2 environment: - DBNAME=${DBNAME} - DBUSER=${DBUSER} From 33acf56526e80ceaed93fbe96f21b978cb4f4e56 Mon Sep 17 00:00:00 2001 From: FreddleSpl0it <75116288+FreddleSpl0it@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:13:00 +0100 Subject: [PATCH 03/70] [SOGo] Add ActiveSync support --- data/Dockerfiles/sogo/Dockerfile | 6 ++++++ docker-compose.yml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/data/Dockerfiles/sogo/Dockerfile b/data/Dockerfiles/sogo/Dockerfile index 5d83c4eb5..96d2e0a4b 100644 --- a/data/Dockerfiles/sogo/Dockerfile +++ b/data/Dockerfiles/sogo/Dockerfile @@ -26,6 +26,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ git \ build-essential \ gobjc \ + pkg-config \ gnustep-make \ gnustep-base-runtime \ libgnustep-base-dev \ @@ -40,6 +41,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libcurl4-openssl-dev \ libzip-dev \ libytnef0-dev \ + libwbxml2-dev \ curl \ ca-certificates \ # Runtime dependencies @@ -68,6 +70,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libcurl4 \ libzip4 \ libytnef0 \ + libwbxml2-1 \ # Download gosu && dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \ && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \ @@ -97,6 +100,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && ./configure --disable-debug --disable-strip \ && make -j$(nproc) \ && make install \ + && cd /tmp/sogo/ActiveSync \ + && . /usr/share/GNUstep/Makefiles/GNUstep.sh \ + && make -j$(nproc) install \ && cd / \ && rm -rf /tmp/sogo \ # Strip binaries diff --git a/docker-compose.yml b/docker-compose.yml index 82c14749e..98dccea56 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -200,7 +200,7 @@ services: - phpfpm sogo-mailcow: - image: ghcr.io/mailcow/sogo:5.12.5-2 + image: ghcr.io/mailcow/sogo:5.12.5-3 environment: - DBNAME=${DBNAME} - DBUSER=${DBUSER} From 293b885a858deb4735a3ce59a02393a18b56163a Mon Sep 17 00:00:00 2001 From: rezzorix Date: Wed, 11 Mar 2026 13:24:44 +0800 Subject: [PATCH 04/70] Fix theme localStorage collision with rspamd UI --- data/web/js/site/index.js | 7 ++++--- data/web/templates/base.twig | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/data/web/js/site/index.js b/data/web/js/site/index.js index 4c812a377..29b72f0d5 100644 --- a/data/web/js/site/index.js +++ b/data/web/js/site/index.js @@ -1,5 +1,6 @@ $(document).ready(function() { - var theme = localStorage.getItem("theme"); - localStorage.clear(); - localStorage.setItem("theme", theme); + var theme = localStorage.getItem("mailcow_theme"); + if (theme !== null) { + localStorage.setItem("mailcow_theme", theme); + } }); diff --git a/data/web/templates/base.twig b/data/web/templates/base.twig index 4290edaef..e1708950c 100644 --- a/data/web/templates/base.twig +++ b/data/web/templates/base.twig @@ -11,8 +11,8 @@