Premessa - installazione
Ho messo insieme un po di informazioni trovate in rete per arrivare a questa soluzione che vado a presentare, il problema principale di linux e' che ogni distribuzione mette i propri file e configurazioni in posti diversi
cominciamo con la preparazione della base..
sudo apt-get install opendkim opendkim-tools
fatto questo la prima cosa da fare e' modificare il file opendkim.conf
sudo nano /etc/opendkim.conf
al suo interno dovremmo inserire quanto segue cancellando tutto il resto:
Syslog yes
|
Questa soluzione permette di utilizzare chiavi differenti per ogni dominio, sarebbe comunque possibile utilizzare una sola chiave per tutti
principalmente abbiamo definito
InternalHosts: definiamo una lista di indirizzi che vanno firmati ma non verificati
KeyTable: i nomi delle chiavi da usare per firmare
SigningTable: lista delle firme da applicare ai messaggi basandosi sull'indirizzo trovato nel campo From:
Mode: signer (s) e verifier (v)
Colleghiamo milter a postfix
sudo nano /etc/default/opendkim
Sara' sufficiente togliere il commento "#" dalla riga qui sotto
|
Per configurare postfix affinche comunichi con opendkim
sudo nano /etc/postfix/main.cf
assicuriamoci siano presenti le seguenti impostazioni al suo interno:
|
a questo punto aggiungiamo :
|
Le 2 voci precedenti probabilmente erano gia' presenti sara' quindi sufficiente aggiungere inet:localhost:12301 preceduto da una virgola es: smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
Creiamo la struttura delle directory che conterranno le nostre informazioni (chiavi, host etc):
sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys
Iniziamo specificando la lista dei nostri hosts (da prendere come esempio):
sudo nano /etc/opendkim/TrustedHosts
|
Creiamo la tabella delle chiavi da usare
sudo nano /etc/opendkim/KeyTable
|
Creiamo la tabella delle firme dove dichiariamo i domini e le email e il selector per opendkim:
sudo nano /etc/opendkim/SigningTable
|
Generazione chiave pubblica e privata
Spostiamoci nella directory che conterrà le chiavi pubbliche e private
cd /etc/opendkim/keys
Creiamo una cartella per ogni dominio:
sudo mkdir example.org
cd example.org
nel mio caso ho creato 2 cartelle una kiokoman.eu.org e una kiokoman.tk
Generiamo le chiavi:
sudo opendkim-genkey -s mail -d example.com
nel mio caso ho generato 2 chiavi con opendkim-genkey -s mail -d kiokoman.org.eu poi spostamdomi nell'altra cartella ho generato la seconda chiave opendkim-genkey -s mail -d kiokoman.tk
prendendo in esame il comando con -s specifichiamo il selettore, con -d il dominio, il comando genererà 2 file, mail.private che e' la chiave privata e mail.txt contenente la chiave pubblica.
generato le chiavi a questo punto bisogna fare attenzione ai permessi dei file in quanto opendkim non funzionerà se non saranno impostate correttamente.
sudo chown -R opendkim:opendkim /etc/opendkim
cd /etc/opendkim
sudo chmod 640 *
sudo chmod 755 keys
cd keys
sudo chmod 755 *
cd example.org
sudo chmod 600 mail.private
ripetere per le altre chiavi
Aggiungiamo le chiavi pubbliche ai record DNS del dominio
Esaminiamo il file mail.txt (/etc/opendkim/keys/example.org):
cat mail.txt
|
La chiave pubblica è definita dopo il carattere "p" . non usate la chiave qui specificata che è solo illustrativa e non funzionante.
Copiamo la chiave e aggiungiamo un record TXT al nostro dominio, l'operazione varia a seconda che i DNS siano gestiti da voi o se vi appoggiate a qualcuno
in Bind avremo questo record per esempio:
mail._domainkey.kiokoman.tk. 180 TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTLKOpImBlL9EIoiChZkfqI1MwXoWFNknivLzQCAR6YYCEj+DQNZKwQM5q7z+zFXMAl7EOc3BCa4vSLaGI/4XzCJu43p6NzzqCj/faHVM2rjfmFeJrWPs1cfwlaLd3LYAUZNfGp7DTs6Rcnt2oTsLHEZ/QZQ3P0y1fg6MF0hVuOQIDAQAB; t=s"
non ci resta che riavviare i servizi configurati
sudo service postfix restart
sudo service opendkim restart
Congratulazioni ! se tutto e' andato a buon fine avremo configurato correttamente DKIM
Per verificare il corretto funzionamento possiamo mandare una email senza oggetto/vuota a
da cui riceveremo una risposta automatica con il risultato
|
possiamo verificare in caso anche che bind restituisca la chiave pubblica con dig, se vi appoggiate in esterno interrogate i DNS di google ad esempio 8.8.8.8 (dig @8.8.8.8 ) inoltre se non usate linux potete utilizzare gli strumenti messi a disposizione da google https://toolbox.googleapps.com/apps/dig/#TXT/ inserendo nel campo "nome" mail._domainkey.example.org e nel campo nameserver 8.8.8.8 ad esempio
esempio:
dig @localhost kiokoman.tk. mail._domainkey.kiokoman.tk. TXT
[......] ;; OPT PSEUDOSECTION: [.....] |
Per chi gestisce anche il server di posta mandiamo una email di prova tenendo sotto controllo syslog
tail -f /var/log/syslog
e dovrebbe comparire qualcosa di molto simile a quanto qui sotto :
Apr 25 21:38:24 nanto opendkim[23344]: 0902DA061E: DKIM-Signature field added (s=mail, d=kiokoman.eu.org) |