Erreichen

Grow

Manage

Automate

Erreichen

Grow

Manage

Automate

S/MIME Teil 3: Plug and Play für lokale sichere E-Mail

E-Mail

1 min read

S/MIME Teil 3: Plug and Play für lokale sichere E-Mail

E-Mail

1 min read

S/MIME Teil 3: Plug and Play für lokale sichere E-Mail

In diesem Teil werden wir uns ansehen, wie das Tool angepasst werden kann, um Mailströme in lokale Plattformen wie PowerMTA und Momentum zu injizieren.

In part 1 hatten wir eine schnelle Tour durch S/MIME und betrachteten die Signierung und Verschlüsselung unserer Nachrichtenströme über eine Reihe von Mail-Clients. Part 2 führte uns durch ein einfaches Kommandozeilen-Tool, um E-Mails zu signieren und zu verschlüsseln und sie dann über SparkPost zu senden.

In diesem Teil schauen wir uns an, wie das Tool angepasst werden kann, um Nachrichtenströme in lokale Plattformen wie Port25 PowerMTA und Momentum zu injizieren.

OK – los geht's!

1. Erste Schritte

Die Installation des Tools, das Abrufen Ihrer Schlüssel usw. ist genau wie zuvor. Wenn Sie ein lokales E-Mail-System wie PowerMTA oder Momentum verwenden, sind Sie bereits dafür verantwortlich, Versanddomains, DKIM-Schlüssel usw. einzurichten. Was wir jetzt tun müssen, ist, eine Möglichkeit bereitzustellen, die vollständig geformten S/MIME-Nachrichten in Ihre Server einzufügen.

2. SMTP-Injektion Richtung Port25 PowerMTA

PowerMTA unterstützt verschiedene Möglichkeiten der Nachrichteninjektion, einschließlich eines Datei-„Abhol-“Verzeichnisses, SMTP und einer API. SMTP ist die hier verwendete Methode.

Um die einfachstmögliche Konfiguration zu veranschaulichen, installieren wir die S/MIME-Tools auf dem gleichen Server wie PowerMTA. Wir injizieren Nachrichten an den Listener, der standardmäßig auf TCP-Port 25 geöffnet ist und nur lokalen Datenverkehr akzeptiert.

export SMTP_HOST=localhost

(Wenn Sie diesen Schritt vergessen, sehen Sie: „Umgebungsvariable SMTP_HOST nicht gesetzt – Stopp“ wenn Sie versuchen, auszuführen.)

Wir haben den privaten Schlüssel des Senders (steve@thetucks.com.pem) und den öffentlichen Schlüssel des Empfängers (steve.tuck@sparkpost.com.crt) bereits vorhanden. Die ersten Zeilen der Nachrichten Datei lauten:

An: SteveT <steve.tuck@sparkpost.com> Von: Steve <steve@thetucks.com> Betreff: Dies ist eine Nachricht, die mit HEML erstellt wurde MIME-Version: 1.0 Inhaltstyp: text/html; charset=utf-8 Inhaltssprache: en-GB Inhaltsübertragungscodierung: 7bit

Wir senden die Nachricht mit:

./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp

Wir sehen:

SMTP-Verbindung (unverschlüsselt) zu localhost, Port 25, Benutzer="", Passwort="" geöffnet Sende tests/fancy-HTML-to-smt.eml Von: Steve <steve@thetucks.com> An: SteveT <steve.tuck@sparkpost.com> OK - in 0,028 Sekunden

Die Nachricht trifft schnell im Posteingang ein und wird in Mac Mail als signiert und verschlüsselt gemeldet.

Bonusfunktion: DKIM mit PowerMTA

DKIM ist ziemlich einfach zu konfigurieren und koexistiert glücklich mit S/MIME. Die Schritte sind:

  • Verwenden Sie die PowerMTA DKIM Wizard-Seite, um den privaten Schlüssel der sendenden Domäne zu erstellen (in meinem Fall mypmta.thetucks.com.pem) und die Inhalte des öffentlichen DNS-TXT-Eintrags.

  • Richten Sie den DNS TXT-Eintrag mit einem gewählten Selektor ein. Zum Beispiel habe ich den Selektor pmta201811 verwendet. Gültige Selektorzeichen sind hier definiert.

  • Legen Sie die Datei mypmta.thetucks.com.pem auf dem Server im Verzeichnis /etc/pmta ab.

  • Fügen Sie das folgende zu meiner /etc/pmta/config hinzu und starten Sie den pmta-Dienst neu. (Hier sind diese Direktiven im globalen Bereich geschrieben; auf einem Produktionssystem möchten Sie sie möglicherweise unter einem virtuellen mta hinzufügen.)

host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *>    dkim-sign yes </domain>

Der DNS-Eintrag wird über MX Toolbox erfolgreich überprüft, und DKIM ist jetzt aktiv.

PowerMTA unterstützt verschiedene Möglichkeiten der Nachrichteninjektion, einschließlich eines Datei-„Abhol-“Verzeichnisses, SMTP und einer API. SMTP ist die hier verwendete Methode.

Um die einfachstmögliche Konfiguration zu veranschaulichen, installieren wir die S/MIME-Tools auf dem gleichen Server wie PowerMTA. Wir injizieren Nachrichten an den Listener, der standardmäßig auf TCP-Port 25 geöffnet ist und nur lokalen Datenverkehr akzeptiert.

export SMTP_HOST=localhost

(Wenn Sie diesen Schritt vergessen, sehen Sie: „Umgebungsvariable SMTP_HOST nicht gesetzt – Stopp“ wenn Sie versuchen, auszuführen.)

Wir haben den privaten Schlüssel des Senders (steve@thetucks.com.pem) und den öffentlichen Schlüssel des Empfängers (steve.tuck@sparkpost.com.crt) bereits vorhanden. Die ersten Zeilen der Nachrichten Datei lauten:

An: SteveT <steve.tuck@sparkpost.com> Von: Steve <steve@thetucks.com> Betreff: Dies ist eine Nachricht, die mit HEML erstellt wurde MIME-Version: 1.0 Inhaltstyp: text/html; charset=utf-8 Inhaltssprache: en-GB Inhaltsübertragungscodierung: 7bit

Wir senden die Nachricht mit:

./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp

Wir sehen:

SMTP-Verbindung (unverschlüsselt) zu localhost, Port 25, Benutzer="", Passwort="" geöffnet Sende tests/fancy-HTML-to-smt.eml Von: Steve <steve@thetucks.com> An: SteveT <steve.tuck@sparkpost.com> OK - in 0,028 Sekunden

Die Nachricht trifft schnell im Posteingang ein und wird in Mac Mail als signiert und verschlüsselt gemeldet.

Bonusfunktion: DKIM mit PowerMTA

DKIM ist ziemlich einfach zu konfigurieren und koexistiert glücklich mit S/MIME. Die Schritte sind:

  • Verwenden Sie die PowerMTA DKIM Wizard-Seite, um den privaten Schlüssel der sendenden Domäne zu erstellen (in meinem Fall mypmta.thetucks.com.pem) und die Inhalte des öffentlichen DNS-TXT-Eintrags.

  • Richten Sie den DNS TXT-Eintrag mit einem gewählten Selektor ein. Zum Beispiel habe ich den Selektor pmta201811 verwendet. Gültige Selektorzeichen sind hier definiert.

  • Legen Sie die Datei mypmta.thetucks.com.pem auf dem Server im Verzeichnis /etc/pmta ab.

  • Fügen Sie das folgende zu meiner /etc/pmta/config hinzu und starten Sie den pmta-Dienst neu. (Hier sind diese Direktiven im globalen Bereich geschrieben; auf einem Produktionssystem möchten Sie sie möglicherweise unter einem virtuellen mta hinzufügen.)

host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *>    dkim-sign yes </domain>

Der DNS-Eintrag wird über MX Toolbox erfolgreich überprüft, und DKIM ist jetzt aktiv.

PowerMTA unterstützt verschiedene Möglichkeiten der Nachrichteninjektion, einschließlich eines Datei-„Abhol-“Verzeichnisses, SMTP und einer API. SMTP ist die hier verwendete Methode.

Um die einfachstmögliche Konfiguration zu veranschaulichen, installieren wir die S/MIME-Tools auf dem gleichen Server wie PowerMTA. Wir injizieren Nachrichten an den Listener, der standardmäßig auf TCP-Port 25 geöffnet ist und nur lokalen Datenverkehr akzeptiert.

export SMTP_HOST=localhost

(Wenn Sie diesen Schritt vergessen, sehen Sie: „Umgebungsvariable SMTP_HOST nicht gesetzt – Stopp“ wenn Sie versuchen, auszuführen.)

Wir haben den privaten Schlüssel des Senders (steve@thetucks.com.pem) und den öffentlichen Schlüssel des Empfängers (steve.tuck@sparkpost.com.crt) bereits vorhanden. Die ersten Zeilen der Nachrichten Datei lauten:

An: SteveT <steve.tuck@sparkpost.com> Von: Steve <steve@thetucks.com> Betreff: Dies ist eine Nachricht, die mit HEML erstellt wurde MIME-Version: 1.0 Inhaltstyp: text/html; charset=utf-8 Inhaltssprache: en-GB Inhaltsübertragungscodierung: 7bit

