slimx Turns out somehow the mail. AAAA record was blocking it.
Let's Encrypt always prefer the AAAA record. If that record points to an IP that isn't bound to the server then that would cause a renewal failure.
Another potential cause of automatic renewal failure is where the server can't reach the domain via the IP published in DNS - firewall problems, hairpin NAT unavailable, etc. A manual renewal bypasses that check.