
In Teil 1 hatten wir eine kurze Einführung in S/MIME, wobei wir uns das Signieren und die Verschlüsselung unserer Nachrichtenströme über eine Reihe von E-Mail-Clients angesehen haben. S/MIME-Nachrichten können signiert werden (was den Nachweis der Identität des Absenders erbringt), verschlüsselt werden (um den Nachrichteninhalt geheim zu halten) oder beides.

In dieser Folge werden wir:
Einige einfache Befehlszeilentools zum Signieren und Verschlüsseln von E-Mails installieren
Ihren Sender-Schlüssel/Zertifikat zum Signieren erhalten
Eine signierte Nachricht über SparkPost senden und die empfangene Nachricht ansehen
Optional: Ihr Empfängerzertifikat für die Verschlüsselung erhalten
Eine signierte und verschlüsselte Nachricht über SparkPost senden und die empfangene Nachricht ansehen
Ein praktisches eigenständiges Tool „mimeshow“ ausprobieren, um sich die E-Mail-Dateiinterna anzusehen.
OK – los geht's!
1. Installiere die Tools
Die Demonstrationstools sind auf GitHub verfügbar, komplett mit Installationsanweisungen. Sie werden möglicherweise das „Build Passing“-Logo bemerken – Travis und pytest überprüfen automatisch den Build-Status. Beachten Sie, dass diese Tools nicht offiziell von SparkPost unterstützt werden, aber ich habe versucht, sie robust und benutzerfreundlich zu gestalten.
Wenn Sie etwas vertraut mit Python und pip sind, sollte die Installation recht vertraut wirken. Die Pipfile kümmert sich automatisch um die externen Abhängigkeiten für Sie. Sobald es fertig ist, können Sie überprüfen, ob alles installiert ist, indem Sie
Sie sollten den freundlichen Hilfetext sehen. Als nächstes müssen wir…
2. Holen Sie sich Ihren Sender-Schlüssel / Ihr Zertifikat für die Signierung
3. Senden Sie eine unterschriebene Nachricht über SparkPost
Nun lassen Sie uns eine echte Versanddomain verwenden, die gemäß dem SparkPost New User Guide eingerichtet ist. Wir haben die Absenderzertifikats- und Schlüsseldateien im aktuellen Verzeichnis:
Die Datei tests/declaration.eml ist im Projekt enthalten. Es ist nur eine Textdatei, sodass Sie die From:-Adresse an Ihre eigene Versanddomain und die To:-Adresse an Ihren Testempfänger anpassen können. Der Anfang der Datei sieht so aus:
To: Bob <bob.lumreeker@gmail.com> From: Steve <steve@thetucks.com> Betreff: Hier ist unsere Erklärung MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Wenn es in der Abfolge menschlicher Ereignisse notwendig wird …
Setzen Sie Ihren API-Schlüssel:
Senden Sie die E-Mail:
Sie werden sehen:
Verbindung zu https://api.sparkpost.com/api/v1 geöffnet. Senden von tests/declaration.eml From: Steve <steve@thetucks.com> To: Bob <bob.lumreeker@gmail.com> OK - in 1,15 Sekunden
Ein oder zwei Sekunden später kommt die E-Mail in Bobs Inbox an. Thunderbird zeigt es mit einem roten Punkt auf dem Umschlag an, was auf eine gültige Absendesignatur hinweist.

Erfolg! Beenden Sie Ihren Kaffee, den haben Sie sich verdient. Wenn Sie Probleme haben, überprüfen Sie, ob Ihre From:-Adresse in der E-Mail-Datei mit dem Namen Ihrer .crt- und .pem-Dateien übereinstimmt.
4. Nachrichten verschlüsseln
Um eine Nachricht zu verschlüsseln, benötigen Sie den öffentlichen Schlüssel Ihres Empfängers in Zertifikatsform. Dies ist eine Textdatei, die so aussieht:
Bag Attributes friendlyName: s COMODO CA Limited ID #2 localKeyID: 32 84 AB 9C 56 5C 80 C6 89 4D 40 46 DD D4 7C 71 E8 CD ED C1 subject=/emailAddress=bob.lumreeker@gmail.com issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Client Authentication and Secure Email CA -----BEGIN CERTIFICATE----- sieht hier wie zufällige Zeichen aus -----END CERTIFICATE-----
Im Tests-Verzeichnis gibt es ein Dummy-Empfängerzertifikat für bob@example.com, sodass Sie damit üben können, bevor Sie ein echtes Zertifikat haben:
Sie werden sehen:
Sie werden bemerken, dass die Länge der Ausgabe deutlich länger ist als bei einer verschlüsselten Nachricht, da sie viele zusätzliche Informationen sowie die verschlüsselte Nachricht selbst enthält.
4.1 Senden einer verschlüsselten, signierten Nachricht über SparkPost
Lassen Sie uns eine verschlüsselte Nachricht an eine echte E-Mail-Adresse senden. Sie können denselben Prozess wie zuvor befolgen (selbstsigniert oder ein Anbieter wie Comodo), um einen öffentlichen Schlüssel/Zertifikat für Ihre eigenen Empfängeradressen zu erhalten. Sie benötigen nur die .crt-Datei – der Empfänger muss Ihnen niemals seinen privaten Schlüssel (.p12 und .pem Dateien) geben.
Ich habe die Datei bob.lumreeker@gmail.com.crt für meinen vorgesehenen Empfänger – entspricht der From:-Adresse in meiner Datei.
Hier ist der Befehl zum Senden:
Ich sehe:
Verbindung zu https://api.sparkpost.com/api/v1 geöffnet Senden tests/declaration.eml From: Steve <steve@thetucks.com> To: Bob <bob.lumreeker@gmail.com> OK - in 1.168 Sekunden
Die E-Mail wird in Thunderbird mit dem „roten Punkt“-Signatur-Icon und dem „Schloss“-verschlüsselten Icon angezeigt.

