Installa DKIM (DomainKeys) per Ubuntu, Postfix e Mailman


22

Sto eseguendo Ubuntu 12.04 con Postfix e Mailman. Voglio configurare DKIM . DomainKeys Identified Mail o DKIM è il successore di "DomainKeys" di Yahoo. Incorpora Cisco Identified Mail.

Quali sono i passaggi per l'impostazione?

Opendkim è raccomandato?

L'unico riferimento che ho è HowToForge , ma preferisco chiedere aiuto qui (anche se è solo una conferma dei passaggi di quel link). In realtà, penso che le informazioni su HowToForge siano obsolete perché menziona dkim-filter anziché opendkim.

Risposte:


39

openDKIM e Postfix su Ubuntu Server 12.04LTS

Proverò a tornare e formattarlo meglio. Ma dato che c'era una richiesta per pubblicare la mia risposta, volevo pubblicarla ora piuttosto che aspettare che avessi il tempo di formattarla correttamente. A causa della mancanza di tempo, ho racchiuso la mia intera risposta in una citazione. Spero che questa soluzione sia utile.

Questi sono i miei riferimenti:

e Wikipedia ha una buona voce in materia

Come minimo avrai bisogno di:

  • Accesso root al tuo server di posta
  • Accedi per aggiornare i record DNS per il tuo dominio

Installa opendkim dai repository:

# sudo apt-get install opendkim opendkim-tools

Devi decidere su quale "selettore" desideri utilizzare. Il selettore è essenzialmente una parola per descrivere la chiave che si desidera utilizzare. Qui userò il selettore 201205 poiché la chiave è diventata valida a maggio 2012 (astuzia eh?). Do due esempi di varietà, che si spera aggiungano chiarezza. Devi solo generare UNA chiave. Tuttavia, sto dando entrambi gli esempi in modo da poterli confrontare.

  • 201205 (1 ° tasto)
  • my_selector (seconda chiave)

Il mio dominio sarà example.com, ma userò un sottodominio per il mio secondo esempio:

  • esempio.com (1 ° tasto)
  • mail.example.com (seconda chiave)

Ho deciso di lavorare nella seguente directory:

# mkdir /etc/opendkim/
# cd /etc/opendkim

Genera le chiavi nella directory corrente, usando il selettore e il dominio scelti.

# opendkim-genkey -s 201205 -d example.com

Potrebbe essere necessario o meno modificare la proprietà. Vedi i dettagli nel mio esempio per la seconda chiave qui sotto per quale proprietà e autorizzazioni dovrebbero essere.

Innanzitutto è necessario verificare se esiste un opendkimutente (gli ID utente / gruppo potrebbero essere diversi):

# grep opendkim /etc/passwd
opendkim:x:108:117::/var/run/opendkim:/bin/false

E probabilmente dovrai farlo:

# chmod 700 /var/run/opendkim

NOTA: i seguenti due comandi NON sono necessari su Ubuntu 12.04. Ma se il comando sopra non mostra che l'utente opendkim è stato impostato correttamente, fallo in questo modo:

# useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
# chown opendkim:opendkim 201205.private   
# cat 201205.private 
-----BEGIN RSA PRIVATE KEY-----
ABCCXQ...[long string]...SdQaZw9
-----END RSA PRIVATE KEY-----

Ora controlla la chiave pubblica e nota che c'è un bug (in openDKIM 2.5.2 su Ubuntu 12.04)! Dov'è contiene, ;=rsa;dovrebbe contenere ;k=rsa;. Il kmanca. Per favore, inseriscilo

# cat 201205.txt
201205._domainkey IN TXT "v=DKIM1;=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Dopo essere stato risolto, sarà simile al seguente:

201205._domainkey IN TXT "v=DKIM1;k=rsa; p=WIGfM..[snip]..QIDIAB" ; ----- DKIM 201205 for example.com

Inoltre, probabilmente dovrai sfuggire ai punti e virgola in questo modo. Se non vuoi il commento finale, cancellalo. Si noti inoltre che è necessario aggiungere il flag t = y per indicare ai server di ricezione che si sta testando DKIM ma che non lo si sta ancora utilizzando attivamente. Ti rimane un record di risorse valido:

201205._domainkey IN TXT "v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

È necessario pubblicare il contenuto della chiave pubblica sopra indicata sul server DNS autorevole. Consiglio di usare un record TXT. Sembra che ci sia un po 'di controversia sull'opportunità di utilizzare un record SPF o entrambi i tipi. Dopo un po 'di lettura, ho scelto di attenermi esclusivamente al tipo di record TXT, anche se non credo che questa sia l'ultima parola su questo argomento.

Dovresti usare un breve TTL (tempo di vita) in modo da poter cambiare la chiave senza attendere che si propaghi attraverso DNS. Ho usato 180 secondi.

