feat: mail ipv6/rdns checks and taler-ops catalog

This commit is contained in:
Hernâni Marques 2026-09-04 16:41:03 +02:00
parent 18a4fec2dd
commit 6200a4d031
No known key found for this signature in database
2 changed files with 34 additions and 1 deletions

View file

@ -213,12 +213,44 @@ while IFS= read -r line || [ -n "$line" ]; do
h=$(echo "$h" | tr '[:upper:]' '[:lower:]' | sed 's/\.$//;s/^[[:space:]]*//;s/[[:space:]]*$//')
[ -z "$h" ] && continue
addrs=$(dns_a "$h" | tr '\n' ' ')
mapfile -t _a4 < <(dns_a "$h" | sed '/^$/d')
addrs=$(printf '%s ' "${_a4[@]}")
if [ -z "${addrs// }" ]; then
fail "dns" "$h does not resolve (A/AAAA)"
continue
fi
ok "dns" "$h → $addrs"
# Explicit IPv6 signal
_has_v4=0
_has_v6=0
for _ip in "${_a4[@]}"; do
case "$_ip" in
*:*) _has_v6=1 ;;
*) _has_v4=1 ;;
esac
done
if [ "$_has_v4" = "1" ] && [ "$_has_v6" = "0" ]; then
warn "ipv6" "$h has A but no AAAA"
elif [ "$_has_v6" = "1" ]; then
ok "ipv6" "$h has AAAA"
fi
# Reverse DNS (PTR) on first IPv4
for _ip in "${_a4[@]}"; do
case "$_ip" in
*:*) continue ;;
esac
if command -v dig >/dev/null 2>&1; then
ptr=$(dig +short +time=3 +tries=2 -x "$_ip" 2>/dev/null | sed 's/\.$//' | tr '\n' ' ')
else
ptr=$(host "$_ip" 2>/dev/null | awk '/domain name pointer/{print $NF}' | sed 's/\.$//' | tr '\n' ' ')
fi
if [ -n "${ptr// }" ]; then
ok "rdns" "$_ip PTR → $ptr"
else
warn "rdns" "$_ip has no PTR"
fi
break
done
# skip full protocol re-probe if already done
if [ "${HOST_DONE[$h]:-}" = "1" ]; then

View file

@ -18,3 +18,4 @@ gnunet.org firefly.gnunet.org firefly.gnunet.org
# Port 587 often closed/filtered on this plane → WARN only (see check_mail.sh).
taler-systems.com mail.anastasis.lu mail.anastasis.lu,pixel.taler-systems.com 25,465,587 143,993 tsa-anastasis
anastasis.lu mail.anastasis.lu mail.anastasis.lu 25,465,587 143,993 anastasis-lu
taler-ops.ch pixel.taler-systems.com mail.anastasis.lu,pixel.taler-systems.com 25,465,587 143,993 tops-mail