v-add-mail-domain 3.8 KB

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