MTA-STS steht für Mail Transfer Agent-Strict Transport Security und ist relativ neu wenn es um Sicherheit bei Mailservern geht. Im RFC-8461 steht 2018 drin, also doch relativ frisch am Markt.
Aber was macht den nun MTA-STS? Ganz einfach ausdrückt teilt man einem Sendenden Mailserver mit, das dieser bitte zwingend eine TLS Verbindung aufbauen soll. Diese Mitteilung passiert natürlich wie so vieles über die DNS Einstellungen der Domaine, aber hier auch zusätzlich über einen Text-Datei Eintrag auf einem sicheren Webserver. Der Server von welchem die E-Mail abgesendet wird, speichert sich diese Datei für einen angegebenen Zeitraum ebenfalls ab.
Das Verfahren ist zwar nicht ganz so sicher wie DANE mit DNSSEC im Kombination, ist aber wieder ein Schritt weiter in Richtung Absicherung des eigenen Mailverkehrs.
MTA-STS für Mailcow einrichten
Eine Datei mit dem Namen mta-sts.txt muss auf einem abgesicherten Webserver hinterlegt werden. Leider auch nicht auf irgendeinem Webserver, sondern genau auf einer bestimmten Subdomain und Ordnerpfad. Zum Glück ist das beim Mailcow relativ einfach.
Der Pfad muss lauten “ https://mta-sts.domain.de/.well-known/mta-sts.txt „. Keine doofen Fragen, der Pfad MUSS so lauten. Und jetzt noch die Schnitte oben drauf, das ganze MUSS über ein gültig signiertes Zertifikat verfügen. Die kostenlose Variante Let’s Encrypt ist vollkommen ok.
version: STSv1 mode: enforce max_age: 15552000 mx: mail.schroederdennis.de mx: *.schroederdennis.de
Kurze Erklärung, bei Mode kann man zwischen „enforce“ und „testing“ wählen. Enforce ist natürlich für den produktiven Einsatz. Max_Age gibt die Gültigkeit dieser Information an und unter den MX Records findet man die gültigen MX Records für den Mailserver. Die Version ist aktuell nicht veränderbar und bleibt auf STSv1 stehen.
Im Mailcow findet Ihr den Ordner .well-known unter /opt/mailcow-dockerized/data/web/.well-known. Dort legt Ihr bitte die Datei mit eurem angepassten Inhalt ab. Diese sollte dann frei lesbar im Browser aufrufbar sein. Für die Domain schroederdennis.de könnt Ihr diese lesen unter https://mta-sts.schroederdennis.de/.well-known/mta-sts.txt.
Selbst Google hat so einen Eintrag im Internet stehen. Das könnt Ihr hier sehen: https://mta-sts.gmail.com/.well-known/mta-sts.txt
3 DNS Einträge sind nötig für MTA-STS
mta-sts muss natürlich als A Record hinterlegt werden für die Abfrage der mta-sts.txt Datei.
Name: mta-sts Typ: A Wert: <DEINE-SERVER-IP-ADRESSE>
_mta-sts als TXT Record um überhaupt das MTA zu aktivieren. (Unterstrich nicht vergessen)
Name: _mta-sts Typ: TXT Wert: v=STSv1; id=20220231031800Z
Der ID Wert ist lediglich eine Versionsnummer in Form von einem Zeitstempel. Könnt Ihr so stehen lassen oder eben an den aktuellen Tag anpassen.
_smtp._tls als TXT Record dienst als Troubleshooting Zwecke. Wenn irgendwas irgendwo nicht stimmen sollte, dann erhaltet Ihr eine E-Mail von dem Server mit dem Problem mit ein paar Informationen.
Name: _smtp._tls Typ: TXT Wert: v=TLSRPTv1; rua=mailto:monitoring@schroederdennis.de
Achtet bitte penible auf die Schreibweise. Die führenden Unterstriche sind absolut wichtig, sonst klappt das ganze Thema nicht.
Bevor Ihr dieses Thema hier angeht, kümmert euch bitte zunächst um die SPF, DKIM und DMARC Einträge. Die sind meiner Meinung nach deutlich wichtiger.
Folgender Link führt euch zum Thema:
Mailcow – SPF, DKIM und DMARC erklärt und einrichten
10. Februar 2022 um 13:47 Uhr
Super!
10. Februar 2022 um 16:15 Uhr
Hi Sascha, hab mir gerade dein Page angeguckt.. Bock auf ein paar Jobs? Meld dich mal bei mir.
Gruß
Dennis
12. Februar 2022 um 13:11 Uhr
Servus. Quatschen doch im Discord.
Beste Grüße fürs Wochenende.
Gruss
Sascha
12. Februar 2022 um 13:28 Uhr
Dann mach mal auf dich aufmerksam.. Mir schreiben 800.000 Leute am Tag!
11. Februar 2022 um 10:11 Uhr
Den mta-sts-Record sollte man lieber als CNAME auf mail.example.com setzen, wenn man auch IPv6 unterstützen möchte. Alternativ kann man natürlich auch den A und einen AAAA-Record anlegen.
11. Februar 2022 um 17:58 Uhr
Ich krige kein zertifikat ! Keine ahnung wiso warte jez schon 1h oder länger . aber ich krige immer noch den zertifikats fehler wen ich die url aufruffe !
11. Februar 2022 um 18:15 Uhr
Und dein PC kennt die Domain und die IP ?
18. Februar 2022 um 07:16 Uhr
Ja kennt er mail.haefligermedia.ch problem los auf zu ruffen ! Bei https://mta-sts.haefligermedia.ch/.well-known/mta-sts.txt kennt er auch kommt einfach eine sicherheits warnung vom browser da es kein zertifikat gibt !
20. Februar 2022 um 11:18 Uhr
Hab dies jez mal über cloudflare leiten lassen . ist die datei auf zu ruffen und ist auch verschlüsselt durch cloudflare ! Weis jedoch nicht ob dies für die funktjonalität aus reicht ………
12. Februar 2022 um 17:10 Uhr
Servus zusammen,
bin leider auch gescheitert.
Habe erst ein A-Record erstellt und nachdem das nicht funktionierte, bin dann später auf CNAME geswitcht. (mta-sts.XXXX.de)
Funktioniert auch soweit. Gebe ich die Domain ein, lande ich auf der MailCow Seite.
In der mailcow.conf wurden drei verschiedene Varianten versucht:
1. mta-sts nur zu ADDITIONAL_SAN
2. mta-sts nur zu ADDITIONAL_SERVER_NAMES
3. mta-sta in beide
–> Leider wird von MailCow jedes mal nur autodiscover.XXX, autoconfig.XXX und mail.XXX gefunden und neu angefragt. Das mta-sts bekommt keine beachtung.
Derzeit bin ich dadurch sogar im Rate-Limit von Lets Encrypt…
Noch eine Idee?
LG und herzlichen Dank
13. Februar 2022 um 11:47 Uhr
Mittlerweile scheint auch der mta-sts Eintrag bei MailCow angekommen zu sein. Entweder hatte ich falsch geschaut oder der DNS-Server war zu langsam. Wie dem auch sei. Eine Validation ob alles passt, ist erst in 168 Stunden oder so möglich. Doof. Aber naja. Abwarten. Außer jemand hat einen Trick wie ich über MailCow an einen neuen Lets-Encrypt Account rankomme 😀
13. Februar 2022 um 12:42 Uhr
Hallo,
die Mailcow Reihe ist echt super! – Danke dafür!
Ich hätte dazu eine kurze Frage, kann man sich mit einem Hetzner Cloud Server auch die Feste IP heimleiten. z.B. man installiert dort eine PF/OPN- Sense und arbeitet mir VPN Wireguard?
also Beispielweise so:
https://administrator.de/tutorial/feste-ips-zuhause-in-pfsense-via-gre-tunnel-567618.html
evtl. wäre das mal ein Videothema 😀
Vielen Dank
Gruß Rocker
13. Februar 2022 um 16:08 Uhr
Hey Dennis,
was hast Du gemacht, nachdem Du gemerkt hattest, dass Du den A-Record zuerst hättest einrichten müssen, bevor Du das mit dem mta-sts-Eintrag machst. Ich war Dir nämlich blind gefolgt und habe nun das Thema, dass mein Zertifikat auf der entsprechenden mta-sts-Seite als unsicher eingestuft wird. Da bist Du relativ schnell über das Thema docker-compose down und docker-compose up hinweg gegangen, weil das die Mehrheit wohl schon beherrscht. Bei ist das leider anders und zumindest dieser Neustart hatte bei mir keinen Erfolg gebracht. Kannst Du mir noch einen Tipp geben?
Viele Grüße und vielen herzlichen Dank für diese tolle Videoreihe!
Thomas
13. Februar 2022 um 16:50 Uhr
Habe es gerade selbst geschafft dank eines Kommentares unter dem Video selbst. Habe in der mailcow.conf den Eintrag bei ADDITIONAL_SAN= gemacht und den Befehl docker-compose down && docker-compose up -d ausgeführt. Danach hat das mit dem Zertifikat gefunzt. Cool.
Viele Grüße,
Thomas
15. Februar 2022 um 08:20 Uhr
Moin.
Dennis: Super Video-Reihe. Unterhaltsam und technisch fundiert rübergebracht. Macht einfach Spaß 🙂
Hat noch jemand das Problem, das die MailCow NICHT die Zertifikate für mta-sts abruft ?
A + AAAA Records sind angelegt, ADDITIONAL_SERVER_NAMES ist auch gesetzt.
Ich teste mal das ADDITIONAL_SAN….
VG
Matthias
15. Februar 2022 um 08:27 Uhr
Ergänzung_ ADDITIONAL_SAN hats gebracht….
24. Februar 2022 um 18:33 Uhr
hi,
vieleicht kann mir jemand helfen :
habe auf meinen VServer(Netcup) Mailcow installiert, soweit so gut. Denke habe auch alle DNS Einträge richtig gesetzt.
Jedoch werde ich immer mit meiner Öffentlichen IP gepannt, und somit ist Mailcow nicht mehr zu erreichen ! Die hier gezeigte IP habe ich nicht mehr !
Unbanning 80.145.207.21/32
23.02.2022, 21:08:55 crit Banning 80.145.207.21/32 for 120 minutes
23.02.2022, 21:08:55 warn 80.145.207.21 matched rule id 3 (warning: p5091cf15.dip0.t-ipconnect.de[80.145.207.21]: SASL PLAIN authentication failed: )
23.02.2022, 21:08:43 warn 1 more attempts in the next 3600 seconds until 80.145.207.21/32 is banned
23.02.2022, 21:08:43 warn 80.145.207.21 matched rule id 3 (warning: p5091cf15.dip0.t-ipconnect.de[80.145.207.21]: SASL LOGIN authentication failed: UGFzc3dvcmQ6)
23.02.2022, 21:08:21 warn 2 more attempts in the next 3600 seconds until 80.145.207.21/32 is banned
23.02.2022, 21:08:21 warn 80.145.207.21 matched rule id 3 (warning: p5091cf15.dip0.t-ipconnect.de[80.145.207.21]: SASL PLAIN authentication failed: UGFzc3dvcmQ6)
Die o.g. IP habe ich nicht mehr, Warum ist das denn so ? Ich kann mir keinen Reim darauf machen.
Diese emails bekomme ich auch:
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf
% Note: this output has been filtered.
% To receive output for a database update, use the „-B“ flag.
% Information related to ‚80.128.0.0 – 80.146.159.255‘
% Abuse contact for ‚80.128.0.0 – 80.146.159.255‘ is ‚abuse@telekom.de‘
inetnum: 80.128.0.0 – 80.146.159.255
netname: DTAG-DIAL16
descr: Deutsche Telekom AG
org: ORG-DTAG1-RIPE
country: DE
admin-c: DTIP
tech-c: DTST
status: ASSIGNED PA
mnt-by: DTAG-NIC
created: 2002-01-08T09:31:27Z
last-modified: 2014-06-18T06:15:30Z
source: RIPE
organisation: ORG-DTAG1-RIPE
org-name: Deutsche Telekom AG
org-type: OTHER
address: Group Information Security, SDA/Abuse
address: Deutsche Telekom Allee 9
address: DE 64295 Darmstadt
remarks: abuse contact in case of Spam,
hack attacks, illegal activity,
violation, scans, probes, etc.
mnt-ref: DTAG-NIC
mnt-by: DTAG-NIC
abuse-c: DTAG4-RIPE
created: 2014-06-17T11:47:04Z
last-modified: 2021-02-22T13:35:19Z
source: RIPE # Filtered
person: DTAG Global IP-Addressing
address: Deutsche Telekom AG
address: Darmstadt, Germany
phone: +49 180 2 33 1000
nic-hdl: DTIP
mnt-by: DTAG-NIC
created: 2003-01-29T10:22:59Z
last-modified: 2019-05-14T12:55:19Z
source: RIPE # Filtered
person: Security Team
address: Deutsche Telekom AG
address: Darmstadt, Germany
phone: +49 180 2 33 1000
nic-hdl: DTST
mnt-by: DTAG-NIC
created: 2003-01-29T10:31:11Z
last-modified: 2019-05-14T12:56:39Z
source: RIPE # Filtered
% Information related to ‚80.144.0.0/13AS3320‘
route: 80.144.0.0/13
descr: Deutsche Telekom AG, Internet service provider
origin: AS3320
member-of: AS3320:RS-PA-TELEKOM
mnt-by: DTAG-RR
created: 2014-07-16T06:11:09Z
last-modified: 2014-07-16T06:11:09Z
source: RIPE
% This query was served by the RIPE Database Query Service version 1.102.2 (ANGUS)
25. März 2022 um 10:09 Uhr
Moin!
Ich nutzte NPM (NginxProxyManager) als ReverseProxy, weil ich noch weitere „Apps“ auf meinem Webserver nutzen möchte.
Leider bekomme ich:
403 Forbidden
nginx/1.21.6
beim Aufruf von https://mta-sts.digga.de/.well-known/mta-sts.txt
Checking disked.de from www12-azure.checktls.com:
[000.437] MTASTS policy–>url https://mta-sts.digga.de/.well-known/mta-sts.txt
[000.438] MTASTS policy–>status 403 Forbidden
[000.438] MTASTS policy–>error could not retrieve policy: 403 Forbidden
Hab schon die Vermutung, dass im NPM > Advanced > Custom Nginx Configuration irgendwas reinballern muss.
Nee Idee?
13. Juli 2022 um 22:00 Uhr
Hallo Dennis,
ich musste den mailserver in der mailcow.conf auch bei
ADDITIONAL_SAN=mta-sts…..
eintragen
erst dann ging der test durch
(siehe: https://return2.net/mail-security-mta-sts-mailcow/)
VG Jörg
23. August 2023 um 15:44 Uhr
Mahlzeit,
Kann es sein das der Ordner /opt/mailcow-dockerized/data/web/.well-known nicht mehr existiert? Also bei mir ist er nicht zusehen
LG
Nico
8. Februar 2024 um 00:26 Uhr
Hi, danke für den Beitrag.
Sperre ich damit eventuell Server aus, die aus irgendwelchen Gründen nicht verschlüsseln wollen? Gibt es soetwas überhaupt? Nicht das am Ende nur noch die Hälfte aller Mails ankommen.
VG
31. August 2024 um 19:51 Uhr
Hallo Denis,
finde es super wie detailliert und mit wieviel Energie Du Deine Anleitungen gestaltest, Respekt. Habe aber eine wichtige Nachfrage: Du empfiehlst für MTA-STS ein Certificate von Let’s Encrypt, diese muss aber mehrmals jährlich automatisch vom Herausgeber aktualisiert werden, dieser sitzt in den USA und will über Port 80 durch Deine Firewall die Aktualisierung finalisieren. FindestvDubesbnicht zweifelhaft im Sinne der DSGVO und im Sinne von vielfältigen Security Problemen, so etwas auf einem Mailserver zu installieren. Istvesbdabnivht eine Frage der Zeit, wann er dem Beschuss durch die Firewall über Port 80 nicht mehr standhält ? Welches CERT statt dieses würdest Du statt dessen empfehlen, esnkann auch was kosten ? B
Lg
Mario