Es gibt keinen "Smarthost-Fingerabdruck". Hierbei handelt es sich um Fingerabdrücke für TLS-Zertifikate, die in diesem Zusammenhang zufällig zu SMTP-Relay-Servern (Smarthost-Servern) gehören - aber hier gilt alles für IMAPS, HTTPS, FTPS ... alles, was TLS verwendet.
Fingerabdrücke für TLS-Zertifikate hängen in der Regel überhaupt nicht vom Client ab: Sie sind ein SHA1- (oder SHA256-) Hash des Serverzertifikats, und Server verwenden im Allgemeinen das gleiche Zertifikat für alle Benutzer.
Eine Ausnahme könnten Server hinter einem Lastenausgleich sein: Große Sites verfügen möglicherweise über mehrere Server hinter einem einzigen Namen, und obwohl sie sich möglicherweise ein Zertifikat teilen, ist dies bei weitem nicht garantiert - sie können auch problemlos 20 oder 50 Zertifikate gleichzeitig verwenden.
Und selbst für denselben Server ist es sehr wahrscheinlich, dass sich der Fingerabdruck ändert. Er ändert sich bei jeder Erneuerung des Zertifikats (weil sich das Gültigkeitsdatum ändert) oder wird aus einem anderen Grund erneut ausgestellt (neuer privater Schlüssel oder neuer Aussteller). oder neuer Domainname ...)
Früher wurden Zertifikate in der Vergangenheit für 3–5 Jahre ausgestellt (und manuell installiert), die neue Praxis besteht jedoch darin, den Prozess zu automatisieren und kurzlebige Zertifikate zu verwenden, normalerweise 90 oder sogar 45 Tage. Google macht dies seit ca. 2014, und so funktioniert Let's Encrypt seit dem ersten Tag. (Nach CA / B-Forum-Regeln sind selbst "langlebige" Standard "TLS-Zertifikate jetzt auf 2 Jahre begrenzt.)
Daher ist die tls_fingerprint
Option nur dann nützlich, wenn Sie genau wissen , wann sich das Zertifikat ändern soll (z. B. wenn Sie die Person sind, die es ändert). Andernfalls wird die Konfiguration alle ein bis zwei Monate unterbrochen.
In der Praxis aktualisieren zumindest Linux-Distributionen ihre CA-Zertifikatpakete relativ schnell. (Ich meine, wenn nicht, sind Sie sicher, dass Sie dieses Betriebssystem überhaupt auf Ihrem Computer ausführen möchten?)
Ich würde also sagen, dass der Artikel versucht, seine Leser mit den falschen Problemen zu erschrecken. Ein viel größeres Anliegen ist, dass die CA-Zertifizierungspakete häufig ein paar zwielichtige, staatlich kontrollierte Zertifizierungsstellen aus verschiedenen Ländern enthalten.
Alternative 1: Wenn Sie möchten, können Sie einen benutzerdefinierten tls_trust_file
Code erstellen, der nur die einzige Zertifizierungsstelle enthält, die der Provider verwendet: Geben Sie msmtp an, nur DigiCert zu vertrauen und sonst nichts. Dies ist eine gebräuchliche Methode, die als "CA-Pinning" bezeichnet wird. Es besteht jedoch immer noch die Möglichkeit eines Bruchs, da Server-Administratoren frei wählen können, mit welchen CAs sie Geschäfte tätigen.
Alternative 2: Einige Programme unterstützen einen anderen Fingerabdrucktyp - SPKI-Fingerabdrücke (Hashes von subjectPublicKeyInfo). Diese stellen nur das rohe Schlüsselpaar dar und enthalten keine zusätzlichen Zertifikatmetadaten. Ein Server kann sein Zertifikat regelmäßig erneuern, wobei dasselbe Schlüsselpaar und somit derselbe SPKI-Fingerabdruck beibehalten wird.
(Selbst wenn Ihr Client SPKI-Fingerprinting unterstützt (dies gilt jedoch nicht für msmtp), hat dies nur dann einen Vorteil, wenn Sie wissen, dass die Server-Administratoren ihre Zertifikate auf diese Weise erneuern. Meistens nicht.)