mxout check

Diagnostica o DNS de domínios remetentes — DKIM, SPF e DMARC — sem precisar do servidor no ar.

O comando lê o arquivo mxout.json (ou o caminho definido em MXOUT_CONFIG) e consulta o DNS diretamente. Use-o antes de enviar e-mails, em pipelines de CI ou ao configurar um domínio novo.

Sintaxe

mxout check [dominio] [--json]

Argumentos e flags

Argumento/flag Obrigatório Descrição
dominio Não Domínio a verificar. Sem este argumento, verifica todos os domínios em domains.
--json Não Imprime o relatório em JSON formatado. Pode aparecer antes ou depois do domínio.

Quando dominio é informado mas não está configurado no mxout.json, o erro vai para stderr e o comando encerra com exit code 2.

O que cada checagem faz

DKIM

Consulta o registro TXT em <selector>._domainkey.<dominio> e compara a chave pública publicada com a derivada da chave privada local (formato SPKI).

Modos de falha detectados:

Situação Status
Registro ausente no DNS fail
Registro presente, mas sem campo p= fail
Chave publicada em formato PKCS#1 em vez de SPKI fail
Chave pública não corresponde à chave privada local fail

O formato PKCS#1 é um erro comum: validadores estritos como o Gmail exigem SPKI (SubjectPublicKeyInfo). Use mxout keygen para gerar chaves já no formato correto. Veja também Configurar DNS e Adicionar um domínio.

SPF

Consulta o registro SPF do domínio e avalia se o IP de saída está autorizado. O comando resolve ip4, ip6, a, mx, include e all, respeitando o limite de 10 lookups DNS definido pelo RFC 7208.

O IP de saída vem do campo public_ip do mxout.json. Se o campo estiver ausente, o comando tenta detectar o IP automaticamente. Se não conseguir, a checagem retorna aviso (!) em vez de falha.

Veja como configurar public_ip em Configuração.

DMARC

Consulta o registro TXT em _dmarc.<dominio> e valida:

  • Existência do registro.
  • Presença de v=DMARC1.
  • Campo p= com valor válido (none, quarantine ou reject).
  • Ausência de texto ou caracteres de controle indevidos no registro.

Exit codes

Código Significado
0 Todas as checagens passaram (nenhum fail).
1 Ao menos uma checagem resultou em fail.
2 Erro de execução: configuração não carrega ou domínio não está configurado.

Exemplos

Verificar todos os domínios (saída humana)

mxout check
IP público: 203.0.113.10

borlot.com.br
  DKIM   ✓ chave publicada bate (selector mxout)
  SPF    ✓ 203.0.113.10 autorizado (via include:spf.exemplo.com)
  DMARC  ✓ válido (p=none)

Verificar um domínio específico com saída JSON

mxout check exemplo.com --json
{
  "public_ip": "203.0.113.10",
  "ok": true,
  "domains": [
    {
      "domain": "exemplo.com",
      "dkim": {
        "status": "pass",
        "message": "chave publicada bate (selector mxout)"
      },
      "spf": {
        "status": "pass",
        "message": "203.0.113.10 autorizado (via include:spf.exemplo.com)"
      },
      "dmarc": {
        "status": "pass",
        "message": "válido (p=none)"
      }
    }
  ]
}

O campo ok é true quando nenhum domínio tem status fail. O campo public_ip é null se o IP não foi detectado.

Quando usar

  • Antes de enviar e-mails: execute mxout check como preflight para garantir que o DNS está correto.
  • Em CI/CD: use o exit code para bloquear pipelines quando o DNS estiver quebrado.
  • Ao configurar um domínio novo: depure problemas de DKIM, SPF ou DMARC antes de colocar o domínio em produção. Consulte Adicionar um domínio e Configurar DNS.
By Borlot.com.br on 02/06/2026