v_add_mail_account 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/bash
  2. # info: add mail domain account
  3. # options: user domain account password [quota]
  4. #
  5. # The function add new email account.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. user=$1
  11. domain=$(idn -t --quiet -u "$2" )
  12. domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
  13. domain_idn=$(idn -t --quiet -a "$domain")
  14. account=$3
  15. password=$4
  16. quota=${5-0}
  17. # Includes
  18. source $VESTA/conf/vesta.conf
  19. source $VESTA/func/main.sh
  20. source $VESTA/func/domain.sh
  21. # Hiding password
  22. A4='******'
  23. EVENT="DATE='$DATE' TIME='$TIME' CMD='$SCRIPT' A1='$A1' A2='$A2' A3='$A3'"
  24. EVENT="$EVENT A4='$A4' A5='$A5' A6='$A6' A7='$A7' A8='$A8' A9='$A9'"
  25. #----------------------------------------------------------#
  26. # Verifications #
  27. #----------------------------------------------------------#
  28. check_args '4' "$#" 'user domain account password [quota]'
  29. validate_format 'user' 'domain' 'account' 'password' 'quota'
  30. is_system_enabled "$MAIL_SYSTEM"
  31. is_object_valid 'user' 'USER' "$user"
  32. is_object_unsuspended 'user' 'USER' "$user"
  33. is_object_valid 'mail' 'DOMAIN' "$domain"
  34. is_object_unsuspended 'mail' 'DOMAIN' "$domain"
  35. is_package_full 'MAIL_ACCOUNTS'
  36. is_mail_new "$account"
  37. #----------------------------------------------------------#
  38. # Action #
  39. #----------------------------------------------------------#
  40. md5=$(/usr/sbin/dovecotpw -s md5 -p "$password")
  41. str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
  42. echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
  43. #----------------------------------------------------------#
  44. # Vesta #
  45. #----------------------------------------------------------#
  46. str="ACCOUNT='$account' ALIAS='' QUOTA='$quota' AUTOREPLY='no' FWD=''"
  47. str="$str MD5='$md5' U_DISK='0' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
  48. echo "$str" >> $USER_DATA/mail/$domain.conf
  49. chmod 660 $USER_DATA/mail/$domain.conf
  50. # Increase mail accounts counter
  51. accounts=$(wc -l $USER_DATA/mail/$domain.conf | cut -f 1 -d ' ')
  52. increase_user_value "$user" '$U_MAIL_ACCOUNTS'
  53. update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accounts"
  54. # Logging
  55. log_history "$EVENT"
  56. log_event "$OK" "$EVENT"
  57. exit