MTA-STS für Postfix

MTA-STS ist der vorgeschlagene RFC8461- Standard, der aus dem Entwurfsstatus herausgegangen ist und am 26. September 2018 offiziell veröffentlicht wurde. Dieser Standard bietet einen Mechanismus zum Erkennen der Möglichkeit der Verwendung von vollständigem TLS zwischen Mailservern mit Datenverschlüsselung und Serverauthentifizierung. Das heißt, dieser Standard schützt fast vollständig vor Störungen des E-Mail-Verkehrs zwischen Servern.

Vereinfacht ausgedrückt lautet der Kern des Standards wie folgt:

  1. Unterstützende Mail-Dienste veröffentlichen eine Richtlinie (1 TXT-Datensatz und 1 HTTPS-Ressource für jede Domäne).
  2. E-Mail-Dienste erkennen beim Senden von E-Mails an andere Domänen die Empfängerdomänenrichtlinie.
  3. Mail-Dienste stellen eine Verbindung zum Mail-Server der Empfängerdomäne her und wenden gegebenenfalls die in der erkannten Richtlinie festgelegten TLS-Einschränkungen an.

Es gibt gute Artikel ( zum Beispiel ), die über den Standard selbst und warum er benötigt wird, MTA-STS mit anderen ähnlichen Initiativen vergleichen und sogar zeigen, wie eine Richtlinie geschrieben und veröffentlicht wird. Es war jedoch nicht so einfach zu finden, wie man über den ersten Schritt hinausgeht.

Fangen Sie von vorne an


