DKIM firma la posta in uscita da qualsiasi dominio (con Postfix e Ubuntu)


40

Ho installato DKIM sul mio server di posta (postfix e ubuntu) in modo che firmi le email in uscita. Ho usato queste istruzioni: https://help.ubuntu.com/community/Postfix/DKIM

Tuttavia, ne ho bisogno per firmare e-mail da qualsiasi dominio (nell'indirizzo Da) e non solo il mio. Sto creando un servizio di newsletter via e-mail e i clienti invieranno la propria e-mail attraverso il server.

Per prima cosa ho impostato "Dominio *" in /etc/dkim-filter.conf. Ciò ha permesso di includere le intestazioni DKIM in tutte le e-mail in uscita, indipendentemente dal dominio.

Tuttavia, il controllo di verifica non riesce su Gmail perché sta controllando il dominio nell'indirizzo di provenienza e non il mio dominio (e il record DNS). Qualcuno sa come fare questo?

Risposte:


41

Ok, sono riuscito a capirlo da solo, ma volevo pubblicare i passaggi qui per i posteri perché non c'era documentazione su questo (che ho potuto trovare) ed era praticamente indovinare e controllare.

Dopo aver impostato "Dominio *" come descritto sopra, lo firmerei in questo modo:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=clientdomain.com;
    s=main; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

notare "d = clientdomain.com". Stava generando questo sulla base dell'indirizzo mittente dell'e-mail, dove l'indirizzo mittente era simile a "contact@clientdomain.com". Ovviamente se controllava il dominio del client e non eseguiva il mining, non esisteva alcun record TXT DNS e la verifica avrebbe avuto esito negativo.

Quindi, in questo documento, ho scoperto che è possibile impostare un parametro KeyList. http://manpages.ubuntu.com/manpages/hardy/man5/dkim-filter.conf.5.html

Non descriveva veramente quello che volevo fare, ma ho pensato di giocarci. Ho commentato KeyFile e impostato KeyList su "/etc/mail/dkim_domains.key" che è un nome di file arbitrario che ho creato. Ho quindi creato quel file e lo ho inserito "*: feedmailpro.com: /etc/mail/dkim.key". Questo lo dice per qualsiasi dominio client, firmalo con il mio dominio (feedmailpro.com) e usa il file dkim.key.

Riavviato DKIM e postfix

sudo /etc/init.d/dkim-filter restart
sudo /etc/init.d/postfix restart

Ora questa è la chiave che ha generato quando ho inviato un'email di prova.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=dkim.key; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

Miglioramento, vedi che d = ora è impostato sul mio dominio (anche se l'indirizzo di posta elettronica non era il mio dominio). Comunque s = è stato cambiato in "dkim.key" invece del selettore che ho scelto in dkim-filter.conf. Nelle istruzioni di installazione originali avevo impostato il selettore su "mail". Era strano, ma ho notato che lo ha cambiato nel nome del file della mia chiave, dkim.key.

Così sono andato e ribattezzato "/etc/mail/dkim.key" in "/ etc / mail / mail". Anche aggiornato il riferimento ad esso in "/etc/mail/dkim_domains.key".

Riavvia dkim-filter e postfix di nuovo come sopra, e ora ha iniziato a funzionare. Ecco l'intestazione finale che si firma correttamente usando il selettore destro (apparentemente basato sul nome del file della chiave).

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=mail; t=1250006218;
    bh=tBguOuDhBDlhv0m4KF66LG10V/8ijLcAKZ4JbjpLXFM=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=c9eqvd+CY86BJDUItWVVRvI3nibfEDORZbye+sD1PVltrcSBOiLZAxF3Y/4mP6vRX
     MUUNCC004oIH1u7FYafgF32lpuioMP1cd7bi6x3AZ5zH4BYETNBnnz4AhAPBtqlIh/
     FFMz8jkhhLhcM2hDpwJkuKjAe3LzfNVDP8kD11ZI=

Ora s = mail ha ragione e d = feedmailpro.com ha ragione. Funziona!

Nel complesso, questo è stato molto più difficile di quanto mi aspettassi e sembrava che non ci fosse alcuna documentazione su come farlo (firma per tutti i domini in uscita), ma immagino che sia un software open source quindi non posso lamentarmi.

Un'ultima nota, per verificare se il record DNS TXT è stato impostato correttamente, puoi eseguire un comando come con il tuo dominio

dig mail._domainkey.feedmailpro.com TXT

Potrebbe essere necessario installare dig (sudo apt-get install dig). Se si utilizza il gestore Slicehost per aggiungere la voce DNS, inserire il record TXT in questo modo.

Type: TXT
Name: mail._domainkey
Data: k=rsa; t=s; p=M5GfMA0...YOUR LONG KEY...fIDAQAB
TTL seconds: 86400

Non capisco davvero perché il nome sia impostato su "mail._domainkey" senza un punto alla fine o senza il mio dominio, come "mail._domainkey.feedmailpro.com". Ma qualunque cosa, sembra funzionare, quindi sono felice.

Se stai cercando di duplicare questo, ecco le istruzioni con cui ho iniziato: https://help.ubuntu.com/community/Postfix/DKIM


2
Grazie per averlo messo qui, sta aiutando gli altri (come me) a uscire :)
thomasrutter

Benvenuto Thomas!
Brian Armstrong,

Wow, questo mi ha aiutato molto. Mi sono sbattuto la testa a causa del "s = dkim.key" fino a quando non mi sono imbattuto nel tuo post!
3molo,

Una cosa che la guida di ubuntu.com non menziona è che una volta che lo hai fatto funzionare, cambia t = y in t = n nel record TXT per affermare che non è un test.
3molo,

Ci sono alcune buone risorse là fuori per usare la SigningTable, ecc. Ad esempio, blog.tjitjing.com/index.php/2012/03/… (eccellente) e persino il readme di opendkim
rfay

15

Ispirato dalla risposta di Brian Armstrong per dkim-filter, ecco come l'ho fatto per OpenDKIM .

/etc/opendkim.conf

Syslog          yes
UMask           002
KeyTable        /etc/mail/dkim_key_table
SigningTable    refile:/etc/mail/dkim_signing_table

Nota che SigningTable ha refile : nella sua definizione, questo specifica che il file include espressioni regolari; nel nostro caso il jolly *.

/ Etc / mail / dkim_key_table

keyname  example.com:selector:/etc/mail/selector.key

Qui keyname viene utilizzato per abbinare la chiave tra questo file e il file dkim_signing_table. Nel mio vero file l'ho chiamato lo stesso del mio selettore.

esempio.com e selettore dovrebbero essere sostituiti quale dominio e selettore che si desidera utilizzare nella firma rispettivamente d = e s = .

/ Etc / mail / dkim_signing_table

*   keyname

Questo semplice indirizzo di mappe di file si trova nell'intestazione From: a una chiave in dkim_key_table. In questo caso vogliamo che tutte le e-mail inviate tramite questo server siano firmate con la stessa chiave, quindi viene utilizzato un carattere jolly *.


per coloro che ottengono "nessuna corrispondenza della tabella delle firme in OpenDKIM" serverfault.com/q/569823/115907
kommradHomer

Se qualcuno arriva a questa risposta (ottima risposta, tra l'altro! Mi ha insegnato ciò di cui avevo bisogno) e sta cercando di inviare da due domini diversi con chiavi diverse, ciò può essere fatto in questo modo: File KeyTable: "tagone._domainkey.firstdomain.com firstdomain .com: tagone: /etc/opendkim/keys/firstdomain.com/tagone tagtwo._domainkey.seconddomain.com seconddomain.com:tagtwo:/etc/opendkim/keys/seconddomain.com/tagtwo "SigningTable:" * @ firstdomain. com tagone._domainkey.firstdomain.com *@seconddomain.com tagtwo._domainkey.seconddomain.com "Ogni file è di 2 righe (i commenti non salvano le interruzioni di riga qui)
Sean Colombo

oppure: SigningTable csl: * = keyname KeyTable csl: keyname = example.com: selettore: /etc/mail/selector.key
danblack

3

Vecchio thread, ma forse qualcun altro che trova questo ha una conoscenza della versione 2.x di opendkim funziona con KeyTable anziché KeyList.

È possibile convertire il file KeyList con lo strumento opendkim-convert-keylist ( http://manpages.ubuntu.com/manpages/lucid/man8/opendkim-convert-keylist.8.html )

Puoi leggere di più sull'implementazione di KeyTable nella pagina man di opendkim: ( http://www.opendkim.org/opendkim.conf.5.html )


Riassumi l'articolo che hai collegato, citando eventuali segmenti di codice o blocchi di configurazione pertinenti. I siti possono cambiare in futuro o non essere caricati per un numero qualsiasi di motivi.
89c3b1b8-b1ae-11e6-b842-48d705

2

Non capisco davvero perché il nome sia impostato su "mail._domainkey" senza un punto

La documentazione per il filtro DKIM è di solito installata nel formato unix man. Solo Google lo sa :-) Ho anche avuto un problema.

man dkim-filter.conf
man dkim-filter
man dkim-genkey

man dkim-stats
man dkim-testkey
man dkim-testssp

L'ho provato su Debian. Se non è effettivamente nella tua distribuzione, puoi scaricare il tarball di origine e il documento di facile lettura.

man dkim-milter-2.8.3/dkim-filter/dkim-filter.conf.5

eccetera.

-

Non capisco davvero perché il nome sia impostato su "mail._domainkey" senza un punto

In modo da poter utilizzare esattamente lo stesso in entrambi i record DNS di domini diversi.

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.