Skip to main content

E-mail - SPF - DKIM - DMARC

Cenário

Usamos correio eletrónico in-house, neste caso Exchange 2016 e pretendemos ter SPF, DMARC e DKIM ativos.

SPF

Sender Policy Framework - ajuda a prevenir spoofing pois permite a verificação pelos destinatários
de que e-mail recebido foi de facto enviado por quem está declarado.

Neste caso, foi colocada a seguinte linha, nos DNS's externos:

image.png

IN TXT "v=spf1 ip4:IP.IP.IP.IP -all"

Notas: A linha acima declara ser um registo SPF com o v=spf1, que todo o e-mail @vossodomínio.pt
só pode ter origem no IP IP.IP.IP.IP e o -all define que o que não tiver essa origem é para ser
considerado spam.

Para mais info e aqui.

DKIM

DomainKeys Identified Mail - assegura a integridade do e-mail enviado, apondo uma assinatura
digital no cabeçalho de cada um, permitindo que a quem o recebe, verifique a sua autenticidade.

Resumidamente, o cabeçalho de cada e-mail que sai é cifrado usando a chave privada e quem o
recebe usa a chave pública, que temos publicada no DNS externo, para assegurar que fomos nós
que o enviamos.

Para habilitarmos DKIM usamos o script presente aqui.

No servidor MX, descarregamo-lo e descompactamos.

Executamos como Administrador o "ConfigurationDkimSigner.exe".

Quando arranca, esperamos até que a função "Install" esteja disponível: 

image.png

Instalamos e esperamos que o processo termine. Fechamos a janela em "Close":

image.png

Configuração

Arrancamos, com direitos de Administrador, com a aplicação "Configuration.DkimSigner.exe"
presente em "
C:\Program Files\Exchange DkimSigner".

Tão logo abra e reporte que o "Transport Service Status" está "Running", clicamos em "Configure":

image.png

Movemos o agente "Exchange DKIMSigner" para o topo, se não estiver e clicamos em "Close".

image.png

Vamos ao separador "DKIM Settings" e definimos as opções "Header Canonicalization" & "Body
Canonicalization
" como "Relaxed" e guardamos a configuração em "Save configuration": 

image.png

Vamos ao separador "Domain Settings", clicamos no botão "Add", definimos "Domain name"
(no nosso caso
xyz.pt apesar de na imagem estar rasurado e .com) e um Selector (no nosso caso escolhemos "20200421" mas é
arbitrário) e pressionamos "Generate new key":

image.png

image.png

É-nos apresentada janela para gravar a chave (por defeito ficam em "C:\Program Files\Exchange
DkimSigner\keys") e guardamos a mesma.

Criamos o registo TXT nos DNS's externos como sugerido, usando a chave pública:

image.png

Exemplo:

v=DKIM1; k=rsa; p=MIIBIjxxxxxxxxxxxxxxw0BAQEFAAOCAQ8AMIIBCgKCAQEAjAnRqCS+vxCFgLNJI0YjmH8YfO8p92F+x2sbJ77D3p6PKWSB9PRjQQd/uLEOP6hzKV1m90Y7UnYayxxxxxxxxxxxxxxxXxp0WKy9v4BZaPYfdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgUE3mUJI7y3gajeL9Oxxxxxxxxxxxxxxxxxxx0JA5J9y5Xi66bv5useYHLCKc1i3izzTZn2xxxxxxxxxxxxxxxxxxxZDBEBIFlb20/xxxxxxxxxxxQh6ej8SaykVaqV15kxxxxxxxxxxxxxxxxxxxxxxxA5AbYv/bpYw3bCEwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxG5l3AEOhGDv+Yu7nJaL76iLcoD+DZ7tK4Qxxxxxxx

image.png

Após o que guardamos o domínio clicando em "Save domain":

image.png

Vamos ao separador "Information" e reiniciamos o "Transport Service" (demora um bocado a
reiniciar):

image.png

Neste cenário, a chave privada foi também colocada na Sophos XGS em:

image.png

image.png

Para testar se o DKIM está a funcionar, podemos usar este teste.

Para mais info.

DMARC

O Domain-based Message Authentication, Reporting, and Conformance (DMARC), trabalha em
conjunto com o SPF e o DKIM para assegurar a autenticidade dos originadores de correio
eletrónico.

Assegura que os sistemas de correio eletrónico de destino confiam nos e-mails por nós enviados,
ajudando os sistemas a decidir o que fazer com o correio eletrónico recebido.

Nos nossos DNS's externos colocamos a linha abaixo:

image.png

sendo que os valores são

v=DMARC1; p=reject; rua=mailto:vossoemail@vossodominio.pt; ruf=mailto:vossoemail@vossodominio.pt; sp=reject; adkim=s; aspf=s; ri=86400

A linha acima tem definido o seguinte:

v=DMARC1; - define a versão Dmarc e é obrigatório ser DMARC1;

p=reject; - é uma flag obrigatória e definida como p, rejeita e-mail não autenticado e envia relatório ao originador;

rua=mailto:vossoemail@vossodominio.pt; - para onde são enviados relatórios de ações tomadas;

ruf=mailto:vossoemail@vossodominio.pt; - endereço que receberá relatórios de erro;

sp=reject; - rejeita e-mail não conforme e envia relatório ao originador;

adkim=s; - define que o alinhamento com o DKIM é rigoroso ou seja, não está assinada é rejeitada;

aspf=s; - define que o alinhamento com o SPF é rigoroso ou seja, se não respeita definições SPF, é para ser descartado;

ri=86400; - intervalo de tempo em segundos, neste caso, 24 horas, para envio de relatório agregado.

Nota: Apesar deste cenário descrever implementação de SPF, DKIM e DMARC com Exchange in-house, podem usar a informação na cloudflare, etc.

Para mais info e aqui.

Doação

Se o acima te trouxe valor, aceito com gratidão uma doação

CoinRequest button