Postfix – DKIM und SPF einrichten

Zusätzlich zum Postfix Header anonymisieren Beitragm öchte ich „kurz und knackig“ beschreiben, wie ihr DKIM für Postfix und SPF einrichtet.

Inspiriert wurde ich durch diese beiden Artikel:

https://www.debinux.de/…/dkim-verstaendnis-konfiguration-und-installation-von-opendkim/
https://kofler.info/dkim-konfiguration-fuer-postfix/

… vielen Dank !
Weitere Informationen zu den Themen findet ihr wie immer auf Wikipedia: DKIM / SPF


Warum sind SPF und DKIM wichtig? Klar jeder Spammer kann sich diese ebenfalls einrichten. Der Hauptgrund ist und bleibt, dass die „Großen“ wie GMX und Web.de die Mails von unserem Mailserver nicht als Spam flaggen.


Punkt 1: SPF im Nameserver hinterlegen

Mit dem SPF Generator kannst du dir einfach und schnell den passenden TXT-Record für deine Domain generieren.

Dieses Beispiel sagt dem Mailserver auf der anderen Seite, dass der Computer mit der IP-Adresse aus dem A-Record und dem MX-Record berechtigt ist diese Mail der Domain zu schicken.

v=spf1 a mx ~all

Weitere Domains und IP-Adressen kannst du in den Erweiterten Optionen des Generators hinzufügen.
Sollte es Probleme bei Formularen oder Weiterleitungen geben, empfiehlt es sich ~all in ?all abzuändern. Mehr dazu im Wikipedia Beitrag.

Punkt 2: Installation von DKIM

Wir installieren die folgenden Pakete. In diesem Beispiel unter Debian Jessie.

apt-get install opendkim opendkim-tools

Nun legen wir die nötigen Ordner an und vergeben Rechte.

mkdir -p /etc/opendkim/keys
chown -R opendkim. /etc/opendkim
chmod go-rw /etc/opendkim/keys

Punkt 3: Postfix main.cf erweitern

Der Postfix erhält ein paar Milter Zeilen um OpenDKIM einzubinden.

# OpenDKIM
milter_protocol = 6
milter_default_action = accept
non_smtpd_milters=inet:127.0.0.1:12345
smtpd_milters=inet:127.0.0.1:12345

Punkt 4: OpenDKIM Config anpassen

Die Konfigurationsdatei kann unter Debian so übernommen werden. Wie gesagt „kurz und knackig“ – mehr Infos unter den oben genannten Links.

# OpenDKIM agiert als Mail Filter (= Milter) in den
# Modi signer (s) und verifier (v) und verwendet eine
# Socket-Datei zur Kommunikation (alternativ: lokaler Port)
Mode                    sv
#Socket                  local:/var/run/opendkim/opendkim.sock
Socket                inet:12345@localhost

# OpenDKIM verwendet diesen Benutzer bzw.
# diese Gruppe
UserID                  opendkim:opendkim
UMask                   002
PidFile                 /var/run/opendkim/opendkim.pid

# OpenDKIM bei Problemen neustarten,
# aber max. 10 mal pro Stunde
AutoRestart             yes
AutoRestartRate         10/1h

# Logging (wenn alles funktioniert eventuell reduzieren)
Syslog                  yes
SyslogSuccess           yes
LogWhy                  yes

# Verfahren, wie Header und Body durch
# OpenDKIM verarbeitet werden sollen.
Canonicalization        relaxed/relaxed

# interne Mails nicht mit OpenDKIM verarbeiten
ExternalIgnoreList      refile:/etc/opendkim/trusted
InternalHosts           refile:/etc/opendkim/trusted

# welche Verschlüsselungs-Keys sollen für welche
# Domains verwendet werden
# (refile: für Dateien mit regulären Ausdrücke)
SigningTable            refile:/etc/opendkim/signing.table
KeyTable                /etc/opendkim/key.table

# diesen Signatur-Algorithmus verwenden
SignatureAlgorithm      rsa-sha256

# Always oversign From (sign using actual From and a null From to prevent
# malicious signatures header fields (From and/or others) between the signer
# and the verifier.  From is oversigned by default in the Debian pacakge
# because it is often the identity key used by reputation systems and thus
# somewhat security sensitive.
OversignHeaders         From

