From f1f779c618ecb2792386d2269762adcb6b264617 Mon Sep 17 00:00:00 2001 From: usmannasir Date: Sun, 31 Aug 2025 13:16:22 +0500 Subject: [PATCH] bug fix: snappymail on ubuntu 24 --- cyberpanel_upgrade.sh | 15 ++++++------ install/install.py | 42 ++++++++++++++++++++++++++------- mailServer/mailserverManager.py | 14 +++++++---- 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/cyberpanel_upgrade.sh b/cyberpanel_upgrade.sh index 50b014797..95cc929b9 100644 --- a/cyberpanel_upgrade.sh +++ b/cyberpanel_upgrade.sh @@ -1372,14 +1372,15 @@ 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 +# Set proper permissions for SnappyMail data directories (group writable) +chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/ +echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] Set SnappyMail data directory permissions to 775 (group writable)" | 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 +# Ensure web server users are in the lscpd group for access +usermod -a -G lscpd nobody 2>/dev/null || true +usermod -a -G lscpd www-data 2>/dev/null || true +usermod -a -G lscpd systemd-network 2>/dev/null || true +echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] Added web server users to lscpd group" | tee -a /var/log/cyberpanel_upgrade_debug.log systemctl restart lscpd diff --git a/install/install.py b/install/install.py index 1446bd75d..dc73fc6a5 100644 --- a/install/install.py +++ b/install/install.py @@ -816,15 +816,13 @@ password="%s" 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 early - command = "chmod -R 755 /usr/local/lscp/cyberpanel/snappymail/data/" + # Set proper permissions - make all data directories group writable + command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/" preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) - # Ensure temp and cache directories are writable - command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/" - preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) - - command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/" + # Ensure the web server user (nobody) can access the directories + # Note: lscpd is already added to nobody group earlier in the installation + command = "usermod -a -G lscpd nobody 2>/dev/null || true" preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) snappymailinipath = '/usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/application.ini' @@ -1454,8 +1452,19 @@ $cfg['Servers'][$i]['LogoutURL'] = 'phpmyadminsignin.php?logout'; 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/" + # Set proper permissions for SnappyMail data directories (group writable) + command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + # Ensure web server users are in the lscpd group for access + command = "usermod -a -G lscpd nobody 2>/dev/null || true" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + command = "usermod -a -G lscpd www-data 2>/dev/null || true" + preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) + + # Additional fix for Ubuntu 24.04: ensure systemd user has access + command = "usermod -a -G lscpd systemd-network 2>/dev/null || true" preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR) command = "mkdir -p /usr/local/lscp/cyberpanel/rainloop/data" @@ -2901,6 +2910,21 @@ echo $oConfig->Save() ? 'Done' : 'Error'; command = "chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/data" subprocess.call(shlex.split(command)) + + # Ensure all data directories have group write permissions + command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data" + subprocess.call(shlex.split(command)) + + # Ensure web server users are in the lscpd group + command = "usermod -a -G lscpd nobody 2>/dev/null || true" + subprocess.call(shlex.split(command)) + + command = "usermod -a -G lscpd www-data 2>/dev/null || true" + subprocess.call(shlex.split(command)) + + # Additional fix for Ubuntu 24.04: ensure systemd user has access + command = "usermod -a -G lscpd systemd-network 2>/dev/null || true" + subprocess.call(shlex.split(command)) except: pass diff --git a/mailServer/mailserverManager.py b/mailServer/mailserverManager.py index fcc18998c..101d147c9 100644 --- a/mailServer/mailserverManager.py +++ b/mailServer/mailserverManager.py @@ -1565,15 +1565,19 @@ milter_default_action = accept 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/" + # Set proper permissions for data directories (group writable) + command = "chmod -R 775 /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/" + # Ensure web server users are in the lscpd group for access + command = "usermod -a -G lscpd nobody 2>/dev/null || true" ProcessUtilities.executioner(command) - command = "chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/" + command = "usermod -a -G lscpd www-data 2>/dev/null || true" + ProcessUtilities.executioner(command) + + # Additional fix for Ubuntu 24.04: ensure systemd user has access + command = "usermod -a -G lscpd systemd-network 2>/dev/null || true" ProcessUtilities.executioner(command) command = "chmod 700 /usr/local/CyberCP/cli/cyberPanel.py"