@@ -90,6 +97,15 @@
{% if not f2b_data.active_bans and not f2b_data.perm_bans %}
{{ lang.admin.no_active_bans }}
{% endif %}
+
{% for active_ban in f2b_data.active_bans %}
diff --git a/docker-compose.yml b/docker-compose.yml
index 15e6d89d..1156854e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -171,7 +171,7 @@ services:
- phpfpm
sogo-mailcow:
- image: mailcow/sogo:1.119
+ image: mailcow/sogo:1.120
environment:
- DBNAME=${DBNAME}
- DBUSER=${DBUSER}
@@ -434,7 +434,7 @@ services:
- acme
netfilter-mailcow:
- image: mailcow/netfilter:1.52
+ image: mailcow/netfilter:1.54
stop_grace_period: 30s
depends_on:
- dovecot-mailcow
@@ -457,7 +457,7 @@ services:
- /lib/modules:/lib/modules:ro
watchdog-mailcow:
- image: mailcow/watchdog:1.98
+ image: mailcow/watchdog:2.00
dns:
- ${IPV4_NETWORK:-172.22.1}.254
tmpfs:
@@ -486,7 +486,10 @@ services:
- USE_WATCHDOG=${USE_WATCHDOG:-n}
- WATCHDOG_NOTIFY_EMAIL=${WATCHDOG_NOTIFY_EMAIL:-}
- WATCHDOG_NOTIFY_BAN=${WATCHDOG_NOTIFY_BAN:-y}
+ - WATCHDOG_NOTIFY_START=${WATCHDOG_NOTIFY_START:-y}
- WATCHDOG_SUBJECT=${WATCHDOG_SUBJECT:-Watchdog ALERT}
+ - WATCHDOG_NOTIFY_WEBHOOK=${WATCHDOG_NOTIFY_WEBHOOK:-}
+ - WATCHDOG_NOTIFY_WEBHOOK_BODY=${WATCHDOG_NOTIFY_WEBHOOK_BODY:-}
- WATCHDOG_EXTERNAL_CHECKS=${WATCHDOG_EXTERNAL_CHECKS:-n}
- WATCHDOG_MYSQL_REPLICATION_CHECKS=${WATCHDOG_MYSQL_REPLICATION_CHECKS:-n}
- WATCHDOG_VERBOSE=${WATCHDOG_VERBOSE:-n}
diff --git a/generate_config.sh b/generate_config.sh
index 10c54c93..3b292893 100755
--- a/generate_config.sh
+++ b/generate_config.sh
@@ -398,9 +398,19 @@ USE_WATCHDOG=y
#WATCHDOG_NOTIFY_EMAIL=a@example.com,b@example.com,c@example.com
#WATCHDOG_NOTIFY_EMAIL=
+# Send notifications to a webhook URL that receives a POST request with the content type "application/json".
+# You can use this to send notifications to services like Discord, Slack and others.
+#WATCHDOG_NOTIFY_WEBHOOK=https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+# JSON body included in the webhook POST request. Needs to be in single quotes.
+# Following variables are available: SUBJECT, BODY
+#WATCHDOG_NOTIFY_WEBHOOK_BODY='{"username": "mailcow Watchdog", "content": "**${SUBJECT}**\n${BODY}"}'
+
# Notify about banned IP (includes whois lookup)
WATCHDOG_NOTIFY_BAN=n
+# Send a notification when the watchdog is started.
+WATCHDOG_NOTIFY_START=y
+
# Subject for watchdog mails. Defaults to "Watchdog ALERT" followed by the error message.
#WATCHDOG_SUBJECT=
diff --git a/helper-scripts/docker-compose.override.yml.d/EXTERNAL_MYSQL_SOCKET/docker-compose.override.yml b/helper-scripts/docker-compose.override.yml.d/EXTERNAL_MYSQL_SOCKET/docker-compose.override.yml
index f014ea67..53d9193b 100644
--- a/helper-scripts/docker-compose.override.yml.d/EXTERNAL_MYSQL_SOCKET/docker-compose.override.yml
+++ b/helper-scripts/docker-compose.override.yml.d/EXTERNAL_MYSQL_SOCKET/docker-compose.override.yml
@@ -26,6 +26,6 @@ services:
- /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock
mysql-mailcow:
- image: alpine:3.18
+ image: alpine:3.19
command: /bin/true
restart: "no"
diff --git a/helper-scripts/nextcloud.sh b/helper-scripts/nextcloud.sh
index 92df1bde..7461e787 100755
--- a/helper-scripts/nextcloud.sh
+++ b/helper-scripts/nextcloud.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# renovate: datasource=github-releases depName=nextcloud/server versioning=semver extractVersion=^v(?.*)$
-NEXTCLOUD_VERSION=27.1.4
+NEXTCLOUD_VERSION=28.0.0
echo -ne "Checking prerequisites..."
sleep 1
diff --git a/update.sh b/update.sh
index f636b21e..47ae1f8b 100755
--- a/update.sh
+++ b/update.sh
@@ -441,7 +441,10 @@ CONFIG_ARRAY=(
"SKIP_SOGO"
"USE_WATCHDOG"
"WATCHDOG_NOTIFY_EMAIL"
+ "WATCHDOG_NOTIFY_WEBHOOK"
+ "WATCHDOG_NOTIFY_WEBHOOK_BODY"
"WATCHDOG_NOTIFY_BAN"
+ "WATCHDOG_NOTIFY_START"
"WATCHDOG_EXTERNAL_CHECKS"
"WATCHDOG_SUBJECT"
"SKIP_CLAMD"
@@ -623,12 +626,33 @@ for option in ${CONFIG_ARRAY[@]}; do
echo "#MAILDIR_SUB=Maildir" >> mailcow.conf
echo "MAILDIR_SUB=" >> mailcow.conf
fi
+ elif [[ ${option} == "WATCHDOG_NOTIFY_WEBHOOK" ]]; then
+ if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
+ echo '# Send notifications to a webhook URL that receives a POST request with the content type "application/json".' >> mailcow.conf
+ echo '# You can use this to send notifications to services like Discord, Slack and others.' >> mailcow.conf
+ echo '#WATCHDOG_NOTIFY_WEBHOOK=https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' >> mailcow.conf
+ fi
+ elif [[ ${option} == "WATCHDOG_NOTIFY_WEBHOOK_BODY" ]]; then
+ if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
+ echo '# JSON body included in the webhook POST request. Needs to be in single quotes.' >> mailcow.conf
+ echo '# Following variables are available: SUBJECT, BODY' >> mailcow.conf
+ WEBHOOK_BODY='{"username": "mailcow Watchdog", "content": "**${SUBJECT}**\n${BODY}"}'
+ echo "#WATCHDOG_NOTIFY_WEBHOOK_BODY='${WEBHOOK_BODY}'" >> mailcow.conf
+ fi
elif [[ ${option} == "WATCHDOG_NOTIFY_BAN" ]]; then
if ! grep -q ${option} mailcow.conf; then
echo "Adding new option \"${option}\" to mailcow.conf"
echo '# Notify about banned IP. Includes whois lookup.' >> mailcow.conf
echo "WATCHDOG_NOTIFY_BAN=y" >> mailcow.conf
fi
+ elif [[ ${option} == "WATCHDOG_NOTIFY_START" ]]; then
+ if ! grep -q ${option} mailcow.conf; then
+ echo "Adding new option \"${option}\" to mailcow.conf"
+ echo '# Send a notification when the watchdog is started.' >> mailcow.conf
+ echo "WATCHDOG_NOTIFY_START=y" >> mailcow.conf
+ fi
elif [[ ${option} == "WATCHDOG_SUBJECT" ]]; then
if ! grep -q ${option} mailcow.conf; then
echo "Adding new option \"${option}\" to mailcow.conf"