remote mail support

This commit is contained in:
Serghey Rodin 2014-04-01 23:51:10 +03:00
commit 972ecfaa74
33 changed files with 288 additions and 271 deletions

View file

@ -53,8 +53,10 @@ else
md5=$(/usr/sbin/dovecotpw -s md5 -p "$password") md5=$(/usr/sbin/dovecotpw -s md5 -p "$password")
fi fi
str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota" if [[ "$MAIL_SYSTEM" =~ exim ]]; then
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -44,8 +44,10 @@ is_mail_new "$malias"
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding exim alias # Adding exim alias
str="$malias@$domain:$account@$domain" if [[ "$MAIL_SYSTEM" =~ exim ]]; then
echo "$str" >> $HOMEDIR/$user/conf/mail/$domain/aliases str="$malias@$domain:$account@$domain"
echo "$str" >> $HOMEDIR/$user/conf/mail/$domain/aliases
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -42,25 +42,21 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Add exim autoreply
echo -e "$autoreply" > $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg
# Set ownership and permissions # Adding exim autoreply
if [ "$MAIL_SYSTEM" = 'exim' ]; then if [[ "$MAIL_SYSTEM" =~ exim ]]; then
mail_user=exim msg="$HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg"
echo -e "$autoreply" > $msg
chown $MAIL_USER:mail $msg
chmod 660 $msg
fi fi
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
mail_user=Debian-exim
fi
chown $mail_user:mail $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg
chmod 660 $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding vesta alias # Adding autoreply message
echo -e "$autoreply" > $USER_DATA/mail/$account@$domain.msg echo -e "$autoreply" > $USER_DATA/mail/$account@$domain.msg
chmod 660 $USER_DATA/mail/$account@$domain.msg chmod 660 $USER_DATA/mail/$account@$domain.msg
update_object_value "mail/$domain" 'ACCOUNT' "$account" '$AUTOREPLY' 'yes' update_object_value "mail/$domain" 'ACCOUNT' "$account" '$AUTOREPLY' 'yes'

View file

@ -48,15 +48,18 @@ fi
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding forward to exim # Define fwd string
if [ -z "$fwd" ]; then if [ -z "$fwd" ]; then
fwd="$forward" fwd="$forward"
else else
fwd="$fwd,$forward" fwd="$fwd,$forward"
fi fi
sed -i "/^$account@$domain:/ d" $HOMEDIR/$user/conf/mail/$domain/aliases # Adding forward to exim
echo "$account@$domain:$fwd" >> $HOMEDIR/$user/conf/mail/$domain/aliases if [[ "$MAIL_SYSTEM" =~ exim ]]; then
sed -i "/^$account@$domain:/ d" $HOMEDIR/$user/conf/mail/$domain/aliases
echo "$account@$domain:$fwd" >> $HOMEDIR/$user/conf/mail/$domain/aliases
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -48,21 +48,11 @@ fi
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding account to fwd_only # Adding account to fwd_only
touch $HOMEDIR/$user/conf/mail/$domain/fwd_only if [[ "$MAIL_SYSTEM" =~ exim ]]; then
check_fwd=$(grep "^$account$" $HOMEDIR/$user/conf/mail/$domain/fwd_only)
if [ -z "$check_fwd" ]; then
echo "$account" > $HOMEDIR/$user/conf/mail/$domain/fwd_only echo "$account" > $HOMEDIR/$user/conf/mail/$domain/fwd_only
chown -R $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain/fwd_only
fi fi
# Set ownership
if [ "$MAIL_SYSTEM" = 'exim' ]; then
mail_user=exim
fi
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
mail_user=Debian-exim
fi
chown -R $mail_user:mail $HOMEDIR/$user/conf/mail/$domain/fwd_only
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #

View file

