mirror of
https://github.com/myvesta/vesta
synced 2025-08-20 13:24:25 -07:00
idn fix for mail domains
This commit is contained in:
parent
852f631292
commit
60f812d41c
3 changed files with 170 additions and 30 deletions
|
@ -51,12 +51,12 @@ touch $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||||
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain
|
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain
|
||||||
chmod 770 $HOMEDIR/$user/conf/mail/$domain
|
chmod 770 $HOMEDIR/$user/conf/mail/$domain
|
||||||
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
|
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
|
||||||
mkdir $HOMEDIR/$user/mail/$domain
|
mkdir $HOMEDIR/$user/mail/$domain_idn
|
||||||
chown $user:mail $HOMEDIR/$user/mail/$domain
|
chown $user:mail $HOMEDIR/$user/mail/$domain_idn
|
||||||
chmod 770 $HOMEDIR/$user/mail/$domain
|
chmod 770 $HOMEDIR/$user/mail/$domain_idn
|
||||||
|
|
||||||
# Adding symlink
|
# Adding symlink
|
||||||
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/
|
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/$domain_idn
|
||||||
|
|
||||||
# Adding antispam protection
|
# Adding antispam protection
|
||||||
if [ "$antispam" = 'yes' ]; then
|
if [ "$antispam" = 'yes' ]; then
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# Argument defenition
|
# Argument defenition
|
||||||
user=$1
|
user=$1
|
||||||
domain=$(idn -t --quiet -u "$2" )
|
domain=$(idn -t --quiet -u "$2" )
|
||||||
|
domain_idn=$(idn -t --quiet -a "$domain")
|
||||||
|
|
||||||
# Includes
|
# Includes
|
||||||
source $VESTA/conf/vesta.conf
|
source $VESTA/conf/vesta.conf
|
||||||
|
@ -41,9 +42,9 @@ is_object_unsuspended 'mail' 'DOMAIN' "$domain"
|
||||||
get_domain_values 'mail'
|
get_domain_values 'mail'
|
||||||
accounts=$(wc -l $USER_DATA/mail/$domain.conf|cut -f 1 -d ' ')
|
accounts=$(wc -l $USER_DATA/mail/$domain.conf|cut -f 1 -d ' ')
|
||||||
|
|
||||||
rm -f /etc/exim/domains/$domain
|
rm -f /etc/exim/domains/$domain_idn
|
||||||
rm -rf $HOMEDIR/$user/conf/mail/$domain
|
rm -rf $HOMEDIR/$user/conf/mail/$domain
|
||||||
rm -rf $HOMEDIR/$user/mail/$domain
|
rm -rf $HOMEDIR/$user/mail/$domain_idn
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------------------------#
|
#----------------------------------------------------------#
|
||||||
|
|
187
func/rebuild.sh
187
func/rebuild.sh
|
@ -1,3 +1,136 @@
|
||||||
|
# User account rebuild
|
||||||
|
rebuild_user_conf() {
|
||||||
|
|
||||||
|
# Get user variables
|
||||||
|
source $USER_DATA/user.conf
|
||||||
|
|
||||||
|
# Creating user data files
|
||||||
|
chmod 770 $USER_DATA
|
||||||
|
chmod 660 $USER_DATA/user.conf
|
||||||
|
touch $USER_DATA/backup.conf
|
||||||
|
chmod 660 $USER_DATA/backup.conf
|
||||||
|
touch $USER_DATA/history.log
|
||||||
|
chmod 660 $USER_DATA/history.log
|
||||||
|
touch $USER_DATA/stats.log
|
||||||
|
chmod 660 $USER_DATA/stats.log
|
||||||
|
|
||||||
|
# Rebuild user
|
||||||
|
shell=$(chsh --list-shells | grep -w "$SHELL" | head -n1)
|
||||||
|
/usr/sbin/adduser "$user" -s "$shell" -c "$CONTACT" \
|
||||||
|
-m -d "$HOMEDIR/$user" > /dev/null 2>&1
|
||||||
|
|
||||||
|
# Update user shell
|
||||||
|
shell_path=$(/usr/bin/chsh --list-shells | grep -w "$SHELL" |head -n1)
|
||||||
|
/usr/bin/chsh -s "$shell_path" "$user" &>/dev/null
|
||||||
|
|
||||||
|
# Update password
|
||||||
|
shadow=$(grep ^$user: /etc/shadow)
|
||||||
|
shdw3=$(echo "$shadow" | cut -f3 -d :)
|
||||||
|
shdw4=$(echo "$shadow" | cut -f4 -d :)
|
||||||
|
shdw5=$(echo "$shadow" | cut -f5 -d :)
|
||||||
|
shdw6=$(echo "$shadow" | cut -f6 -d :)
|
||||||
|
shdw7=$(echo "$shadow" | cut -f7 -d :)
|
||||||
|
shdw8=$(echo "$shadow" | cut -f8 -d :)
|
||||||
|
shdw9=$(echo "$shadow" | cut -f9 -d :)
|
||||||
|
shadow_str="$user:$MD5:$shdw3:$shdw4:$shdw5:$shdw6"
|
||||||
|
shadow_str="$shadow_str:$shdw7:$shdw8:$shdw9"
|
||||||
|
|
||||||
|
chmod u+w /etc/shadow
|
||||||
|
sed -i "/^$user:*/d" /etc/shadow
|
||||||
|
echo "$shadow_str" >> /etc/shadow
|
||||||
|
chmod u-w /etc/shadow
|
||||||
|
|
||||||
|
# Building directory tree
|
||||||
|
mkdir -p $HOMEDIR/$user/conf
|
||||||
|
chmod a+x $HOMEDIR/$user
|
||||||
|
chmod a+x $HOMEDIR/$user/conf
|
||||||
|
chown $user:$user $HOMEDIR/$user
|
||||||
|
chown root:root $HOMEDIR/$user/conf
|
||||||
|
|
||||||
|
# Update disk pipe
|
||||||
|
sed -i "/ $user$/d" $VESTA/data/queue/disk.pipe
|
||||||
|
echo "$BIN/v-update-user-disk $user" >> $VESTA/data/queue/disk.pipe
|
||||||
|
|
||||||
|
# WEB
|
||||||
|
if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
|
||||||
|
mkdir -p $USER_DATA/ssl
|
||||||
|
chmod 770 $USER_DATA/ssl
|
||||||
|
touch $USER_DATA/web.conf
|
||||||
|
chmod 660 $USER_DATA/web.conf
|
||||||
|
if [ "$(grep -w $user $VESTA/data/queue/traffic.pipe)" ]; then
|
||||||
|
echo "$BIN/v-update-web-domains-traff $user" \
|
||||||
|
>> $VESTA/data/queue/traffic.pipe
|
||||||
|
fi
|
||||||
|
echo "$BIN/v-update-web-domains-disk $user" \
|
||||||
|
>> $VESTA/data/queue/disk.pipe
|
||||||
|
|
||||||
|
mkdir -p $HOMEDIR/$user/conf/web
|
||||||
|
mkdir -p $HOMEDIR/$user/web
|
||||||
|
mkdir -p $HOMEDIR/$user/tmp
|
||||||
|
chmod 751 $HOMEDIR/$user/conf/web
|
||||||
|
chmod 751 $HOMEDIR/$user/web
|
||||||
|
chmod 771 $HOMEDIR/$user/tmp
|
||||||
|
chown $user:$user $HOMEDIR/$user/web
|
||||||
|
if [ -z "$create_user" ]; then
|
||||||
|
$BIN/v-rebuild-web-domains $user $restart
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DNS
|
||||||
|
if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
|
||||||
|
mkdir -p $USER_DATA/dns
|
||||||
|
chmod 770 $USER_DATA/dns
|
||||||
|
touch $USER_DATA/dns.conf
|
||||||
|
chmod 660 $USER_DATA/dns.conf
|
||||||
|
|
||||||
|
mkdir -p $HOMEDIR/$user/conf/dns
|
||||||
|
chmod 751 $HOMEDIR/$user/conf/dns
|
||||||
|
if [ -z "$create_user" ]; then
|
||||||
|
$BIN/v-rebuild-dns-domains $user $restart
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
|
||||||
|
mkdir -p $USER_DATA/mail
|
||||||
|
chmod 770 $USER_DATA/mail
|
||||||
|
touch $USER_DATA/mail.conf
|
||||||
|
chmod 660 $USER_DATA/mail.conf
|
||||||
|
echo "$BIN/v-update-mail-domains-disk $user" \
|
||||||
|
>> $VESTA/data/queue/disk.pipe
|
||||||
|
|
||||||
|
mkdir -p $HOMEDIR/$user/conf/mail
|
||||||
|
mkdir -p $HOMEDIR/$user/mail
|
||||||
|
chmod 751 $HOMEDIR/$user/mail
|
||||||
|
chmod 751 $HOMEDIR/$user/conf/mail
|
||||||
|
if [ -z "$create_user" ]; then
|
||||||
|
$BIN/v-rebuild-mail-domains $user
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
|
||||||
|
touch $USER_DATA/db.conf
|
||||||
|
chmod 660 $USER_DATA/db.conf
|
||||||
|
echo "$BIN/v-update-databases-disk $user" >> $VESTA/data/queue/disk.pipe
|
||||||
|
|
||||||
|
if [ -z "$create_user" ]; then
|
||||||
|
$BIN/v-rebuild-databases $user
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
|
||||||
|
touch $USER_DATA/cron.conf
|
||||||
|
chmod 660 $USER_DATA/cron.conf
|
||||||
|
|
||||||
|
if [ -z "$create_user" ]; then
|
||||||
|
$BIN/v-rebuild-cron-jobs $user $restart
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set immutable flag
|
||||||
|
chattr +i $HOMEDIR/$user/conf
|
||||||
|
}
|
||||||
|
|
||||||
# WEB domain rebuild
|
# WEB domain rebuild
|
||||||
rebuild_web_domain_conf() {
|
rebuild_web_domain_conf() {
|
||||||
|
|
||||||
|
@ -174,21 +307,22 @@ rebuild_web_domain_conf() {
|
||||||
/usr/sbin/adduser -o -u $(id -u $user) -g $user -s /sbin/nologin \
|
/usr/sbin/adduser -o -u $(id -u $user) -g $user -s /sbin/nologin \
|
||||||
-M -d "$HOMEDIR/$user/web/$domain" $FTP_USER > /dev/null 2>&1
|
-M -d "$HOMEDIR/$user/web/$domain" $FTP_USER > /dev/null 2>&1
|
||||||
|
|
||||||
shadow='/etc/shadow'
|
# Update password
|
||||||
shdw=$(grep "^$FTP_USER:" $shadow)
|
shadow=$(grep "^$FTP_USER:" /etc/shadow)
|
||||||
shdw3=$(echo "$shdw" | cut -f3 -d :)
|
shdw3=$(echo "$shadow" | cut -f3 -d :)
|
||||||
shdw4=$(echo "$shdw" | cut -f4 -d :)
|
shdw4=$(echo "$shadow" | cut -f4 -d :)
|
||||||
shdw5=$(echo "$shdw" | cut -f5 -d :)
|
shdw5=$(echo "$shadow" | cut -f5 -d :)
|
||||||
shdw6=$(echo "$shdw" | cut -f6 -d :)
|
shdw6=$(echo "$shadow" | cut -f6 -d :)
|
||||||
shdw7=$(echo "$shdw" | cut -f7 -d :)
|
shdw7=$(echo "$shadow" | cut -f7 -d :)
|
||||||
shdw8=$(echo "$shdw" | cut -f8 -d :)
|
shdw8=$(echo "$shadow" | cut -f8 -d :)
|
||||||
shdw9=$(echo "$shdw" | cut -f9 -d :)
|
shdw9=$(echo "$shadow" | cut -f9 -d :)
|
||||||
chmod u+w $shadow
|
shadow_str="$FTP_USER:$FTP_MD5:$shdw3:$shdw4:$shdw5:$shdw6"
|
||||||
sed -i "/^$FTP_USER:*/d" $shadow
|
shadow_str="$shadow_str:$shdw7:$shdw8:$shdw9"
|
||||||
shdw_str="$FTP_USER:$FTP_MD5:$shdw3:$shdw4:$shdw5:$shdw6"
|
|
||||||
shdw_str="$shdw_str:$shdw7:$shdw8:$shdw9"
|
chmod u+w /etc/shadow
|
||||||
echo "$shdw_str" >> $shadow
|
sed -i "/^$FTP_USER:*/d" /etc/shadow
|
||||||
chmod u-w $shadow
|
echo "$shadow_str" >> /etc/shadow
|
||||||
|
chmod u-w /etc/shadow
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -248,13 +382,15 @@ rebuild_dns_domain_conf() {
|
||||||
# MAIL domain rebuild
|
# MAIL domain rebuild
|
||||||
rebuild_mail_domain_conf() {
|
rebuild_mail_domain_conf() {
|
||||||
|
|
||||||
|
domain_idn=$(idn -t --quiet -a "$domain")
|
||||||
|
|
||||||
# Get domain values
|
# Get domain values
|
||||||
get_domain_values 'mail'
|
get_domain_values 'mail'
|
||||||
|
|
||||||
# Rebuilding config structure
|
# Rebuilding config structure
|
||||||
rm -f /etc/exim/domains/$domain
|
rm -f /etc/exim/domains/$domain_idn
|
||||||
mkdir -p $HOMEDIR/$user/conf/mail/$domain
|
mkdir -p $HOMEDIR/$user/conf/mail/$domain
|
||||||
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/
|
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/$domain_idn
|
||||||
rm -f $HOMEDIR/$user/conf/mail/$domain/aliases
|
rm -f $HOMEDIR/$user/conf/mail/$domain/aliases
|
||||||
rm -f $HOMEDIR/$user/conf/mail/$domain/protection
|
rm -f $HOMEDIR/$user/conf/mail/$domain/protection
|
||||||
rm -f $HOMEDIR/$user/conf/mail/$domain/passwd
|
rm -f $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||||
|
@ -262,10 +398,10 @@ rebuild_mail_domain_conf() {
|
||||||
touch $HOMEDIR/$user/conf/mail/$domain/protection
|
touch $HOMEDIR/$user/conf/mail/$domain/protection
|
||||||
touch $HOMEDIR/$user/conf/mail/$domain/passwd
|
touch $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||||
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain
|
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain
|
||||||
chown -R dovecot:mail /etc/exim/domains/$domain
|
chown -R dovecot:mail /etc/exim/domains/$domain_idn
|
||||||
chmod 770 $HOMEDIR/$user/conf/mail/$domain
|
chmod 770 $HOMEDIR/$user/conf/mail/$domain
|
||||||
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
|
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
|
||||||
chmod 770 /etc/exim/domains/$domain
|
chmod 770 /etc/exim/domains/$domain_idn
|
||||||
|
|
||||||
# Adding antispam protection
|
# Adding antispam protection
|
||||||
if [ "$ANTISPAM" = 'yes' ]; then
|
if [ "$ANTISPAM" = 'yes' ]; then
|
||||||
|
@ -314,14 +450,14 @@ rebuild_mail_domain_conf() {
|
||||||
# Removing symbolic link
|
# Removing symbolic link
|
||||||
if [ "$SUSPENDED" = 'yes' ]; then
|
if [ "$SUSPENDED" = 'yes' ]; then
|
||||||
SUSPENDED_MAIL=$((SUSPENDED_MAIL +1))
|
SUSPENDED_MAIL=$((SUSPENDED_MAIL +1))
|
||||||
rm -f /etc/exim/domains/$domain
|
rm -f /etc/exim/domains/$domain_idn
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -e $HOMEDIR/$user/mail/$domain ]; then
|
if [ ! -e $HOMEDIR/$user/mail/$domain_idn ]; then
|
||||||
mkdir $HOMEDIR/$user/mail/$domain
|
mkdir $HOMEDIR/$user/mail/$domain_idn
|
||||||
fi
|
fi
|
||||||
chown $user:mail $HOMEDIR/$user/mail/$domain
|
chown $user:mail $HOMEDIR/$user/mail/$domain_idn
|
||||||
chmod 770 $HOMEDIR/$user/mail/$domain
|
chmod 770 $HOMEDIR/$user/mail/$domain_idn
|
||||||
|
|
||||||
dom_aliases=$HOMEDIR/$user/conf/mail/$domain/aliases
|
dom_aliases=$HOMEDIR/$user/conf/mail/$domain/aliases
|
||||||
if [ ! -z "$CATCHALL" ]; then
|
if [ ! -z "$CATCHALL" ]; then
|
||||||
|
@ -402,6 +538,9 @@ rebuild_mysql_database() {
|
||||||
|
|
||||||
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER';"
|
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER';"
|
||||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||||
|
|
||||||
|
query="FLUSH PRIVILEGES;"
|
||||||
|
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Rebuild PostgreSQL
|
# Rebuild PostgreSQL
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue