Frage DKIM signiert ausgehende Mail von jeder Domain (mit Postfix und Ubuntu)


Ich habe DKIM-Setup auf meinem Mail-Server (Postfix und Ubuntu), so dass ausgehende E-Mails signiert. Ich habe diese Anweisungen verwendet: https://help.ubuntu.com/community/Postfix/DKIM

Ich brauche es jedoch, um E-Mails von einer beliebigen Domäne (in der Von-Adresse) zu signieren und nicht nur von meiner eigenen. Ich erstelle einen E-Mail-Newsletter-Dienst und die Kunden senden ihre eigenen E-Mails über den Server.

Zuerst habe ich "Domain *" in /etc/dkim-filter.conf gesetzt. Dadurch wurden die DKIM-Header in alle ausgehenden E-Mails aufgenommen, unabhängig von der Domain.

Die Überprüfungsüberprüfung schlägt jedoch bei Google Mail fehl, weil sie die Domäne in der Absenderadresse und nicht in meiner Domäne (und DNS-Datensatz) überprüft. Weiß jemand, wie man das macht?


38
2017-08-11 16:41


Ursprung




Antworten:


Ok, ich habe es geschafft, das selbst herauszufinden, aber ich wollte die Schritte hier für die Nachwelt veröffentlichen, weil es keine Dokumentation darüber gab (die ich finden konnte) und es war praktisch raten und überprüfen.

Nachdem ich "Domain *" wie oben beschrieben eingestellt habe, würde es so signieren:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=clientdomain.com;
    s=main; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

beachten Sie die "d = clientdomain.com". Es wurde basierend auf der Absenderadresse in der E-Mail generiert, wobei die Absenderadresse etwas wie "contact@clientdomain.com" war. Offensichtlich, wenn es die Domäne des Klienten und nicht meins überprüfte, war kein DNS TXT Rekord dort und die Überprüfung würde scheitern.

Wie auch immer, ich habe in dieser Dokumentation herausgefunden, dass Sie einen KeyList Parameter setzen können. http://manpages.ubuntu.com/manpages/hardy/man5/dkim-filter.conf.5.html

Es beschrieb nicht wirklich, was ich machen wollte, aber ich dachte, ich würde damit spielen. Ich habe KeyFile auskommentiert und KeyList auf "/etc/mail/dkim_domains.key" gesetzt, was ein beliebiger Dateiname ist. Ich habe dann diese Datei erstellt und diese darin eingefügt "*: feedmailpro.com: /etc/mail/dkim.key". Dies teilt es für jede Client-Domäne mit, signiere es mit meiner Domain (feedmailpro.com) und verwende die dkim.key-Datei.

Neustart von DKIM und Postfix

sudo /etc/init.d/dkim-filter restart
sudo /etc/init.d/postfix restart

Jetzt ist dies der Schlüssel, den er generiert hat, als ich eine Test-E-Mail gesendet habe.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=dkim.key; t=1250005729;
    bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi
     31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx
     GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=

Verbesserung, du siehst das d = jetzt auf meine Domain eingestellt ist (obwohl die Absenderadresse der Email nicht meine Domain war). Allerdings wurde s = in "dkim.key" geändert, anstelle des Selektors, den ich in dkim-filter.conf ausgewählt habe. Im Original Setup-Anweisungen Ich würde den Selektor auf "Mail" setzen. Das war seltsam, aber ich bemerkte, dass es sich um den Dateinamen meines Schlüssels dkim.key änderte.

Also habe ich "/etc/mail/dkim.key" in "/ etc / mail / mail" umbenannt. Außerdem wurde der Verweis auf "/etc/mail/dkim_domains.key" aktualisiert.

Starten Sie dkim-filter und postfix erneut wie oben beschrieben und nun funktioniert es. Hier ist der letzte Header, der korrekt mit dem rechten Selektor signiert (offensichtlich basierend auf dem Dateinamen des Schlüssels).

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=feedmailpro.com;
    s=mail; t=1250006218;
    bh=tBguOuDhBDlhv0m4KF66LG10V/8ijLcAKZ4JbjpLXFM=;
    h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type;
    b=c9eqvd+CY86BJDUItWVVRvI3nibfEDORZbye+sD1PVltrcSBOiLZAxF3Y/4mP6vRX
     MUUNCC004oIH1u7FYafgF32lpuioMP1cd7bi6x3AZ5zH4BYETNBnnz4AhAPBtqlIh/
     FFMz8jkhhLhcM2hDpwJkuKjAe3LzfNVDP8kD11ZI=

Jetzt ist s = Mail richtig, und d = feedmailpro.com hat Recht. Es klappt!

Insgesamt war dies viel schwieriger als ich erwartet hatte und es schien keine Dokumentation darüber zu geben (Signing für alle ausgehenden Domains), aber ich denke, es ist Open-Source-Software, so dass ich mich nicht beschweren kann.

Eine letzte Anmerkung, um zu überprüfen, ob der TXT-DNS-Eintrag korrekt eingerichtet wurde, können Sie einen Befehl wie bei Ihrer Domäne ausführen

dig mail._domainkey.feedmailpro.com TXT

Möglicherweise muss dig (sudo apt-get install dig) installiert werden. Wenn Sie den Slidehost-Manager zum Hinzufügen des DNS-Eintrags verwenden, würden Sie den TXT-Datensatz wie folgt eingeben.

Type: TXT
Name: mail._domainkey
Data: k=rsa; t=s; p=M5GfMA0...YOUR LONG KEY...fIDAQAB
TTL seconds: 86400

