Heute zeige ich wie man relativ schnell ein OpenDKIM Server installiert und konfiguriert.
Beispiel Konfiguration: Domains = maffi.com, maffi.de und maffi.biz | IP-Adresse: 79.143.182.xxx | Port: 4526
++++++++++++++++++++++++ OpenDKIM ++++++++++++++++++++++++
- Pakete installieren
Debian Squeeze:apt-get install opendkim
Debian Wheezy:
apt-get install opendkim opendkim-tools
- In die opendkim Konfig folgendes unten hinzufügen (/etc/opendkim.conf):
AutoRestart Yes # Automatischer Neustart bei Fehlern AutoRestartRate 10/1h SyslogSuccess Yes # Detailliertes loggen LogWhy yes # Detailliertes loggen Canonicalization relaxed/simple Mode sv # Modus bestimmten. Signieren (s) und verifizieren (v) PidFile /var/run/opendkim/opendkim.pid # Pfad zur Pid Datei SignatureAlgorithm rsa-sha256 # Algorithmus wenn Signaturen generiert werden UserID opendkim:opendkim # OpenDKIlaueft unter den Benutzer und Gruppe Socket inet:4526@localhost # Lauscht auf Loopback auf Port 4526 KeyTable /etc/opendkim/KeyTable SigningTable /etc/opendkim/SigningTable ExternalIgnoreList /etc/opendkim/TrustedHosts InternalHosts /etc/opendkim/TrustedHosts
- Ordner und Dateien erstellen:
mkdir -p /etc/opendkim/keys touch /etc/opendkim/KeyTable touch /etc/opendkim/SigningTable touch /etc/opendkim/TrustedHosts
- In die „TrustedHosts“ Konfigurationsdatei alle Domains/Hostnamen und/oder IP/Subnetze eintragen, mit denen DKIM arbeiten soll (/etc/opendkim/TrustedHosts), zum Beispiel:
127.0.0.1 localhost 79.143.182.xxx *.maffi.com *.maffi.de *.maffi.biz
- OpenDKIM sagen das er in meinem Beispiel auf Port 4526 lauschen soll (/etc/default/opendkim). Folgendes auskommentieren (# löschen):
SOCKET="inet:12345@localhost" # listen on loopback on port 12345
und den Port wie gewünscht ändern:
SOCKET="inet:4526@localhost" # listen on loopback on port 4526
- Die Postfix Konfigurationsdatei anpassen bzw. folgendes hinzufügen (/etc/postfix/main.cf):
milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:localhost:4526 non_smtpd_milters = inet:localhost:4526
- Die Domain Keys generieren und openDKIM dementsprechend anpassen. Dafür gibt es ein sehr gutes Script von Pierre Burri-Wittke/Michel Bisson! Eine Datei (nano /root/add_domains_opendkim) mit folgendem Inhalt erstellen:
#!/bin/bash # Authors: Pierre Burri-Wittke/Michel Bisson # 9. March 2013 # Purpose: Generates DNS-Txt keys and configures OpenDKIM for one or multiple domains #=========================================== # Verifying the entries if [ "$#" -lt 1 ]; then echo "ERROR: Wrong number of parameters" echo "Usage: add_domains_opendkim [DomainName] ....." echo "eg. add_domains_opendkim example.com example.de example2.com" exit 1 fi # # Checking if OpenDKIM is installed and if yes creating the necessary data directory if ! [ -d /etc/opendkim ]; then echo "ERROR: The package OpenDKIM is not installed. Install it and rerun this command." exit 2 else mkdir -p /etc/opendkim/keys fi # # Verifying the given domains and skip them if errors or already configured for domain ; do # Check the mail handling resolving if ! (host $domain | grep -q 'is handled by'); then echo "Domain $domain doesn't resolve well. Skipping" echo "Output:" host $domain # # Check if the domain is already configured in openDKIM elif (grep -q "$domain default._domainkey.$domain" /etc/opendkim/SigningTable); then echo "Domain $domain is already configured in /etc/opendkim/SigningTable. Skipping" elif (grep -q "$domain default._domainkey.$domain" /etc/opendkim/KeyTable); then echo "Domain $domain is already configured in /etc/opendkim/KeyTable. Skipping" # # All ok, then generate the key and configure OpenDKIM else mkdir /etc/opendkim/keys/$domain echo " " echo "Generate the keys..." cd /etc/opendkim/keys/$domain opendkim-genkey -r -d $domain chown opendkim:opendkim default.private ls -l /etc/opendkim/keys/$domain # echo " " echo "Adding following lines in /etc/opendkim/KeyTable & /etc/opendkim/SigningTable" echo " default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" echo "default._domainkey.$domain $domain:default:/etc/opendkim/keys/$domain/default.private" >> /etc/opendkim/KeyTable echo " $domain default._domainkey.$domain" echo "$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable echo " " # echo "-------------------- TODO ----------------------" echo "Now copy the above record in your DNS (until the end of the domain! Do not include lines with '***')" echo "DNS: Free Text Entries/freier Textentraege of domain " echo " " echo "*** $domain *** ---------------------------" cat /etc/opendkim/keys/$domain/default.txt echo "*** $domain *** ---------------------------" result=true fi done # # Restart OpenDKIM if at least one new domain was registered in OpenDKIM echo " " if $result ; then /etc/init.d/opendkim restart ; fi
und danach folgendes ausführen:
add_domains_opendkim maffi.com maffi.de maffi.biz
- Nun werden die Domain Keys erzeugt, OpenDKIM dementsprechend konfiguriert und der DNS Eintrag zu jeder Domain erzeugt. Dazu mehr bei „DNS Eintrag setzen“!
- OpenDKIM neustarten mit:
/etc/init.d/opendkim restart
- Wenn es Probleme gibt, eventuell noch die Rechte einmal setzen lassen mit:
chown -R opendkim:opendkim /etc/opendkim chmod -R go-wrx /etc/opendkim/keys
++++++++++++++++++++++++ DNS Eintrag setzen ++++++++++++++++++++++++
Nun muss noch ein DNS Eintrag auf der DNS-Einstellungsseite des Domain-Anbieters, mit den folgenden DNS-TXT-Datensatz gesetzt werden. Datensatz anzeigen:
tail /etc/opendkim/keys/maffi.com/default.txt
Beispiel:
default._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4.....PBODxsDCEJwHEyFpQIDAQAB" ; ----- DKIM default for mydomain.com
In meinem Beispiel
Name: default._domainkey
Typ: TXT (Record)
Wert: Hier kommt der Inhalt rein, der zwischen den beiden Gänsefüschen steht, sprich v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb …
Beispieleintrag bei INWX.de:
Beispieleintrag bei Namecheap.com:
++++++++++++++++++++ Überprüfen ob DKIM einwandfrei funktioniert ++++++++++++++++++++
Um zu überprüfen ob DKIM nun einwandfrei fnktioniert, kann man folgende Seiten/Tools benutzen:
http://www.appmaildev.com/de/dkim/
http://www.port25.com/support/authentication-center/email-verification/
http://www.brandonchecketts.com/emailtest.php
oder nur den DNS-Eintrag überprüfen:
http://www.kitterman.com/spf/validate.html
http://dkimcore.org/c/keycheck
++++++++++++++++++++++++ Mögliche Probleme und Lösungen ++++++++++++++++++++++++
Fehlermeldung:
default._domainkey.maffi.de: key data is not secure error loading key 'default._domainkey.maffi.de'
Mögliche Lösung = Die Dateirechte nochmal setzen lassen:
chown -R opendkim:opendkim /etc/opendkim chmod -R go-wrx /etc/opendkim/keys
Die Anleitung war sehr hilfreich, vielen Dank! Das Tool bei appmaildev.com scheint es nicht mehr zu geben, ich musste ein neues finden, und zwar das hier: https://www.emailtooler.com/authentication-validator/.