MSXFAQ MeetNow aktiv: Komm doch einfach dazu.

DKIM Selectoren

Im Gegensatz zu SPF und DMARC können wir DKIM-Einträge bei Domains nicht wissen, sondern allenfalls raten. Welcher DKIM-Eintrag per DNS für die Prüfung einer Mail relevant ist, steht in der Mail selbst drin. Aber wer viele Mails vieler Domains empfängt oder sogar einen Spamfilter wie NoSpamProxy entwickelt und vertreibt, prüft natürlich viele Mails auf DKIM und bekommt damit auch die Selektoren einer Domain. Mich hat interessiert, ob es hier Muster oder Erkenntnisse geben kann.

DKIM im Header

Wenn ein Spamfilter die IP-Adresse des einliefernden Systems anhand eines SPF-Eintrags bewerten will oder die DAMRC-Richtlinie abfragen will, dann sucht er nach folgenden beiden TXT-Records im DNS

       <domain>  TXT  v=spf1.....
_dmarc.<domain>  TXT

Per NSLOOKUP oder Resolve-DNSName ist das sehr einfach möglich.

(resolve-dnsname -Type TXT -Name msxfaq.net).strings | where {$_.startswith("v=spf1")}
(resolve-dnsname -Type TXT -Name _dmarc.msxfaq.net).strings

Für die MSXFAQ ergibt sich folgendes (Stand Mai 2026)

Wenn ich aber die DKIM-Prüfung machen will, muss ich den Header der Mail mit dieser Absenderdomain prüfen:

 

Im Header sollte sich dann mindestens eine DKIM-Signatur finden. Interessant ist hier die Domain "d=msxfadev.de", die zum Absender passen muss und der Selector "s=selector1" Mit dem wissen kann ich nun eine DNS-Anfrage auf den DKIM-Schlüssel machen, mit dem ich die Signatur prüfen kann

Die Informationen sind nicht geheim. Es ist ja nur der öffentliche Schlüssel zur Prüfung der DKIM-Signatur. Der private Schlüssel ist hoffentlich beim Absender sicher verwahrt.

Selektoren in der Welt

Bei der Wahl des Selektor-Namens sind Administratoren und Anbieter frei. Wer DKIM mit Office 365 einsetzt, wird wissen, dass Microsoft die Namen "selector1" und "selector2" vorgibt.


Quelle: Einrichten von DKIM zum Signieren von E-Mails aus Ihrer Clouddomäne
https://learn.microsoft.com/de-de/defender-office-365/email-authentication-dkim-configure

Wobei dies noch die alte Schreibweise ist. Microsoft ändert dies auf ein neues Format. Der Selector bleibt weiterhin gleich aber der CNAME muss dann auf einen Namen verweisen.

Mich hat interessiert, welche Selectoren von den verschiedenen Domains genutzt werden. 

 Also habe ich mir die Mühe gemacht, per Graph mein Postfach abzufragen

Get-DKIMSelectors.PS1
get-dkimselectors.ps1
Verbindet sich per MSGraph mit dem Postfach des ausführenden Benutzers und dem Scope "Mail.Read" und holt die Mails mit externen Absendern der letzten 30 Tage um zu ermitteln, ob und welche DKIM-Signaturen enthalten sind und schreibt eine Liste in eine CSV-Datei. Die Domains werden in die Pipeline ausgegeben.

Die Ausgabe ist dann eine Liste der Domain mit den gefundenen Selektoren:

Schon hier merke ich zwei Dinge an:

  • Eine Domain, mehrere Selektoren
    Sie können z.B. an der Domain "microsoft.com" gut sehen, dass eine Domain durchaus mehrere Selektoren haben kann. Das ist erwartet, denn für eine Domain kann es ja mehrere Mailversender, interne wie externe, geben und anstatt den gleichen Schlüssel zwischen allen Diensten zu nutzen, kann jeder Server seine eigene Signatur addieren. Auch beim Mittelstand passiert das, wenn Sie ihre primäre Domain per DKIM signieren aber z.B. ein Newsletter mit der gleichen Domain über einen anderen Massenversanddienstleister sendet.
  • Nichte alle DKIM Domains sind auch Absender
    Das Skript sucht alle DKIM-Signaturen in einer Mail. Eigentlich sollte eine DKIM-Signatur immer nur von dem System aufgebracht werden, welches auch autoritativ für diese Domain ist. Speziell Exchange Online ist sich aber nicht zu schade, auch eine Signatur mit seiner Domain aufzubringen, die aber vom Empfänger ignoriert werden sollte.

