@@ -308,13 +308,33 @@ while true; do
308308 done
309309 fi
310310
311+ # Check if MAILCOW_HOSTNAME is covered by a wildcard in ADDITIONAL_SAN
312+ MAILCOW_HOSTNAME_COVERED=0
313+ if [[ ! -z ${VALIDATED_MAILCOW_HOSTNAME} && ! -z ${ADDITIONAL_SAN} ]]; then
314+ # Extract parent domain from MAILCOW_HOSTNAME (e.g., mail.example.com -> example.com)
315+ MAILCOW_PARENT_DOMAIN=$( echo ${VALIDATED_MAILCOW_HOSTNAME} | cut -d. -f2-)
316+ # Check if ADDITIONAL_SAN contains a wildcard for this parent domain
317+ if [[ " ${ADDITIONAL_SAN} " == * " *.${MAILCOW_PARENT_DOMAIN} " * ]]; then
318+ log_f " MAILCOW_HOSTNAME '${VALIDATED_MAILCOW_HOSTNAME} ' is covered by wildcard '*.${MAILCOW_PARENT_DOMAIN} ' - skipping explicit hostname"
319+ MAILCOW_HOSTNAME_COVERED=1
320+ fi
321+ fi
322+
311323 # Unique domains for server certificate
312324 if [[ ${ENABLE_SSL_SNI} == " y" ]]; then
313325 # create certificate for server name and fqdn SANs only
314- SERVER_SAN_VALIDATED=(${VALIDATED_MAILCOW_HOSTNAME} $( echo ${ADDITIONAL_VALIDATED_SAN[*]} | xargs -n1 | sort -u | xargs) )
326+ if [[ ${MAILCOW_HOSTNAME_COVERED} == " 1" ]]; then
327+ SERVER_SAN_VALIDATED=($( echo ${ADDITIONAL_VALIDATED_SAN[*]} | xargs -n1 | sort -u | xargs) )
328+ else
329+ SERVER_SAN_VALIDATED=(${VALIDATED_MAILCOW_HOSTNAME} $( echo ${ADDITIONAL_VALIDATED_SAN[*]} | xargs -n1 | sort -u | xargs) )
330+ fi
315331 else
316332 # create certificate for all domains, including all subdomains from other domains [*]
317- SERVER_SAN_VALIDATED=(${VALIDATED_MAILCOW_HOSTNAME} $( echo ${VALIDATED_CONFIG_DOMAINS[*]} ${ADDITIONAL_VALIDATED_SAN[*]} | xargs -n1 | sort -u | xargs) )
333+ if [[ ${MAILCOW_HOSTNAME_COVERED} == " 1" ]]; then
334+ SERVER_SAN_VALIDATED=($( echo ${VALIDATED_CONFIG_DOMAINS[*]} ${ADDITIONAL_VALIDATED_SAN[*]} | xargs -n1 | sort -u | xargs) )
335+ else
336+ SERVER_SAN_VALIDATED=(${VALIDATED_MAILCOW_HOSTNAME} $( echo ${VALIDATED_CONFIG_DOMAINS[*]} ${ADDITIONAL_VALIDATED_SAN[*]} | xargs -n1 | sort -u | xargs) )
337+ fi
318338 fi
319339 if [[ ! -z ${SERVER_SAN_VALIDATED[*]} ]]; then
320340 CERT_NAME=${SERVER_SAN_VALIDATED[0]}
0 commit comments