Ich verstehe nicht wirklich, warum der Name auf "mail._domainkey" ohne einen Punkt am Ende oder ohne meine Domäne wie "mail._domainkey.feedmailpro.com" festgelegt ist. Aber wie auch immer, es scheint zu funktionieren, also bin ich glücklich.

Wenn Sie versuchen, dies zu reproduzieren, hier sind die Anweisungen, mit denen ich begonnen habe: https://help.ubuntu.com/community/Postfix/DKIM


40
2017-08-11 17:04



Danke, dass du das hier aufgehängt hast, es hilft anderen (wie mir) aus :) - thomasrutter
Yur willkommen Thomas! - Brian Armstrong
Wow, das hat sehr geholfen. Ich schlug mir wegen des "s = dkim.key" den Kopf, bis ich auf deinen Posten stieß! - 3molo
Eine Sache, die der Leitfaden bei ubuntu.com nicht erwähnt, ist, dass, sobald Sie es funktionierte, ändern Sie t = y bis t = n im TXT-Datensatz, um zu sagen, dass es sich nicht um einen Test handelt. - 3molo
Es gibt einige gute Ressourcen für die Verwendung der SigningTable usw. blog.tjitjing.com/index.php/2012/03/...(ausgezeichnet) und sogar die opendkim readme, opendkim.org/opendkim-README - rfay


Inspiriert von Brian Armstrongs Antwort auf den dkim-Filter, hier ist, wie ich das gemacht habe OpenDKIM.

/etc/opendkim.conf

Syslog          yes
UMask           002
KeyTable        /etc/mail/dkim_key_table
SigningTable    refile:/etc/mail/dkim_signing_table

Beachten Sie, dass SigningTable hat refilieren: In seiner Definition gibt dies an, dass die Datei reguläre Ausdrücke enthält. in unserem Fall die * Wildcard.

/ etc / mail / dkim_key_tabelle

keyname  example.com:selector:/etc/mail/selector.key

Hier Schlüsselname wird verwendet, um den Schlüssel zwischen dieser Datei und der Datei dkim_signing_table abzugleichen. In meiner realen Datei habe ich das selbe wie meinen Selektor genannt.

beispiel.com und Wähler sollte ersetzt werden, welche Domain und welchen Selektor Sie in Ihrer Signatur verwenden möchten d = und s = beziehungsweise.

/ etc / mail / dkim_signing_tabelle

*   keyname

Diese Datei einfache Kartenadresse in der gefunden Von: Header zu einem Schlüssel in der dkim_key_table. In diesem Fall möchten wir, dass alle E-Mails, die über diesen Server gesendet werden, mit demselben Schlüssel signiert sind, sodass ein Platzhalter * verwendet wird.


15
2017-12-10 11:37



für diejenigen, die in OpenDKIM "keine Unterschriften-Tabellenübereinstimmung" bekommen serverfault.com/q/569823/115907 - kommradHomer
Wenn jemand auf diese Antwort (große Antwort, btw! Lehrte mich, was ich brauchte) und möchte aus zwei verschiedenen Domänen mit verschiedenen Schlüsseln senden, kann dies wie folgt getan werden: KeyTable-Datei: "tagone._domainkey.firstdomain.com firstdomain .de: /etc/opendkim/keys/firstdomain.com/tagone tagtwo._domainkey.seconddomain.com seconddomain.com:tagtwo:/etc/opendkim/keys/seconddomain.com/tagtwo "SigningTable:" * @ firstdomain. com tagone._domainkey.firstdomain.com *@seconddomain.com tagtwo._domainkey.seconddomain.com "Jede Datei besteht aus 2 Zeilen (Kommentare speichern hier keine Zeilenumbrüche) - Sean Colombo
oder: SigningTable csl: * = keyname KeyTable csl: keyname = beispiel.com: selector: /etc/mail/selector.key - danblack


Old thread, aber vielleicht jemand anderes, der das findet, hat einen Nutzen zu wissen, dass die 2.x-Version von opendkim mit KeyTable statt KeyList funktioniert.

Sie können Ihre KeyList-Datei mit dem opendkim-convert-keylist tool konvertieren (http://manpages.ubuntu.com/manpages/lucid/man8/opendkim-convert-keylist.8.html)

Sie können mehr über die Implementierung von KeyTable auf der Manpage von opendkim lesen: (http://www.opendkim.org/opendkim.conf.5.html)


3
2017-12-23 14:52



Fassen Sie den von Ihnen verlinkten Artikel zusammen und geben Sie alle relevanten Code-Segmente oder Konfigurationsblöcke an. Websites können sich in der Zukunft ändern oder aus verschiedenen Gründen nicht geladen werden. - 89c3b1b8-b1ae-11e6-b842-48d705


Ich verstehe nicht wirklich, warum der Name ohne einen Punkt auf "mail._domainkey" gesetzt ist

Die Dokumentation für den DKIM-Filter wird normalerweise in einem Unix-Man-Format installiert. Nur Google weiß es :-) Ich hatte auch ein Problem.

man dkim-filter.conf
man dkim-filter
man dkim-genkey

man dkim-stats
man dkim-testkey
man dkim-testssp

Ich habe es auf Debian versucht. Wenn es nicht wirklich in Ihrer Distribution ist, können Sie Quell-Tarball und leicht lesbares Dokument herunterladen.

man dkim-milter-2.8.3/dkim-filter/dkim-filter.conf.5

usw.

-

Ich verstehe nicht wirklich, warum der Name ohne einen Punkt auf "mail._domainkey" gesetzt ist

Damit können Sie genau das gleiche in beiden DNS-Records verschiedener Domains verwenden.


2
2017-10-16 23:09