GNU/Linux >> Linux Esercitazione >  >> Cent OS

Parte 4:configurazione di SPF e DKIM con Postfix su CentOS 8/RHEL 8 Mail Server

Dopo aver completato la parte 1 e la parte 2, abbiamo un server SMTP Postfix funzionante e un server IMAP Dovecot. Possiamo inviare e ricevere e-mail utilizzando un client di posta elettronica desktop. Anche se ho creato MX corretto , A e PTR record, le mie e-mail sono state contrassegnate come spam da Gmail e dalla posta di Outlook. Quindi, in questa parte, esamineremo come migliorare il recapito delle e-mail nella posta in arrivo del destinatario impostando SPF e DKIM sul server CentOS/RHEL.

Cosa sono i record SPF e DKIM?

SPF e DKIM sono due tipi di record TXT in DNS che possono aiutare a prevenire lo spoofing e-mail e a inviare e-mail legittime nella posta in arrivo del destinatario anziché nella cartella spam. Se il tuo dominio viene abusato dallo spoofing delle email, è probabile che le tue email finiscano nella cartella spam del destinatario se il destinatario non ti ha aggiunto alla rubrica.

SPF (Sender Policy Framework) specifica quali host o indirizzi IP possono inviare e-mail per conto di un dominio . Dovresti consentire solo al tuo server di posta elettronica o al server del tuo ISP di inviare e-mail per il tuo dominio.

DKIM (DomainKeys Identified Mail) 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.

Crea un record SPF in DNS

Nella tua interfaccia di gestione DNS, crea un nuovo record TXT come di seguito.

TXT  @   v=spf1 mx ~all

Dove:

  • TXT indica che si tratta di un record TXT.
  • Inserisci @ nel campo del nome per rappresentare il nome di dominio apice.
  • v=spf1 indica che si tratta di un record SPF e la versione del record SPF è SPF1.
  • mx significa che tutti gli host elencati nei record MX sono autorizzati a inviare email per il tuo dominio e tutti gli altri host non sono autorizzati.
  • ~tutti indica che le email del tuo dominio devono provenire solo dagli host specificati nel record SPF. Le e-mail inviate da altri host verranno contrassegnate come non affidabili. Possibili alternative sono +all , -all , ?all , ma sono usati raramente.

-all significa che le e-mail inviate da host non consentiti devono essere rifiutate, per non finire mai nella posta in arrivo o nella cartella spam del destinatario. L'ho visto utilizzato da facebook.com, ma generalmente non abbiamo bisogno di una politica così rigida.

Alcune persone potrebbero pensare che -all sarà migliore in quanto rifiuterà le e-mail da host non attendibili. Bene, usando -all nella tua politica SPF può causare il rifiuto delle tue e-mail quando il destinatario ha due server SMTP e il server SMTP principale va offline, le tue e-mail verranno temporaneamente archiviate sul server SMTP di backup. Quando il server SMTP principale torna online, l'e-mail verrà inoltrata dal server SMTP di backup al server SMTP principale. Poiché non hai elencato il server SMTP di backup del destinatario nella tua politica SPF, l'e-mail verrà rifiutata dal server SMTP principale del destinatario. Quindi dovresti usare ~all nella tua politica SPF.

Nota che alcuni gestori DNS richiedono di racchiudere il record SPF con virgolette come di seguito.

TXT  @   "v=spf1 mx ~all"

Per verificare se il tuo record SPF è stato propagato su Internet pubblico, puoi utilizzare il dig utility sulla tua macchina Linux come di seguito. (Su CentOS/RHEL, devi installare bind-utils pacchetto per utilizzare dig comando:sudo dnf install bind-utils .)

dig your-domain.com txt

Il txt l'opzione dice a dig che vogliamo solo interrogare i record TXT.

Puoi anche utilizzare il validatore SPF online come spf.myisp.ch per vedere quali host sono autorizzati a inviare e-mail per il tuo dominio ed eseguire il debug del record SPF in caso di errore. Il geometra SPF dmarcian può aiutarti a testare la sintassi del record SPF.

Configurazione dell'agente criteri SPF

Dobbiamo anche comunicare al nostro server SMTP Postfix di controllare il record SPF delle e-mail in arrivo per rilevare le e-mail contraffatte. Prima installazione dei pacchetti richiesti:

sudo dnf install epel-release

sudo dnf install pypolicyd-spf

Quindi aggiungi un utente per policyd-spf.

sudo adduser policyd-spf --user-group --no-create-home -s /bin/false

Modifica il file di configurazione del processo master di Postfix.

sudo nano /etc/postfix/master.cf

Aggiungi le seguenti righe alla fine del file, che dice a Postfix di avviare il demone della politica SPF quando si avvia da solo. Policyd-spf verrà eseguito come policyd-spf utente.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/libexec/postfix/policyd-spf

