Per una spiegazione completa di cosa sono questi record, si rimanda al sito di riferimento per SPF e DKIM.
Velocemente, si tratta di cui record di tipo "TXT" registrati nella zona DNS di riferimento per il dominio che contengono informazioni sui server che sono autorizzati ad inviare posta per il dominio.
Nel caso di SPF, fornisce l'elenco dei server autorizzati ad inviare posta (che possono essere diversi dal record MX che è invece il server deputato a riceverla): Quando un server con il filtro SPF abilitato riceve un messaggio, come prima cosa verifica quindi sul DNS del mittente se il server da cui il messaggio è arrivato è listato nel record SPF, in caso contrario lo considera SPAM.
La sintassi del record non è sempre immediata ma con un pochino di pratica e l'aiuto dei test che si trovano su alcuni siti (SPF Query Tool oppure Mail Server Diagnostics - Accessplus) si può riuscire con facilità a ottenere un record corretto.
I record:
codice:
v=spf1 a:posta.fracassetti.it ptr:posta.fracassetti.it -all
e
codice:
v=spf1 ip4:77.89.33.26/32 a:posta.fracassetti.it ptr:posta.fracassetti.it -all
sono entrambi record SPF validi per il mio dominio e specificano che solo il server "posta.fracassetti.it" (identificato in vari modi) è autorizzato ad inviare mail per il dominio in cui si trova il record ("fracassetti.it") ottenuto. Se il mio server ospitasse altri domini, il record SPF da inserire nella zona DNS di tali domini sarebbe lo stesso.
codice:
[matteo@arch-UEFI Desktop]$ dig @208.67.222.222 txt fracassetti.it +short
"v=spf1 ip4:77.89.33.26/32 a:posta.fracassetti.it ptr:posta.fracassetti.it -all"
DKIM, invece, è un record che contiene una della chiavi della firma elettronica con cui il server di posta in uscita firma ogni messaggio in transito. In questo modo, verificando la corrispondenza delle firme, il server che riceve un messaggio firmato tramite DKIM può avere o meno la conferma che il messaggio è stato originato proprio da un server che detiene la chiave privata della firma riportata nel record.
Il record DKIM è quindi un pò più complesso da generare, generalmente vengono usati dei tool appositi. iRedMail, in fase di installazione, si preoccupa già di generare la chiave necessaria anche se nel riepilogo generato dalla versione 0.81 non si vede (probabile bug).
Per ottenere il record DKIM da inserire nel nostro DNS, possiamo utilizzare il comando:
codice:
root@server:~# amavisd-new showkeys
; key#1, domain fracassetti.it, /var/lib/dkim/fracassetti.it.pem
dkim._domainkey.fracassetti.it. 3600 TXT (
"v=DKIM1; p="
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQOZAqGHp2yRr4U3L0OPYpytja"
"RkmFsOPH4f0RO1u67eEM3EPULqeAg/tfcm5Z/J98hGGCjKM0bCdKWzHj3nn/Bsom"
"UICirWdOsDcdEm8bxDthNsK3G2vPXjWXyMO3L7di5pGhMd388eWzBBn6CJ7FHaRw"
"EdhD+ssYRB6Td+2i4wIDAQAB")
che può essere incollato nel nostro file di zona del DNS se gestito da bind, altrimenti si può creare un record denominato "dkim._domainkey.fracassetti.it." con il seguente contenuto:
codice:
v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQOZAqGHp2yRr4U3L0OPYpytjaRkmFsOPH4f0RO1u67eEM3EPULqeAg/tfcm5Z/J98hGGCjKM0bCdKWzHj3nn/BsomUICirWdOsDcdEm8bxDthNsK3G2vPXjWXyMO3L7di5pGhMd388eWzBBn6CJ7FHaRwEdhD+ssYRB6Td+2i4wIDAQAB
Una volta inserito il record, può essere verificato con il comando:
codice:
root@server:~# amavisd-new testkeys
TESTING#1: dkim._domainkey.fracassetti.it => pass
Purtroppo non tutti i gestori lo supportano. Nel mio caso, Aruba prevede l'inserimento solo di record SPF: Sono riuscito anche ad inserire un record presunto DKIM ma non sono per nulla sicuro che funzioni davvero, avevo letti di diversi problemi con questo gestore.
[EDIT:]
Ho verificato il record creando una copia della zona con il mio bind e inserendo il record. Il test viene superato, segno che la chiave e la firma sono corrette. Peccato che verificando le forme usando una servizio esterno, come quello di port25.com ottengo questo risultato:
codice:
DKIM check: permerror
[...]
----------------------------------------------------------
DKIM check details:
----------------------------------------------------------
Result: permerror (no usable key records)
ID(s) verified:
Canonicalized Headers:
user-agent:RoundCube'20'WebMail'0D''0A'
message-id:<4d01b34eeb48803b15b88c520709cc94@fracassetti.it>'0D''0A'
subject:test'20'spf'0D''0A'
to:'0D''0A'
from:miamail@fracassetti.it'0D''0A'
date:Sat,'20'25'20'Aug'20'2012'20'18:13:52'20'+0200'0D''0A'
mime-version:1.0'0D''0A'
dkim-signature:v=1;'20'a=rsa-sha256;'20'c=relaxed/simple;'20'd=fracassetti.it;'20'h=user-agent:message-id:subject:subject:to:from:from:date:date'20':mime-version;'20's=dkim;'20't=1345911232;'20'x=1346775232;'20'bh=frcCV1k9oG'20'9oKj3dpUqdJg1PxRT2RSN/XKdLCPjaYaY=;'20'b=
Canonicalized Body:
'0D''0A'
DNS record(s):
dkim._domainkey.fracassetti.it. TXT (no records)
NOTE: DKIM checking has been performed based on the latest DKIM specs
(RFC 4871 or draft-ietf-dkim-base-10) and verification may fail for
older versions. If you are using Port25's PowerMTA, you need to use
version 3.2r11 or later to get a compatible version of DKIM.
Quindi è probabile che il problema sia proprio il record sul DNS di Aruba...