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

  1. Creare una directory per le chiavi:
sudo mkdir -p /etc/opendkim/keys
  1. Generare la coppia di chiavi (sostituisci example.com con il tuo dominio e mail con 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 pubblicare
  • mail.private — la chiave privata (da tenere segreta)
  1. 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

  1. 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.)

  1. 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
  1. 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
  1. 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

Hosting WebServizi di hosting affidabili per siti web di qualsiasi dimensione.
Ordina
VPSInfrastruttura cloud flessibile con accesso root completo.
Ordina
Server DedicatiServer dedicati per le massime prestazioni.
Ordina

Avviare e verificare

  1. Riavviare i servizi:
sudo systemctl restart opendkim
sudo systemctl restart postfix
  1. Verificare che entrambi i servizi siano attivi:
sudo systemctl status opendkim
sudo systemctl status postfix
  1. Inviare un'email di test dal server:
echo "DKIM test message" | mail -s "DKIM Test" your@gmail.com
  1. 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.log o /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!

Hai bisogno di aiuto?I nostri ingegneri ti aiuteranno gratuitamente con qualsiasi domanda in pochi minutiContattaci