MTA-STS ist die Abkürzung für “Mail Transfer Agent – Strict Transport Security”. Ziel dieses Standards ist es, die Übertragung von E-Mails sicherer zu gestalten.
Bitte unterstützt meine Arbeit
Wie funktioniert MTA-STS?
Zwar gibt es mit STARTTLS, S/MIME, PGP, DANE oder DMARC schon genügend “Mechanismen”. Sie alle haben ihre Stärken und Schwächen. Letztere sollen mithilfe von MTA-STS deutlich minimiert werden, indem MTA-STS den unverschlüsselten E-Mail-Versand zwischen zwei Mailservern unterbindet. Es geht also explizit um die Kommunikation zwischen Mailservern.
MTA-STS zielt allein darauf ab die Verbindung zwischen zwei Mailservern zu härten, damit sich niemand anderes als Empfängerserver ausgeben kann. Auf dem Server selbst sind die Mails aber weiterhin unverschlüsselt. Es etabliert als auch keine Ende-zu-Ende Vershlüsselung
Das Problem mit Opportunistic TLS
Die meisten Mailserver lauschen auf Port 25 um eingehende Mails anzunehmen. Der MX-Eintrag im DNS teilt der Welt mit, wo dieser Server zu suchen ist und der “Erstkontakt” findet dann leider immer erst einmal unverschlüsselt statt. Ein Absender, der im Prinzip Verschlüsselung per TLS unterstützt, erfragt dies durch eine “EHLO”-Anfrage und wertet die Antwort aus.
Klar, es gibt STARTTLS und viele großen Anbieter, unter anderem auch Microsoft mit Exchange Online unterstützen as.
Allerdings ist das nur “freiwillig” und der Sender prüft in dem Fall auch nicht das Zertifikat des Empfänger.
Damit sind immer noch folgende Probleme vorhanden:
- DNS-Spoofing und Verifikation des “Richtigen Server”
- Unterdrücken von STARTTLS
- Opportunistisches TLS und falsches Zertifikat
Die Lösung
Gelöst wird das Ganze nun so, dass der Empfänger ausreichend sicher veröffentlicht, dass er Mails per TLS annimmt und dabei auch das angebotene Zertifikat vorschreibt. Der Absender muss dann vor dem Versand einfach kurz nachschauen, ob der Empfänger ein entsprechendes Manifest bereitstellt.
Mithilfe von MTA-STS ist es dem empfangenden Mailserver möglich, dem versendenden Mailserver per DNS mitzuteilen, dass dieser TLS zur Transportverschlüsselung nutzen soll (Achtung: Damit lautet der DNS-Eintrag nicht mehr auf “_smtp_sts”, sondern auf “_mta_sts”). Der Versand-Mailserver wird vor dem E-Mail-Versand in die Lage versetzt, eine MTA-STS-Policy von einem Webserver abzurufen. Hierin wird definiert, welche E-Mail-Server die E-Mails per TLS entgegennehmen.
Der Versand-Server speichert eben diese Policy für eine Dauer, die definiert werden kann. Innerhalb dieses Zeitraums werden E-Mails ausschließlich per TLS zugestellt.
MTA-STS konfigurieren
Konfiguration am Webserver
Die Einrichtung von MTA-STS ist denkbar einfach und in wenigen Minuten abgeschlossen.
Sie benötigen einen Mailserver, der TLS unterstützt, drei DNS-Namen sowie einen Webserver, der per HTTPS erreichbar ist. Um zu starten, müssen Sie eine Policy einrichten.
Hier eine Beispielpolicy anhand der Domäne “painkiller-tech.com“:
version: STSv1
mode: enforce
mx: mail.painkiller-tech.com
max_age: 806400
Hier ist ein MTA-STS Policy Generator mit dem Sie sich die Policy erstellen lassen können mit dem dazugehörigen Validierungsrecord.
In dieser Beispiel-Policy ist die STS-Version enthalten; aktuell gibt es nur die Version STSv1. Bei “mode” entscheiden Sie sich für “testing”, wenn Sie testen möchten, oder “enforce”, wenn Sie bereits produktiv arbeiten. “max_age” definiert den Zeitraum, über den der Mailserver die Policy cachen darf. Die Angabe erfolgt in Sekunden. Geben Sie in der Policy außerdem alle Mailserver an, die TLS zwingend anfordern und unterstützen müssen. Sie können diese einzeln oder als Wildcard angeben (mx: *.painkiller-tech.com)
Speichern Sie diese Policy unter dem Namen mta-sts.txt
Nun müssen Sie auf ihrem bestehenden Webserver eine Subdomain einrichten: mta-sts.domainname.com
Die neue Subdomain muss auf Ihre Policy-Datei verweist und muss in einem .well-known-Verzeichnis gespeichert werden
Beispiel:
Subdomain mta-sts.painkiller-tech.com zeigt auf ihr public_html Verzeichnis.
In Ihrem public_html Verzeichnis erstellen Sie einen Ordner .well-known und in dieses Verzeichnis legen Sie Ihre oben erstellte Policy (die mta-sts.txt Datei)
Somit ist die Arbeit am Webserver selbst bereits erledigt, weiter gehts mit den DNS Records.
Konfiguration der DNS Records
Nun erstellen Sie die benötigten DNS Einträge:
– einen A Record der Ihre oben erstellte Subdomain auf Ihren Server zeigen lässt
– einen TXT Record, mit dem Validierungscode den Sie vom Policy Generator oben bekommen
– optional: ein weiterer TXT Record der für das Reporting verwendet wird
Der TXT Record muss wie folgt aussehen:
hostname: _mta-sts.domainname.com
Recordtyp: TXT
Value: v=STSv1; id=168821898592Z;
Den Value entnehmen Sie dem MTA-STS Generator von oben. Dieser erstellt sowohl die Policy Datei als auch den Validierungsrecord.
Test und Reporting (TLSRPT):
Der Optionale TXT Record
Bevor Sie nun den DNS-Eintrag und die Webseite online schalten wollen, sollten vorher alles getestet werden, so wie auch die Policy erstmal auf testing gestellt werden sollte. Es kann nämlich auch schief gehen, z.B. wenn Sie “max_age” viel zu hoch ansetzen und die Policy nicht 100% passt. Dann haben die Absender ganz lange eine falsche oder defekte Richtlinie. Zudem beschreibt MTA-STS auch ein Verfahren, mit dem Absender einen Statusreport, ähnlich zu DMARC liefern können.
Damit werden die absendenden Mailserver angewiesen, einen TLS-Report an die hinterlegte Mailadresse zu senden. Alternativ können sie auch eine URL verwenden, zu der die Ergebnisse per HTTPS gesendet werden.
hostname: _smtp._tls.domainname.com
Recordtyp: TXT
Value: v=TLSRPTv1; rua=mailto:mail@domainname.com
Wenn Sie alles eingerichtet haben sollte Ihre Policy nun unter folgendem Link erreichbar sein: https://mta-sts.domain.com/.well-known/mta-sts.txt
INFO:
Stellen Sie den Policymode vorher auf testing, bis sie mit dem MTA-STS Policy Checker prüfen können, dass alles in Ordnung und korrekt eingerichte ist.
Wenn alles Richtig ist, zeigt sowohl der Record als auch die Policy dies an:
Herzlichen Glückwunsch, Sie haben MTA-STS nun erfolgreich eingerichtet.
Sollten Sie mehrere Domains auf einem Server hosten und konfigurieren wollen, wiederholen Sie die Punkte für alle gewüschten Domains.