diff --git a/target/start-mailserver.sh b/target/start-mailserver.sh index 67a03577..94f48acd 100644 --- a/target/start-mailserver.sh +++ b/target/start-mailserver.sh @@ -928,7 +928,7 @@ function fix() { } function _fix_var_mail_permissions() { - notify 'task' 'Fixing /var/mail permissions' + notify 'task' 'Checking /var/mail permissions' # Fix permissions, but skip this if 3 levels deep the user id is already set if [ `find /var/mail -maxdepth 3 -a \( \! -user 5000 -o \! -group 5000 \) | grep -c .` != 0 ]; then @@ -941,13 +941,20 @@ function _fix_var_mail_permissions() { } function _fix_var_amavis_permissions() { - notify 'task' 'Fixing /var/lib/amavis permissions' - - if [ `find /var/lib/amavis -maxdepth 3 -a \( \! -user amavis -o \! -group amavis \) | grep -c .` != 0 ]; then - notify 'inf' "Fixing /var/lib/amavis permissions" - chown -R amavis:amavis /var/lib/amavis + if [ "$ONE_DIR" -eq 0 ]; then + amavis_state_dir=/var/lib/amavis else - notify 'inf' "Permissions in /var/lib/amavis look OK" + amavis_state_dir=/var/mail-state/lib-amavis + fi + notify 'task' 'Checking $amavis_state_dir permissions' + + amavis_permissions_status=$(find -H $amavis_state_dir -maxdepth 3 -a \( \! -user amavis -o \! -group amavis \)) + + if [ -n "$amavis_permissions_status" ]; then + notify 'inf' "Fixing $amavis_state_dir permissions" + chown -hR amavis:amavis $amavis_state_dir + else + notify 'inf' "Permissions in $amavis_state_dir look OK" return 0 fi } @@ -976,7 +983,7 @@ function _misc_save_states() { statedir=/var/mail-state if [ "$ONE_DIR" = 1 -a -d $statedir ]; then notify 'inf' "Consolidating all state onto $statedir" - for d in /var/spool/postfix /var/lib/postfix /var/lib/amavis /var/lib/clamav /var/lib/spamassasin /var/lib/fail2ban; do + for d in /var/spool/postfix /var/lib/postfix /var/lib/amavis /var/lib/clamav /var/lib/spamassasin /var/lib/fail2ban /var/lib/postgrey; do dest=$statedir/`echo $d | sed -e 's/.var.//; s/\//-/g'` if [ -d $dest ]; then notify 'inf' " Destination $dest exists, linking $d to it"