Hello,
I would like to report a possible issue with the grommunio admin web interface or grommunio-admin-api DNS Health check.
Anonymized environment:
- self-hosted grommunio server;
- mail domain configured and active in grommunio-admin;
- admin interface accessed through the web UI;
- public DNS configured for MX, SPF, DKIM, DMARC and autodiscover.
Issue:
In the grommunio admin web interface, the “DNS Health” section showed several DNS warnings/errors. The MX check was displayed in red, and other checks such as SPF, DKIM, DMARC and autodiscover were not shown as fully valid.
When clicking on “MX Records”, the dialog displayed:
- Internal DNS: Unresolvable
- External DNS: Unresolvable
- MX Domain: Unresolvable
- Resolved IP: Unresolvable
- Reverse lookup: Unresolvable
However, manual DNS checks were correct.
Checks performed:
- the domain MX record resolved correctly;
- the MX target resolved correctly to the expected public address;
- the authoritative DNS servers returned the expected records;
- SPF, DKIM, DMARC and autodiscover were present and resolved correctly;
- DNS resolution from the grommunio server itself was also correct.
I then tested the Python function used by grommunio-admin-api directly:
cd /usr/share/grommunio-admin-api
python3 - <<'PY'
from tools.dnsHealth import fullDNSCheck
import json
print(json.dumps(fullDNSCheck("example.org"), indent=2, ensure_ascii=False, default=str))
PY
The result correctly returned the expected mxRecords values, including internalDNS, externalDNS, reverseLookup and mxDomain.
I also ran the same test as the actual grommunio-admin-api service user, and the result was still correct.
Nginx logs also showed that the browser was calling the DNS Health endpoint successfully with HTTP 200:
GET /api/v1/domains/<domain-id>/dnsCheck
Despite this, the web interface still displayed “Unresolvable” in the MX Records details.
Observed workaround:
After restarting the admin API service:
systemctl restart grommunio-admin-api
and then hard-refreshing the browser page, the DNS Health display became correct and the previously red/orange checks turned green.
Conclusion:
This does not seem to be a real DNS configuration issue. It looks more like an inconsistent state, cache issue, uWSGI worker state issue, or synchronization problem between grommunio-admin-api and the web interface.
The fullDNSCheck() function returned correct values when executed directly, including as the service user, while the web UI kept displaying “Unresolvable” values until grommunio-admin-api was restarted.
Questions:
- Is this a known behavior?
- Could the admin interface provide a “Refresh DNS check” button?
- Are temporary DNS resolution failures cached somewhere?
- Could the UI avoid keeping an “Unresolvable” state when fullDNSCheck() later returns valid results?
- Should restarting grommunio-admin-api be documented as a possible workaround when DNS Health appears inconsistent?
Thank you.