Configurare OpenDKIM + Postfix su Ubuntu
Configurare la firma DKIM per migliorare la consegna delle email.
DKIM (DomainKeys Identified Mail) è un metodo di autenticazione delle email che consente ai server destinatari di verificare che i messaggi provengano effettivamente dal tuo dominio e non siano stati manomessi durante il transito. Una firma DKIM valida aumenta notevolmente la probabilità che le tue email arrivino nella posta in arrivo anziché nello spam, su Gmail, Yandex, Outlook, Mail.ru e altri provider.
Questa guida mostra come configurare OpenDKIM con Postfix su Ubuntu — il metodo standard e più affidabile per firmare la posta in uscita da un VPS o un server dedicato.
Installare OpenDKIM
sudo apt update
sudo apt install opendkim opendkim-tools -y
Generare le chiavi DKIM
- Creare una directory per le chiavi:
sudo mkdir -p /etc/opendkim/keys
- Generare la coppia di chiavi (sostituisci
example.comcon il tuo dominio emailcon il selettore che preferisci —dkim,2025,selector1, ecc.):
sudo opendkim-genkey -D /etc/opendkim/keys/ -d example.com -s mail
Dopo l'esecuzione, troverai due file in /etc/opendkim/keys/:
mail.txt— il record DNS TXT da pubblicaremail.private— la chiave privata (da tenere segreta)
- Impostare i permessi corretti:
sudo chown opendkim:opendkim /etc/opendkim/keys/*
sudo chmod 600 /etc/opendkim/keys/*
Pubblicare il record DNS TXT
Visualizzare il record TXT:
cat /etc/opendkim/keys/mail.txt
Esempio di output:
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM+aKFwMV4FHLhghuhQs4vEIIIigO0KzRwQojURHI8QV0m/aHt6AqO2JDhXpl54d3uXJj7QWE9653McQZxPQZa6Hu34RY70ap9OZQ664fWeVuyUAZ+VeQ7gGXQBCxPF6nAlnBIsYak+KV/s1HtaUuySVMiwIDAQAB" )
Accedi al pannello di controllo del tuo provider DNS e aggiungi un nuovo record TXT:
- Nome / Host: mail._domainkey
- Tipo: TXT
- Valore: tutto ciò che si trova tra le parentesi (rimuovendo le virgolette e gli a capo)
La propagazione DNS richiede solitamente dai 5 ai 60 minuti.
Configurare OpenDKIM
- Modificare il file di configurazione principale:
sudo nano /etc/opendkim.conf
Assicurati che contenga (o aggiungi) queste righe:
AutoRestart Yes
AutoRestartRate 10/1h
Umask 002
Syslog Yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Socket inet:8891@localhost
(La porta 8891 è arbitraria — puoi cambiarla, a patto che corrisponda alla configurazione di Postfix.)
- Creare il file TrustedHosts (gli host autorizzati a inviare posta tramite OpenDKIM):
sudo nano /etc/opendkim/TrustedHosts
Contenuto:
127.0.0.1
localhost
example.com
*.example.com
- Creare il KeyTable (associa dominio/selettore alla chiave privata):
sudo nano /etc/opendkim/KeyTable
Contenuto:
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/mail.private
- Creare il SigningTable (indica quale selettore usare per ciascun indirizzo):
sudo nano /etc/opendkim/SigningTable
Contenuto:
*@example.com mail._domainkey.example.com
Collegare OpenDKIM a Postfix
Modificare la configurazione principale di Postfix:
sudo nano /etc/postfix/main.cf
Aggiungere (o accodare alle righe milter esistenti):
# OpenDKIM integration
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
I nostri prodotti e servizi
Avviare e verificare
- Riavviare i servizi:
sudo systemctl restart opendkim
sudo systemctl restart postfix
- Verificare che entrambi i servizi siano attivi:
sudo systemctl status opendkim
sudo systemctl status postfix
- Inviare un'email di test dal server:
echo "DKIM test message" | mail -s "DKIM Test" your@gmail.com
- Aprire l'email ricevuta → «Mostra originale» (in Gmail) e cercare:
Authentication-Results: ... dkim=pass header.d=example.com ...
Se vedi dkim=pass, tutto funziona correttamente.
Note utili
- Per più domini, aggiungi semplicemente ulteriori righe in KeyTable e SigningTable seguendo lo stesso schema.
- Per una migliore deliverability, configura anche i record SPF e DMARC.
- Log per il debug:
/var/log/mail.logo/var/log/syslog(cerca le voci relative a opendkim).
Aiuto
Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!