Wir senden die Nachricht mit:

./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp

Wir sehen:

SMTP-Verbindung (unverschlüsselt) zu localhost, Port 25, Benutzer="", Passwort="" geöffnet Sende tests/fancy-HTML-to-smt.eml Von: Steve <steve@thetucks.com> An: SteveT <steve.tuck@sparkpost.com> OK - in 0,028 Sekunden

Die Nachricht trifft schnell im Posteingang ein und wird in Mac Mail als signiert und verschlüsselt gemeldet.

Bonusfunktion: DKIM mit PowerMTA

DKIM ist ziemlich einfach zu konfigurieren und koexistiert glücklich mit S/MIME. Die Schritte sind:

  • Verwenden Sie die PowerMTA DKIM Wizard-Seite, um den privaten Schlüssel der sendenden Domäne zu erstellen (in meinem Fall mypmta.thetucks.com.pem) und die Inhalte des öffentlichen DNS-TXT-Eintrags.

  • Richten Sie den DNS TXT-Eintrag mit einem gewählten Selektor ein. Zum Beispiel habe ich den Selektor pmta201811 verwendet. Gültige Selektorzeichen sind hier definiert.

  • Legen Sie die Datei mypmta.thetucks.com.pem auf dem Server im Verzeichnis /etc/pmta ab.

  • Fügen Sie das folgende zu meiner /etc/pmta/config hinzu und starten Sie den pmta-Dienst neu. (Hier sind diese Direktiven im globalen Bereich geschrieben; auf einem Produktionssystem möchten Sie sie möglicherweise unter einem virtuellen mta hinzufügen.)

host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *>    dkim-sign yes </domain>

Der DNS-Eintrag wird über MX Toolbox erfolgreich überprüft, und DKIM ist jetzt aktiv.

3. SMTP-Injektion in Richtung Momentum

Momentum unterstützt verschiedene Möglichkeiten der Nachrichten-Injektion, einschließlich API und SMTP. SMTP ist die hier verwendete Methode, in Richtung eines Hosts, auf dem Momentum bereits ausgeführt wird. Wir lassen seine Konfiguration unverändert, da es bereits die Fähigkeit hat, eingehende Injektionen von anderen zugelassenen Hosts zu akzeptieren.

Dies ist eine kleinere Version eines Produktions-Setups, bei dem „Generation“-Knoten und MTA-Knoten separat sind, aber über ein privates VLAN und Load-Balancer eng gekoppelt, die den internen SMTP-Injektionsverkehr tragen.




Die S/MIME-Tools sind wie zuvor installiert, und wir werden Nachrichten an die Adresse des SMTP-Hosts (MTA) injizieren:

export SMTP_HOST=xx.xx.xx.xx # setzen Sie hier Ihre eigene MTA / VIP-Adresse ein

Wie zuvor haben wir den privaten Schlüssel des Absenders (steve@thetucks.com.pem) und den öffentlichen Schlüssel des Empfängers (steve.tuck@sparkpost.com.crt) bereits auf dem „Generation“-Knoten vorhanden. Die ersten Zeilen der Nachrichtendatei entsprechen diesen Adressen.

Wir senden die Nachricht vom „Generation“-Knoten mit genau demselben Befehl wie zuvor, und die Nachricht erscheint im Inbox.

./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp

Wie zu erwarten, koexistiert S/MIME auch problemlos mit Momentum’s DKIM signing.

4. SMTP-Injektion in Richtung SparkPost

In Teil 2 haben wir die SparkPost Transmissions REST-API verwendet, um Nachrichten einzuspeisen. Natürlich ist es auch möglich, Nachrichten mit SMTP in SparkPost einzuspeisen. Wir setzen die Umgebungsvariablen so:

export SMTP_PASSWORD=<<YOUR API KEY HERE>> export SMTP_HOST=smtp.sparkpostmail.com export SMTP_USER=SMTP_Injection export SMTP_PORT=587

Wenn Sie den SparkPost EU-gehosteten Dienst verwenden, setzen Sie SMTP_HOST als smtp.eu.sparkpostmail.com.
(Siehe hier für weitere Optionen – zum Beispiel können Sie anstelle von 587 auch über Port 2525 einspeisen.)

Die untenstehende Ausgabe zeigt, dass STARTTLS zusammen mit dem Benutzernamen und dem Passwort verwendet wird.

./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp

Sie werden sehen:

