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.
Setze in den Nameservereinstellungen deiner Domain folgenden TXT-Record Eintrag:
1 |
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.
1 |
apt-get install opendkim opendkim-tools |
Nun legen wir die nötigen Ordner an und vergeben Rechte.
1 2 3 |
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.
1 2 3 4 5 |
# 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# 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.
1 2 3 4 5 |
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 🙂
1 2 3 |
# Domain Schlüssel *@adminforge.de adminforge *@weiteredomain.de weiteredomain |
1 2 3 |
# 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.
1 |
opendkim-genkey -d adminforge.de -b 2048 -r -s 201705 |
Wir erhalten die beiden Dateien mit Public-Key und Private-Key.
1 2 |
201705.txt 201705.private |
Wir verschieben und benennen diese um.
1 2 3 |
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.
1 2 3 |
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.
1 |
201705._domainkey IN TXT v=DKIM1; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtA5Hg8C1AesLJeCdhX0Y6sVH1Tkc2QHHkqUaxrMTkU7rJ3OCsimP3QhmTR3j8DS4o7NW3Sc5HEfxzVGHznSChYF+jhulJV5BX9Qo9McRtNLxeUB5M0+PXi8ylfuwRoc8aX82ly1MnA0HkaUYOgWWYIM4i6ixi6BazHlu39A2zPUe427G5vCl54rI06K9n1QMdOWWPx9WRE275hspMYKq0NymSncjWoQAOhPC2GW7imxG0rJfQGaxKrx/IlRuVnsYgDF+kSuOQ86ZO6ZiqkNrlhrdrgDAenxdSFPLyepkE3F40caHrimNdogwLYRVVMd3vjQYyPo855yDC7jDAPftPQIDAQAB |
Punkt 9: Dienste Neustarten & Prüfen
Dienste Neustarten.
1 2 |
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.
1 2 3 4 5 |
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.
Unterstütze unsere Arbeit mit einer Spende. |