Mail-Sicherheit auf der eigenen Domain
Themen
Häufig lese ich, dass man lieber einen etablierten Mailprovider nutzen soll, statt sich selbst einen zusammenzubauen. Es gäbe zu viele Fallstricke, die man hier beachten müsse. Doch die ersten Schritte, um den Mailverkehr der eigenen Domain abzusichern beginnen schon viel früher, als beim eigenen Mailserver. Hat dein Anbieter, bei dem du deine Domain beziehst darauf hingewiesen, dass du direkt grundlegende Einstellungen für den Mailversand festlegen kannst? Das ist leider eher selten der Fall und plötzlich werden Mails scheinbar in deinem Namen versendet.
In diesem Beitrag möchte ich dir anschaulich erklären, welche Maßnahmen du bei deiner Domain ergreifen solltest – egal, ob du einen eigenen Mailserver betreibst oder ein externes Hostingangebot in Anspruch nimmst.
Überblick über das Problem
Im Grundsatz können wir einige Konzepte aus dem realen Leben auch auf den Mailtransfer anwenden. Beispielsweise könnte ich mich dir bei unserer ersten Begegnung als Anton Müller aus Berlin vorstellen – du würdest mir das vermutlich abnehmen, schließlich hast du keinen Grund mir in der Hinsicht zu misstrauen.
Jetzt überlege mal, wann du mir misstrauen würdest. – Entweder irgendjemand hat mich dir schon anders vorgestellt, sprich du weißt schon, dass ich jemand anders bin oder ich hab dir z.B. gleichzeitig ein Dokument von mir gegeben, wo etwas anderes draufsteht (irgendwo etwas weit hergeholt, aber es erfüllt seinen Zweck).
Bei Mailservern funktioniert das etwa gleich. Der sendende Mailserver kann sich erstmal als irgendjemand ausgeben, außer man teilt dem empfangenden Mailserver irgendwie mit, dass da etwas nicht stimmen könnte. Und eben diese Information wollen wir bereitstellen. Dazu können wir in den DNS-Einträgen deiner Domain – einer Art Telefonbuch für das Internet – hinterlegen, welche Server mit deiner Domain Mails versenden dürfen.
Auch, wenn du es aktuell vielleicht nicht für sinnvoll halten solltest etwas dagegen zu unternehmen, weil du eh nicht vorhast mit der Domain Mails zu versenden, solltest du es dennoch tun. Einer der Gründe dafür ist, dass moderne Spamfilter mitlernen. Sollte jetzt also jemand deine Domain missbrauchen um Spammails zu verschicken und diese werden immer wieder als solche erkannt, kann es dir später passieren, wenn du dich doch umentscheidest, dass du keine wirkliche Chance mehr hast diesen Status als vermeintlicher Spammer loszuwerden.
Verfügbare Sicherheitsmechanismen
Es gibt im Bereich der Sicherheitsmechanismen für Mails 3 große Vertreter – SPF, DKIM und DMARC. Das wird dir jetzt vermutlich nicht viel sagen, darum erkläre ich sie mal.
SPF (Sender Policy Framework)
Ein SPF-Eintrag ermöglicht dir die Einschränkung des Mailversands auf bestimmte IP-Adressen – sprich hier kannst du festlegen, welche Server Mails im Namen deiner Domain versenden dürfen. Das ist die bekannteste Methode der drei und wird am häufigsten eingerichtet.
Leider hat dieser Eintrag auch ein kleines Problem: Werden die Mails z.B. an einen Server gesendet, der die Mails nur weiterleitet, wird dieser Weiterleitungsserver vom empfangenden Server als Sender angesehen. Dadurch kann es bei Unstimmigkeiten mit dem Eintrag dazu kommen, dass diene Mails als Spam angesehen werden, obwohl sie ursprünglich wirklich von dir stammen.
Ein SPF-Eintrag wird auf der betroffenen Subdomain oder auf der ersten Ebene angelegt und beginnt mit der Einstellung v=spf1
. Danach kann er mit Leerzeichen getrennt um Einstellungen beliebig erweitert werden.
folgenden Einstellungen erfordern einen Präfix:
Einstellung | Erklärung | Beispiele |
---|---|---|
a |
Betrifft alle IP-Adressen, für die ein A-Eintrag bei der aktuellen bzw. angegebenen Domain existiert | +a +a:example.com |
mx |
Betrifft alle IP-Adressen, für die ein MX-Eintrag bei der aktuellen bzw. angegebenen Domain existiert | +mx +mx:example.com |
ip4 |
Betrifft eine einzelne IPv4-Adresse bzw. einen Netzbereich | +ip4:192.168.0.1 +ip4:192.168.0.0/24 |
ip6 |
Betrifft eine einzelne IPv6-Adresse bzw. einen Netzbereich | +ip6:fd42:42:42::1 +ip6:fd42:42:42::/64 |
all |
Alle nicht näher definierten Quellen | ?all |
Präfix | Erklärung |
---|---|
+ | Einstellungen mit diesem Präfix werden als gültig angesehen und immer akzeptiert. (Kein Präfix bedeutet automatisch +) |
? | Einstellungen mit diesem Präfix werden neutral behandelt und immer angenommen. |
~ | Einstellungen mit diesem Präfix werden als fehlerhaft angesehen. Da es sich eigentlich um eine Präfix zum testen handelt werden die Mails in der Regel akzeptiert, aber der Check „softfail“ markiert. |
– | Einstellungen mit diesem Präfix werden als fehlerhaft angesehen und Mails je nach weiterer Einstellung verworfen oder als Spam markiert. |
Einstellung | Erklärung | Beispiel |
---|---|---|
redirect |
Kann anstelle von einer all -Einstellung verwendet werden, um auf einen anderen Eintrag zu verweisen. Muss als letzte Einstellung definiert werden. |
redirect=_spf.example.com |
include |
Ermöglicht die Einbindung von SPF-Einträgen anderer Domains | include:example.com |
exists |
Ermöglicht die Verwendung komplexer Ausdrücke | exists:%{ir}.%{l1r+-}._spf.%{d} |
DKIM (DomainKeys Identified Mail)
Ein DKIM-Eintrag ermöglicht dir einen sogenannten öffentlichen Schlüssel für deinen Mailversand zu hinterlegen. Dieser wird vom empfangenden Server genutzt, um eine Art Unterschrift des sendenden Servers kryptographisch zu prüfen und hilft dabei sicherzustellen, dass der Inhalt der Mail nicht modifiziert wurde. Einen solchen Eintrag kannst du mehrfach unter anderen Identifikationen (identifier
) anlegen, um z.B. mehrere Mailprovider zu autorisieren.
Es ist zwar schön, dass unsere Mails dadurch nicht nicht verändert werden können, aber an sich verhindert es leider nicht den Versand von nicht autorisierten Servern. Dafür kommt der dritte Mechanismus ins Spiel.
DMARC (Domain-based Message Authentication, Reporting and Conformance)
Wie der Name des Mechanismus schon verlauten lässt, können mit einem DMARC-Eintrag Regeln festgelegt werden, die bestimmen, wie ein Mailserver bei Verstößen gegen den SPF- und DKIM-Eintrag vorzugehen hat. An dieser Stelle kannst du letztendlich festlegen, ob eine Mail angenommen oder abgelehnt werden soll. Nur nicht in ganz so schwarz oder weiß wie es jetzt gerade klingt. Aber dazu mehr bei der Einrichtung.
Ein DMARC-Eintrag wird auf der Subdomain _dmarc
angelegt und beginnt mit der Einstellung v=DMARC1
. Danach kann er mit Semikolon und Leerzeichen getrennt um Einstellungen erweitert werden.
adkim |
Legt fest, wie genau der DKIM-Eintrag geprüft wird.
Standard: |
adkim=s |
aspf |
Legt fest, wie genau der SPF-Eintrag geprüft wird.
Standard: |
aspf=r |
fo |
Legt fest wann Infos an ruf-Adresse gesendet werden sollen.
Standard: |
fo=1 |
p |
Legt fest wie mit fehlschlagenden Checks umgegangen werden soll.
Einstellung muss gesetzt werden |
p=reject |
pct |
Legt fest wie viel Prozent der eingehenden Mails überprüft werden sollen.
Standard: |
pct=100 |
rua |
Legt fest wohin Zusammenfassungen geschickt werden sollen. | rua=mailto: info@cybine.de |
ruf |
Legt fest wohin detaillierte Infos geschickt werden sollen. Wird aufgrund von Datenschutzbedenken selten Infos erhalten. |
ruf=mailto: info@cybine.de |
sp |
Legt fest wie auf Subdomains mit fehlschlagenden Check umgegangen werden soll.
Standard: Einstellung von |
sp=reject |
Schritt für Schritt zur abgesicherten Domain
Ab hier kommt es darauf an, was du mit deiner Domain machen willst. Ich stelle dir grundsätzlich vor, wie du die entsprechenden Einträge anlegen kannst – die einzelnen Einstellungen hängen aber von dir ab. Eine Erklärung der einzelnen Einstellungen findest du bei den Vorstellungen der Sicherheitsmechanismen.
Alle folgenden Einträge sind sogenannte TXT-Einträge. Da es sehr viele Anbieter gibt, kann ich nicht für jedes Interface eine Anleitung bereitstellen. Wie du die Einträge bei deinem Anbieter hinterlegen kannst, solltest du in der Dokumentation des Anbieters finden.
Erstellung SPF-Eintrag
Unser SPF-Eintrag legt hier fest, dass wir Mails von einer unserer in der Domain hinterlegten IP-Adressen akzeptieren wollen. In der Regel reicht es hier die A-Records und MX-Records zu hinterlegen. Solltest du dir unsicher sein, ob dadurch nicht zu viele Server eine Sendeberechtigung bekommen, kannst du auch wie oben beschrieben den +a
und +mx
Teil gegen einen IP-Eintrag tauschen.
Subdomain: [keine]
Inhalt: v=spf1 +a +mx ~all
Solltest du bei deinem Anbieter die Möglichkeit haben einen DKIM-Eintrag anzulegen, kannst du auch folgenden Eintrag hinterlegen. Dieser wirft potenziell bei Mailweiterleitungen (wie weiter oben beschrieben) nochmal weniger Probleme auf.
Subdomain: [keine] Inhalt: v=spf1 +a +mx ?all
Erstellung DKIM-Eintrag
An dieser Stelle muss ich dich leider auf die Dokumentation deines Providers weiterleiten, da der Prozess für das Hinterlegen des serverseitigen Bestandteils für diesen Eintrag bei jedem Provider anders ist. Du solltest irgendwo im FAQ deines Anbieters etwas finden, wenn du nach DKIM suchst.
Wichtig an dieser Stelle ist, dass alle deine Quellen, von denen du Mails versendest, diesen Schritt unterstützen müssen. Sollte auch schon nur einer deiner Provider das nicht unterstützen, wird dir die Einstellung mehr schaden als helfen, da die Mails von nicht autorisierten Mailservern mit hoher Wahrscheinlichkeit im Spam landen.
Es gibt leider auch einige Anbieter, die in ihrer Produktbeschreibung mit DKIM-Validierung werben und damit den Anschein machen, dass sie DKIM unterstützen. Die Validierung hat jedoch nichts mit dem Anlegen des Eintrags für dich zu tun. Solltest du einen Anbieter haben, bei dem du für deine Mails keine DKIM-Einstellungen vornehmen kannst, würde ich dir nahelegen dich eventuell nach einem anderen Anbieter umzuschauen der DKIM-Signierung unterstützt.
Solltest du deinen Server selbst vollständig verwalten findest du unten in den Links einen Guide (Eigenen Mailserver einrichten), der den Prozess ganz gut erklärt.
Der Eintrag in deiner Domain müsste etwa so aussehen:
Subdomain: [identifier]._domainkey
Inhalt: v=DKIM1; h=sha256; k=rsa; s=email; p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0rw59vhi2JGYr4gQXJC7mj8hKHucRB6CQvMd5pYDqTMmT5eyVoPMNJceXU1+waHP0CLg1KZwayjVgv3Nnu0lQf02QHzer83uKoIKA1rRo9pwtXaAcGOf4UtzCgSRz+f3EccWVWFxuFvDXkUyCXMCZzXtu8vqLMdsARczM6SM/Ah/3YUclaOnFWe0RSaBRweBziy2QzxzH7cugNhqlKF4xoeV32RtL8/IURhdDU3U6WcW9w9NbsO6a0ODG8YJfUQdZN5K7tw7y+mZPtahaT+2nKnT4HjYBLdt6aEDNV3qcNOn8xwR4BUJ4dR/gZWfW4UQ9rP7KLVB4joYn3/OGO1UrdZzx64FfsvBd0LepG4jtiI7pQu1suakwYKFhAboAjUm63nATA4giSt27Q3/WLi1J1pjnZAjWQdScEPVz4L/2cV8uOsfckeYbbbEiGPDvY5Q5zC/ZKytTzG1K+0XjeC5e93+rFBXGLwls7ZVLhDcC8NwvjrWai8reX+gIFQHEhxbar81gCX8owtP/dt9cTf2DNrHYITsDvB8JBd8J6RwogoOu+d6VldljTu/X8KeFgVDZxces6k7DW1kLuysjyGWinFzNWdLFyiVA4jzNq/Js8paXz2QKukZZd22N8xK+nWmjdSNqFV7E37EZnYqtePYsXL5Wz+qFozM7gd4f4n4b1kCAwEAAQ==
Erstellung DMARC-Eintrag
Mit dem DMARC-Eintrag legen wir jetzt final fest, wie mit Mails von deiner Domain umgegangen werden soll. Die Erklärungen zu den einzelnen Einstellungen findest du weiter oben im Beitrag.
Subdomain: _dmarc
Inhalt: v=DMARC1; p=quarantine; rua=mailto:postmaster@deine.domain; pct=100; sp=reject; adkim=s; aspf=r
Bei diesem Eintrag musst du nur noch die rua
-Adresse auf deine Mailadresse anpassen und entscheiden, welchen Wert du für die p
-Einstellung haben willst. Prinzipiell ist es sicherer hier mit reject
zu gehen. Sollten sich jedoch Fehler in deiner Konfiguration eingeschlichen haben, werden deine Empfänger deine Mails nicht mal zugestellt bekommen. Daher ist es hier zum testen empfehlenswert vorerst auf quarantine
zu bleiben.
Abschließende Tests
Wenn du jetzt alles eingerichtet hast, ist es noch wichtig die ganze Konfiguration zu testen. Sende dir dafür am besten selbst Mails an eine andere Plattform. Solltest du hierfür eine Empfängeradresse wählen, mit der du bereits geschrieben hast, bedenke, dass Mailserver mitlernen und ggf. Mails die eigentlich als Spam markiert würden, durch den zuvor gehenden Mailverkehr im normalen Posteingang landen.