SMTP-Verbindung (STARTTLS) zu smtp.sparkpostmail.com, Port 587, Benutzer="SMTP_Injection", Passwort="****************************************" geöffnet. Senden von tests/fancy-HTML-to-smt.eml Von: Steve <steve@thetucks.com> An: SteveT <steve.tuck@sparkpost.com> OK - in 0.057 Sekunden

Das Passwort wird mit Ersatzzeichen *** gedruckt, sodass Sie die Privatsphäre Ihres Schlüssels nicht gefährden, wenn jemand über Ihre Schulter schaut.

Sichern Ihrer Anmeldedaten

Beachten Sie, dass Umgebungsvariablen in einer Shell-Skriptdatei oder ähnlichem eingerichtet werden könnten, um das erneute Eintippen zu ersparen. Wenn Sie dies tun, schützen Sie bitte Ihre Passwörter/API-Schlüssel, indem Sie den Zugriff auf diese Datei nur auf sich selbst beschränken. Wenn Ihre Anmeldedatendatei beispielsweise my_envs.sh heißt, dann führen Sie aus:

chmod 0700 my_envs.sh

SMTP-bezogene Warnungen, die Sie sehen könnten

SparkPosts SMTP-Einspeisung ist ziemlich streng, wie Sie es von einem öffentlichen Dienst erwarten würden. Wenn Sie die SMTP-Portnummer nicht eingestellt haben, erhalten Sie eine Warnung:

{'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied')}

Wenn Sie den SMTP-Benutzernamen nicht eingestellt haben oder das Passwort nicht gesetzt haben, sehen Sie:

(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')

Diese Fehlermeldungen werden einfach so aus der Python SMTP-Bibliothek berichtet, daher die Formatierung.

Welcher ist schneller – SMTP oder API?

Ehrlich gesagt ist S/MIME wahrscheinlich kein häufiges Anwendungsgebiet, aber mit demselben Werkzeug zwei Ausgabeoptionen zu haben, verlangte geradezu danach, ein Rennen zu veranstalten!

Die hier verwendete “Avocado” E-Mail-Testdatei ist ca. 19KB groß. Die 10-fache Wiederholung des Tests über eine bash-Schleife zeigte, dass die durchschnittlichen Zeiten für SMTP und API ähnlich waren, etwa 60 Millisekunden pro Nachricht, was ziemlich schnell ist. In diesem Fall haben wir von einer mittleren EC2-Instanz in derselben Hosting-Region wie SparkPost.com gesendet, was ein guter Weg ist, um die Netzwerk-Rundlaufzeiten niedrig zu halten.

Bei Wiederholung mit einer größeren Testdatei (577KB) benötigte die API etwa 200 Millisekunden, während SMTP 280 Millisekunden pro Nachricht benötigte – immer noch beeindruckend für eine 30-mal größere Dateigröße. Natürlich kann die Leistung je nach Standort, Internetüberlastung usw. variieren, aber es ist unwahrscheinlich, dass die Leistung ein Problem darstellt.

Wenn Sie wirklich maximale Leistung benötigen, wäre ein guter Ausgangspunkt, eine feste Anzahl gleichzeitiger Injektionsprozesse/Sitzungen gemäß unseren Transmissions-Best Practices Empfehlungen zu starten – z.B. von einer Supervisor-Aufgabe.

Zusammenfassend ...

Wir haben gesehen, wie das auf der SparkPost API basierende Tool in Teil 2 aktualisiert wurde, um SMTP-Injection zu unterstützen und On-Premises MTAs wie Port25 PowerMTA und Momentum in einer Vielzahl von Konfigurationen zu unterstützen, ebenso wie mit SparkPost.

Das war es für jetzt! Viel Spaß beim Senden.

Abonnieren Sie unseren Newsletter.

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Abonnieren Sie unseren Newsletter.

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Abonnieren Sie unseren Newsletter.

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Pinterest-Logo
Uber-Logo
Square-Logo
Adobe-Logo
Meta-Logo
PayPal-Logo

Unternehmen

Datenschutzeinstellungen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Uber-Logo
Square-Logo
Adobe-Logo
Meta-Logo

Unternehmen

Datenschutzeinstellungen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.

Uber-Logo
Adobe-Logo
Meta-Logo

Erreichen

Grow

Manage

Automate

Ressourcen

Unternehmen

Newsletter

Bleiben Sie mit Bird auf dem Laufenden durch wöchentliche Updates in Ihrem Posteingang.

Durch die Übermittlung stimmen Sie zu, dass Bird Sie bezüglich unserer Produkte und Dienstleistungen kontaktieren darf.

Sie können sich jederzeit abmelden. Weitere Informationen zur Datenverarbeitung finden Sie in Birds Datenschutzerklärung.