v-add-mail-domain-dkim 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/bin/bash
  2. # info: add mail domain dkim support
  3. # options: USER DOMAIN [DKIM_SIZE]
  4. #
  5. # The function adds DKIM signature to outgoing domain emails.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  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. dkim_size=${3-1024}
  15. # Includes
  16. source $VESTA/func/main.sh
  17. source $VESTA/func/domain.sh
  18. source $VESTA/conf/vesta.conf
  19. # Define mail user
  20. if [ "$MAIL_SYSTEM" = 'exim4' ]; then
  21. MAIL_USER=Debian-exim
  22. else
  23. MAIL_USER=exim
  24. fi
  25. #----------------------------------------------------------#
  26. # Verifications #
  27. #----------------------------------------------------------#
  28. check_args '2' "$#" 'USER DOMAIN [DKIM_SIZE]'
  29. is_format_valid 'user' 'domain' 'dkim_size'
  30. is_system_enabled "$MAIL_SYSTEM" '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_object_value_empty 'mail' 'DOMAIN' "$domain" '$DKIM'
  36. #----------------------------------------------------------#
  37. # Action #
  38. #----------------------------------------------------------#
  39. # Generating dkim
  40. openssl genrsa -out $USER_DATA/mail/$domain.pem $dkim_size &>/dev/null
  41. openssl rsa -pubout -in $USER_DATA/mail/$domain.pem \
  42. -out $USER_DATA/mail/$domain.pub &>/dev/null
  43. chmod 660 $USER_DATA/mail/$domain.*
  44. # Adding dkim keys
  45. if [[ "$MAIL_SYSTEM" =~ exim ]]; then
  46. cp $USER_DATA/mail/$domain.pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
  47. chown $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain/dkim.pem
  48. chmod 660 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
  49. fi
  50. # Adding dns records
  51. if [ ! -z "$DNS_SYSTEM" ] && [ -e "$USER_DATA/dns/$domain.conf" ]; then
  52. p=$(cat $USER_DATA/mail/$domain.pub |grep -v ' KEY---' |tr -d '\n')
  53. record="_domainkey.$domain_idn"
  54. policy="\"t=y; o=~;\""
  55. $BIN/v-add-dns-record $user $domain $record TXT "$policy"
  56. record="mail._domainkey.$domain_idn"
  57. selector="\"k=rsa\; p=$p\""
  58. $BIN/v-add-dns-record $user $domain $record TXT "$selector"
  59. fi
  60. #----------------------------------------------------------#
  61. # Vesta #
  62. #----------------------------------------------------------#
  63. # Adding dkim in config
  64. update_object_value 'mail' 'DOMAIN' "$domain" '$DKIM' 'yes'
  65. increase_user_value "$user" '$U_MAIL_DKMI'
  66. # Logging
  67. log_history "enabled DKIM support for $domain"
  68. log_event "$OK" "$ARGUMENTS"
  69. exit