OpenDKIM auf einem Debian Server installieren und konfigurieren

Hinweis: Wir haben in diesem Artikel möglicherweise Provisions-Links verwendet und sie durch (*) gekennzeichnet. Erfolgt über diese Links eine Bestellung, erhält maffert.net eine Provision. Es entstehen für Sie keine Nachteile beim Kauf oder Preis.

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 ++++++++++++++++++++++++

  1. Pakete installieren

    Debian Squeeze:

    apt-get install opendkim

    Debian Wheezy:

    apt-get install opendkim opendkim-tools
  2. 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
  3. Ordner und Dateien erstellen:
    mkdir -p /etc/opendkim/keys
    touch /etc/opendkim/KeyTable
    touch /etc/opendkim/SigningTable
    touch /etc/opendkim/TrustedHosts
  4. 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
  5. 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
  6. 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
  7. 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
  8. Nun werden die Domain Keys erzeugt, OpenDKIM dementsprechend konfiguriert und der DNS Eintrag zu jeder Domain erzeugt. Dazu mehr bei „DNS Eintrag setzen“!
  9. OpenDKIM neustarten mit:
    /etc/init.d/opendkim restart
  10. 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:

dkiminwx

Beispieleintrag bei Namecheap.com:

dkimnamecheap

++++++++++++++++++++ Ü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

Ein Kommentar zu “OpenDKIM auf einem Debian Server installieren und konfigurieren”

Schreibe einen Kommentar

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