@ -43,35 +43,64 @@ is_package_full 'MAIL_DOMAINS'
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding domain directory and necessary files # Adding domain to mail.conf
mkdir $HOMEDIR/$user/conf/mail/$domain s="DOMAIN='$domain' ANTIVIRUS='$antivirus' ANTISPAM='$antispam' DKIM='$dkim'"
mkdir $HOMEDIR/$user/mail/$domain_idn s="$s ACCOUNTS='0' U_DISK='0' CATCHALL='' SUSPENDED='no' TIME='$TIME'"
touch $HOMEDIR/$user/conf/mail/$domain/aliases s="$s DATE='$DATE'"
touch $HOMEDIR/$user/conf/mail/$domain/passwd echo $s >> $USER_DATA/mail.conf
touch $USER_DATA/mail/$domain.conf
# Adding symlink # Generating DKIM keys
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/$MAIL_SYSTEM/domains/$domain_idn
# Adding antispam protection
if [ "$antispam" = 'yes' ]; then
touch $HOMEDIR/$user/conf/mail/$domain/antispam
fi
# Adding antivirus protection
if [ "$antivirus" = 'yes' ]; then
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
fi
# Adding dkim
if [ "$dkim" = 'yes' ]; then if [ "$dkim" = 'yes' ]; then
openssl genrsa -out $USER_DATA/mail/$domain.pem $dkim_size &>/dev/null openssl genrsa -out $USER_DATA/mail/$domain.pem $dkim_size &>/dev/null
openssl rsa -pubout -in $USER_DATA/mail/$domain.pem \ openssl rsa -pubout -in $USER_DATA/mail/$domain.pem \
-out $USER_DATA/mail/$domain.pub &>/dev/null -out $USER_DATA/mail/$domain.pub &>/dev/null
chmod 660 $USER_DATA/mail/$domain.* fi
cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem # Set permissions
chmod 660 $USER_DATA/mail/$domain.*
chmod 660 $USER_DATA/mail.conf
# Adding dkim dns records # Building exim configs
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
mkdir $HOMEDIR/$user/conf/mail/$domain
mkdir $HOMEDIR/$user/mail/$domain_idn
touch $HOMEDIR/$user/conf/mail/$domain/aliases
touch $HOMEDIR/$user/conf/mail/$domain/passwd
touch $HOMEDIR/$user/conf/mail/$domain/fwd_only
ln -s $HOMEDIR/$user/conf/mail/$domain \
/etc/$MAIL_SYSTEM/domains/$domain_idn
# Adding antispam protection
if [ "$antispam" = 'yes' ]; then
touch $HOMEDIR/$user/conf/mail/$domain/antispam
fi
# Adding antivirus protection
if [ "$antivirus" = 'yes' ]; then
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
fi
# Adding dkim support
if [ "$dkim" = 'yes' ]; then
cp -f $USER_DATA/mail/$domain.pem \
$HOMEDIR/$user/conf/mail/$domain/dkim.pem
fi
# Set permission
chmod 771 $HOMEDIR/$user/conf/mail/$domain
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
chmod 771 /etc/$MAIL_SYSTEM/domains/$domain_idn
chmod 770 $HOMEDIR/$user/mail/$domain_idn
# Set ownership
chown -R $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain/passwd
chown $user:mail $HOMEDIR/$user/mail/$domain_idn
fi
# Adding dkim dns records
if [ ! -z "$DNS_SYSTEM" ] && [ "$dkim" = 'yes' ]; then
check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain") check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain")
if [ "$?" -eq 0 ]; then if [ "$?" -eq 0 ]; then
p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n') p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n')
@ -85,34 +114,6 @@ if [ "$dkim" = 'yes' ]; then
fi fi
fi fi
# Adding domain to vesta db
s="DOMAIN='$domain' ANTIVIRUS='$antivirus' ANTISPAM='$antispam' DKIM='$dkim'"
s="$s ACCOUNTS='0' U_DISK='0' CATCHALL='' SUSPENDED='no' TIME='$TIME'"
s="$s DATE='$DATE'"
# Set permissions
chmod 660 $USER_DATA/mail/$domain.*
chmod 771 $HOMEDIR/$user/conf/mail/$domain
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
chmod 771 /etc/$MAIL_SYSTEM/domains/$domain_idn
chmod 770 $HOMEDIR/$user/mail/$domain_idn
# Set ownership
if [ "$MAIL_SYSTEM" = 'exim' ]; then
mail_user=exim
fi
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
mail_user=Debian-exim
fi
chown -R $mail_user:mail $HOMEDIR/$user/conf/mail/$domain
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain/passwd
chown $user:mail $HOMEDIR/$user/mail/$domain_idn
echo $s >> $USER_DATA/mail.conf
touch $USER_DATA/mail/$domain.conf
chmod 660 $USER_DATA/mail.conf
chmod 660 $USER_DATA/mail/$domain.conf
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #

View file

@ -40,7 +40,9 @@ is_object_value_empty 'mail' 'DOMAIN' "$domain" '$ANTISPAM'
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding antispam flag # Adding antispam flag
touch $HOMEDIR/$user/conf/mail/$domain/antispam if [[ "$MAIL_SYSTEM" =~ exim ]]; then
touch $HOMEDIR/$user/conf/mail/$domain/antispam
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -40,7 +40,9 @@ is_object_value_empty 'mail' 'DOMAIN' "$domain" '$ANTIVIRUS'
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding antivirus flag # Adding antivirus flag
touch $HOMEDIR/$user/conf/mail/$domain/antivirus if [[ "$MAIL_SYSTEM" =~ exim ]]; then
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -41,8 +41,10 @@ is_object_value_empty 'mail' 'DOMAIN' "$domain" '$CATCHALL'
#----------------------------------------------------------# #----------------------------------------------------------#
# Adding catchall alias # Adding catchall alias
sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases if [[ "$MAIL_SYSTEM" =~ exim ]]; then
echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases
echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases
fi
#----------------------------------------------------------# #----------------------------------------------------------#
@ -52,7 +54,6 @@ echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases
# Adding antispam in config # Adding antispam in config
update_object_value 'mail' 'DOMAIN' "$domain" '$CATCHALL' "$email" update_object_value 'mail' 'DOMAIN' "$domain" '$CATCHALL' "$email"
# Logging # Logging
log_history "added $email as catchall email for $domain" log_history "added $email as catchall email for $domain"
log_event "$OK" "$EVENT" log_event "$OK" "$EVENT"

View file