Ich habe meine letzten 1000 Mails ausgewertet und folgende 82 Selektoren gefunden:

hs2-26290363
s2048
1455217041.mtmta
mte1
selector1
s31663417
brevo2
v1
icontact.k2
s29768273
dkim1e
selector1
DKIM001
selector1-igaazureadnotificationsge-onmicrosoft-com
hse1
mail
mailjet
p2024
61913
selector1
sokbgaaqhfgd6qjht2wmdajpuuanpimv
selector1-spoemeaeop-onmicrosoft-com
acdkim1
amseuprodelq
selector1
default
selector1
mscom
pp-dkim1
mail3
eo
selector2
mc0
20251104
sm
mailjet
xansl36zxalufv5kyto3b5biirs7psg6
mail4
selector1
v1
prv2019
secureserver2
selector2
selector1
20251104
selector2-miele365-onmicrosoft-com
214340684
hs1
sophos051eb2ad6db24d749d7b76a9c0f49128
amseuprodelq
s1-ionos
20241105
k1
acdkim1
selector2-mstechdiscussions-onmicrosoft-com
20240516-RWTH
dkim1r
yyzcaprodelq
selector1-azurecomm-prod-net
namkey1
sokbgaaqhfgd6qjht2wmdajpuuanpimv
default
email0517
m1
secureserver1
20221110
dk2016
selector1
mc1
mte1
s1024-meo
selector2
m1
selector2
ix-hosting2
eo
selector1
crsend
Progress
mail1

Man kann wohl sehen, dass es mehrere Vorkommen von "selector1/selector2" gibt, die sehr zuverlässig auf Exchange Online  als Absender hinweisen. Auch einige Hoster wie "SecureServer". "Brevo" oder "Mailjet" lassen sich ausmachen. Aber es gibt auch sehr viele wilde Namen, bei denen ich mich dann schon frage, wie diese zustande kommen.

So gibt es Namen, die eher wie ein GUID aussehen, wenn sie von AMAZONSES kommen:

"From","Domain","Selector"
"privaterelay.appleid.com","privaterelay.appleid.com","prv2019"
"privaterelay.appleid.com","amazonses.com","sokbgaaqhfgd6qjht2wmdajpuuanpimv"
"bolt.eu","bolt.eu","xansl36zxalufv5kyto3b5biirs7psg6"
"bolt.eu","amazonses.com","sokbgaaqhfgd6qjht2wmdajpuuanpimv"

Genaugenommen sehen wir hier zwei Mails.

  • Mail 1: über Apple Private Relay
    Hier sehen Sie eine Mail, die über Apples Privaterelay gekommen ist. Ich habe zu dem Zeitpunkt ein Konto bei bolt.eu angelegt und wollte erst einmal nicht meine echte Mailadresse hinterlegen. Die eingehende Mail hatte als Absender eine ""privaterelay.appleid.com"-Domain und auch eine passende DKIM-Signatur. Allerdings hatte die Mail auch noch eine DKIM-Signatur von Amazonses, die aber nicht zur Absenderdomain passt
  • Mail 2: von bolt.eu
    Dann habe ich das Konto auf meine echte Mailadresse umgestellt und wir sehen schön, dass die Mail durch BOLT.EU mit einer DKIM-Signatur versehen wurde. Allerdings hat auch das vermutlich als Relay oder Service genutzte Amazonses.com auch eine Signatur aufgebracht. Die interessiert mein Empfänger aber nicht, da die Domain nicht passt.

Die DKIM-Signatur von Amazonses kann aber zukünftig einmal z.B. für ARC - Authenticated Received Chain relevant werden. Als Empfänger könnte ich ja pauschal der amazonses-Signatur vertrauen. Ich finde interessant, dass Apple aber wohl die Signatur von bolt.eu entfernt, sonst wäre sie hier auch zwei mal aufgetaucht. Das ist allerdings nicht bewiesen, denn ich sehe nur die Mail bei mir und nicht, was zwischen bolt.eu und Apple angewendet wurde.