Punkt 5: Interne Mails ohne Signatur

In der trusted Config tragen wir IP-Adressen und Domainnamen der von uns vertrauten Server ein. Denn diese Server benötigen keine DKIM Signatur.

127.0.0.1
::1
localhost
mail
mail.adminforge.de

Punkt 6: Schlüsselzuordnung der einzelnen Domains

Es lohnt sich auch bei nur einer Domain direkt eine Tabelle anzulegen die sagt welcher Key zu welcher Domain gehört. Postfix könnte ja Jederzeit eine neue Domain vom Admin erhalten 🙂

# Domain Schlüssel
*@adminforge.de adminforge
*@weiteredomain.de weiteredomain
# Schlüssel Domain:Selektor:Private Key Pfad
adminforge adminforge.de:201705:/etc/opendkim/keys/adminforge.private
weiteredomain weiteredomain.de:201705:/etc/opendkim/keys/weiteredomain.private

Punkt 7: DKIM Schlüssel generieren

Für die Erstellung eines neuen Key-Paares geben wir bei -d die Domain, -b die Bitrate (mehr als 2048 könnte zu Problemen führen) und -s den Selektor (dieser steht im DNS-TXT Feld) an.

opendkim-genkey -d adminforge.de -b 2048 -r -s 201705

Wir erhalten die beiden Dateien mit Public-Key und Private-Key.

201705.txt
201705.private

Wir verschieben und benennen diese um.

mv 201705.txt     keys/adminforge.txt
mv 201705.private keys/adminforge.private
chown -R opendkim. /etc/opendkim

Punkt 8: DNS-TXT Eintrag hinzufügen

Wir fügen den erstellten Public-Key in unserem Nameserver als TXT-Eintrag hinzu.

201705._domainkey       IN      TXT     "v=DKIM1; k=rsa; s=email; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtA5Hg8C1AesLJeCdhX0Y6sVH1Tkc2QHHkqUaxrMTkU7rJ3OCsimP3QhmTR3j8DS4o7NW3Sc5HEfxzVGHznSChYF+jhulJV5BX9Qo9McRtNLxeUB5M0+PXi8ylfuwRoc8aX82ly1MnA0HkaUYOgWWYIM4i6ixi6BazHlu39A2zPUe427G5vCl54rI06K9n1QMdOWWPx9WRE275h"
          "spMYKq0NymSncjWoQAOhPC2GW7imxG0rJfQGaxKrx/IlRuVnsYgDF+kSuOQ86ZO6ZiqkNrlhrdrgDAenxdSFPLyepkE3F40caHrimNdogwLYRVVMd3vjQYyPo855yDC7jDAPftPQIDAQAB"

Die ‚ “ ‚ könnt ihr entfernen und eine lange Zeile draus machen.

201705._domainkey       IN      TXT     v=DKIM1; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtA5Hg8C1AesLJeCdhX0Y6sVH1Tkc2QHHkqUaxrMTkU7rJ3OCsimP3QhmTR3j8DS4o7NW3Sc5HEfxzVGHznSChYF+jhulJV5BX9Qo9McRtNLxeUB5M0+PXi8ylfuwRoc8aX82ly1MnA0HkaUYOgWWYIM4i6ixi6BazHlu39A2zPUe427G5vCl54rI06K9n1QMdOWWPx9WRE275hspMYKq0NymSncjWoQAOhPC2GW7imxG0rJfQGaxKrx/IlRuVnsYgDF+kSuOQ86ZO6ZiqkNrlhrdrgDAenxdSFPLyepkE3F40caHrimNdogwLYRVVMd3vjQYyPo855yDC7jDAPftPQIDAQAB

Punkt 9: Dienste Neustarten & Prüfen

Dienste Neustarten.

systemctl restart opendkim.service
systemctl restart postfix.service

Wir prüfen ob der DNS-TXT Eintrag korrekt hinterlegt ist. Wenn ein „key OK“ erscheint passt alles. Ein „key not secure“ ist ok und erscheint wenn kein DNSSEC verwendet wird.

opendkim-testkey -d adminforge.de -s 201705 -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key '201705._domainkey.adminforge.de'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Einen sehr guter Test ist ein Senden einer Testmail an die angegebene Mail-Adresse auf mail-tester.com.

Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.