Il secondo esempio di generazione di una coppia di chiavi è stato un po 'più complicato per me. Descriverò quello che ho fatto. Il primo elemento è che ho usato il valore di dominio "esempio.com" anche se la chiave verrà utilizzata per "mail.esempio.com". Sono arrivato a questo tramite tentativi ed errori. Funziona, mentre usando "mail.example.com" non ha funzionato. Sfortunatamente, non sono consapevole dei motivi alla base di ciò. Questa è davvero l'unica differenza che ho riscontrato, ma era abbastanza preoccupante che sentissi di dover documentare le mie esperienze con l'utilizzo dei sottodomini. Nessuno degli altri tutorial di livello iniziale che ho trovato ha fatto questo. Genera una seconda chiave:

opendkim-genkey -s my_selector -d example.com

controlla la proprietà e le autorizzazioni della chiave privata, come sopra. Ecco come dovrebbero apparire:

# ls -la /etc/opendkim
-rw-------  1 opendkim opendkim  891 May 10 07:44 my_selector.private

Dopo aver pubblicato il record DNS, controllalo con dig. Dovrebbe restituire esattamente ciò che hai inserito nel record delle risorse (RR).

$ dig 201205._domainkey.example.com txt +short
"v=DKIM1\;k=rsa\;t=y\;p=WIGfM..[snip]..QIDIAB"

Ora prova la chiave. I comandi seguenti presuppongono che ci si trovi nella directory in cui risiede la chiave (/ etc / opendkim per me).

# opendkim-testkey -d example.com -s 201205 -k 201205.private -vvv
opendkim-testkey: key loaded from /etc/opendkim/201205.private
opendkim-testkey: checking key '201205._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Questi risultati sono previsti. La "chiave non sicura" non indica un errore. È una conseguenza attesa del non utilizzo di DNSSSEC. DNSSEC sta arrivando, ma non è ancora pronto per la prima serata, secondo la mia lettura.

Esempio con il 2 ° tasto:

# opendkim-testkey -d example.com -s my_selector -k /etc/opendkim/my_selector.private -vvvv
opendkim-testkey: key loaded from /etc/opendkim/my_selector.private
opendkim-testkey: checking key 'my_selector._domainkey.example.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Si noti che opendkim sta segnalando che la chiave non è sicura. Ciò si riferisce al fatto che DNSSEC non è implementato sul mio server DNS e teoricamente qualcuno potrebbe intercettare la ricerca DNS e sostituirla con la propria chiave.

Modifica il file di configurazione OpenDKIM:

# nano /etc/opendkim.conf
# cat /etc/opendkim.conf
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
Domain                  example.com
KeyFile                 /etc/opendkim/201205.private
Selector                201205
#
# Commonly-used options
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
# Log to syslog
Syslog                  yes
LogWhy                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   022
UserID                  opendkim:opendkim
#
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts
#
Socket                  inet:8891@localhost
#EOF

Se stai usando il mio secondo esempio chiave, con il dominio target "mail.example.com" la voce farebbe comunque riferimento solo al dominio principale:

Domain                  example.com
KeyFile                 /etc/dkim/my_selector.private
Selector                my_selector 
-----

Nota da una delle mie fonti: se si eseguono più istanze di Postfix, è necessario aggiungerlo a opendkim.conf per ciascuna istanza (o quelle che si desidera utilizzare opendkim)

Crea un file con il tuo editor di testo /etc/opendkim/TrustedHosts:

Aggiungi domini, nomi host e / o IP che dovrebbero essere gestiti da OpenDKIM. Non dimenticare localhost.

127.0.0.1
localhost
example.com
mail.example.com
192.168.1.100 #(IP address of your server, if applicable)

(l'ultima riga sopra probabilmente non sarà necessaria. Se hai un indirizzo IP da aggiungere, assicurati di usare il tuo, non l'esempio sopra.)

Modifica /etc/default/opendkim:

Rimuovi il commento da questa riga e usa la porta 8891:

SOCKET="inet:8891@localhost" # listen on loopback on port

Assicurati che il tuo firewall (iptables) consenta il loopback su localhost:

sudo iptables -A INPUT -i lo -j ACCEPT

Quindi, crea un file con il tuo editor di testo /etc/opendkim/KeyTablee aggiungi il dominio alla KeyTable

Aggiungi linea:

#EXAMPLE showing my 2nd key:
my_selector._domainkey.example.com example.com:my_selector:/etc/opendkim/my_selector.private

Avanti Crea un file con il tuo editor di testo /etc/opendkim/SigningTablee aggiungi il dominio alla SigningTable

Mostro entrambi gli esempi. Nota che per la mia seconda chiave, ora devo usare il nome di dominio completo "mail.example.com":

example.com 201205._domainkey.example.com
mail.example.com my_selector._domainkey.example.com

