HEX
Server: nginx/1.18.0
System: Linux srv01 5.15.0-171-generic #181-Ubuntu SMP Fri Feb 6 22:44:50 UTC 2026 x86_64
User: RaviMohan (1026)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/mailcow-dockerized/_modules/scripts/migrate_options.sh
#!/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
}