DKIM mit Postfix

Moin,

da ich jetzt schon einige Mailserver gesehen hab die DKIM haben wollen, dachte ich mir ich baue das “mal eben” “schnell” ein… 

gut, dem war den nicht so ;) Im grunde soll das relativ einfach sein, pakete installieren, Schlüssel erstellen, configs bearbeiten, den pubkey ins DNS hängen un den Postfix neustarten - soweit die schöne theorie..

aptitude install opendkim opendkim-tools

danach die opendkim.conf bearbeiten


vim /etc/opendkim.conf

# Sign for example.com with key in /etc/mail/dkim.key using
# selector '2007' (e.g. 2007._domainkey.example.com)
Domain alexdpsg.net
KeyFile <path_to_pivkey_file>/mail.private
Selector 2013

# Commonly-used options; the commented-out versions show the defaults.
#Canonicalization simple
#Mode sv
#SubDomains no
#ADSPDiscard no
AutoRestart yes
Background yes
Canonicalization relaxed/relaxed
DNSTimeout 5
Mode sv
SignatureAlgorithm rsa-sha256
SubDomains yes
#UseASPDiscard no
#Version rfc4871
X-Header no


in der default/opendkim muss nun noch der Socket eingestellt werden, wo der dkim daemon horchen soll, in meinem fall localhost, wer ein netzwerk betreibt mit mehreren Mailservern will hier evtl Netze angeben


vim /etc/default/opendkim
# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.
DAEMON_OPTS=""
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
#SOCKET="local:/var/run/opendkim/opendkim.sock" # default
#SOCKET="inet:54321" # listen on all interfaces on port 54321
SOCKET="inet:8891@localhost" # listen on loopback on port 12345
#SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345

now the fancy part - den key erstellen, opendkim gibt ca 15 optionen beim keygen mit, die wichtigen hab ich mal verwendet.


mkdir -p /etc/opendkim
cd /etc/opendkim
opendkim-genkey -r -s mail20130715 -d alexdpsg.net
chown -r opendkim:opendkim /etc/opendkim

damit erstellen wir 2 files in dem Ordner in dem wir uns grade befinden, eine mail20130715.private und eine .txt - die *.private muss in der opendkim.conf unter keyfile zu finden sein. die *.txt enthält den entsprechenden TXT eintrag der ins DNS gehört.

Wer sich jetzt den rsa pub key anschaut stellt fest das dieser nur 1024 Bit lang ist, wenn man nicht grade sein dns bei google hostet sollte man das auch so lassen, 1024 bit keys sind zwar unsicher, aber findet mal nen DNS hoster welcher mehr als 1024 Bit in einem TXT Record unterstützt (fuckup :/)

nun einmal den opendkim durch starten, sollte hier ein fehler in der Config auftreten, wird es sich melden - viel spaß beim debuggen :) Als letztes wird noch ein eintrag im Postfix gemacht, das dieser mit dem opendkim sprechen darf


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

Nun noch fix den Postfix durchstarten und der Mail Header schaut gleich anders aus


DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alexdpsg.net;
s=mail20130716; t=1373988332;
bh=dhKP6ukxhlpJEUNqcL5FDRa5JHsmo0ysW/N1T1vwiBs=;
h=Date:From:To:Subject:References:In-Reply-To:From;
b=H0+9Bd9+zb6lkY2o+hx3wCPdguW0He1qX1x7gq++28w7U7g0ko6LsyJQfRH7xwHcB
tnZb833KTFDuV9VV7sFOU9mo9qGLDUJyJ5hME4UzHy/mBts8MzJ4NIAiH8YehtEFXJ
ThhwS6dwJtkOckC0CLMSW5Thw2nMF/2Mrl0Ae3WQ=