diff --git a/cyberpanel_upgrade.sh b/cyberpanel_upgrade.sh index 07f0e6c97..39b909bf5 100644 --- a/cyberpanel_upgrade.sh +++ b/cyberpanel_upgrade.sh @@ -1353,6 +1353,34 @@ if [[ "$Server_OS_Version" = "9" ]] || [[ "$Server_OS_Version" = "18" ]] || [[ " # Check_Return : fi + +# Fix SnappyMail directory permissions for Ubuntu 24.04 and other systems +echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] Checking SnappyMail directories..." | tee -a /var/log/cyberpanel_upgrade_debug.log + +# Create SnappyMail data directories if they don't exist +mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/ +mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/domains/ +mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/storage/ +mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/ +mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/ + +# Ensure proper ownership for SnappyMail data directories +if id -u lscpd >/dev/null 2>&1; then + chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/ + echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] Set SnappyMail ownership to lscpd:lscpd" | tee -a /var/log/cyberpanel_upgrade_debug.log +else + echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] WARNING: lscpd user not found, skipping ownership change" | tee -a /var/log/cyberpanel_upgrade_debug.log +fi + +# Set proper permissions for SnappyMail data directories +chmod -R 755 /usr/local/lscp/cyberpanel/snappymail/data/ +echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] Set SnappyMail data directory permissions to 755" | tee -a /var/log/cyberpanel_upgrade_debug.log + +# Ensure SnappyMail temp and cache directories are writable +chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/ +chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/ +echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] Set SnappyMail temp/cache permissions to 775" | tee -a /var/log/cyberpanel_upgrade_debug.log + systemctl restart lscpd } diff --git a/install/install.py b/install/install.py index 8e53e3f0c..2201d84ca 100644 --- a/install/install.py +++ b/install/install.py @@ -796,7 +796,7 @@ password="%s" command = 'chmod 640 /usr/local/lscp/cyberpanel/logs/access.log' preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) - command = 'mkdir -p/usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/' + command = 'mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/' snappymailinipath = '/usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/application.ini' @@ -1405,6 +1405,30 @@ $cfg['Servers'][$i]['LogoutURL'] = 'phpmyadminsignin.php?logout'; ###### + # Create SnappyMail data directories with proper structure + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/domains/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/storage/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + # Set proper ownership for SnappyMail data directories + command = "chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + # Set proper permissions for SnappyMail data directories + command = "chmod -R 755 /usr/local/lscp/cyberpanel/snappymail/data/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + command = "mkdir -p /usr/local/lscp/cyberpanel/rainloop/data" preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) diff --git a/mailServer/mailserverManager.py b/mailServer/mailserverManager.py index 1d89fb3fe..fcc18998c 100644 --- a/mailServer/mailserverManager.py +++ b/mailServer/mailserverManager.py @@ -1546,7 +1546,34 @@ milter_default_action = accept command = "chown -R root:root /usr/local/lscp" ProcessUtilities.executioner(command) - command = "chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/data" + # Ensure SnappyMail directories exist before setting permissions + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/" + ProcessUtilities.executioner(command) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/domains/" + ProcessUtilities.executioner(command) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/storage/" + ProcessUtilities.executioner(command) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/" + ProcessUtilities.executioner(command) + + command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/" + ProcessUtilities.executioner(command) + + command = "chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/" + ProcessUtilities.executioner(command) + + # Set proper permissions for data directories + command = "chmod -R 755 /usr/local/lscp/cyberpanel/snappymail/data/" + ProcessUtilities.executioner(command) + + # Ensure temp and cache directories are writable + command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/" + ProcessUtilities.executioner(command) + + command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/" ProcessUtilities.executioner(command) command = "chmod 700 /usr/local/CyberCP/cli/cyberPanel.py"