S/MIME Deel 2: Ondertekend, verzegeld en bezorgd via SparkPost
Bird
31 dec 2018
1 min read

Belangrijkste punten
Premise: Deel 2 verschuift van de theorie van S/MIME naar de praktijk — het demonstreren van hoe je e-mails digitaal kunt ondertekenen en versleutelen met SparkPost als leveringsplatform.
Doel: Ontwikkelaars uitrusten met een lichte, opdrachtregel-workflow om uitgaande berichten te ondertekenen, handtekeningen te verifiëren en (optioneel) inhoud te versleutelen voor specifieke ontvangers.
Hoogtepunten:
Setup: Installeer de open-source demo-tools van GitHub (met geautomatiseerde Travis + pytest-controles). De Pipfile behandelt alle Python-afhankelijkheden.
Afzender sleutels:
Maak een zelfondertekend of CA-uitgegeven certificaat (
.p12) voor je e-mailidentiteit.Splits het op in privé- (
.pem) en openbare (.crt) bestanden voor gebruik door de ondertekeningshulpmiddel.
Ondertekening:
Gebruik het inbegrepen
sparkpostSMIME.pyscript om testberichten te ondertekenen (bijv.tests/declaration.eml).Bevestig handtekeningen visueel in clients zoals Thunderbird (rood puntpictogram).
Versleuteling:
Verkrijg het openbare certificaat (
.crt) van elke ontvanger.Voer de tool opnieuw uit om een ondertekend + versleuteld bericht te produceren.
Ontvangers kunnen verifiëren en ontsleutelen met hun privésleutels.
Levering via SparkPost:
Configureer een geldig zenddomein en API-sleutel.
Verstuur berichten via de API van SparkPost met uitschakelde tracking om de integriteit te behouden.
Extra hulpmiddel – mimeshow:
Toont leesbare RFC822 MIME-structuur voor debuggen of inspectie.
Praktische tips:
Houd bestandsnamen afgestemd op het From: adres.
Vermijd het wijzigen van de berichtinhoud na het ondertekenen.
Gebruik Bcc alleen voor archiefexemplaren — die ontvangers kunnen niet ontsleutelen als de e-mail versleuteld is naar een enkel To adres.
Q&A Hoogtepunten
Waarom S/MIME signing gebruiken?
Het authenticeert de afzender en zorgt voor de integriteit van het bericht — clients zoals Thunderbird tonen een visuele indicator wanneer de handtekening geldig is.
Hoe krijg ik mijn sender certificate?
Zelf ondertekenen via OpenSSL (voor testen) of verkrijg een vertrouwd certificaat van aanbieders zoals Comodo (gratis voor niet-commercieel gebruik).
Kan ik berichten versleutelen voor meerdere ontvangers?
Alleen als u de openbare sleutel van elke ontvanger heeft. Het demo-script versleutelt standaard naar het enkele 'To'-adres.
Welke beveiligingen zorgen ervoor dat handtekeningen niet kapotgaan tijdens het transport?
De tool stelt SparkPost API-opties in voor transactioneel verzenden en schakelt open/klik tracking uit, zodat de payload ongewijzigd wordt doorgegeven.
Wat is de rol van mimeshow?
Het analyseert ruwe e-mailbestanden en drukt hun multipartstructuur af — handig voor het inspecteren van S/MIME-handtekeningen, bijlagen en headers.
Wat is het volgende in de serie?
Deel 3 breidt deze S/MIME-functies uit naar on-premises beveiligde e-mailplatforms zoals PowerMTA en Momentum.
In deel 1 hebben we een snelle rondleiding gehad van S/MIME, waarbij we keken naar het ondertekenen en versleutelen van onze berichtenstromen over een reeks e-mailclients. S/MIME-berichten kunnen worden ondertekend (wat bewijs geeft van de identiteit van de afzender), versleuteld (waardoor de inhoud van het bericht geheim blijft), of beide.

