create_opendkim_key.sh: adding DKIM key even if zone is not yet official responsible.

This commit is contained in:
2025-11-05 22:12:32 +01:00
parent d285b19ab6
commit b1ca260660

View File

@@ -18,6 +18,8 @@ log_file="${LOCK_DIR}/${script_name%%.*}.log"
LOGGING=false
BATCH_MODE=false
CONTINUE_WITHOUT_RESPONSIBLE_ZONE=false
DEFAULT_dns_dkim_zone_master_server="b.ns.oopen.de"
DEFAULT_key_algo="hmac-sha256"
DEFAULT_key_name="update-dkim"
@@ -691,21 +693,56 @@ if $found ; then
info "Found responsible zone for '${dkim_domain}': \033[37m\033[1m${zone}\033[m"
else
echo_failed
if [[ -n "${dns_main_zone_master_server}" ]] ; then
blank_line
warn "No responsible zone for '${dkim_domain}' found!"
echo " Continue with the following settings:"
echo -e " DNS master for Domain ${dkim_domain}: \033[70G\033[33m${dns_main_zone_master_server}\033[m"
echo -e " DNS slave for Domain ${dkim_domain}: \033[70G\033[33m${dns_dkim_zone_master_server}\033[m"
echo -e " DNS master for Domain ${update_zone}: \033[70G\033[33m${dns_dkim_zone_master_server}\033[m"
echo ""
echo -n " Type upper case 'YES' to start: "
read OK
if [[ "$OK" != "YES" ]] ; then
fatal "Abort by user request - Answer was not 'YES'"
fi
blank_line
CONTINUE_WITHOUT_RESPONSIBLE_ZONE=true
dns_dkim_zone_slave_server_arr+=("${dns_main_zone_master_server}")
_dns_master="${dns_main_zone_master_server}"
_dns_slave="${dns_dkim_zone_master_server}"
if [[ -z "$(dig @${_dns_master} +short ${update_zone}. NS)" ]] ; then
_create_delegation=true
else
_create_delegation=false
fi
else
fatal "No responsible zone for '${dkim_domain}' found!"
fi
fi
for _server in $(dig +short ${zone} NS) ; do
if ! ${CONTINUE_WITHOUT_RESPONSIBLE_ZONE} ; then
for _server in $(dig +short ${zone} NS) ; do
# - Eliminate trailing '.' character(s)
# -
_server="${_server%"${_server##*[!\.]}"}"
[[ "$_server" = "$dns_dkim_zone_master_server" ]] && continue
dns_dkim_zone_slave_server_arr+=("$_server")
done
done
_wait=false
if $update_dns && [[ "$dkim_domain" != "$update_zone" ]] ; then
_wait=false
if $update_dns && [[ "$dkim_domain" != "$update_zone" ]] ; then
if [[ -z "$(dig +short ${update_zone}. NS)" ]] ; then
warn "No Subdomain delegation for zone '$update_zone' found!"
@@ -755,6 +792,7 @@ if $update_dns && [[ "$dkim_domain" != "$update_zone" ]] ; then
else
_create_delegation=false
fi
fi
fi
if $_create_delegation ; then
@@ -769,6 +807,9 @@ if $_create_delegation ; then
fi
echononl "Determin DNS master of '${zone}'.."
if [[ -n "${_dns_master}" ]] ; then
echo_skipped
else
_dns_master="$(dig +short ${zone} SOA 2>/dev/null | awk '{print$1}' | sed 's/\.$//')"
if [[ -z "$_dns_master" ]]; then
echo_failed
@@ -782,6 +823,7 @@ if $_create_delegation ; then
else
echo_ok
fi
fi
# - Check if Nameserver is accessable via ssh
@@ -1009,12 +1051,21 @@ if $_create_dkim_zone ; then
fi
echononl "Create zone '${update_zone}' at dns master '${dns_dkim_zone_master_server}'.."
echo_wait
if ${CONTINUE_WITHOUT_RESPONSIBLE_ZONE} ; then
ssh -q -p $dns_ssh_port \
-o BatchMode=yes \
-o StrictHostKeyChecking=no \
-i $dns_ssh_key \
$dns_ssh_user@$dns_dkim_zone_master_server "sudo $add_dkim_zone_master_script $dkim_domain -m $_dns_master -s $_dns_slave" > /dev/null 2>&1
ret_val=$?
else
ssh -q -p $dns_ssh_port \
-o BatchMode=yes \
-o StrictHostKeyChecking=no \
-i $dns_ssh_key \
$dns_ssh_user@$dns_dkim_zone_master_server "sudo $add_dkim_zone_master_script $dkim_domain" > /dev/null 2>&1
ret_val=$?
fi
case $ret_val in
0) $terminal && echo_ok
if $terminal ; then