Sie können komplexe, HTML-basierte E-Mails mit Links und Bildern genauso einfach senden, wie im Teil 1 gezeigt. Einige Clients wie Thunderbird fragen nach Erlaubnis, externe Links und Bilder in verschlüsselten S/MIME-Nachrichten anzuzeigen, aber nur signierte Nachrichten werden gut in Clients wie Thunderbird und Gmail angezeigt:


Beachten Sie, dass das Dropdown „Verifizierte E-Mail-Adresse“ anzeigt.
Weitere Gedanken & Dinge, die zu beachten sind
Dieses Tool verfolgt einen super einfachen Ansatz, um die benötigten Schlüssel abzurufen – es sucht einfach nach benannten Dateien im aktuellen Verzeichnis. Komplexere Anordnungen, wie z.B. das Halten aller Schlüssel in einer Datenbank, könnten leicht hinzugefügt werden, aber ich wollte, dass der Code so einfach wie möglich bleibt.
Sie können andere Empfänger mit Cc: und Bcc: einbeziehen und sie werden zugestellt; dies könnte zu Archivierungszwecken nützlich sein. Empfangene signierte Nachrichten können von anderen Empfängern zusammen mit der Signatur angezeigt werden. Das Tool entfernt die Bcc:-Kopfzeile aus der zugestellten Nachricht (wie es ein Desktop-Mail-Client tun würde).
Um sicherzustellen, dass Nachrichten unverändert durch SparkPost gehen (was die Signatur brechen könnte), setzt das Tool API-Optionen für „transaktionales“ Mailing, wobei das Öffnen und das Klick-Tracking deaktiviert sind.
Wenn Sie Verschlüsselung verwenden, beachten Sie, dass das Tool die einzelne To:-Adresse dafür aufnimmt. Die anderen Empfänger können den Nachrichteninhalt nur entschlüsseln, wenn sie den privaten Schlüssel des To:-Empfängers haben. Wenn Sie beispielsweise sekundäre Empfänger nur als Protokoll der erfolgten Zustellungen verwenden, könnte das ohnehin in Ordnung sein.
Signiert, versiegelt, geliefert... ich bin dein
Das ist unser kurzer Überblick darüber, wie man S/MIME-Nachrichten über SparkPost signiert, versiegelt und versendet. Kurze Erinnerung: Das Demo-Projekt ist auf GitHub verfügbar, und ich habe versucht, es einfach zu installieren und zu verwenden.
Bonusfunktion: Anzeigen von MIME-Teilen mit „mimeshow“
RFC822 MIME-Multipart-Dateien sind für Menschen recht komplex zu lesen. Das Projekt beinhaltet ein eigenständiges Tool namens mimeshow, um dies zu erleichtern.
Dies nimmt alle E-Mail-Dateien, die Sie haben (nicht nur S/MIME), und zeigt die interne Struktur. Hier ist ein Beispiel:
Sie werden sehen:
Sie können es auch als Filter verwenden, um eine menschenlesbare Zusammenfassung der sparkpostSMIME-Ausgabe bereitzustellen:
Sie werden sehen:
Endlich…
Zusammengefasst – wir haben einige einfache Befehlszeilen-Tools zum Signieren und Verschlüsseln von E-Mails installiert (das GitHub-Repository enthält vollständige Installationsanweisungen).
Wir haben unseren Absender-Schlüssel/Zertifikat zum Signieren erhalten und eine signierte Nachricht über SparkPost gesendet. Wir haben ein Empfängerzertifikat zur Verschlüsselung erhalten und anschließend eine signierte und verschlüsselte Nachricht über SparkPost gesendet.
Zuletzt haben wir das praktische eigenständige Tool „mimeshow“ ausprobiert, um die E-Mail-Dateiinhalte anzusehen.
Das war's für jetzt! In unserer nächsten Ausgabe zeigen wir Ihnen, wie Sie diese S/MIME-Funktionalitäten auf lokale sichere E-Mail-Plattformen wie PowerMTA und Momentum erweitern können. Bis bald!