diff --git a/create_opendkim_key.sh b/create_opendkim_key.sh index 9405e59..9c41ed2 100755 --- a/create_opendkim_key.sh +++ b/create_opendkim_key.sh @@ -500,9 +500,9 @@ fi if $update_dns && [[ -z "$dns_dkim_zone_master_server" ]]; then fatal "No DNS server for updating given!" fi -if [[ -z "$(dig +short ${dkim_domain} NS)" ]] ; then - fatal "No Nameserver for domain '${dkim_domain}' found!" -fi +#if [[ -z "$(dig +short ${dkim_domain} NS)" ]] ; then +# fatal "No Nameserver for domain '${dkim_domain}' found!" +#fi if $update_dns ; then cname_record="*._domainkey.${dkim_domain}. IN CNAME ${dkim_domain}.${update_zone}." @@ -582,9 +582,38 @@ key_dir=${key_base_dir}/${dkim_domain} dkim_domain_shortname="${dkim_domain%.*}" declare -a generated_files_arr=() - declare -a dns_dkim_zone_slave_server_arr=() -for _server in $(dig +short ${dkim_domain} NS) ; do +_create_delegation=false +_create_dkim_zone=false + + +# - Some basic checks +# - +if $terminal ; then + echo "" + echo "" + echo -e " \033[32mSome basic checks\033[m" + echo "" +fi +echononl "Determine responsible zone for '${dkim_domain}'.." +found=true +zone=${dkim_domain} +while [[ -z "$(dig +short $zone ns 2>/dev/null)" ]] ; do + zone=${zone#*.} + if [[ ! $zone =~ \. ]]; then + found=false + break + fi +done +if $found ; then + echo_ok + info "Found responsible zone for '${dkim_domain}': \033[37m\033[1m${zone}\033[m" +else + echo_failed + fatal "No responsible zone for '${dkim_domain}' found!" +fi + +for _server in $(dig +short ${zone} NS) ; do # - Eliminate trailing '.' character(s) # - _server="${_server%"${_server##*[!\.]}"}" @@ -593,8 +622,6 @@ for _server in $(dig +short ${dkim_domain} NS) ; do dns_dkim_zone_slave_server_arr+=("$_server") done -_create_delegation=false -_create_dkim_zone=false _wait=false if $update_dns && [[ "$dkim_domain" != "$update_zone" ]] ; then @@ -660,15 +687,22 @@ if $_create_delegation ; then echo "" fi - echononl "Determin DNS master of '${dkim_domain}'.." - _dns_master="$(dig +short ${dkim_domain} SOA 2>/dev/null | awk '{print$1}' | sed 's/\.$//')" + echononl "Determin DNS master of '${zone}'.." + _dns_master="$(dig +short ${zone} SOA 2>/dev/null | awk '{print$1}' | sed 's/\.$//')" if [[ -z "$_dns_master" ]]; then echo_failed - fatal "Determin DNS master of '${dkim_domain}' failed!" + if $terminal ; then + fatal "Determin DNS master of '${zone}' failed!" + else + echo -e " [ Fatal ] Found responsible zone for '${dkim_domain}' (${zone}), but" + echo -e " cannot determin master dns server for '${zone}'!" + clean_up 1 + fi else echo_ok fi + # - Check if Nameserver is accessable via ssh # - echononl "Check if Nameserver '$_dns_master' is accessable via ssh .." @@ -856,7 +890,7 @@ if $_create_dkim_zone ; then # - Check if Script '$add_dkim_zone_slave_script' is accessable on slave servers # - for _server in ${dns_dkim_zone_slave_server_arr[@]} ; do - echononl "Check Script '$add_dkim_zone_master_script'at $_server .." + echononl "Check Script '$add_dkim_zone_slave_script' (${_server}).." echo_wait ssh -q -p $dns_ssh_port \ -o BatchMode=yes \ @@ -881,7 +915,7 @@ if $_create_dkim_zone ; then echo -e " \033[32mCreate zone \033[37m\033[1m${update_zone}\033[m at dns master." echo "" fi - echononl "Create zone '${update_zone}' at dns master '${_dns_master}'.." + echononl "Create zone '${update_zone}' at dns master '${dns_dkim_zone_master_server}'.." echo_wait ssh -q -p $dns_ssh_port \ -o BatchMode=yes \ @@ -923,6 +957,12 @@ if $_create_dkim_zone ; then 15) $terminal && echo_failed fatal "DKIM domain '$dkim_domain' not supported by this nameserver!" ;; + 16) $terminal && echo_failed + fatal "No responsible zone for '$dkim_domain' found!" + ;; + 17) $terminal && echo_failed + fatal "No responsible nameservers found!" + ;; 20) $terminal && echo_failed fatal "Adding Zone definition for '${update_zone}' failed!" ;;