Vor der Implementierung von MTA-STS müssen Sie die Mailserver-Zertifikate aufräumen. Andernfalls lehnen Mailserver, die Ihre STS-Richtlinie berücksichtigen, die Verbindung zu Ihrem Server ab. Folgende Bedingungen müssen erfüllt sein:

  • Das Serverzertifikat wird von einer anerkannten Zertifizierungsstelle ausgestellt (Let's Encrypt ist gut).
  • Die vom Server gesendete Zertifikatskette enthält alle erforderlichen Zertifikate von Zwischenzertifizierungsstellen.
  • Das Zertifikat enthält ein Feld für den alternativen Antragstellernamen mit dem DNS-Namen Ihres MX-Servers.

Sie können den konfigurierten Server mit dem Zertifikat mit dem folgenden Befehl überprüfen:

[ "$(LANG=C openssl s_client -connect MX.EXAMPLE.COM:25 -starttls smtp -verify_hostname MX.EXAMPLE.COM < /dev/null 2>&1 | fgrep 'error')" = "" ] && echo OK || echo FAIL 

Dabei ist MX.EXAMPLE.COM der Domänenname Ihres MX-Servers. Um den Standard vollständig einzuhalten, ist es ratsam zu überprüfen, ob der gewünschte Domainname nicht nur im allgemeinen Namen des Zertifikats, sondern zumindest im alternativen Antragstellernamen vorhanden ist.

Richtlinienbuchung


Um Ihre Domain als Unterstützung einer sicheren Verbindung mit ihr zu kennzeichnen, müssen Sie die MTA-STS-Richtlinie veröffentlichen. Führen Sie dazu die folgenden einfachen Schritte in der angegebenen Reihenfolge aus (Beispiele für die Domain example.com).

1. Platzieren bei

  https://mta-sts.example.com/.well-known/mta-sts.txt 

Textdatei des Formulars:

 Version: STSv1
 Modus: erzwingen
 mx: mail.example.com
 mx: * .example.net
 mx: backupmx.example.com
 max_age: 604800

Die Datei muss mit dem Inhaltstyp angegeben werden: text / plain. Weiterleitungen sind nicht zulässig. Zeilenvorschübe müssen entweder LF oder CRLF sein. Leere Zeilen sind nicht erlaubt. Die letzte Zeile endet möglicherweise mit einem Zeilenvorschub oder nicht damit - beide Optionen sind zulässig. Leerzeichen vor dem Doppelpunkt und am Zeilenanfang sind nicht zulässig. Der leere Raum nach dem Doppelpunkt ist in beliebiger Menge zulässig. Leerzeichen (Leerzeichen, Tabulatoren usw.) am Ende jeder Zeile werden ignoriert.

Feldwerte:

version : format version. Es sollte immer gleich "STSv1" sein.
Modus : Richtlinienmodus. Mögliche Optionen: keine, testen, erzwingen. Der Erzwingungsmodus entspricht der normalen Funktionsweise des Standards - für die Verbindung zum Server ist das richtige Zertifikat und eine stabile TLS-Verbindung erforderlich. Im Testmodus müssen Sie versuchen, eine sichere Verbindung zu verwenden. Im Fehlerfall senden Sie jedoch auf jeden Fall eine E-Mail mit einer Administratorbenachrichtigung über den TLSRPT-Mechanismus. Der Modus "Kein" entspricht der Situation, als ob die Richtlinie überhaupt nicht veröffentlicht wurde. Dieser Modus ist nützlich, um eine Richtlinie ordnungsgemäß zu deaktivieren.
mx : Ein oder mehrere Felder mit den Namen aller zulässigen MX-Domänenserver. Wie Sie dem Beispiel entnehmen können, sind Vorlagen zulässig, jedoch nur als untergeordnete Domäne.
max_age : Die Zeit in Sekunden, in der die Richtlinie zwischengespeichert werden kann und während der Absender sie weiterhin verwenden können, wenn die Richtlinie nicht mehr verfügbar ist. Aufgrund dieser Standardfunktion ist das Deaktivieren von STS schneller, wenn eine neue Richtlinie ohne Modus veröffentlicht wird.

2. Erstellen Sie einen TXT-Datensatz _mta-sts.example.com mit dem Inhalt des Formulars:

  v = STSv1;  id = 20160831085700Z; 

Leerzeichen um ein Semikolon können beliebig in beliebiger Menge angeordnet werden. An anderen Stellen ist Leerzeichen nicht zulässig. Das letzte Semikolon kann entweder vorhanden sein oder fehlen.

Feldwerte:

v : Formatversion. Es muss immer das erste Feld sein, es muss immer gleich STSv1 sein.
id : eindeutige Kennung der veröffentlichten Richtlinie. Es kann sich um eine Zeichenfolge mit einer Länge von 1 bis 32 Zeichen handeln, die aus Buchstaben von Registern und Zahlen besteht. Das Ändern des ID-Werts ist ein Signal an die Absender, dass die Richtlinie aktualisiert wurde. Daher müssen Sie die Richtlinie aktualisieren, indem Sie zuerst eine neue Richtliniendatei veröffentlichen und dann die ID im TXT-Datensatz ändern.

Von nun an senden Mailserver, die MTA-STS unterstützen, E-Mails nur noch über eine sichere zertifikatauthentifizierte Verbindung an Ihre Domain. Hier enden die meisten Handbücher, aber der interessanteste Teil besteht darin, die MTA-STS-Richtlinie beim Senden von E-Mails von Ihrem eigenen Server abzurufen.

Am interessantesten


Die Hauptschwierigkeit besteht darin, dass dieser Standard von Mailservern, einschließlich Postfix, nicht unterstützt wird. Diese unangenehme Kleinigkeit sollte uns jedoch nicht aufhalten.

Die Suche nach einer Lösung führte mich zum Mailinglisten-Archiv der Postfix-Benutzer, in dem das Timing dieses Standards besprochen wurde. In einem Beitrag weist Witsa Venema, Autorin von Postfix, auf die bevorzugte Richtung für die Implementierung dieser Funktionalität hin - die Verwendung eines externen Servers zur Suche nach TLS-Richtlinien. Es wird vorgeschlagen, die Konfigurationsanweisung des Formulars zu verwenden:

  smtp_policy_maps = socketmap: inet: host: port: name 

Ich habe einen solchen Server implementiert, um die MTA-STS-Richtlinie zu erhalten.

Quellcode
Paket in PyPI

Der Anwendung fehlen einige der von RFC8461 vorgeschriebenen Funktionen, z. B. proaktives Abrufen von Richtlinien, Berichte und Begrenzen der Häufigkeit von Richtlinienanforderungen. Die Hauptfunktion - Erkennen und Zwischenspeichern der TLS-Richtlinie - wird jedoch ausgeführt.

Die App benötigt Python 3.5.3+. Die Installation und Konfiguration dieses Dämons kann mithilfe der folgenden Schritte erfolgen.

Paketinstallation


Es reicht aus, den Befehl auszuführen:

 pip3 install postfix-mta-sts-resolver 

Hier werden alternative Installationsmethoden beschrieben.

Konfigurationsdatei erstellen


Wenn Sie mit den Standardeinstellungen zufrieden sind, reicht der Befehl aus

 touch /etc/postfix/mta-sts-daemon.yml 

Andernfalls kann die Konfiguration dem Beispiel entnommen und auf Ihre Anforderungen zugeschnitten werden.

Der wichtigste Parameter ist meiner Meinung nach der Parameter strict_testing. Wenn der Wert auf true gesetzt ist (standardmäßig false), gibt die Anwendung auch für Domänen mit einer Richtlinie im Testmodus eine sichere Richtlinie zurück. Dieses Verhalten ist gegen den Standard, aber aus praktischen Gründen ratsam: Wenn der Domaininhaber die STS-Richtlinie auch im Testmodus veröffentlicht hat, ist er wahrscheinlich bereit dafür. Das heißt, dann wird heute die Mail von gmail.com über eine zuverlässige Verbindung gesendet.

Startorganisation


Im Fall von systemd reicht es aus, eine einfache Einheitendatei in /etc/systemd/system/mta-sts-daemon.service abzulegen

Danach müssen Sie die Systemkonfiguration erneut lesen, den Autorun des Dämons aktivieren und starten:

 systemctl daemon-reload systemctl enable mta-sts-daemon.service systemctl start mta-sts-daemon.service 

Gesundheitscheck


Angenommen, der Standardport wird verwendet, der Befehl

 /usr/sbin/postmap -q dismail.de socketmap:inet:127.0.0.1:8461:postfix 

sollte bringen

  sichere Übereinstimmung = mx1.dismail.de 

Stellen Sie eine Verbindung zu Postfix her


Fügen Sie eine Zeile zu main.cf hinzu:

 smtp_policy_maps = socketmap:inet:127.0.0.1:8461:postfix 

Postfix neu starten:

 systemctl reload postfix.service 

Wenn alles richtig gemacht wurde, dann für STS-Verbindungen im Protokoll /var/log/mail.info

  Vertrauenswürdige TLS-Verbindung hergestellt 

Datensätze werden angezeigt

  Verifizierte TLS-Verbindung hergestellt 


Fazit


Wenn Sie an diesen Ort gelangen, bedeutet dies höchstwahrscheinlich:

  • Sie lesen den Artikel ohne ein einziges Bild.
  • Von Tag zu Tag sinkt die Wahrscheinlichkeit, dass E-Mails in Ihrer Domain abgefangen werden, da andere E-Mail-Dienste den neuen Standard implementieren.

Source: https://habr.com/ru/post/de424961/


All Articles