@ -46,24 +46,16 @@ openssl rsa -pubout -in $USER_DATA/mail/$domain.pem \
-out $USER_DATA/mail/$domain.pub &>/dev/null -out $USER_DATA/mail/$domain.pub &>/dev/null
chmod 660 $USER_DATA/mail/$domain.* chmod 660 $USER_DATA/mail/$domain.*
# Define exim user # Adding dkim keys
if [ "$MAIL_SYSTEM" = 'exim' ]; then if [[ "$MAIL_SYSTEM" =~ exim ]]; then
mail_user=exim cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
fi chown $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain/dkim.pem
if [ "$MAIL_SYSTEM" = 'exim4' ]; then chmod 660 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
mail_user=Debian-exim
fi fi
# Adding dkim to config # Adding dns records
cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem if [ ! -z "$DNS_SYSTEM" ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
chown $mail_user:mail $HOMEDIR/$user/conf/mail/$domain/dkim.pem p=$(cat $USER_DATA/mail/$domain.pub |grep -v ' KEY---' |tr -d '\n')
chmod 660 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
# Checking dns domain
check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain")
if [ "$?" -eq 0 ]; then
# Adding dkim dns records
p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n')
record='_domainkey' record='_domainkey'
policy="\"t=y; o=~;\"" policy="\"t=y; o=~;\""
$BIN/v-add-dns-record $user $domain $record TXT "$policy" $BIN/v-add-dns-record $user $domain $record TXT "$policy"

View file

@ -133,8 +133,7 @@ fi
IFS="$OLD_IFS" IFS="$OLD_IFS"
# WEB domains # WEB domains
if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ] && [ "$WEB" != '*' ] if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB" != '*' ]; then
then
echo "-- WEB --" echo "-- WEB --"
msg="$msg\n-- WEB --" msg="$msg\n-- WEB --"
mkdir $tmpdir/web/ mkdir $tmpdir/web/
@ -211,11 +210,9 @@ then
cd $HOMEDIR/$user/web/$domain cd $HOMEDIR/$user/web/$domain
domain_direcotries=$(ls |grep -v logs) domain_direcotries=$(ls |grep -v logs)
tar -cpf $tmpdir/web/$domain/domain_data.tar $domain_direcotries tar -cpf $tmpdir/web/$domain/domain_data.tar $domain_direcotries
gzip -$BACKUP_GZIP $tmpdir/web/$domain/domain_data.tar
if [ ! -z "$BACKUP_GZIP" ]; then
gzip -$BACKUP_GZIP $tmpdir/web/$domain/domain_data.tar
fi
done done
if [ "$i" -eq 1 ]; then if [ "$i" -eq 1 ]; then
echo -e "$(date "+%F %T") $i domain" echo -e "$(date "+%F %T") $i domain"
msg="$msg\n$(date "+%F %T") $i domain" msg="$msg\n$(date "+%F %T") $i domain"
@ -228,8 +225,7 @@ then
fi fi
# DNS domains # DNS domains
if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ] && [ "$DNS" != '*' ] if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS" != '*' ]; then
then
echo "-- DNS --" echo "-- DNS --"
msg="$msg\n-- DNS --" msg="$msg\n-- DNS --"
mkdir $tmpdir/dns/ mkdir $tmpdir/dns/
@ -262,6 +258,7 @@ then
cp $USER_DATA/dns/$domain.conf vesta/$domain.conf cp $USER_DATA/dns/$domain.conf vesta/$domain.conf
cp $HOMEDIR/$user/conf/dns/$domain.db conf/$domain.db cp $HOMEDIR/$user/conf/dns/$domain.db conf/$domain.db
done done
if [ "$i" -eq 1 ]; then if [ "$i" -eq 1 ]; then
echo -e "$(date "+%F %T") $i domain" echo -e "$(date "+%F %T") $i domain"
msg="$msg\n$(date "+%F %T") $i domain" msg="$msg\n$(date "+%F %T") $i domain"
@ -274,8 +271,7 @@ then
fi fi
# Mail domains # Mail domains
if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ] && [ "$MAIL" != '*' ] if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL" != '*' ]; then
then
echo "-- MAIL --" echo "-- MAIL --"
msg="$msg\n-- MAIL --" msg="$msg\n-- MAIL --"
mkdir $tmpdir/mail/ mkdir $tmpdir/mail/
@ -300,8 +296,10 @@ then
domain_idn=$(idn -t --quiet -a "$domain") domain_idn=$(idn -t --quiet -a "$domain")
# Creating exim config # Creating exim config
cd $tmpdir/mail/$domain/ if [[ "$MAIL_SYSTEM" =~ exim ]]; then
cp $HOMEDIR/$user/conf/mail/$domain/* conf/ cd $tmpdir/mail/$domain/
cp $HOMEDIR/$user/conf/mail/$domain/* conf/
fi
# Creating vesta config # Creating vesta config
conf="$USER_DATA/mail.conf" conf="$USER_DATA/mail.conf"
@ -314,14 +312,12 @@ then
# Packing mailboxes # Packing mailboxes
cd $HOMEDIR/$user/mail/$domain_idn cd $HOMEDIR/$user/mail/$domain_idn
accounts=$(ls) accounts=$(ls)
if [ ! -z "$accounts" ]; then if [ ! -z "$accounts" ] && [[ "$MAIL_SYSTEM" =~ exim ]]; then
tar -cpf $tmpdir/mail/$domain/accounts.tar $accounts tar -cpf $tmpdir/mail/$domain/accounts.tar $accounts
fi
if [ ! -z "$BACKUP_GZIP" ] && [ ! -z "$accounts" ]; then
gzip -$BACKUP_GZIP $tmpdir/mail/$domain/accounts.tar gzip -$BACKUP_GZIP $tmpdir/mail/$domain/accounts.tar
fi fi
done done
if [ "$i" -eq 1 ]; then if [ "$i" -eq 1 ]; then
echo -e "$(date "+%F %T") $i domain" echo -e "$(date "+%F %T") $i domain"
msg="$msg\n$(date "+%F %T") $i domain" msg="$msg\n$(date "+%F %T") $i domain"
@ -335,7 +331,7 @@ fi
# Databases # Databases
if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ] && [ "$DB" != '*' ]; then if [ ! -z "$DB_SYSTEM" ] && [ "$DB" != '*' ]; then
echo "-- DB --" echo "-- DB --"
msg="$msg\n-- DB --" msg="$msg\n-- DB --"
mkdir $tmpdir/db/ mkdir $tmpdir/db/
@ -370,10 +366,9 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ] && [ "$DB" != '*' ]; then
mysql) dump_mysql_database ;; mysql) dump_mysql_database ;;
pgsql) dump_pgsql_database ;; pgsql) dump_pgsql_database ;;
esac esac
if [ ! -z "$BACKUP_GZIP" ]; then gzip -$BACKUP_GZIP $dump
gzip -$BACKUP_GZIP $dump
fi
done done
if [ "$i" -eq 1 ]; then if [ "$i" -eq 1 ]; then
echo -e "$(date "+%F %T") $i database" echo -e "$(date "+%F %T") $i database"
msg="$msg\n$(date "+%F %T") $i database" msg="$msg\n$(date "+%F %T") $i database"
@ -386,8 +381,7 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ] && [ "$DB" != '*' ]; then
fi fi
# Cron jobs # Cron jobs
if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ] && [ "$CRON" != '*' ] if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON" != '*' ]; then
then
echo "-- CRON --" echo "-- CRON --"
msg="$msg\n-- CRON --" msg="$msg\n-- CRON --"
mkdir $tmpdir/cron/ mkdir $tmpdir/cron/
@ -403,6 +397,7 @@ then
cron_list="$cron_record" cron_list="$cron_record"
cp /var/spool/cron/$user $tmpdir/cron/ cp /var/spool/cron/$user $tmpdir/cron/
fi fi
if [ "$cron_record" -eq 1 ]; then if [ "$cron_record" -eq 1 ]; then
echo -e "$(date "+%F %T") $cron_record record" echo -e "$(date "+%F %T") $cron_record record"
msg="$msg\n$(date "+%F %T") $cron_record record" msg="$msg\n$(date "+%F %T") $cron_record record"

View file

@ -52,9 +52,11 @@ else
md5=$(/usr/sbin/dovecotpw -s md5 -p "$password") md5=$(/usr/sbin/dovecotpw -s md5 -p "$password")
fi fi
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd if [[ "$MAIL_SYSTEM" =~ exim ]]; then
str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota" sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -43,9 +43,11 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
#----------------------------------------------------------# #----------------------------------------------------------#
md5=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$MD5') md5=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$MD5')
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd if [[ "$MAIL_SYSTEM" =~ exim ]]; then
str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota" sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -40,8 +40,10 @@ is_object_unsuspended 'mail' 'DOMAIN' "$domain"
#----------------------------------------------------------# #----------------------------------------------------------#
# Change cathcall alias # Change cathcall alias
sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases if [[ "$MAIL_SYSTEM" =~ exim ]]; then
echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases
echo "*@$domain:$email" >> $HOMEDIR/$user/conf/mail/$domain/aliases
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -40,14 +40,18 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
aliases=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$ALIAS')
for al in ${aliases//,/ }; do
sed -i "/^$al@$domain:$account/d" $HOMEDIR/$user/conf/mail/$domain/aliases
done
sed -i "/^$account@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases if [[ "$MAIL_SYSTEM" =~ exim ]]; then
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd aliases=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$ALIAS')
rm -rf $HOMEDIR/$user/mail/$domain/$account for al in ${aliases//,/ }; do
sed -i "/^$al@$domain:$account/d" \
$HOMEDIR/$user/conf/mail/$domain/aliases
done
sed -i "/^$account@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd
rm -rf $HOMEDIR/$user/mail/$domain/$account
fi
#----------------------------------------------------------# #----------------------------------------------------------#
@ -62,7 +66,6 @@ accounts=$(wc -l $USER_DATA/mail/$domain.conf | cut -f 1 -d ' ')
decrease_user_value "$user" '$U_MAIL_ACCOUNTS' decrease_user_value "$user" '$U_MAIL_ACCOUNTS'
update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accounts" update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accounts"
# Logging # Logging
log_history "deleted $account@$domain mail account" log_history "deleted $account@$domain mail account"
log_event "$OK" "$EVENT" log_event "$OK" "$EVENT"

View file

@ -48,7 +48,11 @@ fi
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
sed -i "/^$malias@$domain:$account/d" $HOMEDIR/$user/conf/mail/$domain/aliases if [[ "$MAIL_SYSTEM" =~ exim ]]; then
sed -i "/^$malias@$domain:$account/d" \
$HOMEDIR/$user/conf/mail/$domain/aliases
fi
aliases=$(echo "$aliases" |\ aliases=$(echo "$aliases" |\
sed "s/,/\n/g"|\ sed "s/,/\n/g"|\
sed "s/^$malias$//g"|\ sed "s/^$malias$//g"|\

View file

@ -43,14 +43,19 @@ is_object_value_exist "mail/$domain" 'ACCOUNT' "$account" '$AUTOREPLY'
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
rm -f $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg # Deleting exim autoreply message
rm -f $USER_DATA/mail/$domain/$account@$domain.msg if [[ "$MAIL_SYSTEM" =~ exim ]]; then
rm -f $HOMEDIR/$user/conf/mail/$domain/autoreply.$account.msg
fi
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #
#----------------------------------------------------------# #----------------------------------------------------------#
# Deleting autoreply message
rm -f $USER_DATA/mail/$domain/$account@$domain.msg
# Update config # Update config
update_object_value "mail/$domain" 'ACCOUNT' "$account" '$AUTOREPLY' 'no' update_object_value "mail/$domain" 'ACCOUNT' "$account" '$AUTOREPLY' 'no'

View file

@ -48,21 +48,25 @@ fi
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Define new fwd string
fwd=$(echo "$fwd" |\ fwd=$(echo "$fwd" |\
sed "s/,/\n/g"|\ sed "s/,/\n/g"|\
sed "s/^$forward$//g"|\ sed "s/^$forward$//g"|\
sed "/^$/d"|\ sed "/^$/d"|\
sed ':a;N;$!ba;s/\n/,/g') sed ':a;N;$!ba;s/\n/,/g')
sed -i "/^$account@$domain:/ d" $HOMEDIR/$user/conf/mail/$domain/aliases # Deleting exim forward
echo "$account@$domain:$fwd" >> $HOMEDIR/$user/conf/mail/$domain/aliases if [[ "$MAIL_SYSTEM" =~ exim ]]; then
sed -i "/^$account@$domain:/ d" $HOMEDIR/$user/conf/mail/$domain/aliases
echo "$account@$domain:$fwd" >> $HOMEDIR/$user/conf/mail/$domain/aliases
fi
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #
#----------------------------------------------------------# #----------------------------------------------------------#
# Update config # Updating config
update_object_value "mail/$domain" 'ACCOUNT' "$account" '$FWD' "$fwd" update_object_value "mail/$domain" 'ACCOUNT' "$account" '$FWD' "$fwd"
# Logging # Logging

View file

@ -42,7 +42,9 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
#----------------------------------------------------------# #----------------------------------------------------------#
# Deleting account from fwd_only # Deleting account from fwd_only
sed -i "/^$account$/d" $HOMEDIR/$user/conf/mail/$domain/fwd_only if [[ "$MAIL_SYSTEM" =~ exim ]]; then
sed -i "/^$account$/d" $HOMEDIR/$user/conf/mail/$domain/fwd_only
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -42,9 +42,21 @@ 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/$MAIL_SYSTEM/domains/$domain_idn # Deleting exim configuration files
rm -rf $HOMEDIR/$user/conf/mail/$domain if [[ "$MAIL_SYSTEM" =~ exim ]]; then
rm -rf $HOMEDIR/$user/mail/$domain_idn rm -f /etc/$MAIL_SYSTEM/domains/$domain_idn
rm -rf $HOMEDIR/$user/conf/mail/$domain
rm -rf $HOMEDIR/$user/mail/$domain_idn
fi
# Deleting dkim dns record
if [ "$DKIM" = 'yes' ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
records=$($BIN/v-list-dns-records $user $domain plain)
dkim_records=$(echo "$records" |grep -w '_domainkey' | cut -f 1 -d ' ')
for id in $dkim_records; do
$BIN/v-delete-dns-record $user $domain $id
done
fi
#----------------------------------------------------------# #----------------------------------------------------------#
@ -65,7 +77,6 @@ if [ "$DKIM" = 'yes' ]; then
fi fi
decrease_user_value "$user" '$U_MAIL_ACCOUNTS' "$accounts" decrease_user_value "$user" '$U_MAIL_ACCOUNTS' "$accounts"
# Logging # Logging
log_history "deleted mail domain $domain" log_history "deleted mail domain $domain"
log_event "$OK" "$EVENT" log_event "$OK" "$EVENT"

View file

@ -40,7 +40,9 @@ is_object_value_exist 'mail' 'DOMAIN' "$domain" '$ANTISPAM'
#----------------------------------------------------------# #----------------------------------------------------------#
# Delete antispam flag # Delete antispam flag
rm -f $HOMEDIR/$user/conf/mail/$domain/antispam if [[ "$MAIL_SYSTEM" =~ exim ]]; then
rm -f $HOMEDIR/$user/conf/mail/$domain/antispam
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -40,7 +40,9 @@ is_object_value_exist 'mail' 'DOMAIN' "$domain" '$ANTIVIRUS'
#----------------------------------------------------------# #----------------------------------------------------------#
# Delete antivirus flag # Delete antivirus flag
rm -f $HOMEDIR/$user/conf/mail/$domain/antivirus if [[ "$MAIL_SYSTEM" =~ exim ]]; then
rm -f $HOMEDIR/$user/conf/mail/$domain/antivirus
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -40,7 +40,9 @@ is_object_value_exist 'mail' 'DOMAIN' "$domain" '$CATCHALL'
#----------------------------------------------------------# #----------------------------------------------------------#
# Delete cathcall alias # Delete cathcall alias
sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases if [[ "$MAIL_SYSTEM" =~ exim ]]; then
sed -i "/*@$domain:/d" $HOMEDIR/$user/conf/mail/$domain/aliases
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -38,14 +38,15 @@ is_object_value_exist 'mail' 'DOMAIN' "$domain" '$DKIM'
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Generating dkim # Deleting dkim
rm -f $USER_DATA/mail/$domain.pem if [[ "$MAIL_SYSTEM" =~ exim ]]; then
rm -f $USER_DATA/mail/$domain.pub rm -f $USER_DATA/mail/$domain.pem
rm -f $HOMEDIR/$user/conf/mail/$domain/dkim.pem rm -f $USER_DATA/mail/$domain.pub
rm -f $HOMEDIR/$user/conf/mail/$domain/dkim.pem
fi
# Checking dns domain # Deleting dns record
check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain") if [ ! -z "$DNS_SYSTEM" ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
if [ "$?" -eq 0 ]; then
records=$($BIN/v-list-dns-records $user $domain plain) records=$($BIN/v-list-dns-records $user $domain plain)
dkim_records=$(echo "$records" |grep -w '_domainkey' | cut -f 1 -d ' ') dkim_records=$(echo "$records" |grep -w '_domainkey' | cut -f 1 -d ' ')
for id in $dkim_records; do for id in $dkim_records; do

View file

@ -40,7 +40,6 @@ if [ -z "$1" ] && [ "$SCHEDULED_RESTART" = 'yes' ]; then
exit exit
fi fi
if [ -z "$MAIL_SYSTEM" ] || [ "$MAIL_SYSTEM" = 'remote' ]; then if [ -z "$MAIL_SYSTEM" ] || [ "$MAIL_SYSTEM" = 'remote' ]; then
exit exit
fi fi

View file

@ -332,11 +332,10 @@ if [ "$web" != 'no' ]; then
conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf" conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf"
cat $tmp_conf >> $conf cat $tmp_conf >> $conf
rm -f $tmp_conf rm -f $tmp_conf
fi
proxy_include=$(grep "$conf" $proxy_conf) proxy_include=$(grep "$conf" $proxy_conf)
if [ -z "$proxy_include" ]; then if [ -z "$proxy_include" ]; then
echo "include $conf;" >> $proxy_conf echo "include $conf;" >> $proxy_conf
fi
fi fi
# Adding SSL proxy vhost # Adding SSL proxy vhost
@ -611,8 +610,9 @@ if [ "$db" != 'no' ]; then
echo "-- DB --" echo "-- DB --"
msg="$msg\n-- DB --" msg="$msg\n-- DB --"
# Create database list # Create domain list
db_list=$(tar -tf $BACKUP/$backup | grep "/db.conf$" | cut -f 3 -d '/') db_list=$(tar -tf $BACKUP/$backup | grep "^./db" |\
grep db.conf | cut -f 3 -d '/')
if [ ! -z "$db" ]; then if [ ! -z "$db" ]; then
db_include_list=$(mktemp) db_include_list=$(mktemp)
for db_include in ${db//,/ }; do for db_include in ${db//,/ }; do

View file

@ -41,10 +41,12 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
quota=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$QUOTA') if [[ "$MAIL_SYSTEM" =~ exim ]]; then
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd quota=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$QUOTA')
str="$account:SUSPENDED:$user:mail::$HOMEDIR/$user:$quota" sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd str="$account:SUSPENDED:$user:mail::$HOMEDIR/$user:$quota"
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -39,7 +39,9 @@ is_object_unsuspended 'mail' 'DOMAIN' "$domain"
#----------------------------------------------------------# #----------------------------------------------------------#
# Deleting symbolic link # Deleting symbolic link
rm -f /etc/$MAIL_SYSTEM/domains/$domain if [[ "$MAIL_SYSTEM" =~ exim ]]; then
rm -f /etc/$MAIL_SYSTEM/domains/$domain
fi
#----------------------------------------------------------# #----------------------------------------------------------#
@ -51,7 +53,6 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$SUSPENDED' 'yes'
sed -i "s/SUSPENDED='no'/SUSPENDED='yes'/g" $USER_DATA/mail/$domain.conf sed -i "s/SUSPENDED='no'/SUSPENDED='yes'/g" $USER_DATA/mail/$domain.conf
increase_user_value "$user" '$SUSPENDED_MAIL' increase_user_value "$user" '$SUSPENDED_MAIL'
# Logging # Logging
log_event "$OK" "$EVENT" log_event "$OK" "$EVENT"

View file

@ -41,11 +41,13 @@ is_object_suspended "mail/$domain" 'ACCOUNT' "$account"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
md5=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$MD5') if [[ "$MAIL_SYSTEM" =~ exim ]]; then
quota=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$QUOTA') md5=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$MD5')
sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd quota=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$QUOTA')
str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota" sed -i "/^$account:/d" $HOMEDIR/$user/conf/mail/$domain/passwd
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -38,7 +38,9 @@ is_object_suspended 'mail' 'DOMAIN' "$domain"
#----------------------------------------------------------# #----------------------------------------------------------#
# Add symbolic link # Add symbolic link
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/$MAIL_SYSTEM/domains/ if [[ "$MAIL_SYSTEM" =~ exim ]]; then
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/$MAIL_SYSTEM/domains/
fi
#----------------------------------------------------------# #----------------------------------------------------------#
@ -50,7 +52,6 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$SUSPENDED' 'no'
sed -i "s/SUSPENDED='yes'/SUSPENDED='no'/g" $USER_DATA/mail/$domain.conf sed -i "s/SUSPENDED='yes'/SUSPENDED='no'/g" $USER_DATA/mail/$domain.conf
decrease_user_value "$user" '$SUSPENDED_MAIL' decrease_user_value "$user" '$SUSPENDED_MAIL'
# Logging # Logging
log_event "$OK" "$EVENT" log_event "$OK" "$EVENT"

View file

@ -31,6 +31,9 @@ is_object_valid 'user' 'USER' "$user"
is_object_unsuspended 'user' 'USER' "$user" is_object_unsuspended 'user' 'USER' "$user"
is_object_valid 'mail' 'DOMAIN' "$domain" is_object_valid 'mail' 'DOMAIN' "$domain"
is_object_unsuspended 'mail' 'DOMAIN' "$domain" is_object_unsuspended 'mail' 'DOMAIN' "$domain"
if [ -z "$MAIL_SYSTEM" ] || [ "$MAIL_SYSTEM" = 'remote' ]; then
exit
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -25,6 +25,9 @@ check_args '1' "$#" 'USER'
validate_format 'user' validate_format 'user'
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM' is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
if [ -z "$MAIL_SYSTEM" ] || [ "$MAIL_SYSTEM" = 'remote' ]; then
exit
fi
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -425,74 +425,57 @@ rebuild_mail_domain_conf() {
domain_idn=$(idn -t --quiet -a "$domain") domain_idn=$(idn -t --quiet -a "$domain")
get_domain_values 'mail' get_domain_values 'mail'
# Rebuilding config structure
rm -f /etc/$MAIL_SYSTEM/domains/$domain_idn
mkdir -p $HOMEDIR/$user/conf/mail/$domain
ln -s $HOMEDIR/$user/conf/mail/$domain \
/etc/$MAIL_SYSTEM/domains/$domain_idn
rm -f $HOMEDIR/$user/conf/mail/$domain/aliases
rm -f $HOMEDIR/$user/conf/mail/$domain/antispam
rm -f $HOMEDIR/$user/conf/mail/$domain/antivirus
rm -f $HOMEDIR/$user/conf/mail/$domain/protection
rm -f $HOMEDIR/$user/conf/mail/$domain/passwd
rm -f $HOMEDIR/$user/conf/mail/$domain/fwd_only
touch $HOMEDIR/$user/conf/mail/$domain/aliases
touch $HOMEDIR/$user/conf/mail/$domain/passwd
touch $HOMEDIR/$user/conf/mail/$domain/fwd_only
# Adding antispam protection
if [ "$ANTISPAM" = 'yes' ]; then
touch $HOMEDIR/$user/conf/mail/$domain/antispam
fi
# Adding antivirus protection
if [ "$ANTIVIRUS" = 'yes' ]; then
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
fi
# Adding dkim
if [ "$DKIM" = 'yes' ]; then
U_MAIL_DKMI=$((U_MAIL_DKMI + 1))
pem="$USER_DATA/mail/$domain.pem"
pub="$USER_DATA/mail/$domain.pub"
openssl genrsa -out $pem 1024 &>/dev/null
openssl rsa -pubout -in $pem -out $pub &>/dev/null
cp $pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
# Deleting old dkim records
records=$($BIN/v-list-dns-records $user $domain plain)
dkim_records=$(echo "$records" |grep -w '_domainkey'|cut -f 1 -d ' ')
for id in $dkim_records; do
$BIN/v-delete-dns-record $user $domain $id
done
# Adding new dkim dns records
check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain")
if [ "$?" -eq 0 ]; then
record='_domainkey'
policy="\"t=y; o=~;\""
$BIN/v-add-dns-record $user $domain $record TXT "$policy"
record='mail._domainkey'
p=$(cat $pub|grep -v ' KEY---'|tr -d '\n')
slct="\"k=rsa\; p=$p\""
$BIN/v-add-dns-record $user $domain $record TXT "$slct"
fi
fi
# 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_idn
fi fi
if [ ! -e $HOMEDIR/$user/mail/$domain_idn ]; then # Rebuilding exim config structure
mkdir $HOMEDIR/$user/mail/$domain_idn if [[ "$MAIL_SYSTEM" =~ exim ]]; then
fi rm -f /etc/$MAIL_SYSTEM/domains/$domain_idn
mkdir -p $HOMEDIR/$user/conf/mail/$domain
ln -s $HOMEDIR/$user/conf/mail/$domain \
/etc/$MAIL_SYSTEM/domains/$domain_idn
rm -f $HOMEDIR/$user/conf/mail/$domain/aliases
rm -f $HOMEDIR/$user/conf/mail/$domain/antispam
rm -f $HOMEDIR/$user/conf/mail/$domain/antivirus
rm -f $HOMEDIR/$user/conf/mail/$domain/protection
rm -f $HOMEDIR/$user/conf/mail/$domain/passwd
rm -f $HOMEDIR/$user/conf/mail/$domain/fwd_only
touch $HOMEDIR/$user/conf/mail/$domain/aliases
touch $HOMEDIR/$user/conf/mail/$domain/passwd
touch $HOMEDIR/$user/conf/mail/$domain/fwd_only
dom_aliases=$HOMEDIR/$user/conf/mail/$domain/aliases # Adding antispam protection
if [ ! -z "$CATCHALL" ]; then if [ "$ANTISPAM" = 'yes' ]; then
echo "*@$domain:$CATCHALL" >> $dom_aliases touch $HOMEDIR/$user/conf/mail/$domain/antispam
fi
# Adding antivirus protection
if [ "$ANTIVIRUS" = 'yes' ]; then
touch $HOMEDIR/$user/conf/mail/$domain/antivirus
fi
# Adding dkim
if [ "$DKIM" = 'yes' ]; then
cp $USER_DATA/mail/$domain.pem \
$HOMEDIR/$user/conf/mail/$domain/dkim.pem
fi
# Removing symbolic link if domain is suspended
if [ "$SUSPENDED" = 'yes' ]; then
rm -f /etc/exim/domains/$domain_idn
fi
# Adding mail directiry
if [ ! -e $HOMEDIR/$user/mail/$domain_idn ]; then
mkdir $HOMEDIR/$user/mail/$domain_idn
fi
# Adding catchall email
dom_aliases=$HOMEDIR/$user/conf/mail/$domain/aliases
if [ ! -z "$CATCHALL" ]; then
echo "*@$domain:$CATCHALL" >> $dom_aliases
fi
fi fi
# Rebuild domain accounts # Rebuild domain accounts
@ -513,37 +496,32 @@ rebuild_mail_domain_conf() {
MD5='SUSPENDED' MD5='SUSPENDED'
fi fi
str="$account:$MD5:$user:mail::$HOMEDIR/$user:$QUOTA" if [[ "$MAIL_SYSTEM" =~ exim ]]; then
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd str="$account:$MD5:$user:mail::$HOMEDIR/$user:$QUOTA"
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
for malias in ${ALIAS//,/ }; do for malias in ${ALIAS//,/ }; do
echo "$malias@$domain:$account@$domain" >> $dom_aliases echo "$malias@$domain:$account@$domain" >> $dom_aliases
done done
if [ ! -z "$FWD" ]; then if [ ! -z "$FWD" ]; then
echo "$account@$domain:$FWD" >> $dom_aliases echo "$account@$domain:$FWD" >> $dom_aliases
fi fi
if [ "$FWD_ONLY" = 'yes' ]; then if [ "$FWD_ONLY" = 'yes' ]; then
echo "$account" >> $HOMEDIR/$user/conf/mail/$domain/fwd_only echo "$account" >> $HOMEDIR/$user/conf/mail/$domain/fwd_only
fi
fi fi
done done
# Set permissions # Set permissions and ownership
chmod 660 $USER_DATA/mail/$domain.* if [[ "$MAIL_SYSTEM" =~ exim ]]; then
chmod 771 $HOMEDIR/$user/conf/mail/$domain chmod 660 $USER_DATA/mail/$domain.*
chmod 660 $HOMEDIR/$user/conf/mail/$domain/* chmod 771 $HOMEDIR/$user/conf/mail/$domain
chmod 771 /etc/$MAIL_SYSTEM/domains/$domain_idn chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
chmod 770 $HOMEDIR/$user/mail/$domain_idn chmod 771 /etc/$MAIL_SYSTEM/domains/$domain_idn
chmod 770 $HOMEDIR/$user/mail/$domain_idn
# Set ownership chown -R $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain
if [ "$MAIL_SYSTEM" = 'exim' ]; then chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain/passwd
mail_user=exim chown $user:mail $HOMEDIR/$user/mail/$domain_idn
fi fi
if [ "$MAIL_SYSTEM" = 'exim4' ]; then
mail_user=Debian-exim
fi
chown -R $mail_user:mail $HOMEDIR/$user/conf/mail/$domain
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain/passwd
chown $user:mail $HOMEDIR/$user/mail/$domain_idn
# Update counters # Update counters
update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accs" update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accs"