mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-21 22:04:00 -07:00
mail api 60% completed
This commit is contained in:
parent
46f8f8eb81
commit
62e5d3dc30
7 changed files with 365 additions and 0 deletions
|
@ -64,6 +64,9 @@ touch $V_HOME/$user/conf/mail/$domain/passwd
|
||||||
chown -R root:mail $V_HOME/$user/conf/mail/$domain
|
chown -R root:mail $V_HOME/$user/conf/mail/$domain
|
||||||
chmod 770 $V_HOME/$user/conf/mail/$domain
|
chmod 770 $V_HOME/$user/conf/mail/$domain
|
||||||
chmod 660 $V_HOME/$user/conf/mail/$domain*
|
chmod 660 $V_HOME/$user/conf/mail/$domain*
|
||||||
|
mkdir $V_HOME/$user/mail/$domain
|
||||||
|
chown $user:mail $V_HOME/$user/mail/$domain
|
||||||
|
chmod 770 $V_HOME/$user/mail/$domain
|
||||||
|
|
||||||
# Adding symlink
|
# Adding symlink
|
||||||
ln -s $V_HOME/$user/conf/mail/$domain /etc/exim/domains/
|
ln -s $V_HOME/$user/conf/mail/$domain /etc/exim/domains/
|
||||||
|
|
80
bin/v_delete_mail_domain
Executable file
80
bin/v_delete_mail_domain
Executable file
|
@ -0,0 +1,80 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# info: delete mail domain
|
||||||
|
# options: user domain
|
||||||
|
#
|
||||||
|
# The function for deleting MAIL domain. By deleting it all accounts will
|
||||||
|
# also be deleted.
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Variable&Function #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Argument defenition
|
||||||
|
user=$1
|
||||||
|
domain=$(idn -t --quiet -u "$2" )
|
||||||
|
|
||||||
|
# Importing variables
|
||||||
|
source $VESTA/conf/vars.conf
|
||||||
|
source $V_CONF/vesta.conf
|
||||||
|
source $V_FUNC/shared.func
|
||||||
|
source $V_FUNC/domain.func
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Verifications #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Checking arg number
|
||||||
|
check_args '2' "$#" 'user domain'
|
||||||
|
|
||||||
|
# Checking argument format
|
||||||
|
format_validation 'user' 'domain'
|
||||||
|
|
||||||
|
# Checking web system is enabled
|
||||||
|
is_system_enabled 'MAIL_SYSTEM'
|
||||||
|
|
||||||
|
# Checking user
|
||||||
|
is_user_valid
|
||||||
|
|
||||||
|
# Checking user is active
|
||||||
|
is_user_suspended
|
||||||
|
|
||||||
|
# Checking domain exist
|
||||||
|
is_domain_valid 'mail'
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Action #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Get domain values
|
||||||
|
get_domain_values 'mail'
|
||||||
|
accounts=$(wc -l $V_USERS/$user/mail/$domain|cut -f 1 -d ' ')
|
||||||
|
|
||||||
|
rm -f /etc/exim/domains/$domain
|
||||||
|
rm -rf $V_HOME/$user/conf/$domain
|
||||||
|
rm -rf $V_HOME/$user/mail/$domain
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Vesta #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Delete domain config
|
||||||
|
sed -i "/DOMAIN='$domain'/ d" $V_USERS/$user/mail.conf
|
||||||
|
rm -f $V_USERS/$user/mail/$domain
|
||||||
|
rm -f $V_USERS/$user/mail/$domain.pem
|
||||||
|
rm -f $V_USERS/$user/mail/$domain.pub
|
||||||
|
# autoreply
|
||||||
|
|
||||||
|
# Decreasing domain value
|
||||||
|
decrease_user_value "$user" '$U_MAIL_DOMAINS'
|
||||||
|
decrease_user_value "$user" '$U_MAIL_ACCOUNTS' "$accounts"
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
cmd='"v_add_mail_domain'
|
||||||
|
log_history "$V_EVENT" "$cmd $user $domain $ANTISPAM $ANTIVIRUS $DKIM"
|
||||||
|
log_event 'system' "$V_EVENT"
|
||||||
|
|
||||||
|
exit
|
|
@ -122,6 +122,17 @@ for domain in $domains; do
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Adding antispam protection
|
||||||
|
if [ "$SUSPENDED" != 'yes' ]; then
|
||||||
|
ln -s $V_HOME/$user/conf/mail/$domain /etc/exim/domains/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e $V_HOME/$user/mail/$domain ]; then
|
||||||
|
mkdir $V_HOME/$user/mail/$domain
|
||||||
|
fi
|
||||||
|
chown $user:mail $V_HOME/$user/mail/$domain
|
||||||
|
chmod 770 $V_HOME/$user/mail/$domain
|
||||||
|
|
||||||
# Rebuild counters
|
# Rebuild counters
|
||||||
U_MAIL_DOMAINS=$((U_MAIL_DOMAINS + 1))
|
U_MAIL_DOMAINS=$((U_MAIL_DOMAINS + 1))
|
||||||
U_DISK_MAIL=$((U_DISK_MAIL + U_DISK))
|
U_DISK_MAIL=$((U_DISK_MAIL + U_DISK))
|
||||||
|
|
69
bin/v_suspend_mail_domain
Executable file
69
bin/v_suspend_mail_domain
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# info: suspend mail domain
|
||||||
|
# options: user domain
|
||||||
|
#
|
||||||
|
# The function suspends mail domain.
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Variable&Function #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Argument defenition
|
||||||
|
user=$1
|
||||||
|
domain=$(idn -t --quiet -u "$2" )
|
||||||
|
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||||
|
domain_idn=$(idn -t --quiet -a "$domain")
|
||||||
|
|
||||||
|
# Importing variables
|
||||||
|
source $VESTA/conf/vars.conf
|
||||||
|
source $V_CONF/vesta.conf
|
||||||
|
source $V_FUNC/shared.func
|
||||||
|
source $V_FUNC/domain.func
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Verifications #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Checking arg number
|
||||||
|
check_args '2' "$#" 'user domain'
|
||||||
|
|
||||||
|
# Checking argument format
|
||||||
|
format_validation 'user' 'domain'
|
||||||
|
|
||||||
|
# Checking dns system is enabled
|
||||||
|
is_system_enabled 'MAIL_SYSTEM'
|
||||||
|
|
||||||
|
# Checking user
|
||||||
|
is_user_valid
|
||||||
|
|
||||||
|
# Checking user is active
|
||||||
|
is_user_suspended
|
||||||
|
|
||||||
|
# Checking domain
|
||||||
|
is_domain_valid 'mail'
|
||||||
|
|
||||||
|
# Checking domain is not suspened
|
||||||
|
is_domain_suspended 'mail'
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Action #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Deleting symbolic link
|
||||||
|
rm -f /etc/exim/domains/$domain
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Vesta #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Updating config
|
||||||
|
update_domain_value 'mail' '$SUSPENDED' 'yes'
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
log_event 'system' "$V_EVENT"
|
||||||
|
|
||||||
|
exit
|
64
bin/v_suspend_mail_domains
Executable file
64
bin/v_suspend_mail_domains
Executable file
|
@ -0,0 +1,64 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# info: suspend mail domains
|
||||||
|
# options: user
|
||||||
|
#
|
||||||
|
# The function suspends all user's MAIL domains.
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Variable&Function #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Argument defenition
|
||||||
|
user=$1
|
||||||
|
|
||||||
|
# Importing variables
|
||||||
|
source $VESTA/conf/vars.conf
|
||||||
|
source $V_CONF/vesta.conf
|
||||||
|
source $V_FUNC/shared.func
|
||||||
|
source $V_FUNC/domain.func
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Verifications #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Checking arg number
|
||||||
|
check_args '1' "$#" 'user'
|
||||||
|
|
||||||
|
# Checking argument format
|
||||||
|
format_validation 'user'
|
||||||
|
|
||||||
|
# Checking dns system is enabled
|
||||||
|
is_system_enabled 'MAIL_SYSTEM'
|
||||||
|
|
||||||
|
# Checking user
|
||||||
|
is_user_valid
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Action #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Defining config
|
||||||
|
conf="$V_USERS/$user/mail.conf"
|
||||||
|
|
||||||
|
# Defining fileds to select
|
||||||
|
field='$DOMAIN'
|
||||||
|
search_string="SUSPENDED='no'"
|
||||||
|
domains=$(dom_clear_search)
|
||||||
|
|
||||||
|
# Starting suspend loop
|
||||||
|
for domain in $domains; do
|
||||||
|
$V_BIN/v_suspend_mail_domain "$user" "$domain"
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Vesta #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
log_event 'system' "$V_EVENT"
|
||||||
|
|
||||||
|
exit
|
69
bin/v_unsuspend_mail_domain
Executable file
69
bin/v_unsuspend_mail_domain
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# info: unsuspend mail domain
|
||||||
|
# options: user domain
|
||||||
|
#
|
||||||
|
# The function unsuspends mail domain.
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Variable&Function #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Argument defenition
|
||||||
|
user=$1
|
||||||
|
domain=$(idn -t --quiet -u "$2" )
|
||||||
|
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||||
|
domain_idn=$(idn -t --quiet -a "$domain")
|
||||||
|
|
||||||
|
# Importing variables
|
||||||
|
source $VESTA/conf/vars.conf
|
||||||
|
source $V_CONF/vesta.conf
|
||||||
|
source $V_FUNC/shared.func
|
||||||
|
source $V_FUNC/domain.func
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Verifications #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Checking arg number
|
||||||
|
check_args '2' "$#" 'user domain'
|
||||||
|
|
||||||
|
# Checking argument format
|
||||||
|
format_validation 'user' 'domain'
|
||||||
|
|
||||||
|
# Checking dns system is enabled
|
||||||
|
is_system_enabled 'MAIL_SYSTEM'
|
||||||
|
|
||||||
|
# Checking user
|
||||||
|
is_user_valid
|
||||||
|
|
||||||
|
# Checking user is active
|
||||||
|
is_user_suspended
|
||||||
|
|
||||||
|
# Checking domain
|
||||||
|
is_domain_valid 'mail'
|
||||||
|
|
||||||
|
# Checking domain is not suspened
|
||||||
|
is_domain_value_exist 'mail' '$SUSPENDED'
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Action #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Add symbolic link
|
||||||
|
ln -s $V_HOME/$user/conf/mail/$domain /etc/exim/domains/
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Vesta #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Updating config
|
||||||
|
update_domain_value 'mail' '$SUSPENDED' 'no'
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
log_event 'system' "$V_EVENT"
|
||||||
|
|
||||||
|
exit
|
69
bin/v_unsuspend_mail_domains
Executable file
69
bin/v_unsuspend_mail_domains
Executable file
|
@ -0,0 +1,69 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# info: unsuspend mail domains
|
||||||
|
# options: user
|
||||||
|
#
|
||||||
|
# The function unsuspends all user's MAIL domains.
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Variable&Function #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Argument defenition
|
||||||
|
user=$1
|
||||||
|
|
||||||
|
# Importing variables
|
||||||
|
source $VESTA/conf/vars.conf
|
||||||
|
source $V_CONF/vesta.conf
|
||||||
|
source $V_FUNC/shared.func
|
||||||
|
source $V_FUNC/domain.func
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Verifications #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Checking arg number
|
||||||
|
check_args '1' "$#" 'user'
|
||||||
|
|
||||||
|
# Checking argument format
|
||||||
|
format_validation 'user'
|
||||||
|
|
||||||
|
# Checking dns system is enabled
|
||||||
|
is_system_enabled 'MAIL_SYSTEM'
|
||||||
|
|
||||||
|
# Checking user
|
||||||
|
is_user_valid
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Action #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Defining config
|
||||||
|
conf="$V_USERS/$user/mail.conf"
|
||||||
|
|
||||||
|
# Defining fileds to select
|
||||||
|
field='$DOMAIN'
|
||||||
|
|
||||||
|
# Defining search string
|
||||||
|
search_string="SUSPENDED='yes'"
|
||||||
|
|
||||||
|
# Parsing suspeneded domains
|
||||||
|
domains=$(dom_clear_search)
|
||||||
|
|
||||||
|
|
||||||
|
# Starting unsuspend loop
|
||||||
|
for domain in $domains; do
|
||||||
|
$V_BIN/v_unsuspend_mail_domain "$user" "$domain"
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
# Vesta #
|
||||||
|
#----------------------------------------------------------#
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
log_event 'system' "$V_EVENT"
|
||||||
|
|
||||||
|
exit
|
Loading…
Add table
Add a link
Reference in a new issue