IPv6 Certification Badge for kiokoman

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
SyslogSuccess           yes
OversignHeaders         From
Canonicalization        relaxed/relaxed
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
MinimumKeyBits          1024
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  inet:8891@127.0.0.1
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

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

SOCKET="inet:12301@localhost"

Per configurare postfix affinche comunichi con opendkim

sudo nano /etc/postfix/main.cf

assicuriamoci siano presenti le seguenti impostazioni al suo interno:

milter_protocol = 2
milter_default_action = accept

a questo punto aggiungiamo :

smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

 

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
127.0.0.1
localhost
192.168.0.1/24

*.kiokoman.eu.org
*.kiokoman.tk
#*.example.org

Creiamo la tabella delle chiavi da usare

sudo nano /etc/opendkim/KeyTable

mail._domainkey.example.com kiokoman.eu.org:mail:/etc/opendkim/keys/kiokoman.eu.org/mail.private
mail._domainkey.example.net kiokoman.tk:mail:/etc/opendkim/keys/kiokoman.tk/mail.private
#mail._domainkey.example.org example.org:mail:/etc/opendkim/keys/example.org/mail.private

Creiamo la tabella delle firme dove dichiariamo i domini e le email e il selector per opendkim:

sudo nano /etc/opendkim/SigningTable
*@kiokoman.eu.org mail._domainkey.kiokoman.eu.org 
*@kiokoman.tk mail._domainkey.kiokoman.tk
#*@example.net mail._domainkey.example.net
#*@example.org mail._domainkey.example.org

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
Name: mail._domainkey.example.com.

Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"

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 Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. da cui riceveremo una risposta automatica con il risultato

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

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:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mail._domainkey.kiokoman.tk.   IN      TXT

;; ANSWER SECTION:
mail._domainkey.kiokoman.tk. 180 IN     TXT     "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTLKOpImBlL9EIoiChZkfqI1MwXoWFNknivLzQCAR6YYCEj+DQNZKwQM5q7z+zFXMAl7EOc3BCa4vSLaGI/4XzCJu43p6NzzqCj/faHVM2rjfmFeJrWPs1cfwlaLd3LYAUZNfGp7DTs6Rcnt2oTsLHEZ/QZQ3P0y1fg6MF0hVuOQIDAQAB; t=s"

;; AUTHORITY SECTION:
kiokoman.tk.            3600    IN      NS      ns1.kiokoman.tk.
kiokoman.tk.            3600    IN      NS      ns2.kiokoman.tk.

[.....]

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)