v_add_mail_domain 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/bash
  2. # info: add mail domain
  3. # options: user domain [antispam] [antivirus] [dkim] [dkim_size]
  4. #
  5. # The function adds MAIL domain.
  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. antispam=${3-yes}
  15. antivirus=${4-yes}
  16. dkim=${5-yes}
  17. dkim_size=${6-512}
  18. # Includes
  19. source $VESTA/conf/vesta.conf
  20. source $VESTA/func/main.sh
  21. source $VESTA/func/domain.sh
  22. #----------------------------------------------------------#
  23. # Verifications #
  24. #----------------------------------------------------------#
  25. check_args '2' "$#" 'user domain [antispam] [antivirus] [dkim] [dkim_size]'
  26. validate_format 'user' 'domain' 'antispam' 'antivirus' 'dkim' 'dkim_size'
  27. is_system_enabled "$MAIL_SYSTEM"
  28. is_object_valid 'user' 'USER' "$user"
  29. is_object_unsuspended 'user' 'USER' "$user"
  30. is_domain_new 'mail'
  31. is_package_full 'MAIL_DOMAINS'
  32. #----------------------------------------------------------#
  33. # Action #
  34. #----------------------------------------------------------#
  35. # Adding domain directory
  36. mkdir $HOMEDIR/$user/conf/mail/$domain
  37. touch $HOMEDIR/$user/conf/mail/$domain/aliases
  38. touch $HOMEDIR/$user/conf/mail/$domain/protection
  39. touch $HOMEDIR/$user/conf/mail/$domain/passwd
  40. chown -R root:mail $HOMEDIR/$user/conf/mail/$domain
  41. chmod 770 $HOMEDIR/$user/conf/mail/$domain
  42. chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
  43. mkdir $HOMEDIR/$user/mail/$domain
  44. chown $user:mail $HOMEDIR/$user/mail/$domain
  45. chmod 770 $HOMEDIR/$user/mail/$domain
  46. # Adding symlink
  47. ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/
  48. # Adding antispam protection
  49. if [ "$antispam" = 'yes' ]; then
  50. echo 'antispam' >> $HOMEDIR/$user/conf/mail/$domain/protection
  51. fi
  52. # Adding antivirus protection
  53. if [ "$antivirus" = 'yes' ]; then
  54. echo 'antivirus' >> $HOMEDIR/$user/conf/mail/$domain/protection
  55. fi
  56. # Adding dkim
  57. if [ "$dkim" = 'yes' ]; then
  58. openssl genrsa -out $USER_DATA/mail/$domain.pem $dkim_size &>/dev/null
  59. openssl rsa -pubout -in $USER_DATA/mail/$domain.pem \
  60. -out $USER_DATA/mail/$domain.pub &>/dev/null
  61. chmod 660 $USER_DATA/mail/$domain.*
  62. cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
  63. chown root:mail $HOMEDIR/$user/conf/mail/$domain/dkim.pem
  64. chmod 660 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
  65. # Adding dkim dns records
  66. check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain")
  67. if [ "$?" -eq 0 ]; then
  68. p=$(cat $USER_DATA/mail/$domain.pub|grep -v ' KEY---'|tr -d '\n')
  69. record='_domainkey'
  70. policy="\"t=y; o=~;\""
  71. $BIN/v_add_dns_domain_record $user $domain $record TXT "$policy"
  72. record='mail._domainkey'
  73. selector="\"k=rsa\; p=$p\""
  74. $BIN/v_add_dns_domain_record $user $domain $record TXT "$selector"
  75. fi
  76. fi
  77. # Adding domain to vesta db
  78. s="DOMAIN='$domain' ANTIVIRUS='$antivirus' ANTISPAM='$antispam' DKIM='$dkim'"
  79. s="$s ACCOUNTS='0' U_DISK='0' CATCHALL='' SUSPENDED='no' TIME='$TIME'"
  80. s="$s DATE='$DATE'"
  81. echo $s >> $USER_DATA/mail.conf
  82. touch $USER_DATA/mail/$domain.conf
  83. chmod 660 $USER_DATA/mail.conf
  84. chmod 660 $USER_DATA/mail/$domain.conf
  85. #----------------------------------------------------------#
  86. # Vesta #
  87. #----------------------------------------------------------#
  88. # Increasing domain value
  89. increase_user_value "$user" '$U_MAIL_DOMAINS'
  90. if [ "$dkim" = 'yes' ]; then
  91. increase_user_value "$user" '$U_MAIL_DKMI'
  92. fi
  93. # Logging
  94. log_history "$EVENT"
  95. log_event "$OK" "$EVENT"
  96. exit