# `Mailglass.Deliverability.Resolver`
[🔗](https://github.com/szTheory/mailglass/blob/v1.0.0/lib/mailglass/deliverability/resolver.ex#L1)

Mailglass-owned DNS resolver seam for deliverability checks.

The default implementation uses OTP `:inet_res` and normalizes DNS answers
into binaries and maps only. Callers never receive raw charlists or
`:dns_rec` tuples across the boundary.

# `mx_record`

```elixir
@type mx_record() :: %{exchange: binary(), preference: integer()}
```

# `reason`

```elixir
@type reason() :: :timeout | :nxdomain | :servfail | :malformed_answer | :not_found
```

# `lookup_cname`

```elixir
@callback lookup_cname(String.t()) :: {:ok, binary()} | {:error, reason()}
```

Looks up one CNAME target for one domain.

# `lookup_mx`

```elixir
@callback lookup_mx(String.t()) :: {:ok, [mx_record()]} | {:error, reason()}
```

Looks up MX records for one domain.

# `lookup_txt`

```elixir
@callback lookup_txt(String.t()) :: {:ok, [binary()]} | {:error, reason()}
```

Looks up TXT records for one domain.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
