Skip to content

DKIM mit Postfix und Rspamd einrichten

DomainKeys Identified Mail (DKIM) ist eine E-Mail-Authentifizierungsmethode, die dazu dient, E-Mail-Spoofing zu erkennen. Sie ermöglicht es dem empfangenden Server, die Herkunft einer E-Mail zu überprüfen, indem er sie mit einer digitalen Signatur versieht. Die Überprüfung der Signatur erfolgt anhand des im DNS veröffentlichten öffentlichen Schlüssels des Unterzeichners. Damit lassen sich betrügerische E-Mails erkennen.

Verzeichnis für Schlüssel erstellen

Als erstes erstellen wir im Verzeichnis /var/lib/rspamd ein Verzeichnis, wo wir die DKIM Schlüssel speichern.

mkdir -p /var/lib/rspamd/dkim
chown -R _rspamd:_rspamd /var/lib/rspamd/dkim
chmod 750 /var/lib/rspamd/dkim

DKIM-Schlüssel erzeugen

In diesem Beispiel erstellen wir für unsere Maildomain tuxnet24.net einen DKIM Schlüssel. Wir definieren die Variable $domain mit dem Wert tuxnet24.net.

doamin="tuxnet24.net"

Wir erzeugen ein neues DKIM-Schlüsselpaar mit dem Dienstprogramm rspamadm. Im folgenden Beispiel verwenden wir dkim als DKIM-Selektor. Es wird ein Schlüsselpaar erzeugt, das für alle vom Mailserver verwalteten Domänen verwendet werden kann.

rspamadm dkim_keygen \
  -b 2048 \
  -s dkim \
  -k /var/lib/rspamd/dkim/dkim.${domain}.key \
  > /var/lib/rspamd/dkim/dkim.${domain}.pub

Ergebnis:

  • /var/lib/rspamd/dkim/dkim.tuxnet24.net.key → privater Schlüssel
  • /var/lib/rspamd/dkim/dkim.tuxnet24.net.pub → öffentlicher Schlüssel

Private Key absichern:

chown _rspamd:_rspamd /var/lib/rspamd/dkim/dkim.${domain}.key
chmod 600 /var/lib/rspamd/dkim/dkim.${domain}.key

Rspamd konfigurieren

Wir erstellen nun eine neue Datei /etc/rspamd/local.d/dkim_signing.conf, um Rspamd mitzuteilen, wo es nach dem DKIM-Schlüssel und dem Selektornamen suchen soll. Die letzte Zeile aktiviert die DKIM-Signierung für Alias-Absenderadressen.

cat <<CONF | tee /etc/rspamd/local.d/dkim_signing.conf >/dev/null
enabled = true;
try_fallback = false;
allow_username_mismatch = true;

sign_authenticated = true;
sign_local = true;

use_esld = true;
check_pubkey = true;

domain {
    # Domain name ${domain} is used as key
    ${domain} {
        # Private key path
        path = "/var/lib/rspamd/dkim/dkim.${domain}.key";
        # Selector name
        selector = "dkim";
    }
    # here you can add more domains
}
CONF

Rspamd unterstützt auch ARC-Signaturen. Wir verwenden die gleiche Konfigurationsdatei und kopieren diese.

cp /etc/rspamd/local.d/dkim_signing.conf \
   /etc/rspamd/local.d/arc.conf

Nun starten wir den Rspamd neu.

systemctl restart rspamd

DNS-Record erstellen

Inhalt der .pub Datei ansehen:

cat /var/lib/rspamd/dkim/dkim.${domain}.pub

Das ergibt etwa:

dkim._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A..."
) ;

Nun gehen wir zu unseren DNS Provider wie z.B. https://www.cloudflare.com/de-de/ und setzten für die Maildomain tuxnet24.net einen DNS TXT Record für den DKIM.

Name:

dkim._domainkey.tuxnet24.net

Wert:

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...

⚠ Wichtig:

  • Nur den p= Wert komplett übernehmen
  • Keine Zeilenumbrüche im DNS
  • TTL moderat setzen (z.B. 3600)