Si noti che in OpenDKIM 2.0.1 i nomi di dominio fanno distinzione tra maiuscole e minuscole. In questo esempio stiamo usando una versione più recente di OpenDKIM e questo non sembra essere un problema.

Configura postfix. Modifica /etc/postfix/main.cf e aggiungi le righe alla fine

milter_default_action = accept
milter_protocol = 2
smtpd_milters=inet:localhost:8891
non_smtpd_milters=inet:localhost:8891

Cambia anche il nome host:

#myhostname = localhost         #original
myhostname = mail.example.com

Dovresti anche cambiare la voce corrispondente in / etc / hosts. Queste modifiche sono efficaci dopo il riavvio (sebbene sia possibile impostarle immediatamente con il comando:) hostname NEW_NAME.

Riavvia postfix e opendkim se non hai riavviato:

# service opendkim restart
Restarting OpenDKIM: opendkim.
# service postfix restart
 * Stopping Postfix Mail Transport Agent postfix   [ OK ]
 * Starting Postfix Mail Transport Agent postfix   [ OK ] 

analisi

Il modo migliore per verificare che la posta firmata sia autenticata e che i record DNS siano impostati correttamente è utilizzare uno dei servizi di test gratuiti. Ho usato questi:

  • Brandon Checketts Email Validator - http://www.brandonchecketts.com/emailtest.php (il mio preferito)
  • Invia un'email firmata a: check-auth@verifier.port25.com (anche il mio preferito)
  • Invia un'e-mail firmata a: sa-test@sendmail.net (puoi mettere tutti gli indirizzi e-mail di prova nel campo A: di un singolo messaggio in uscita per testare)

  • Invia un'email firmata a: autorespond+dkim@dk.elandsys.com <--- ROTTO !!! Non usare questo.

Ognuno di questi ti dirà se le cose funzionano correttamente e ti darà alcuni suggerimenti sulla risoluzione dei problemi, se necessario.

Se hai un account Gmail, puoi anche inviare un messaggio firmato lì per un test semplice e veloce.

Una volta che sei felice che tutto vada bene, puoi rimuovere il flag di test nel record TXT DNS e aumentare TTL.

Fatto!


Funziona perfettamente su preciso. Buona soluzione grazie.
Aki,

Utilizzare -b 1024 per generare chiavi di 1024 bit. È un must per ottenere firmato il mio gmail!
Prashant Singh,

1
Nota in opendkim.conf i tre parametri "Dominio", "KeyFile" e "Selettore" vengono ignorati quando si utilizzano "SigningTable" e "KeyTable". Non sono sicuro che questo sia cambiato ad un certo punto, ma vale la pena menzionarlo ( opendkim.org/opendkim.conf.5.html )
billynoah

0

Questa è una buona guida

Spiega che opendkim è effettivamente raccomandato e che i passaggi per implementare la firma di dkim sono gli stessi di dkim-filter.

dkim-milter non è più in fase di sviluppo. È l'autore originale che ha modificato la fonte e ora sta sviluppando opendkim. Per Lucid e versioni successive, opendkim è preferito rispetto a dkim-filter. Le istruzioni in questa pagina dovrebbero essere le stesse (solo con i nomi dei pacchetti adeguati, se necessario).

BTW Domainkeys è il predecessore obsoleto di DKIM. Aggiungi i record TXT alla tua zona DNS per SPF e DKIM, ma non è più necessario preoccuparsi di Domainkeys.


L'articolo che hai collegato non è aggiornato. opendkim è il pacchetto da usare ora. Sto lavorando per configurarlo ...
MountainX per Monica Cellio,

Gradirei un aggiornamento delle tue esperienze mentre sto per cambiare un server da Exim4 a Postfix-Dovecot e cercherò una guida aggiornata.
altro

Ho pubblicato la mia soluzione ma non ho avuto il tempo di formattarla. Tu (o chiunque altro) siete invitati a formattarlo. Ma i miei appunti sono molto estesi, quindi volevo che tu potessi accedervi senza indugio. Spero siano di aiuto.
MountainX per Monica Cellio,

-1

http://wiki.zimbra.com/wiki/Configuring_for_DKIM_Signing

Mi assicuro sempre di incrociare qualche guida su qualcosa. Questo tutorial sull'installazione funziona, l'ho appena verificato e lo convalida. Tuttavia, potresti voler visualizzare un TXT di esempio per il record di dominio da dettagliare. Le persone potrebbero confondersi e mettere esplicitamente tutto la chiave stessa nel valore p, che non sono del tutto sicuro sia corretto. cioè ... incluso ----- INIZIA TASTO PUBBLICO ----- e ----- TASTO PUBBLICO FINE -----. Ciò può portare ad essere confuso. Assicurati di mettere solo la parte di crittografia e non i marcatori.


3
Benvenuti in Ask Ubuntu! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Braiam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.