dockerubuntukubernetesdnsdnsjava

Resolve mx records for a domain using dnsjava in kubernetes/ docker


I'm trying to resolve mx records in a kubernetes pod. The dnsjava library works when tested on mac and ubuntu outside of a container but returns an empty array once deployed.

What needs to be available in k8s or the docker image for this to work?

See https://github.com/dnsjava/dnsjava

EDIT 1

  Record[] records;
  try {
    records = new Lookup(mailDomain, Type.MX).run();
  } catch (TextParseException e) {
    throw new IllegalStateException(e);
  }
  if (records != null && records.length > 0) {
    for (final Record record : records) {
      MXRecord mx = (MXRecord) record;
      //do something with mx...
    }
  } else {
    log.warn("Failed to determine MX record for {}", mailDomain);
  }

The log.warn is always executed in K8s. The docker image is openjdk:11-jdk-slim i.e. it's Debian. I just tested on Debian outside of Docker and it worked as well.


Solution

  • In the end I couldn't get dnsjava to work in docker/k8s. I used JNDI directly, following https://stackoverflow.com/a/16448180/400048 this works without any issues exactly as given in that answer.