[SOLVED] Frage zu DKIM und richtiger Vorgehensweise -- wohin mit dem Eintrag?

Dec 19, 2012
542
20
83
Hallo.
Folgender Aufbau bei uns:

Host-Europe-Web-Server (hält die Domain) <---> OPNSense-Firwall <---> PMG (nimmt an) <---> interner Mail-Server (nimmt entgegen und hält die Postfächer).

Bisher dachte ich, dass ich sämtliche DNS-Einstellungen für den Mail-Server über den Host-Europe Server (der mit Plesk daher kommt) einrichten kann.
Heute habe ich aber diverse E-Mails zurückbekommen, die vom internen Mail-Server von unserer Domain raus zu t-online gehen sollten, da sie alle von t-online abgelehnt wurden.
Daher habe ich über die Seite mail-tester.com mal wieder einen Test durchführen lassen, welchen Score unser Server bekommen würde -- und siehe da: Von dem ehemals guten und unkritischen Score war nicht mehr viel zu sehen, da das DKIM-Verfahren aus irgendeinem Grund nicht mehr richtig eingestellt ist und daher der Score nur noch bei mageren 2/10 lag. Kein Wunder also, dass die E-Mails nicht (mehr) akzeptiert wurden.

Ich hänge den Teil von der Seite mail-tester.com, der bemängelt wurde, hier mal an, da ich nicht weiß, ob diese Einstellungen auf dem PMG oder auf dem Plesk-Server einzutragen sind. Vielleicht blickt das einer von Euch?
Code:
Meldung: Die DKIM Signatur ist ungültig
DomainKeys Identified Mail (DKIM) ist ein Verfahren, um eine Domain mit einer E-Mail-Nachricht zu verknüpfen. Somit kann der Verantwortliche  für den Nachrichtenversand angesprochen werden.

Die DKIM Signatur der Nachricht:
    v=1;
    a=rsa-sha256;
    c=relaxed/relaxed;
    d=meine-domain-vom-internen-mail-server.de;
    h=cc:content-type:content-type:date:from:from:message-id:mime-version:reply-to:subject:subject:to:to;
    s=pmg;
    bh=gC--ist-das-geheim-oder-öffentlich?--Q60=;
b=gG--ist-das-geheim-oder-öffentlich?--bkfvw==

Wir konnten den öffentlichen Schlüssel nicht empfangen.
Bitte stellen Sie sicher, dass der öffentliche Schlüssel im DKIM TXT-Record im DNS-Zonefile für die Domain meine-domain-vom-internen-mail-server.de mit dem Selektor  pmg eingetragen wurde. Wenn die DNS-Einstellungen kürzlich geändert wurden, warten Sie 24 Stunden bis zur vollständigen Verbreitung der Änderung und testen Sie dann Ihren Newsletter erneut.

Gerade habe ich auf dem Plesk-Server nochmal nachgeschaut: Dort existiert (bereits / noch / richtigerweise / fälschlicherweise ???) dieser TXT-Eintrag:
Code:
    default._domainkey.mein-domain-name-bei-host-europe.de.    TXT    v=DKIM1; p=DKIM1;h=sha256;k=rsa;p=MIjA--ist-das-geheim-oder-öffentlich?--QQA;


Wie sollte ich hier vorgehen, damit der Score wieder in die Nähe von 10 gelangt?
Danke für einen guten Tipp.
 
Last edited:
Hi @whiterabbit

vielen Dank für deinen Post!

Vorneweg verweise ich mal auf die PMG Doku zum Thema DKIM [1].
Dort sind die Einstellungsmöglichkeiten und Vorgehen erklärt.

Zu deinem konkreten Problem:
Kannst du bitte einmal den TXT Record den dir das PMG im Bereich "Konfiguration" --> "Mail Proxy" --> Tab "DKIM" angibt mit dem genannten von Host Europe vergleichen.

