GET /check
Valida a configuração DNS (DKIM, SPF e DMARC) dos domínios remetentes e retorna o resultado em JSON.
Endpoints
| Método | Caminho | Descrição |
|---|---|---|
| GET | /check |
Valida todos os domínios configurados. |
| GET | /check/{dominio} |
Valida apenas o domínio especificado. Retorna 404 se o domínio não estiver configurado. |
Autenticação
O endpoint usa o mesmo mecanismo do POST /send: header X-Auth-Token comparado em tempo constante com MXOUT_AUTH_TOKEN.
X-Auth-Token: {TOKEN}Se o token estiver ausente ou incorreto, a resposta é 401. Se MXOUT_AUTH_TOKEN não estiver definido no servidor, o endpoint fica aberto (sem autenticação exigida), comportamento igual ao /send.
Códigos de status
| Código | Condição |
|---|---|
| 200 | Todas as checagens resultaram em pass ou warn — nenhum fail. |
| 503 | Ao menos uma checagem retornou fail. Útil para alertas de monitoração. |
| 401 | Token ausente ou inválido. |
| 404 | Domínio informado não está configurado no servidor (GET /check/{dominio}). |
Resposta
A resposta é sempre application/json com a seguinte estrutura:
{
"public_ip": "<string|null>",
"ok": true,
"domains": [
{
"domain": "exemplo.com.br",
"dkim": { "status": "pass", "message": "Chave pública confere com a privada local." },
"spf": { "status": "pass", "message": "IP autorizado pelo SPF do domínio." },
"dmarc": { "status": "pass", "message": "Registro _dmarc encontrado e bem-formado." }
}
]
}Campos
| Campo | Tipo | Descrição |
|---|---|---|
public_ip |
string | null | IP público detectado pelo servidor, usado na checagem SPF. null se não foi possível determinar. |
ok |
bool | true se nenhum domínio tem checagem com status: fail. Espelha o código HTTP (200 vs 503). |
domains |
array | Lista de resultados por domínio. |
domains[].domain |
string | Nome do domínio validado. |
domains[].dkim |
objeto | Resultado da checagem DKIM. |
domains[].spf |
objeto | Resultado da checagem SPF. |
domains[].dmarc |
objeto | Resultado da checagem DMARC. |
Cada checagem (dkim, spf, dmarc) contém:
| Campo | Tipo | Descrição |
|---|---|---|
status |
string | pass, warn ou fail. |
message |
string | Descrição legível do resultado. |
Significado de cada `status`
| Valor | Significado |
|---|---|
pass |
Configuração correta, envio autorizado. |
warn |
Situação ambígua; envio pode funcionar, mas há risco. Exemplo: IP público indeterminável no SPF. |
fail |
Configuração incorreta ou ausente; provável rejeição ou spam. |
O que cada checagem verifica
DKIM — consulta <selector>._domainkey.<dominio> e compara a chave pública publicada (SPKI) com a chave privada local. Detecta registro ausente, chave em formato PKCS#1 (precisa ser SPKI) e divergência entre as chaves.
SPF — verifica se public_ip está autorizado pelo registro SPF do domínio, resolvendo mecanismos ip4, ip6, a, mx, include e all (limite de 10 lookups DNS). Resulta em warn se o IP público não puder ser determinado.
DMARC — confirma que _dmarc.<dominio> existe e está bem-formado.
Exemplos
Validar todos os domínios
curl -s -w "\nHTTP %{http_code}\n" \
-H "X-Auth-Token: {TOKEN}" \
https://mxout.203.0.113.x/checkResposta com todos os domínios em dia (HTTP 200):
{
"public_ip": "203.0.113.42",
"ok": true,
"domains": [
{
"domain": "empresa.com.br",
"dkim": { "status": "pass", "message": "Chave pública confere com a privada local." },
"spf": { "status": "pass", "message": "IP 203.0.113.42 autorizado pelo SPF." },
"dmarc": { "status": "pass", "message": "Registro _dmarc encontrado e bem-formado." }
},
{
"domain": "filial.com.br",
"dkim": { "status": "pass", "message": "Chave pública confere com a privada local." },
"spf": { "status": "warn", "message": "IP público não pôde ser determinado; SPF não verificado." },
"dmarc": { "status": "pass", "message": "Registro _dmarc encontrado e bem-formado." }
}
]
}Resposta quando um domínio falha (HTTP 503):
{
"public_ip": "203.0.113.42",
"ok": false,
"domains": [
{
"domain": "empresa.com.br",
"dkim": { "status": "fail", "message": "Chave pública não encontrada em DNS." },
"spf": { "status": "pass", "message": "IP 203.0.113.42 autorizado pelo SPF." },
"dmarc": { "status": "pass", "message": "Registro _dmarc encontrado e bem-formado." }
}
]
}Validar um domínio específico
curl -s -w "\nHTTP %{http_code}\n" \
-H "X-Auth-Token: {TOKEN}" \
https://mxout.203.0.113.x/check/empresa.com.brSe o domínio não estiver configurado (HTTP 404):
{
"error": "domínio não configurado"
}Quando usar
Use /check para monitoração contínua: dashboards, probes de Uptime Robot, Prometheus Blackbox Exporter ou qualquer sistema que consulte periodicamente a postura de DNS.
O código HTTP 503 em caso de falha permite que monitores alertem sem precisar interpretar o corpo da resposta.
Para validação pontual antes de um envio ou em pipelines de CI, use o comando de linha de comando — ele não exige o servidor em execução:
Outros recursos relacionados:
- POST /send — envia mensagens autenticadas pelo mesmo token.
- Configuração — define domínios, seletores e
MXOUT_AUTH_TOKEN.