DMARC (Domain-based Message Authentication, Reporting, and Conformance) è un protocollo di autenticazione delle email progettato per proteggere i domini di posta elettronica dall’uso non autorizzato, come il phishing e lo spoofing. DMARC si basa su due tecnologie esistenti, SPF (Sender Policy Framework) e DKIM (DomainKeys Identified Mail), per fornire un meccanismo di autenticazione e un metodo per riportare i risultati delle verifiche.
DMARC permette ai proprietari dei domini di pubblicare politiche su come gestire le email non autentiche e fornisce un meccanismo per segnalare eventuali abusi. Una politica DMARC include tre elementi principali:
Un record DMARC è pubblicato nel DNS del dominio come un record TXT. Ecco un esempio di record DMARC:
_dmarc.esempio.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-rua@esempio.com; ruf=mailto:dmarc-ruf@esempio.com; fo=1"
In questo esempio:
v=DMARC1
: Specifica la versione del protocollo DMARC.p=quarantine
: Indica che le email che non superano l’autenticazione devono essere messe in quarantena.rua=mailto:dmarc-rua@esempio.com
: Specifica l’indirizzo email per i report aggregati.ruf=mailto:dmarc-ruf@esempio.com
: Specifica l’indirizzo email per i report forensi.fo=1
: Chiede l’invio di report forensi per ogni email fallita.Di seguito è riportato un esempio di script Python che verifica il record DMARC di un dominio utilizzando il modulo dnspython
:
import dns.resolver
def get_dmarc_record(domain):
try:
dmarc_record = dns.resolver.resolve(f'_dmarc.{domain}', 'TXT')
for txt_record in dmarc_record:
for string in txt_record.strings:
if string.startswith(b'v=DMARC1'):
return string.decode()
except dns.resolver.NoAnswer:
return "No DMARC record found"
except dns.resolver.NXDOMAIN:
return "Domain does not exist"
except Exception as e:
return str(e)
domain = 'esempio.com'
dmarc_record = get_dmarc_record(domain)
print(f"DMARC record for {domain}: {dmarc_record}")
L’intestazione di un’email contiene informazioni cruciali per la verifica DMARC. Ecco un esempio di intestazione email con le sezioni rilevanti per DMARC:
Received: from mail.example.com (mail.example.com [192.0.2.1])
by receiver.example.net (Postfix) with ESMTP id ABC123
for <user@example.net>; Mon, 29 Mar 2024 12:34:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=selector;
t=1617027896; bh=examplehashvalue; h=from:to:subject:date;
b=exampledkimsignature
From: sender@example.com
To: user@example.net
Subject: Test Email
Date: Mon, 29 Mar 2024 12:34:56 -0700 (PDT)
Per verificare DMARC, il server di ricezione controlla se il dominio example.com
nell’indirizzo From
corrisponde ai domini verificati dai record SPF e DKIM. Il server utilizza i risultati delle verifiche SPF e DKIM insieme alla politica DMARC per decidere come trattare l’email.
DMARC è uno strumento potente per migliorare la sicurezza delle email e prevenire abusi come il phishing e lo spoofing. Implementando correttamente DMARC, insieme a SPF e DKIM, i proprietari dei domini possono proteggere meglio i loro utenti e la loro reputazione. La configurazione corretta di DMARC richiede una comprensione dettagliata delle politiche di autenticazione delle email e una gestione attenta dei report di feedback.