v-add-mail-account 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. if [ -x '/usr/bin/doveadm' ]; then
  41. md5=$(/usr/bin/doveadm pw -s md5 -p "$password")
  42. else
  43. md5=$(/usr/sbin/dovecotpw -s md5 -p "$password")
  44. fi
  45. str="$account:$md5:$user:mail::$HOMEDIR/$user:$quota"
  46. echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
  47. #----------------------------------------------------------#
  48. # Vesta #
  49. #----------------------------------------------------------#
  50. str="ACCOUNT='$account' ALIAS='' QUOTA='$quota' AUTOREPLY='no' FWD=''"
  51. str="$str MD5='$md5' U_DISK='0' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
  52. echo "$str" >> $USER_DATA/mail/$domain.conf
  53. chmod 660 $USER_DATA/mail/$domain.conf
  54. # Increase mail accounts counter
  55. accounts=$(wc -l $USER_DATA/mail/$domain.conf | cut -f 1 -d ' ')
  56. increase_user_value "$user" '$U_MAIL_ACCOUNTS'
  57. update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accounts"
  58. # Logging
  59. log_history "added mail account $account@$domain"
  60. log_event "$OK" "$EVENT"
  61. exit