git subrepo commit (merge) mailcow/src/mailcow-dockerized
subrepo:
subdir: "mailcow/src/mailcow-dockerized"
merged: "81fb18894"
upstream:
origin: "https://github.com/mailcow/mailcow-dockerized.git"
branch: "master"
commit: "4ca02ecee"
git-subrepo:
version: "0.4.6"
origin: "???"
commit: "???"
Update to upstream 2026-10. Local patches re-applied by hand
(no Unbound DNS for containers, IPv6 off by default, fake-MySQL
stubs in dockerapi, Postfix overrides, no .env symlink); dropped
the unused dovecot and clamd Dockerfile patches.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I2c2c194d1d436b841358685f5f94aef09eb19ae8
diff --git a/mailcow/src/mailcow-dockerized/_modules/scripts/migrate_options.sh b/mailcow/src/mailcow-dockerized/_modules/scripts/migrate_options.sh
new file mode 100644
index 0000000..6a584b9
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/_modules/scripts/migrate_options.sh
@@ -0,0 +1,96 @@
+#!/usr/bin/env bash
+# _modules/scripts/migrate_options.sh
+# THIS SCRIPT IS DESIGNED TO BE RUNNING BY MAILCOW SCRIPTS ONLY!
+# DO NOT, AGAIN, NOT TRY TO RUN THIS SCRIPT STANDALONE!!!!!!
+
+migrate_config_options() {
+
+ sed -i --follow-symlinks '$a\' mailcow.conf
+
+ KEYS=(
+ SOLR_HEAP
+ SKIP_SOLR
+ SOLR_PORT
+ FLATCURVE_EXPERIMENTAL
+ DISABLE_IPv6
+ ACME_CONTACT
+ )
+
+ for key in "${KEYS[@]}"; do
+ if grep -q "${key}" mailcow.conf; then
+ case "${key}" in
+ SOLR_HEAP)
+ echo "Removing ${key} in mailcow.conf"
+ sed -i '/# Solr heap size in MB\b/d' mailcow.conf
+ sed -i '/# Solr is a prone to run\b/d' mailcow.conf
+ sed -i '/SOLR_HEAP\b/d' mailcow.conf
+ ;;
+ SKIP_SOLR)
+ echo "Removing ${key} in mailcow.conf"
+ sed -i '/\bSkip Solr on low-memory\b/d' mailcow.conf
+ sed -i '/\bSolr is disabled by default\b/d' mailcow.conf
+ sed -i '/\bDisable Solr or\b/d' mailcow.conf
+ sed -i '/\bSKIP_SOLR\b/d' mailcow.conf
+ ;;
+ SOLR_PORT)
+ echo "Removing ${key} in mailcow.conf"
+ sed -i '/\bSOLR_PORT\b/d' mailcow.conf
+ ;;
+ FLATCURVE_EXPERIMENTAL)
+ echo "Removing ${key} in mailcow.conf"
+ sed -i '/\bFLATCURVE_EXPERIMENTAL\b/d' mailcow.conf
+ ;;
+ DISABLE_IPv6)
+ echo "Migrating ${key} to ENABLE_IPv6 in mailcow.conf"
+ local old=$(grep '^DISABLE_IPv6=' "mailcow.conf" | cut -d'=' -f2)
+ local new
+ if [[ "$old" == "y" ]]; then
+ new="false"
+ else
+ new="true"
+ fi
+ sed -i '/^DISABLE_IPv6=/d' "mailcow.conf"
+ echo "ENABLE_IPV6=$new" >> "mailcow.conf"
+ ;;
+ ACME_CONTACT)
+ echo "Deleting obsoleted ${key} in mailcow.conf"
+ sed -i '/^# Lets Encrypt registration contact information/d' mailcow.conf
+ sed -i '/^# Optional: Leave empty for none/d' mailcow.conf
+ sed -i '/^# This value is only used on first order!/d' mailcow.conf
+ sed -i '/^# Setting it at a later point will require the following steps:/d' mailcow.conf
+ sed -i '/^# https:\/\/docs.mailcow.email\/troubleshooting\/debug-reset_tls\//d' mailcow.conf
+ sed -i '/^ACME_CONTACT=.*/d' mailcow.conf
+ sed -i '/^#ACME_CONTACT=.*/d' mailcow.conf
+ ;;
+ esac
+ fi
+ done
+
+ solr_volume=$(docker volume ls -qf name=^${COMPOSE_PROJECT_NAME}_solr-vol-1)
+ if [[ -n $solr_volume ]]; then
+ echo -e "\e[34mSolr has been replaced within mailcow since 2025-01.\nThe volume $solr_volume is unused.\e[0m"
+ sleep 1
+ if [ ! "$FORCE" ]; then
+ read -r -p "Remove $solr_volume? [y/N] " response
+ if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
+ echo -e "\e[33mRemoving $solr_volume...\e[0m"
+ docker volume rm $solr_volume || echo -e "\e[31mFailed to remove. Remove it manually!\e[0m"
+ echo -e "\e[32mSuccessfully removed $solr_volume!\e[0m"
+ else
+ echo -e "Not removing $solr_volume. Run \`docker volume rm $solr_volume\` manually if needed."
+ fi
+ else
+ echo -e "\e[33mForce removing $solr_volume...\e[0m"
+ docker volume rm $solr_volume || echo -e "\e[31mFailed to remove. Remove it manually!\e[0m"
+ echo -e "\e[32mSuccessfully removed $solr_volume!\e[0m"
+ fi
+ fi
+
+ # Delete old fts.conf before forced switch to flatcurve to ensure update is working properly
+ FTS_CONF_PATH="${SCRIPT_DIR}/data/conf/dovecot/conf.d/fts.conf"
+ if [[ -f "$FTS_CONF_PATH" ]]; then
+ if grep -q "Autogenerated by mailcow" "$FTS_CONF_PATH"; then
+ rm -rf $FTS_CONF_PATH
+ fi
+ fi
+}
\ No newline at end of file