In deze aflevering gaan we:
Een paar eenvoudige opdrachtregelhulpmiddelen installeren voor het ondertekenen en versleutelen van e-mail
Uw verzendersleutel / certificaat verkrijgen voor ondertekening
Een ondertekend bericht verzenden via SparkPost en het ontvangen bericht bekijken
Optioneel, het certificaat van uw ontvanger verkrijgen voor versleuteling
Een ondertekend en versleuteld bericht verzenden via SparkPost en het ontvangen bericht bekijken
Een handige standalone tool "mimeshow" proberen om het interne e-mailbestand te bekijken.
OK – laten we beginnen!
1. Installeer de tools
De demonstratietools zijn beschikbaar op GitHub, compleet met installatie-instructies. Je merkt misschien het "build passing" logo op – Travis en pytest controleren automatisch de buildstatus. Let op, deze tools worden niet officieel ondersteund door SparkPost, maar ik heb geprobeerd ze robuust en gemakkelijk te gebruiken te maken.
Als je enige bekendheid hebt met Python en pip, zou het installeren vrij vertrouwd moeten aanvoelen. De Pipfile zorgt automatisch voor de externe afhankelijkheden. Zodra het klaar is, kun je controleren of alles is geïnstalleerd door
uit te voeren. Je zou de vriendelijke helptekst moeten zien. Vervolgens moeten we…
2. Haal uw verzendersleutel / certificaat op voor ondertekening
3. Verstuur een ondertekend bericht via SparkPost
Nu laten we een echt verzenddomein gebruiken, ingesteld volgens de SparkPost Nieuwe Gebruikershandleiding. We hebben het afzendercertificaat en de sleutelbestanden in de huidige map:
Het bestand tests/declaration.eml is opgenomen in het project. Het is gewoon een tekstbestand, dus je kunt het adres Van: aanpassen aan je eigen verzenddomein en het adres Aan: aan je testontvanger. Het begin van het bestand ziet er als volgt uit:
Aan: Bob <bob.lumreeker@gmail.com> Van: Steve <steve@thetucks.com> Onderwerp: Hier is onze verklaring MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Wanneer in de Loop der menselijke gebeurtenissen het noodzakelijk wordt …
Stel je API-sleutel in:
Verzend de e-mail:
Je zult zien:
Verbinding geopend met https://api.sparkpost.com/api/v1 Verzenden van tests/declaration.eml Van: Steve <steve@thetucks.com> Aan: Bob <bob.lumreeker@gmail.com> OK - in 1.15 seconden
Een seconde of zo later arriveert de e-mail in Bob’s inbox. Thunderbird geeft het weer met een rode stip op de envelop, wat een geldige afzendersignatuur aangeeft.

Succes! Drink die koffie op, je hebt het verdiend. Als je problemen ondervindt, controleer dan of je adres Van: in het e-mailbestand overeenkomt met de naam van je .crt- en .pem-bestanden.
4. Berichten versleutelen
Om een bericht te versleutelen, hebt u de openbare sleutel van uw ontvanger nodig in certificaatvorm. Dit is een tekstbestand dat er als volgt uitziet:
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----- lijkt op willekeurige tekens hier -----END CERTIFICATE-----
Er is een dummy ontvanger certificaat voor bob@example.com in de tests directory, zodat u kunt oefenen voordat u een echt certificaat hebt:
U zult zien:
U zult merken dat de lengte van de uitvoer vrij veel langer is dan bij een gecodeerd bericht omdat het veel extra informatie bevat, evenals het gecodeerde bericht zelf.
4.1 Een gecodeerd, ondertekend bericht verzenden via SparkPost
Laten we een gecodeerd bericht naar een echt e-mailadres verzenden. U kunt hetzelfde proces als voorheen volgen (zelfondertekend of een provider zoals Comodo) om een openbare sleutel/certificaat voor uw eigen ontvanger adressen te krijgen. U heeft alleen het .crt-bestand nodig – de ontvanger hoeft u nooit zijn privésleutel (.p12 en .pem bestanden) te geven.
Ik heb het bestand bob.lumreeker@gmail.com.crt voor mijn beoogde ontvanger – passend bij het Van: adres in mijn bestand.
Hier is het commando om te verzenden:
Ik zie:
Verbinding geopend naar https://api.sparkpost.com/api/v1 Verzending tests/declaration.eml Van: Steve <steve@thetucks.com> Aan: Bob <bob.lumreeker@gmail.com> OK - in 1.168 seconden
De e-mail verschijnt in Thunderbird met het “rode stip” handtekeningen icoon en het “hangslot” versleutel icoon.

U kunt net zo gemakkelijk complexe HTML-gebaseerde e-mail met links en afbeeldingen verzenden, zoals degene die in deel 1 wordt getoond. Sommige clients zoals Thunderbird vragen toestemming om externe links en afbeeldingen te tonen binnen gecodeerde S/MIME-berichten, maar alleen-ondertekende berichten worden goed weergegeven in clients zoals Thunderbird en Gmail:


Let op het uitklapmenu dat “Geverifieerd e-mailadres” toont.
Verdere gedachten en zaken om op te letten
Dit hulpmiddel neemt een super-simpele benadering bij het ophalen van de noodzakelijke sleutels - het zoekt gewoon naar benoemde bestanden in de huidige directory. Meer complexe arrangementen, zoals het opslaan van alle sleutels in een database, kunnen eenvoudig worden toegevoegd, maar ik wilde dat de code zo eenvoudig mogelijk zou zijn.
U kunt andere ontvangers opnemen met Cc: en Bcc: en ze zullen worden afgeleverd; dit kan nuttig zijn voor archiveringsdoeleinden. Ondertekende berichten worden ontvangen en kunnen door andere ontvangers worden weergegeven, compleet met de handtekening. Het hulpmiddel verwijdert de Bcc:-kop van het afgeleverde bericht (zoals een desktop e-mailclient zou doen).
Om ervoor te zorgen dat berichten ongewijzigd door SparkPost worden verzonden (wat ondertekening kan verbreken), stelt het hulpmiddel API-opties in voor "transactional" mailing, met tracking van openen en klikken uitgeschakeld.
Als u encryptie gebruikt, houd er dan rekening mee dat het hulpmiddel het enkele To:-adres hiervoor oppikt. De andere ontvangers kunnen de inhoud van het bericht alleen decoderen als ze de private sleutel van de To:-ontvanger hebben. Als u bijvoorbeeld secundaire ontvangers alleen als registratie van gemaakte leveringen gebruikt, kan dat toch prima zijn.
Getekend, verzegeld, bezorgd... ik ben van jou
Dat is ons snelle overzicht van hoe u S/MIME-berichten via SparkPost kunt ondertekenen, verzegelen en afleveren. Snelle herinnering: het demoproject is beschikbaar op GitHub, en ik heb geprobeerd het eenvoudig te installeren en te gebruiken.
Bonusfunctie: het weergeven van MIME-onderdelen met "mimeshow"
RFC822 MIME multipart-bestandsinternals zijn behoorlijk complex voor mensen om te lezen. Het project omvat een zelfstandige tool om dit makkelijker te maken, genaamd mimeshow.
Deze neemt elk e-mailbestand dat je hebt (niet alleen S/MIME-bestanden) en toont de interne structuur. Hier is een voorbeeld:
Je zult zien:
Je kunt ook als filter gebruiken om een voor mensen leesbare samenvatting van sparkpostSMIME-uitvoer te geven:
Je zult zien:
Eindelijk…
Samenvatting – we hebben enkele eenvoudige opdrachtregeltools geïnstalleerd om e-mail te ondertekenen en te versleutelen (de GitHub-repo bevat complete installatie-instructies).
We hebben onze afzender-sleutel / certificaat voor ondertekening verkregen en een ondertekend bericht verzonden via SparkPost. We hebben een ontvanger-certificaat voor versleuteling verkregen en vervolgens een ondertekend en versleuteld bericht verzonden via SparkPost.
Ten slotte hebben we de handige zelfstandige tool "mimeshow" geprobeerd om de interne structuren van e-mailbestanden te bekijken.
Dat is het voor nu! In ons volgende deel laten we je zien hoe je deze S/MIME-mogelijkheden kunt uitbreiden naar on-premises veilige e-mailplatforms zoals PowerMTA en Momentum. Tot gauw!






