In precedenza ti ho mostrato come configurare SPF e DKIM sul server di posta CentOS/RHEL. Due software comuni che possono eseguire la firma e la verifica DKIM su Linux sono OpenDKIM e Amavis. In quel tutorial ho usato Amavis, perché al momento OpenDKIM non è incluso in nessun repository CentOS 8/RHEL 8. A partire da ora, OpenDKIM è incluso nel repository EPEL. Alcune persone preferiscono usare OpenDKIM, quindi ti mostrerò come in questo tutorial.
Cos'è DKIM?
DKIM (DomainKeys Identified Mail) è un tipo di record TXT in DNS che può aiutare a prevenire lo spoofing e-mail e inviare e-mail legittime nella posta in arrivo del destinatario anziché nella cartella spam. DKIM utilizza una chiave privata per aggiungere una firma alle email inviate dal tuo dominio . I server SMTP riceventi verificano la firma utilizzando la chiave pubblica corrispondente, pubblicata nei record DNS del tuo dominio.
Disabilitazione di DKIM in Amavis
Se hai seguito il mio precedente tutorial su Amavis, ma ora vuoi usare OpenDKIM, devi disabilitare DKIM in Amavis. Modifica il file di configurazione principale.
sudo nano /etc/amavisd/amavisd.conf
Trova le seguenti righe.
$enable_dkim_verification = 1; # enable DKIM signatures verification $enable_dkim_signing = 1; # load DKIM signing code, keys defined by dkim_key
Aggiungi un #
carattere all'inizio di ogni riga per commentarli.
#$enable_dkim_verification = 1; # enable DKIM signatures verification #$enable_dkim_signing = 1; # load DKIM signing code, keys defined by dkim_key
Salva e chiudi il file. Quindi riavvia Amavis.
sudo systemctl restart amavisd
Passaggio 1:installa e configura OpenDKIM su CentOS 8/RHEL8
Per prima cosa abilita il repository EPEL (Extra Packages for Enterprise Linux) e installa OpenDKIM.
sudo dnf install epel-release sudo dnf install opendkim
Modifica il file di configurazione principale di OpenDKIM.
sudo nano /etc/opendkim.conf
Trova la riga seguente.
Mode v
Per impostazione predefinita, OpenDKIM viene eseguito in modalità di verifica (v), che verificherà la firma DKIM dei messaggi di posta elettronica in arrivo. Dobbiamo firmare le email in uscita, quindi cambia questa riga come segue per abilitare la modalità di firma.
Mode sv
Quindi trova le seguenti righe.
## Specifies whether or not the filter should generate report mail back ## to senders when verification fails and an address for such a purpose ## is provided. See opendkim.conf(5) for details. SendReports yes ## Specifies the sending address to be used on From: headers of outgoing ## failure reports. By default, the e-mail address of the user executing ## the filter is used ([email protected]). # ReportAddress "Example.com Postmaster" <[email protected]>
Quando una verifica della firma fallisce e la firma include una richiesta di segnalazione ("r=y") e il dominio di firma pubblicizza un indirizzo di segnalazione (ad esempio ra=utente) in un record di segnalazione nel DNS, OpenDKIM invierà un rapporto strutturato a quell'indirizzo contenente i dettagli necessari per riprodurre il problema. Potresti voler utilizzare un particolare indirizzo e-mail Da per inviare il rapporto. Decommenta il ReportAddress
parametro e modificare l'indirizzo e-mail. Tieni presente che ciò non creerà il problema della retrodiffusione, perché le e-mail di segnalazione verranno inviate a un indirizzo e-mail specificato nel record DNS del dominio del mittente.
Trova la riga seguente e commentala, perché useremo chiavi separate per ogni nome di dominio.
KeyFile /etc/opendkim/keys/default.private
Quindi, trova le seguenti 4 righe e decommentale.
# KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts
Salva e chiudi il file.
Fase 2:crea la tabella di firma, la tabella delle chiavi e il file degli host attendibili
Modifica la tabella di firma file.
sudo nano /etc/opendkim/SigningTable
Aggiungi la riga seguente alla fine di questo file. Questo dice a OpenDKIM che se un mittente sul tuo server sta usando un @your-domain.com
indirizzo, quindi deve essere firmato con la chiave privata identificata da 20200308._domainkey.your-domain.com
.
*@your-domain.com 20200308._domainkey.your-domain.com
20200308 è il selettore DKIM. Un nome di dominio potrebbe avere più chiavi DKIM. Il selettore DKIM consente di scegliere una particolare chiave DKIM. Puoi usare qualsiasi nome per il selettore DKIM, ma ho trovato conveniente utilizzare la data corrente (8 marzo 2020) come selettore DKIM. Salva e chiudi il file. Quindi modifica la tabella delle chiavi file.
sudo nano /etc/opendkim/KeyTable
Aggiungi la riga seguente, che specifica la posizione della chiave privata DKIM.
20200308._domainkey.your-domain.com your-domain.com:20200308:/etc/opendkim/keys/your-domain.com/20200308.private
Salva e chiudi il file. Quindi, modifica il file degli host attendibili.
sudo nano /etc/opendkim/TrustedHosts
127.0.0.0.1 e ::1 sono inclusi in questo file per impostazione predefinita. Ora aggiungi la seguente riga. Questo dice a OpenDKIM che se un'e-mail proviene dal tuo nome di dominio, OpenDKIM non dovrebbe eseguire la verifica DKIM sull'e-mail.
*.your-domain.com
Salva e chiudi il file.
Fase 3:genera una coppia di chiavi privata/pubblica
Poiché DKIM viene utilizzato per firmare i messaggi in uscita e verificare i messaggi in arrivo, è necessario generare una chiave privata per la firma e una chiave pubblica per il verificatore remoto. La chiave pubblica verrà pubblicata in DNS.
Crea una cartella separata per il dominio.
sudo mkdir /etc/opendkim/keys/your-domain.com
Genera chiavi usando opendkim-genkey
strumento.
sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s 20200308 -v
Il comando precedente creerà chiavi a 2048 bit. -d (domain)
specifica il dominio. -D (directory)
specifica la directory in cui verranno archiviate le chiavi. Uso 20200308
come selettore DKIM. Una volta eseguito il comando, la chiave privata verrà scritta in 20200308.private
file e la chiave pubblica verranno scritti in 20200308.txt
file.
Per impostazione predefinita, solo root può leggere e scrivere nei file chiave. Crea opendkim
come proprietario della chiave privata.
sudo chown opendkim:opendkim /etc/opendkim/keys/ -R
Fase 4:pubblica la tua chiave pubblica nei record DNS
Visualizza la chiave pubblica
sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt
La stringa dopo il p
parametro è la chiave pubblica.
Nel tuo gestore DNS, crea un record TXT, inserisci 20200308._domainkey
nel campo del nome. (Devi sostituire 20200308 con il tuo selettore DKIM.) Quindi torna alla finestra del terminale, copia tutto tra parentesi e incollalo nel campo del valore del record DNS. È necessario eliminare tutte le virgolette doppie e le interruzioni di riga nel campo del valore. Se non li elimini, il test chiave nel passaggio successivo probabilmente fallirà.
Fase 5:prova la chiave DKIM
Inserisci il seguente comando sul tuo server CentOS 8/RHEL 8 per testare la tua chiave.
sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv
Se tutto è a posto, vedrai il key OK
messaggio.
opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com' opendkim-testkey: key OK
Tieni presente che il tuo record DKIM potrebbe richiedere del tempo per propagarsi a Internet. A seconda del registrar di domini che utilizzi, il tuo record DNS potrebbe essere propagato istantaneamente o potrebbero essere necessarie fino a 24 ore per propagarsi. Puoi andare su https://www.dmarcanalyzer.com/dkim/dkim-check/, inserire 20200308
come selettore e inserisci il tuo nome di dominio per verificare la propagazione del record DKIM.
Se vedi "Chiave non sicura", niente panico. Questo perché DNSSEC non è abilitato sul tuo nome di dominio. DNSSEC è uno standard di sicurezza per query DNS sicure. La maggior parte dei nomi di dominio non ha abilitato DNSSEC. Puoi continuare a seguire questa guida.
Ora possiamo avviare il servizio opendkim.
sudo systemctl start opendkim
E abilita l'avvio automatico all'avvio.
sudo systemctl enable opendkim
OpenDKIM è in ascolto su 127.0.0.1:8891
.
Passaggio 6:collega Postfix a OpenDKIM
Modifica il file di configurazione principale di Postfix.
sudo nano /etc/postfix/main.cf
Aggiungi le seguenti righe alla fine di questo file, così Postfix sarà in grado di chiamare OpenDKIM tramite il protocollo milter. Nota che dovresti usare 127.0.0.1
come indirizzo. Non utilizzare localhost
.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters
Salva e chiudi il file. Quindi aggiungi postfix
utente a opendkim
gruppo.
sudo gpasswd -a postfix opendkim
Riavvia postfix
servizio.
sudo systemctl restart postfix
Fase 7:verifica SPF e DKIM
Ora puoi utilizzare il tuo client di posta elettronica desktop o client di posta web per inviare un'email di prova a [email protected]
e ricevi un rapporto di autenticazione e-mail gratuito. Ecco il rapporto che ho ricevuto da port25.com.
Puoi anche inviare un'e-mail di prova dal tuo server di posta al tuo account Gmail per vedere se i controlli SPF e DKIM sono stati superati. Sul lato destro di un messaggio di posta elettronica aperto in Gmail, se fai clic su show original
pulsante dal menu a tendina, puoi vedere i risultati dell'autenticazione.
Se il tuo messaggio non è firmato e il controllo DKIM non è riuscito, potresti voler controllare il registro postfisso (/var/log/maillog
) per vedere cosa c'è che non va nella tua configurazione.
Il tuo server di posta elettronica eseguirà anche la verifica DKIM sulle e-mail in arrivo. Puoi vedere i risultati nelle intestazioni delle email. Quello che segue è il controllo SPF e DKIM su un mittente che utilizza Gmail.
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; [email protected]; receiver=<UNKNOWN> Authentication-Results: email.linuxbabe.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co"; dkim-atps=neutral
Come configurare OpenDKIM per più domini
Ho scritto una guida per ospitare più domini sul server di posta CentOS 8/RHEL 8 con PostfixAdmin. In quell'articolo, ho usato Amavis per la firma e la verifica DKIM. Se usi OpenDKIM, devi saltare il passaggio 3 in quell'articolo.
Per configurare OpenDKIM per più domini, devi aggiungere gli altri domini nella tabella delle firme, nella tabella delle chiavi e nel file degli host attendibili come di seguito.
Tabella di firma:
*@domain1.com 20200308._domainkey.domain1.com *@domain2.com 20200308._domainkey.domain2.com
Tabella chiave:
20200308._domainkey.domain1.com domain1.com:20200308:/etc/opendkim/keys/domain1.com/20200308.private 20200308._domainkey.domain2.com domain2.com:20200308:/etc/opendkim/keys/domain2.com/20200308.private
Host attendibili:
127.0.0.1 localhost *.domain1.com *.domain2.com
Quindi genera la coppia di chiavi privata/pubblica DKIM e aggiungi la chiave pubblica DKIM in DNS come indicato nei passaggi 3, 4 e 5 per altri domini. Riavvia OpenDKIM e il gioco è fatto.
sudo systemctl restart opendkim
Passaggio successivo
Spero che questo tutorial ti abbia aiutato a installare e configurare OpenDKIM sul server di posta CentOS 8/RHEL 8. Ora potresti voler leggere il seguente tutorial per configurare OpenDMARC per bloccare lo spoofing e-mail.
- Configura OpenDMARC con Postfix su CentOS/RHEL per bloccare lo spoofing e-mail
Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere altri suggerimenti e trucchi. Attento 🙂