Skip to content

Commit ce166dd

Browse files
author
Kristan Kenney
committed
[Backup] Fix restore of mail domain SSL
Certificates were backed up, but not restored properly causing mail services to fail.
1 parent b968f18 commit ce166dd

File tree

1 file changed

+59
-2
lines changed

1 file changed

+59
-2
lines changed

bin/v-restore-user

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,8 +603,65 @@ if [ "$mail" != 'no' ] && [ ! -z "$MAIL_SYSTEM" ]; then
603603
cp -f $tmpdir/mail/$domain/$backup_system/$domain.pub $USER_DATA/mail/
604604
fi
605605

606-
rebuild_mail_domain_conf
607-
606+
# Restore SSL
607+
check_config=$(grep "DOMAIN='$domain'" $USER_DATA/mail.conf | grep -o "SSL='yes'")
608+
if [ ! -z "$check_config" ]; then
609+
if [ ! -e "$HESTIA/data/users/$user/ssl/" ]; then
610+
mkdir -p $HESTIA/data/users/$user/ssl/
611+
fi
612+
613+
if [ ! -e "$HOMEDIR/$user/conf/mail/$domain/ssl/" ]; then
614+
mkdir -p $HOMEDIR/$user/conf/mail/$domain/ssl/
615+
fi
616+
617+
# Add certificate to Hestia user configuration data directory
618+
if [ -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.crt ]; then
619+
echo "path found"
620+
cp -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.crt $USER_DATA/ssl/mail.$domain.crt
621+
cp -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.key $USER_DATA/ssl/mail.$domain.key
622+
cp -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.crt $USER_DATA/ssl/mail.$domain.pem
623+
if [ -e "$tmpdir/mail/$domain/$backup_system/ssl//$domain.ca" ]; then
624+
cp -f $tmpdir/mail/$domain/$backup_system/ssl//$domain.ca $USER_DATA/ssl/mail.$domain.ca
625+
echo >> $USER_DATA/ssl/mail.$domain.pem
626+
cat $USER_DATA/ssl/mail.$domain.ca >> $USER_DATA/ssl/mail.$domain.pem
627+
fi
628+
fi
629+
630+
chmod 660 $USER_DATA/ssl/mail.$domain.*
631+
632+
# Add certificate to user home directory
633+
cp -f $USER_DATA/ssl/mail.$domain.crt $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.crt
634+
cp -f $USER_DATA/ssl/mail.$domain.key $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.key
635+
cp -f $USER_DATA/ssl/mail.$domain.pem $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.pem
636+
if [ -e "$USER_DATA/ssl/mail.$domain.ca" ]; then
637+
cp -f $USER_DATA/ssl/mail.$domain.ca $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.ca
638+
fi
639+
640+
# Add domain SSL configuration to dovecot
641+
if [ -f /etc/dovecot/conf.d/domains/$domain.conf ]; then
642+
rm -f /etc/dovecot/conf.d/domains/$domain.conf
643+
fi
644+
645+
echo "" >> /etc/dovecot/conf.d/domains/$domain.conf
646+
echo "local_name mail.$domain {" >> /etc/dovecot/conf.d/domains/$domain.conf
647+
echo " ssl_cert = <$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.pem" >> /etc/dovecot/conf.d/domains/$domain.conf
648+
echo " ssl_key = <$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.key" >> /etc/dovecot/conf.d/domains/$domain.conf
649+
echo "}" >> /etc/dovecot/conf.d/domains/$domain.conf
650+
651+
# Add domain SSL configuration to exim4
652+
# Cleanup broken symlinks
653+
find /usr/local/hestia/ssl/mail -xtype l -delete
654+
655+
ln -s -f $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.pem /usr/local/hestia/ssl/mail/mail.$domain.crt
656+
ln -s -f $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.key /usr/local/hestia/ssl/mail/mail.$domain.key
657+
658+
# Set correct permissions on certificates
659+
chmod 750 $HOMEDIR/$user/conf/mail/$domain/ssl
660+
chown -R $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain/ssl
661+
chmod 0644 $HOMEDIR/$user/conf/mail/$domain/ssl/*
662+
chown -h $user:mail $HOMEDIR/$user/conf/mail/$domain/ssl/*
663+
chmod -R 0644 /usr/local/hestia/ssl/mail/*
664+
chown -h $user:mail /usr/local/hestia/ssl/mail/*
608665
fi
609666

610667
# Restoring email accounts

0 commit comments

Comments
 (0)