Die Keys die dort angegeben sind sind die public Keys des DKIM Eintrags und daher nicht geheim.
Den private Key speichert das PMG unter /etc/pmg/dkim/*.private und dieser sollte wie der Name schon verrät geheim gehalten werden.

MfG
Jonas

[1] https://pmg.proxmox.com/pmg-docs-7/pmg-admin-guide.html#pmgconfig_mailproxy_dkim
 
  • Like
Reactions: Stoiko Ivanov
Hi. Ja, danke -- die Doku hatte ich mittlerweile gefunden und es im PMG auch überprüft.
Die beiden TXT-Records des PMG und des HostEurope-Servers unterscheiden sich voneinander (was mich nicht wundert).

Ich erkenne aber leider aus der Antwort vom mail-tester nicht, welcher der beiden Einträge denn nun verwendet wurde, da ich diesen Teil weder an der einen noch an der anderen Stelle wiederfinde. Oder ist der Eintrag im mail-tester unter
Code:
s=pmg;
    bh=gDCQWbZIAxTTzTMb3U7t4Ry....;
    b=gGbvo0Mx04C/+8amYGfMmGh0dfmXPv7WS....
nicht der gleiche Public-Key wie unter DKIM eingetragen?
 
Last edited:
default._domainkey.mein-domain-name-bei-host-europe.de.
das ist der record fuer den _selector_ default, wohingegen die DKIM signatur angibt den selector pmg zu verwenden:

DKIM funktioniert (abgekuerzt) so:
* fuer eine domain xyz.com wird ein private key erstellt (mit diesem werden die mails signiert)
* in jeden DKIM header werden (ein teil der )header und der gesamte body signiert (mit dem private key)
* es wird auch im header ein selector angegeben (s=selector), sowie eine signing-domain (d=signing.domain)

der empfaenger kann die signatur mit dem public key (zum private key) verifizieren - damit er an den public key kommt fragt er per DNS nach:
selector._domainkey.signing.domain (nach dem TXT record)

bh=gDCQWbZIAxTTzTMb3U7t4Ry....; b=gGbvo0Mx04C/+8amYGfMmGh0dfmXPv7WS....
nicht der gleiche Public-Key wie unter DKIM eingetragen?
das sind eben die signaturen und nicht der public key.
 
das ist der record fuer den _selector_ default, wohingegen die DKIM signatur angibt den selector pmg zu verwenden:
Ok. Das ergibt Sinn und ist alles gut nachvollziehbar.
Leider weiß ich trotzdem noch nicht, wie ich mein Problem lösen kann. Wäre es möglich/denkbar/sinnvoll auf beiden Servern den gleichen public-/private-Key zu verwenden oder wäre das kontraproduktiv? (Bei dem HostEurope-System bzw Plesk weiß ich bisher aber auch nicht, wo der Priv.Key gespeichert wird -- falls das überhaupt ein sinnvoller Weg wäre)
 
Wäre es möglich/denkbar/sinnvoll auf beiden Servern den gleichen public-/private-Key zu verwenden oder wäre das kontraproduktiv?
ist in den meisten Faellen eher kontraproduktiv.

Ich wuerde in dem Fall einen weiteren selector (samt) DNS-record anlegen.
* am PMG einen selector erstellen (pmg)
* den public-key record aus der GUI kopieren und
* beim DNS provider fuer your.domain als:
pmg.domainkey.your.domain IN TXT "<DNS-record aus der PMG GUI>"
eintragen
Dabei den bestehenden record einfach nicht angreifen aendern!


Allerdings muss ich erwähnen, dass unterschiedlich DNS-configurations panel den record in unterschiedlichen formaten erwarten
* wenn sich das panel beschwert potentiell die aufteilung in mehrer strings wegnehmen
* zu guter letzt noch mit mxtoolbox oder aehnlichem schauen ob der record als korrekt lesbar erkannt wird


Ich hoffe das hilft!
 
Hallo Stoiko.
Ok, das versuche ich. Plesk will die Einträge alle in einer Zeile und ohne " in der Mitte; also etwas anders als das PMG.
Daher habe ich zwei TXT-Einträge angelegt. Ich nehme an, dass Du oben pmg._domainkey.your.domain (also mit Unterstrich) in der Mitte meintest, richtig?
 
  • Like
Reactions: Stoiko Ivanov
Hallo.
Folgender Aufbau bei uns:

Host-Europe-Web-Server (hält die Domain) <---> OPNSense-Firwall <---> PMG (nimmt an) <---> interner Mail-Server (nimmt entgegen und hält die Postfächer).

Bisher dachte ich, dass ich sämtliche DNS-Einstellungen für den Mail-Server über den Host-Europe Server (der mit Plesk daher kommt) einrichten kann.
Heute habe ich aber diverse E-Mails zurückbekommen, die vom internen Mail-Server von unserer Domain raus zu t-online gehen sollten, da sie alle von t-online abgelehnt wurden.
Daher habe ich über die Seite mail-tester.com mal wieder einen Test durchführen lassen, welchen Score unser Server bekommen würde -- und siehe da: Von dem ehemals guten und unkritischen Score war nicht mehr viel zu sehen, da das DKIM-Verfahren aus irgendeinem Grund nicht mehr richtig eingestellt ist und daher der Score nur noch bei mageren 2/10 lag. Kein Wunder also, dass die E-Mails nicht (mehr) akzeptiert wurden.

Ich hänge den Teil von der Seite mail-tester.com, der bemängelt wurde, hier mal an, da ich nicht weiß, ob diese Einstellungen auf dem PMG oder auf dem Plesk-Server einzutragen sind. Vielleicht blickt das einer von Euch?
Code:
Meldung: Die DKIM Signatur ist ungültig
DomainKeys Identified Mail (DKIM) ist ein Verfahren, um eine Domain mit einer E-Mail-Nachricht zu verknüpfen. Somit kann der Verantwortliche  für den Nachrichtenversand angesprochen werden.

Die DKIM Signatur der Nachricht:
    v=1;
    a=rsa-sha256;
    c=relaxed/relaxed;
    d=meine-domain-vom-internen-mail-server.de;
    h=cc:content-type:content-type:date:from:from:message-id:mime-version:reply-to:subject:subject:to:to;
    s=pmg;
    bh=gC--ist-das-geheim-oder-öffentlich?--Q60=;
b=gG--ist-das-geheim-oder-öffentlich?--bkfvw==

Wir konnten den öffentlichen Schlüssel nicht empfangen.
Bitte stellen Sie sicher, dass der öffentliche Schlüssel im DKIM TXT-Record im DNS-Zonefile für die Domain meine-domain-vom-internen-mail-server.de mit dem Selektor  pmg eingetragen wurde. Wenn die DNS-Einstellungen kürzlich geändert wurden, warten Sie 24 Stunden bis zur vollständigen Verbreitung der Änderung und testen Sie dann Ihren Newsletter erneut.

Gerade habe ich auf dem Plesk-Server nochmal nachgeschaut: Dort existiert (bereits / noch / richtigerweise / fälschlicherweise ???) dieser TXT-Eintrag:
Code:
    default._domainkey.mein-domain-name-bei-host-europe.de.    TXT    v=DKIM1; p=DKIM1;h=sha256;k=rsa;p=MIjA--ist-das-geheim-oder-öffentlich?--QQA;


Wie sollte ich hier vorgehen, damit der Score wieder in die Nähe von 10 gelangt?
Danke für einen guten Tipp.
Hi,
hier noch meine 2 cents:

Wenn dies Dein Aufbau ist
Code:
Host-Europe-Web-Server (hält die Domain) <---> OPNSense-Firwall <---> PMG (nimmt an) <---> interner Mail-Server (nimmt entgegen und hält die Postfächer).
gehe ich davon aus, dass der interne Mail-Server den PMG als Smarthost benutzt und vor dem PMG kein weiterer Smarthost sitzt. DKIM wird in der letzten Instanz implementiert. Wenn die PMG das ist, dann also dort.

Du errichtest DKIM auf der PMG und den entsprechenden Schlüssel veröffentlichst Du per DNS. Der Selektor muss natürlich namentlich korrekt sein.

Dann sollte es zumindest auf direktem Wege nicht mehr zu DKIM-Brüchen kommen.
 
gehe ich davon aus, dass der interne Mail-Server den PMG als Smarthost benutzt und vor dem PMG kein weiterer Smarthost sitzt.
Ja, so ist es.
Ich habe auf dem PMG nochmal unter Configuration -> Mail-Proxy -> DKIM nachgeschaut:
Dort gibt es den Selector pmg.
Wenn ich dessen DNS-Record anzeigt, hat der so ein Format:

Code:
pmg._domainkey    IN    TXT    ( "v=DKIM1; h=sha256; k=rsa; "
      "p=MIIBIj MEIN PUBLIC KEY 1u2hhyBC9"
      "fkjwT1 DKIM KEY DAQAB" )  ; ----- DKIM key pmg

Bis dahin also kein Problem.
Nun habe ich auf dem DNS-Server (bei HostEurope -> Plesk) zwei Einträge neu hinzugefügt:
Code:
pmg._domainkey.meine-domain.de
TXT
v=DKIM1; h=sha256; k=rsa;p=MIIBIjA MEIN PUBLIC KEY yBC9;
Erste Frage: Ist es wichtig oder unerheblich, dass ganz am Ende noch ein Semikolon steht (ich habe beides ausprobiert)?

Und der zweite Eintrag (analog zu dem schon bestehenden) so, wobei ich unsicher bin, ob das so richtig ist:
Code:
pmg.meine-domain.de.  
TXT
v=spf1 +a +mx include:secureserver.net -all

Wenn ich nun den mail-tester oder aber https://dkimvalidator.com verwende, erhalte ich in den Results diese Meldung:
Code:
Public Key DNS Lookup

Building DNS Query for
pmg._domainkey.meine-domain.de
Retrieved this publickey from DNS: v=DKIM1; h=sha256; k=rsa;p=MIIB--hier steht der richtige PUBLIC KEY (ohne Semikolon)--IjNyBC9

Validating Signature
result = invalid
Details: public key: OpenSSL error: bad base64 decode

Mir ist leider nicht ganz klar, was nun noch schief geht bzw was noch fehlt?
 
Last edited:
Zur Erklärung:

Code:
pmg._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "<br> "p=MIIBIj MEIN PUBLIC KEY 1u2hhyBC9"<br> "fkjwT1 DKIM KEY DAQAB" ) ; ----- DKIM key pmg

Alles, was zwischen (" und ") steht, zählt und zwar ohne Zeilenumbrüche.
Die Trennung der Optionen ist Strichpunkt+Leerzeichen.

Der fertige Wert für Deinen DNS-Eintrag an obigem Beispiel wäre der hier:

v=DKIM1; h=sha256; k=rsa; p=1u2hhyBC9fkjwT1 (wobei der Buchstabensalat hinter "p=" der öffentliche Schlüssel ist. Er ist nicht durch Leerzeichen oder Absatzmarken unterbrochen. Er ergibt ein langes Wort.)
 
Last edited:
  • Like
Reactions: whiterabbit
Der fertige Wert für Deinen DNS-Eintrag an obigem Beispiel wäre der hier:

v=DKIM1; h=sha256; k=rsa; p=1u2hhyBC9fkjwT1 (wobei der Buchstabensalat hinter "p=" der öffentliche Schlüssel ist. Er ist nicht durch Leerzeichen oder Absatzmarken unterbrochen. Er ergibt ein langes Wort.)
Ja, das hatte ich zunächst auch genau so ausprobiert, aber beim PMG folgt scheinbar dem Public-Key (alles hinter p=) noch ein weiterer kürzerer-Key (?), der nochmal mit Leerzeichen und " " abgetrennt ist.
Also im Prinzip so:
Code:
"v=DKIM1; h=sha256; k=rsa; "p=first_long_key_from_pmg" "second_shorter_key_from_pmg"
Wenn ich das alles in eine Zeile packe, meckert Plesk jedenfalls, dass es das falsche Format sei.
Code:
The TXT record value must be a single string with no quotation marks.
Wenn ich den hinteren Key weglasse, wird es akzeptiert.
Ich habe beide Keys zusammengeführt und das " " dazwischen weggelassen. Das wird von Plesk akzeptiert.
 
Last edited:
Ok, ich glaube, dass es jetzt passt. Ich habe die " aus der Zeile herausgenommen, so dass alles wie von Euch erwähnt, in einer Zeile steht.
Jetzt erhalte ich vom dkimvalidator.com diese Antwort:

Code:
Public Key DNS Lookup

Building DNS Query for
pmg._domainkey.meine-domain.de
Retrieved this publickey from DNS: v=DKIM1; h=sha256; k=rsa; p=MII hier der Public Key AQAB

Validating Signature
result = pass
Details:
Das sieht besser aus, würde ich meinen!?
 
Gut!
Ich mag den Mail-Tester. Nur 9.8?!
Sollte reichen ... ich hoffe, dass die Telekom das auch so sieht und die E-Mails wieder akzeptiert??

Die fehlenden 0.2 gab es als Abzug für das hier:
Code:
-0.1     DKIM_SIGNED
                   Message has a DKIM or DK signature, not necessarily valid
                   Diese Regel wird angewendet, wenn die E-Mail eine DKIM Signatur
                   aufweist, aber weitere positive Regeln werden bei einer gültigen DKIM
                   Signatur ebenfalls angewendet. Bitte beachten Sie den folgenden Absatz.
0.1     DKIM_VALID                
                    Message has at least one valid DKIM or DK signature
                    Wunderbar! Ihre Signatur ist gültig.
0.1     DKIM_VALID_AU         
                      Message has a valid DKIM or DK signature from author's domain
                      Großartig! Ihre Signatur ist gültig und sie kommt von der ausgewiesenen Domain
0.1     DKIM_VALID_EF           
                     Message has a valid DKIM or DK signature from envelope-from domain
-0.001     HTML_MESSAGE   
                     HTML included in message
                     Keine Sorge, damit ist zu rechnen, wenn Sie HTML-Emails versenden
-0.363     RDNS_DYNAMIC    
                     Delivered to internal network by host with dynamic-looking rDNS
-0.001     SPF_HELO_NONE   
                     SPF: HELO does not publish an SPF Record
0.001     SPF_PASS                  
                     SPF: sender matches SPF record
                     Wunderbar! Ihr SPF-Eintrag ist gültig.
Das scheint aber alles nicht so wild zu sein!??
 
Last edited:
Sollte reichen ... ich hoffe, dass die Telekom das auch so sieht und die E-Mails wieder akzeptiert??

Die fehlenden 0.2 gab es als Abzug für das hier:
Code:
-0.1     DKIM_SIGNED
                   Message has a DKIM or DK signature, not necessarily valid
                   Diese Regel wird angewendet, wenn die E-Mail eine DKIM Signatur
                   aufweist, aber weitere positive Regeln werden bei einer gültigen DKIM
                   Signatur ebenfalls angewendet. Bitte beachten Sie den folgenden Absatz.
0.1     DKIM_VALID             
                    Message has at least one valid DKIM or DK signature
                    Wunderbar! Ihre Signatur ist gültig.
0.1     DKIM_VALID_AU      
                      Message has a valid DKIM or DK signature from author's domain
                      Großartig! Ihre Signatur ist gültig und sie kommt von der ausgewiesenen Domain
0.1     DKIM_VALID_EF        
                     Message has a valid DKIM or DK signature from envelope-from domain
-0.001     HTML_MESSAGE
                     HTML included in message
                     Keine Sorge, damit ist zu rechnen, wenn Sie HTML-Emails versenden
-0.363     RDNS_DYNAMIC 
                     Delivered to internal network by host with dynamic-looking rDNS
-0.001     SPF_HELO_NONE
                     SPF: HELO does not publish an SPF Record
0.001     SPF_PASS               
                     SPF: sender matches SPF record
                     Wunderbar! Ihr SPF-Eintrag ist gültig.
Das scheint aber alles nicht so wild zu sein!??
Es war ja auch mehr als Spaß gemeint.
Den SPF_HELO_NONE bekommst Du in den Griff, wenn Du einen TXT_Record für Deinen Server anlegst.

Wenn Dein Server z.B. smtp.deinedomain.de heißt und die öffentliche IP 192.0.2.1 hätte, dann würdest Du einen TXT-Record für smtp oder den fqdn anlegen mit diesem Wert: v=spf1 ip4:192.0.2.1 -all

Dann ist auch SPF_HELO_NONE weg und DU hast volle Punktzahl, vorausgesetzt A- und PTR_Records für den Server stimmen.
 
Last edited: