S/MIME Deel 3: Plug and Play voor On-Premises Veilige E-mail

Bird

1 dec 2019

E-mail

1 min read

S/MIME Deel 3: Plug and Play voor On-Premises Veilige E-mail

Belangrijkste punten

    • S/MIME-integratie voor lokale MTA's: leer hoe u ondertekende en versleutelde e-mailstromen kunt injecteren in PowerMTA, Momentum of SparkPost SMTP, terwijl u bestaande DKIM- en nalevingsinstellingen behoudt.

    • Hybride beveiligingsmodel: combineer S/MIME-encryptie + DKIM-ondertekening om zowel de echtheid van het bericht als de privacy van de inhoud in gereguleerde omgevingen te garanderen.

    • Implementatiestroom: configureer omgevingsvariabelen (SMTP_HOST, inloggegevens, sleutels), voer de --sign --encrypt --send_smtp workflow uit en valideer afleverrapporten.

    • Prestatie-inzicht: tests tonen aan dat de snelheid vrijwel identiek is voor SMTP versus API-injectie (~60 ms per bericht, 200–280 ms voor grotere bestanden).

    • Beveiligingsrichtlijnen: sla privésleutels en API-wachtwoorden op in beperkte bestanden (chmod 0700), gebruik STARTTLS en geauthenticeerde SMTP-sessies.

    • Toepassingsgevallen: ondernemingen die verouderde mailsystemen moderniseren, kunnen end-to-end encryptie uitbreiden zonder bestaande infrastructuur op te geven.

Q&A Hoogtepunten

  • Waarom S/MIME aanpassen voor on-prem servers in plaats van cloud API's?

    Veel gereguleerde industrieën (bank- en gezondheidszorgsectoren) moeten e-mail ter plaatse bewaren. Deze aanpak behoudt de controle over de berichtstroom en voegt moderne cryptografische bescherming toe.

  • Hoe werkt SMTP-injectie met PowerMTA of Momentum?

    U injecteert volledig gevormde S/MIME-berichten naar de lokale luisteraar (poort 25 of privé-VLAN). Deze MTA's behandelen vervolgens DKIM-signering en levering zoals gebruikelijk.

  • Is S/MIME compatibel met DKIM?

    Ja — DKIM ondertekent het bericht na S/MIME-encryptie, zodat authenticatie- en integriteitscontroles intact blijven.

  • Hoe bescherm ik mijn SMTP-credentials en -sleutels?

    Exporteer omgevingsvariabelen alleen in vergrendelde scripts en gebruik bestandsrechten om de toegang tot uzelf te beperken (chmod 0700 my_envs.sh).

  • Wat moet ik monitoren na de setup?

    Afleveringslatentie (API vs SMTP), TLS-handshake succespercentage, DKIM/S-MIME validatieresultaten en foutlogboeken voor "relaying denied" of ontbrekende authenticatie.

  • Wie profiteert het meest van deze configuratie?

    Organisaties die zelf-hosted mailgateways gebruiken en die encryptie van compliance-niveau vereisen, maar toch plug-and-play tools willen zonder het herschrijven van mailpijplijnen.

In dit deel zullen we bekijken hoe de tool kan worden aangepast om mailstromen in te voegen in on-premises platforms zoals PowerMTA en Momentum.

In deel 1 hadden we een snelle tour van S/MIME, waarbij we keken naar het ondertekenen en versleutelen van onze berichtstromen over een reeks e-mailcliënten. Voor organisaties die S/MIME-versleuteling implementeren, wordt het begrijpen van hoe je ontvanger publieke sleutels efficiënt kunt verzamelen cruciaal voor schaalbare, veilige e-mailoperaties. Deel 2 leidde ons door een eenvoudig commandoregelhulpmiddel om e-mails te ondertekenen en versleutelen, en deze vervolgens via SparkPost te verzenden.

In dit deel kijken we hoe het hulpmiddel kan worden aangepast om e-mailstromen in on-premises platforms zoals Port25 PowerMTA en Momentum te injecteren.

OK – laten we beginnen!

In deel 1 hadden we een snelle tour van S/MIME, waarbij we keken naar het ondertekenen en versleutelen van onze berichtstromen over een reeks e-mailcliënten. Voor organisaties die S/MIME-versleuteling implementeren, wordt het begrijpen van hoe je ontvanger publieke sleutels efficiënt kunt verzamelen cruciaal voor schaalbare, veilige e-mailoperaties. Deel 2 leidde ons door een eenvoudig commandoregelhulpmiddel om e-mails te ondertekenen en versleutelen, en deze vervolgens via SparkPost te verzenden.

In dit deel kijken we hoe het hulpmiddel kan worden aangepast om e-mailstromen in on-premises platforms zoals Port25 PowerMTA en Momentum te injecteren.

OK – laten we beginnen!

In deel 1 hadden we een snelle tour van S/MIME, waarbij we keken naar het ondertekenen en versleutelen van onze berichtstromen over een reeks e-mailcliënten. Voor organisaties die S/MIME-versleuteling implementeren, wordt het begrijpen van hoe je ontvanger publieke sleutels efficiënt kunt verzamelen cruciaal voor schaalbare, veilige e-mailoperaties. Deel 2 leidde ons door een eenvoudig commandoregelhulpmiddel om e-mails te ondertekenen en versleutelen, en deze vervolgens via SparkPost te verzenden.

In dit deel kijken we hoe het hulpmiddel kan worden aangepast om e-mailstromen in on-premises platforms zoals Port25 PowerMTA en Momentum te injecteren.

OK – laten we beginnen!

1. Aan de slag

Het installeren van de tool, het verkrijgen van uw sleutels, enz. is precies hetzelfde als voorheen. Wanneer je een on-premises e-mailsysteem gebruikt zoals PowerMTA of Momentum, ben je al verantwoordelijk voor het instellen van verzenddomeinen, DKIM-sleutels, enz. Organisaties die on-premises systemen gebruiken, moeten ook vaak uitdagingen met betrekking tot e-mailarchiveringssystemen aanpakken voor naleving van regelgeving en vereisten voor gegevensopslag. Wat we nu moeten doen, is een manier bieden om de volledig gevormde S/MIME-berichten in uw servers te injecteren.

Het installeren van de tool, het verkrijgen van uw sleutels, enz. is precies hetzelfde als voorheen. Wanneer je een on-premises e-mailsysteem gebruikt zoals PowerMTA of Momentum, ben je al verantwoordelijk voor het instellen van verzenddomeinen, DKIM-sleutels, enz. Organisaties die on-premises systemen gebruiken, moeten ook vaak uitdagingen met betrekking tot e-mailarchiveringssystemen aanpakken voor naleving van regelgeving en vereisten voor gegevensopslag. Wat we nu moeten doen, is een manier bieden om de volledig gevormde S/MIME-berichten in uw servers te injecteren.

Het installeren van de tool, het verkrijgen van uw sleutels, enz. is precies hetzelfde als voorheen. Wanneer je een on-premises e-mailsysteem gebruikt zoals PowerMTA of Momentum, ben je al verantwoordelijk voor het instellen van verzenddomeinen, DKIM-sleutels, enz. Organisaties die on-premises systemen gebruiken, moeten ook vaak uitdagingen met betrekking tot e-mailarchiveringssystemen aanpakken voor naleving van regelgeving en vereisten voor gegevensopslag. Wat we nu moeten doen, is een manier bieden om de volledig gevormde S/MIME-berichten in uw servers te injecteren.

2. SMTP-injectie naar Port25 PowerMTA

PowerMTA ondersteunt verschillende manieren van berichteninjectie, waaronder een bestandsophaaldirectory, SMTP en een API. SMTP is de methode die hier wordt gebruikt.

Om de eenvoudigst mogelijke installatie te illustreren, zullen we de S/MIME-tools op dezelfde server als PowerMTA installeren. We injecteren berichten naar de listener, die standaard openstaat op TCP-poort 25 en alleen lokaal verkeer accepteert.

export SMTP_HOST=localhost

(Als je die stap vergeet, zie je: "Omgevingsvariabele SMTP_HOST niet ingesteld – stoppen" wanneer je probeert te draaien.)

We hebben de privésleutel van de afzender (steve@thetucks.com.pem) en de openbare sleutel van de ontvanger (steve.tuck@sparkpost.com.crt) al aanwezig. De eerste paar regels van het berichtenbestand zijn:

To: SteveT <steve.tuck@sparkpost.com>
From: Steve <steve@thetucks.com>
Subject: This is a message created using HEML
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Language: en-GB
Content-Transfer-Encoding: 7bit

We verzenden het bericht met:

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

We zien:

Opened SMTP connection (plain)  
Host: localhost  
Port: 25  
User: ""  
Password: ""  
Sending: tests/fancy-HTML-to-smt.eml  
From: Steve <steve@thetucks.com>  
To: SteveT <steve.tuck@sparkpost.com>  
OK - in 0.028 seconds

Het bericht arriveert snel in de inbox en wordt in Mac Mail gerapporteerd als ondertekend en versleuteld.

Email from Avocado showing a marketing message with security features enabled, displayed in Mac Mail as signed and encrypted.

Bonusfunctie: DKIM met PowerMTA

DKIM is vrij eenvoudig te configureren en werkt gelukkig samen met S/MIME. De stappen zijn:

  • Gebruik de PowerMTA DKIM Wizard site om de privésleutel voor het verzenddomein (in mijn geval, mypmta.thetucks.com.pem) en de inhoud van het publieke DNS TXT-record te creëren.

  • Maak het DNS TXT-record met een gekozen selector. Bijvoorbeeld, ik gebruikte selector pmta201811. Geldige selector tekens zijn gedefinieerd hier.

  • Plaats het mypmta.thetucks.com.pem-bestand op de server in de directory /etc/pmta .

  • Voeg het volgende toe aan mijn /etc/pmta/config en herstart de pmta-service. (Hier zijn deze directieven op globale schaal geschreven; op een productiesysteem zou je ze liever onder een virtual-mta willen toevoegen.)

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

Het DNS-record wordt goedgekeurd via MX Toolbox, en DKIM is nu actief.

MX Toolbox interface showing successful DKIM record verification with all tests passing for email authentication security.

PowerMTA ondersteunt verschillende manieren van berichteninjectie, waaronder een bestandsophaaldirectory, SMTP en een API. SMTP is de methode die hier wordt gebruikt.

Om de eenvoudigst mogelijke installatie te illustreren, zullen we de S/MIME-tools op dezelfde server als PowerMTA installeren. We injecteren berichten naar de listener, die standaard openstaat op TCP-poort 25 en alleen lokaal verkeer accepteert.

export SMTP_HOST=localhost

(Als je die stap vergeet, zie je: "Omgevingsvariabele SMTP_HOST niet ingesteld – stoppen" wanneer je probeert te draaien.)

We hebben de privésleutel van de afzender (steve@thetucks.com.pem) en de openbare sleutel van de ontvanger (steve.tuck@sparkpost.com.crt) al aanwezig. De eerste paar regels van het berichtenbestand zijn:

To: SteveT <steve.tuck@sparkpost.com>
From: Steve <steve@thetucks.com>
Subject: This is a message created using HEML
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Language: en-GB
Content-Transfer-Encoding: 7bit

We verzenden het bericht met:

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

We zien:

Opened SMTP connection (plain)  
Host: localhost  
Port: 25  
User: ""  
Password: ""  
Sending: tests/fancy-HTML-to-smt.eml  
From: Steve <steve@thetucks.com>  
To: SteveT <steve.tuck@sparkpost.com>  
OK - in 0.028 seconds

Het bericht arriveert snel in de inbox en wordt in Mac Mail gerapporteerd als ondertekend en versleuteld.

Email from Avocado showing a marketing message with security features enabled, displayed in Mac Mail as signed and encrypted.

Bonusfunctie: DKIM met PowerMTA

DKIM is vrij eenvoudig te configureren en werkt gelukkig samen met S/MIME. De stappen zijn:

  • Gebruik de PowerMTA DKIM Wizard site om de privésleutel voor het verzenddomein (in mijn geval, mypmta.thetucks.com.pem) en de inhoud van het publieke DNS TXT-record te creëren.

  • Maak het DNS TXT-record met een gekozen selector. Bijvoorbeeld, ik gebruikte selector pmta201811. Geldige selector tekens zijn gedefinieerd hier.

  • Plaats het mypmta.thetucks.com.pem-bestand op de server in de directory /etc/pmta .

  • Voeg het volgende toe aan mijn /etc/pmta/config en herstart de pmta-service. (Hier zijn deze directieven op globale schaal geschreven; op een productiesysteem zou je ze liever onder een virtual-mta willen toevoegen.)

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

Het DNS-record wordt goedgekeurd via MX Toolbox, en DKIM is nu actief.

MX Toolbox interface showing successful DKIM record verification with all tests passing for email authentication security.

PowerMTA ondersteunt verschillende manieren van berichteninjectie, waaronder een bestandsophaaldirectory, SMTP en een API. SMTP is de methode die hier wordt gebruikt.

Om de eenvoudigst mogelijke installatie te illustreren, zullen we de S/MIME-tools op dezelfde server als PowerMTA installeren. We injecteren berichten naar de listener, die standaard openstaat op TCP-poort 25 en alleen lokaal verkeer accepteert.

export SMTP_HOST=localhost

(Als je die stap vergeet, zie je: "Omgevingsvariabele SMTP_HOST niet ingesteld – stoppen" wanneer je probeert te draaien.)

We hebben de privésleutel van de afzender (steve@thetucks.com.pem) en de openbare sleutel van de ontvanger (steve.tuck@sparkpost.com.crt) al aanwezig. De eerste paar regels van het berichtenbestand zijn:

To: SteveT <steve.tuck@sparkpost.com>
From: Steve <steve@thetucks.com>
Subject: This is a message created using HEML
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Language: en-GB
Content-Transfer-Encoding: 7bit

We verzenden het bericht met:

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

We zien:

Opened SMTP connection (plain)  
Host: localhost  
Port: 25  
User: ""  
Password: ""  
Sending: tests/fancy-HTML-to-smt.eml  
From: Steve <steve@thetucks.com>  
To: SteveT <steve.tuck@sparkpost.com>  
OK - in 0.028 seconds

Het bericht arriveert snel in de inbox en wordt in Mac Mail gerapporteerd als ondertekend en versleuteld.

Email from Avocado showing a marketing message with security features enabled, displayed in Mac Mail as signed and encrypted.

Bonusfunctie: DKIM met PowerMTA

DKIM is vrij eenvoudig te configureren en werkt gelukkig samen met S/MIME. De stappen zijn:

  • Gebruik de PowerMTA DKIM Wizard site om de privésleutel voor het verzenddomein (in mijn geval, mypmta.thetucks.com.pem) en de inhoud van het publieke DNS TXT-record te creëren.

  • Maak het DNS TXT-record met een gekozen selector. Bijvoorbeeld, ik gebruikte selector pmta201811. Geldige selector tekens zijn gedefinieerd hier.

  • Plaats het mypmta.thetucks.com.pem-bestand op de server in de directory /etc/pmta .

  • Voeg het volgende toe aan mijn /etc/pmta/config en herstart de pmta-service. (Hier zijn deze directieven op globale schaal geschreven; op een productiesysteem zou je ze liever onder een virtual-mta willen toevoegen.)

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

Het DNS-record wordt goedgekeurd via MX Toolbox, en DKIM is nu actief.

MX Toolbox interface showing successful DKIM record verification with all tests passing for email authentication security.

3. SMTP Injectie Naar Momentum

Momentum ondersteunt verschillende manieren van berichtinvoer, inclusief API en SMTP. SMTP is de methode die hier wordt gebruikt, naar een host die al Momentum draait. We laten de configuratie ongewijzigd, omdat het al de mogelijkheid heeft om inkomende invoer van andere goedgekeurde hosts te accepteren.

Dit is een kleinere versie van een productie-opstelling, waar "generation"-nodes en MTA-nodes gescheiden zijn, maar nauw verbonden via een privaat VLAN en load-balancers, die interne SMTP-invoerverkeer dragen.


Diagram showing email flow from a generation server to on-premises MTA (Mail Transfer Agent) via SMTP protocol.


De S/MIME-tools zijn zoals eerder geïnstalleerd, en we zullen berichten invoeren naar het adres van de SMTP-host (MTA):

export SMTP_HOST=xx.xx.xx.xx # stel hier je eigen MTA / VIP-adres in

Zoals eerder, hebben we de privésleutel van de afzender (steve@thetucks.com.pem) en de openbare sleutel van de ontvanger (steve.tuck@sparkpost.com.crt) al aanwezig op de "generation"-node. De eerste paar regels van het berichtenbestand komen overeen met deze adressen.

We verzenden het bericht vanaf de "generation"-node met exact hetzelfde commando als eerder, en het bericht verschijnt in de inbox.

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

Zoals je zou verwachten, co-existeert S/MIME ook probleemloos met Momentum's DKIM signing.

Momentum ondersteunt verschillende manieren van berichtinvoer, inclusief API en SMTP. SMTP is de methode die hier wordt gebruikt, naar een host die al Momentum draait. We laten de configuratie ongewijzigd, omdat het al de mogelijkheid heeft om inkomende invoer van andere goedgekeurde hosts te accepteren.

Dit is een kleinere versie van een productie-opstelling, waar "generation"-nodes en MTA-nodes gescheiden zijn, maar nauw verbonden via een privaat VLAN en load-balancers, die interne SMTP-invoerverkeer dragen.


Diagram showing email flow from a generation server to on-premises MTA (Mail Transfer Agent) via SMTP protocol.


De S/MIME-tools zijn zoals eerder geïnstalleerd, en we zullen berichten invoeren naar het adres van de SMTP-host (MTA):

export SMTP_HOST=xx.xx.xx.xx # stel hier je eigen MTA / VIP-adres in

Zoals eerder, hebben we de privésleutel van de afzender (steve@thetucks.com.pem) en de openbare sleutel van de ontvanger (steve.tuck@sparkpost.com.crt) al aanwezig op de "generation"-node. De eerste paar regels van het berichtenbestand komen overeen met deze adressen.

We verzenden het bericht vanaf de "generation"-node met exact hetzelfde commando als eerder, en het bericht verschijnt in de inbox.

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

Zoals je zou verwachten, co-existeert S/MIME ook probleemloos met Momentum's DKIM signing.

Momentum ondersteunt verschillende manieren van berichtinvoer, inclusief API en SMTP. SMTP is de methode die hier wordt gebruikt, naar een host die al Momentum draait. We laten de configuratie ongewijzigd, omdat het al de mogelijkheid heeft om inkomende invoer van andere goedgekeurde hosts te accepteren.

Dit is een kleinere versie van een productie-opstelling, waar "generation"-nodes en MTA-nodes gescheiden zijn, maar nauw verbonden via een privaat VLAN en load-balancers, die interne SMTP-invoerverkeer dragen.


Diagram showing email flow from a generation server to on-premises MTA (Mail Transfer Agent) via SMTP protocol.


De S/MIME-tools zijn zoals eerder geïnstalleerd, en we zullen berichten invoeren naar het adres van de SMTP-host (MTA):

export SMTP_HOST=xx.xx.xx.xx # stel hier je eigen MTA / VIP-adres in

Zoals eerder, hebben we de privésleutel van de afzender (steve@thetucks.com.pem) en de openbare sleutel van de ontvanger (steve.tuck@sparkpost.com.crt) al aanwezig op de "generation"-node. De eerste paar regels van het berichtenbestand komen overeen met deze adressen.

We verzenden het bericht vanaf de "generation"-node met exact hetzelfde commando als eerder, en het bericht verschijnt in de inbox.

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

Zoals je zou verwachten, co-existeert S/MIME ook probleemloos met Momentum's DKIM signing.

4. SMTP-injectie richting SparkPost

In deel 2 gebruikten we de SparkPost transmissions REST API om berichten in te voeren. Natuurlijk is het ook mogelijk om berichten in te voeren in SparkPost met behulp van SMTP. We stelden de omgevingsvariabelen zo in:

export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>

Als u de SparkPost EU-gehoste service gebruikt, stel dan SMTP_HOST in als smtp.eu.sparkpostmail.com.
(Zie hier voor meer opties – bijvoorbeeld kunt u injecteren op poort 2525 in plaats van 587.)

De onderstaande uitvoer laat zien dat STARTTLS wordt gebruikt, samen met de gebruikersnaam en het wachtwoord.

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

U zult zien:

Opened SMTP connection (STARTTLS)  
Host: smtp.sparkpostmail.com  
Port: 587  
User: "SMTP_Injection"  
Password: "****************************************"  
Sending: tests/fancy-HTML-to-smt.eml  
From: Steve <steve@thetucks.com>  
To: SteveT <steve.tuck@sparkpost.com>  
OK - in 0.057 seconds

Het wachtwoord wordt afgedrukt met vervangende *** tekens, zodat uw sleutel niet wordt gecompromitteerd als iemand over uw schouder meekijkt.

Uw Referenties Beveiligen

Let op dat omgevingsvariabelen kunnen worden ingesteld in een shellscriptbestand of vergelijkbaar, om herhaaldelijk typen te besparen. Zorg ervoor dat u uw wachtwoorden/API-sleutels beveiligt door toegang tot dat bestand alleen voor uzelf te beperken. Als uw referentie-instellingsbestand bijvoorbeeld my_envs.sh heet, voer dan uit:

chmod 0700 my_envs.sh

SMTP-Gerelateerde Waarschuwingen Die U Kunt Zien

De SMTP-injectie van SparkPost is vrij streng, zoals u zou verwachten van een openbare dienst. Als u het SMTP-poortnummer niet hebt ingesteld, ziet u een waarschuwing:

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

Als u de SMTP-gebruikersnaam niet hebt ingesteld of het wachtwoord niet hebt ingesteld, ziet u:

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

Deze foutmeldingen worden simpelweg gerapporteerd zoals ze zijn uit de Python SMTP-bibliotheek, vandaar de opmaak.

In deel 2 gebruikten we de SparkPost transmissions REST API om berichten in te voeren. Natuurlijk is het ook mogelijk om berichten in te voeren in SparkPost met behulp van SMTP. We stelden de omgevingsvariabelen zo in:

export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>

Als u de SparkPost EU-gehoste service gebruikt, stel dan SMTP_HOST in als smtp.eu.sparkpostmail.com.
(Zie hier voor meer opties – bijvoorbeeld kunt u injecteren op poort 2525 in plaats van 587.)

De onderstaande uitvoer laat zien dat STARTTLS wordt gebruikt, samen met de gebruikersnaam en het wachtwoord.

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

U zult zien:

Opened SMTP connection (STARTTLS)  
Host: smtp.sparkpostmail.com  
Port: 587  
User: "SMTP_Injection"  
Password: "****************************************"  
Sending: tests/fancy-HTML-to-smt.eml  
From: Steve <steve@thetucks.com>  
To: SteveT <steve.tuck@sparkpost.com>  
OK - in 0.057 seconds

Het wachtwoord wordt afgedrukt met vervangende *** tekens, zodat uw sleutel niet wordt gecompromitteerd als iemand over uw schouder meekijkt.

Uw Referenties Beveiligen

Let op dat omgevingsvariabelen kunnen worden ingesteld in een shellscriptbestand of vergelijkbaar, om herhaaldelijk typen te besparen. Zorg ervoor dat u uw wachtwoorden/API-sleutels beveiligt door toegang tot dat bestand alleen voor uzelf te beperken. Als uw referentie-instellingsbestand bijvoorbeeld my_envs.sh heet, voer dan uit:

chmod 0700 my_envs.sh

SMTP-Gerelateerde Waarschuwingen Die U Kunt Zien

De SMTP-injectie van SparkPost is vrij streng, zoals u zou verwachten van een openbare dienst. Als u het SMTP-poortnummer niet hebt ingesteld, ziet u een waarschuwing:

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

Als u de SMTP-gebruikersnaam niet hebt ingesteld of het wachtwoord niet hebt ingesteld, ziet u:

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

Deze foutmeldingen worden simpelweg gerapporteerd zoals ze zijn uit de Python SMTP-bibliotheek, vandaar de opmaak.

In deel 2 gebruikten we de SparkPost transmissions REST API om berichten in te voeren. Natuurlijk is het ook mogelijk om berichten in te voeren in SparkPost met behulp van SMTP. We stelden de omgevingsvariabelen zo in:

export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>

Als u de SparkPost EU-gehoste service gebruikt, stel dan SMTP_HOST in als smtp.eu.sparkpostmail.com.
(Zie hier voor meer opties – bijvoorbeeld kunt u injecteren op poort 2525 in plaats van 587.)

De onderstaande uitvoer laat zien dat STARTTLS wordt gebruikt, samen met de gebruikersnaam en het wachtwoord.

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

U zult zien:

Opened SMTP connection (STARTTLS)  
Host: smtp.sparkpostmail.com  
Port: 587  
User: "SMTP_Injection"  
Password: "****************************************"  
Sending: tests/fancy-HTML-to-smt.eml  
From: Steve <steve@thetucks.com>  
To: SteveT <steve.tuck@sparkpost.com>  
OK - in 0.057 seconds

Het wachtwoord wordt afgedrukt met vervangende *** tekens, zodat uw sleutel niet wordt gecompromitteerd als iemand over uw schouder meekijkt.

Uw Referenties Beveiligen

Let op dat omgevingsvariabelen kunnen worden ingesteld in een shellscriptbestand of vergelijkbaar, om herhaaldelijk typen te besparen. Zorg ervoor dat u uw wachtwoorden/API-sleutels beveiligt door toegang tot dat bestand alleen voor uzelf te beperken. Als uw referentie-instellingsbestand bijvoorbeeld my_envs.sh heet, voer dan uit:

chmod 0700 my_envs.sh

SMTP-Gerelateerde Waarschuwingen Die U Kunt Zien

De SMTP-injectie van SparkPost is vrij streng, zoals u zou verwachten van een openbare dienst. Als u het SMTP-poortnummer niet hebt ingesteld, ziet u een waarschuwing:

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

Als u de SMTP-gebruikersnaam niet hebt ingesteld of het wachtwoord niet hebt ingesteld, ziet u:

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

Deze foutmeldingen worden simpelweg gerapporteerd zoals ze zijn uit de Python SMTP-bibliotheek, vandaar de opmaak.

Welke is sneller – SMTP of API?

Eerlijk gezegd, is S/MIME waarschijnlijk geen gebruiksgeval met een hoog volume, maar het was slechts een kwestie van tijd voordat we met hetzelfde gereedschap en twee uitvoeropties een race zouden houden!

Het "Avocado" e-mail testbestand dat hier is gebruikt, is ongeveer 19KB. Het herhalen van de tests 10 keer via een bash-lus toonde aan dat de gemiddelde tijden vergelijkbaar waren voor SMTP en API, rond de 60 milliseconden per bericht, wat behoorlijk snel is. In dit geval injecteerden we vanaf een medium EC2-instance in dezelfde hostingregio als SparkPost.com, wat een goede manier is om de netwerk-rondreis tijden laag te houden.

Bij herhaling met een groter testbestand (577KB), duurde de API ongeveer 200 milliseconden, terwijl SMTP 280 milliseconden per bericht duurde – nog steeds indrukwekkend voor een bestandsgrootte die 30x groter is. Natuurlijk kunnen uw resultaten variëren afhankelijk van locatie, internetcongestie etc., maar prestaties zullen waarschijnlijk geen probleem zijn.

Als u echt maximale prestaties nodig heeft, is een goed startpunt het lanceren van een vastgesteld aantal gelijktijdige injectieprocessen/sessies volgens onze transmissie best practices aanbevelingen – bijvoorbeeld vanuit een supervisor-taak.

Eerlijk gezegd, is S/MIME waarschijnlijk geen gebruiksgeval met een hoog volume, maar het was slechts een kwestie van tijd voordat we met hetzelfde gereedschap en twee uitvoeropties een race zouden houden!

Het "Avocado" e-mail testbestand dat hier is gebruikt, is ongeveer 19KB. Het herhalen van de tests 10 keer via een bash-lus toonde aan dat de gemiddelde tijden vergelijkbaar waren voor SMTP en API, rond de 60 milliseconden per bericht, wat behoorlijk snel is. In dit geval injecteerden we vanaf een medium EC2-instance in dezelfde hostingregio als SparkPost.com, wat een goede manier is om de netwerk-rondreis tijden laag te houden.

Bij herhaling met een groter testbestand (577KB), duurde de API ongeveer 200 milliseconden, terwijl SMTP 280 milliseconden per bericht duurde – nog steeds indrukwekkend voor een bestandsgrootte die 30x groter is. Natuurlijk kunnen uw resultaten variëren afhankelijk van locatie, internetcongestie etc., maar prestaties zullen waarschijnlijk geen probleem zijn.

Als u echt maximale prestaties nodig heeft, is een goed startpunt het lanceren van een vastgesteld aantal gelijktijdige injectieprocessen/sessies volgens onze transmissie best practices aanbevelingen – bijvoorbeeld vanuit een supervisor-taak.

Eerlijk gezegd, is S/MIME waarschijnlijk geen gebruiksgeval met een hoog volume, maar het was slechts een kwestie van tijd voordat we met hetzelfde gereedschap en twee uitvoeropties een race zouden houden!

Het "Avocado" e-mail testbestand dat hier is gebruikt, is ongeveer 19KB. Het herhalen van de tests 10 keer via een bash-lus toonde aan dat de gemiddelde tijden vergelijkbaar waren voor SMTP en API, rond de 60 milliseconden per bericht, wat behoorlijk snel is. In dit geval injecteerden we vanaf een medium EC2-instance in dezelfde hostingregio als SparkPost.com, wat een goede manier is om de netwerk-rondreis tijden laag te houden.

Bij herhaling met een groter testbestand (577KB), duurde de API ongeveer 200 milliseconden, terwijl SMTP 280 milliseconden per bericht duurde – nog steeds indrukwekkend voor een bestandsgrootte die 30x groter is. Natuurlijk kunnen uw resultaten variëren afhankelijk van locatie, internetcongestie etc., maar prestaties zullen waarschijnlijk geen probleem zijn.

Als u echt maximale prestaties nodig heeft, is een goed startpunt het lanceren van een vastgesteld aantal gelijktijdige injectieprocessen/sessies volgens onze transmissie best practices aanbevelingen – bijvoorbeeld vanuit een supervisor-taak.

Samenvattend ...

We hebben gezien hoe de SparkPost API-gebaseerde tool die in Deel 2 wordt gebruikt, is bijgewerkt om SMTP-injectie te ondersteunen voor on-premises MTAs zoals Port25 PowerMTA en Momentum in een verscheidenheid aan configuraties, evenals met SparkPost.

Dat is het voor nu! Veel plezier met verzenden.

We hebben gezien hoe de SparkPost API-gebaseerde tool die in Deel 2 wordt gebruikt, is bijgewerkt om SMTP-injectie te ondersteunen voor on-premises MTAs zoals Port25 PowerMTA en Momentum in een verscheidenheid aan configuraties, evenals met SparkPost.

Dat is het voor nu! Veel plezier met verzenden.

We hebben gezien hoe de SparkPost API-gebaseerde tool die in Deel 2 wordt gebruikt, is bijgewerkt om SMTP-injectie te ondersteunen voor on-premises MTAs zoals Port25 PowerMTA en Momentum in een verscheidenheid aan configuraties, evenals met SparkPost.

Dat is het voor nu! Veel plezier met verzenden.

Andere nieuws

Lees meer uit deze categorie

A person is standing at a desk while typing on a laptop.

Het complete AI-native platform dat met uw bedrijf meegroeit.

A person is standing at a desk while typing on a laptop.

Het complete AI-native platform dat met uw bedrijf meegroeit.