Statistik

Zuerst habe ich erst einmal 1000 Mails meines Postfachs per Graph geladen und ausgewertet.

1000 Mails total 
 283 Mails mit DKIM-Signatur  
 275 RSA-SHA265
   2 ED25519-SHA256
   1 RSA-SHA1

Das erscheinen mir doch recht wenig DKIM-Signaturen. Wobei ich nicht nach intern/Extern unterschieden und nicht nach dem Empfangsdatum absteigend sortiert habe. Ich habe dann noch einmal die Auswertung über mein komplettes Postfach laufen lassen. Ich hatte erst einmal erwartet, dass es noch weniger DKIM-Anteile werden, da früher noch viel weniger DKIM-Signaturen angefügt wurde. Aber ich hatte mich geirrt

43990 Mails total
20296 DMARC-Signaturen
 1977 einmalige DMARC-Signaturen d.h. einige Domains haben mehrere Mails gesendet
  512 ED25519-SHA256
   31 RSA-SHA1
19753 RSA-SHA256

Anscheinend war die erste Anfrage wirklich über viel mehr interne und alte Mails erfolgt. Fast 50% Mails mit DKIM-Signatur ist ziemlich viel. Da musste ich meine Anfrage dann doch etwas konkretisieren und einen Filter auf z.B. die letzten 30 Tage anlegen:

   -Filter "sentDateTime ge $($(Get-Date).AddDays(-30).ToString(""yyyy-MM-ddTHH:mm:ssZ""))" `

In dem Postfach fand ich:

2157 Mails total
 619 DMARC-Signaturen
 145 einmalige DMARC-Signaturen d.h. einige Domains haben mehrere Mails gesendet
   7 ED25519-SHA256
   2 RSA-SHA1
 610 RSA-SHA256

Die Werte sind hier wieder schlechter geworden. Also brauche ich doch einen Filter nach externen Mails. Dazu eignet sich das "FROM"-Feld, welches mit Get-MgUserMessage auch standardmäßig mitkommt. Allerdings kann ich nicht direkt schon mit "SEARCH" oder "FILTER" und "endswith('eigene domain'" filtern. Ich habe auch kein direktes Flag gefunden, in dem ich sehen kann, ob eine Mail von extern gekommen ist. Die InternetMessageHeader wollte ich nun nicht nach einem Kriterium wie Exchange Intern/Extern, External Sender Identification, X-Message-Flag, X-OriginatorOrg oder X-MS-Exchange-Organization-AuthAs durchsuchen. Ich habe einfach die Domain in der FROM-Adresse mit meinen internen Domains verglichen.

2222 Mails total
 641 von extern
 525 DMARC-Signaturen
 150 einmalige DMARC-Signaturen d.h. einige Domains haben mehrere Mails gesendet
Davon
   7 ED25519-SHA256
   2 RSA-SHA1
 621 RSA-SHA256

Die Zahlen machen dann schon mehr her. In meinem Postfach waren in der fraglichen Zeit 525 DKIM-signierte Mails von 641. Da eine Mail mehrere DKIM-Signaturen enthalten kann, sind 621xRSA-SHA256 auch mit 525 Mails möglich.

Über 80% aller Mails waren schon DKIM-signiert. Langsam können Spamfilter wohl Absender ohne DKIM-Signatur als "weniger professionell" einschätzen.

Zwischenstand

Ich habe mir eigentlich etwas mehr Zusammenhänge erwünscht. Wenn Microsoft per Default immer "selector1/selector2" nutzt, habe ich bei anderen Versendern ähnliche Muster erwartet. Allerdings lässt sich wirklich jeder Admin oder Dienstleister ein eigenes Namensschema für den DKIM-Selector einfallen und entsprechend wenig kann man damit ermitteln. Zuerst habe ich gedacht, dass AmasonSES vielleicht für jede Mail einen eigenen Selector verwendet und so über die DNS-Anfrage indirekt erkennen könnte, welche internen Server und Weiterleitungen vielleicht über die DNS-Abfrage identifizierbar sind. Allerdings konnte ich das nicht belegen. Wenn so etwas funktionieren würde, dann wäre es für Werbeversender eine weitere, wenngleich schwache Trackingmöglichkeit.

Weitere Links