Skip to content
mobius1qwe edited this page Nov 13, 2026 · 1 revision

Home > E-mail > Verificar o que chega

Verificar o que chega (SPF, DKIM e DMARC)

Important

Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.

Nível: avançado

Em uma frase: TRALMailVerifier diz se uma mensagem recebida pelo seu servidor SMTP veio mesmo de quem diz: SPF (o endereço que enviou pode enviar por aquele domínio?), DKIM (a assinatura confere?) e DMARC (a política do domínio do remetente), com o cabeçalho Authentication-Results pronto.

Você vai precisar: o pacote RALModuleMailPackage (e-mail) e acesso a um servidor DNS (o do sistema serve).

No servidor

uses RALSMTPServer, RALMailVerifier;

  FVerificador := TRALMailVerifier.Create(Self);
  FVerificador.AuthServId := 'mx.minhaempresa.com.br';

procedure TForm1.MensagemChegou(Sender: TObject; ASession: TRALSMTPSession;
  AEnvelope: TRALSMTPEnvelope; AData: TStream; var ACode: IntegerRAL;
  var AReply: StringRAL);
var
  vRes: TRALMailVerifyResult;
begin
  vRes := TRALMailVerifyResult.Create;
  try
    FVerificador.VerifyMessage(ASession, AEnvelope, AData, vRes);
    if vRes.ShouldReject then
    begin
      ACode := 550;
      AReply := '5.7.1 rejected by DMARC policy';
      Exit;
    end;
    // vRes.AuthenticationResults vai na frente da mensagem gravada
    Gravar(vRes.AuthenticationResults, AData);
  finally
    vRes.Free;
  end;
end;
  • SPF: pass, fail, softfail, neutral, none, temperror, permerror (RFC 7208, com o limite de 10 consultas de DNS).
  • DKIM: o resultado de cada assinatura (domínio, seletor, veredito).
  • DMARC: o domínio do From alinhado ao do SPF ou do DKIM aprovado, e a política publicada (DMARCPolicy, DMARCDisposition); ShouldReject é verdadeiro quando a política manda rejeitar e a mensagem falhou.
  • Verify(IP, HELO, MAIL FROM, dados, resultado) faz o mesmo fora do servidor SMTP.

DNS

O verificador usa um TRALDNSResolver próprio (UDP, com TCP quando a resposta não cabe, cache pelo TTL). Sem nada configurado, usa os servidores do sistema (/etc/resolv.conf no Linux, a configuração de rede no Windows). Para usar outros, ligue um TRALDNSResolver em Resolver e preencha Servers.

O "domínio organizacional" do DMARC (o minhaempresa.com.br de vendas.minhaempresa.com.br) sai de uma lista dos sufixos comuns (.com.br, .co.uk e outros); se o seu caso não estiver nela, responda OnOrganizationalDomain.

Erros comuns

sintoma causa o que fazer
tudo temperror o DNS não responde confira Servers ou a rede
spf=softfail de um parceiro conhecido o SPF dele não lista o servidor que enviou é dele corrigir; não rejeite por softfail
DMARC fail com DKIM pass a assinatura é de outro domínio (um serviço de envio) normal; o remetente precisa assinar com o domínio do From

Veja também

Começar

Servidor

MQTT 🚧

E-mail 🚧

Chatbot 🚧

Cliente

Motores

Avançado

Ajuda

🚧 = em desenvolvimento, pode mudar

Clone this wiki locally