Nota :Non dovresti eseguire policyd-spf in un ambiente chroot.

Salva e chiudi il file. Quindi, modifica il file di configurazione principale di Postfix.

sudo nano /etc/postfix/main.cf

Aggiungi le seguenti righe alla fine del file. La prima riga specifica l'impostazione di timeout dell'agente dei criteri Postfix (per la query DNS). Le righe seguenti imporranno restrizioni alle e-mail in arrivo controllando il record SPF.

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

Salva e chiudi il file. Quindi riavvia Postfix.

sudo systemctl restart postfix

La prossima volta, quando ricevi un'e-mail da un dominio che ha un record SPF, puoi vedere i risultati del controllo SPF nell'intestazione dell'e-mail grezza. L'intestazione seguente indica che il mittente ha inviato l'e-mail da un host autorizzato.

Received-SPF: Pass (mailfrom) identity=mailfrom;

Configurazione di DKIM

Due software comuni che possono eseguire la firma e la verifica DKIM su Linux sono OpenDKIM e Amavis. Useremo OpenDKIM perché è leggero e OpenDMARC non funziona con Amavis.

Installa e configura OpenDKIM su CentOS 8/RHEL8

Installa OpenDKIM dal repository EPEL (Extra Packages for Enterprise Linux).

sudo dnf install epel-release

sudo dnf install opendkim perl-Getopt-Long

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.

Crea tabella firma, tabella chiavi e file 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 usare 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.

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 firmare le e-mail in uscita e una chiave pubblica per ricevere i server SMTP per verificare la firma DKIM della tua e-mail. 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

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

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

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

Controllo SPF e DKIM

Ora puoi 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 il controllo SPF e DKIM sul dominio del mittente. 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: mail.linuxbabe.com;
	dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co";
	dkim-atps=neutral

Test del punteggio e del posizionamento dell'email

Ora puoi andare su https://www.mail-tester.com. Vedrai un indirizzo email univoco. Invia un'e-mail dal tuo dominio a questo indirizzo e poi controlla il tuo punteggio. Come puoi vedere, ho ottenuto un punteggio perfetto.

Mail-tester.com può mostrarti solo un punteggio del mittente. C'è un altro servizio chiamato GlockApps che ti consente di verificare se la tua e-mail è stata inserita nella posta in arrivo o nella cartella spam del destinatario o rifiutata a titolo definitivo. Supporta molti provider di posta elettronica popolari come Gmail, Outlook, Hotmail, YahooMail, posta iCloud, ecc

Caselle di posta Microsoft (Hotmail.com, Outlook.com)

Microsoft sembra utilizzare una blacklist interna che blocca molti indirizzi IP legittimi. Se le tue e-mail vengono rifiutate da Outlook o Hotmail, devi inviare il modulo delle informazioni sul mittente. Successivamente, la tua e-mail verrà accettata da Outlook/hotmail, ma potrebbe comunque essere etichettata come spam. Nel mio test, l'e-mail è arrivata nella mia casella di posta di Gmail. Tuttavia, è ancora etichettato come spam nella mia e-mail di outlook.com sebbene sia SPF che DKIM siano passati.

Cosa succede se le tue email vengono ancora contrassegnate come spam?

Ho altri suggerimenti per te in questo articolo:come impedire che le tue email vengano contrassegnate come spam.

Passaggio successivo

Nella parte 5, vedremo come creare un record DMARC per proteggere il tuo dominio dallo spoofing della posta elettronica. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere articoli più utili, oppure seguici su Twitter o metti mi piace alla nostra pagina Facebook.


Cent OS
  1. Come installare il server di posta Postfix su RHEL 8 / CentOS 8

  2. Come installare e configurare Postfix Mail Server su CentOS 8

  3. Come installare e integrare DKIM con OpenDKIM e Postfix su CentOS 6 VPS

  4. Configura un server di posta con PostfixAdmin e MariaDB su CentOS 7

  5. Come configurare un server di posta con PostfixAdmin su CentOS 7

Configurazione del server di stampa CUPS su CentOS 8/RHEL 8 (Bonjour, IPP, Samba, AirPrint)

Configura il server Samba su CentOS 8/RHEL 8 per la condivisione di file

Configura OpenDMARC con Postfix su CentOS/RHEL per bloccare lo spoofing e-mail

Installa e configura OpenDKIM su CentOS 8/RHEL 8 Mail Server

Parte 3:PostfixAdmin – Crea cassette postali virtuali su CentOS 8/RHEL 8 Mail Server

Come configurare un server di posta completo con Postfix, Dovecot e Roundcube su Ubuntu 18.04