S/MIME Partie 3 : Plug and Play pour le courrier électronique sécurisé sur site
Oiseau
1 déc. 2019
1 min read

Points Clés
Intégration S/MIME pour les MTA sur site : apprenez à injecter des flux d'emails signés et chiffrés dans PowerMTA, Momentum, ou SparkPost SMTP tout en préservant les configurations existantes de DKIM et de conformité.
Modèle de sécurité hybride : combinez le chiffrement S/MIME + la signature DKIM pour garantir à la fois l'authenticité du message et la confidentialité du contenu dans des environnements régulés.
Flux de déploiement : configurez les variables d'environnement (SMTP_HOST, identifiants, clés), exécutez le workflow --sign --encrypt --send_smtp, et validez les rapports de livraison.
Aperçu des performances : les tests montrent une vitesse quasi-identique pour l'injection SMTP par rapport à l'API (~60 ms par message, 200–280 ms pour les fichiers plus volumineux).
Meilleures pratiques en matière de sécurité : stockez les clés privées et les mots de passe API dans des fichiers restreints (chmod 0700), utilisez STARTTLS et des sessions SMTP authentifiées.
Cas d'utilisation : les entreprises modernisant les systèmes de messagerie existants peuvent étendre le chiffrement de bout en bout sans abandonner l'infrastructure existante.
Points forts des Q&A
Pourquoi adopter S/MIME pour les serveurs sur site au lieu des APIs cloud?
De nombreuses industries réglementées (secteurs bancaires et de la santé) doivent conserver le courrier sur site. Cette approche permet de garder le contrôle sur le flux de messages tout en ajoutant une protection cryptographique moderne.
Comment fonctionne l'injection SMTP avec PowerMTA ou Momentum ?
Vous injectez des messages S/MIME entièrement formés vers l'écouteur local (port 25 ou VLAN privé). Ces MTA gèrent alors la signature DKIM et la livraison comme d'habitude.
S/MIME est-il compatible avec DKIM ?
Oui — DKIM signe le message après le chiffrement S/MIME, de sorte que les vérifications d'authentification et d'intégrité restent intactes.
Comment protéger mes identifiants SMTP et clés ?
Exportez les variables d'environnement uniquement dans des scripts sécurisés et utilisez les permissions de fichier pour restreindre l'accès à vous-même (
chmod 0700 my_envs.sh).Que dois-je surveiller après la configuration ?
Latence de livraison (API vs SMTP), taux de succès de la poignée de main TLS, résultats de validation DKIM/S-MIME, et journaux d'erreurs pour « relaying denied » ou authentification manquante.
Qui bénéficie le plus de cette configuration ?
Les organisations utilisant des passerelles de messagerie auto-hébergées qui nécessitent un chiffrement de conformité tout en souhaitant des outils prêts à l'emploi sans réécrire les pipelines de courrier.
Dans partie 1, nous avons fait un rapide tour de S/MIME, en examinant la signature et le chiffrement de nos flux de messages à travers une gamme de clients de messagerie. Pour les organisations mettant en œuvre le chiffrement S/MIME, comprendre comment collecter efficacement les clés publiques des destinataires devient crucial pour des opérations de courrier sécurisé évolutives. Partie 2 nous a emmenés à travers un simple outil en ligne de commande pour signer et chiffrer des emails, puis les envoyer via SparkPost.
Dans cette partie, nous verrons comment l'outil peut être adapté pour injecter des flux de courrier dans des plateformes sur site telles que Port25 PowerMTA et Momentum.
OK – commençons!
Dans partie 1, nous avons fait un rapide tour de S/MIME, en examinant la signature et le chiffrement de nos flux de messages à travers une gamme de clients de messagerie. Pour les organisations mettant en œuvre le chiffrement S/MIME, comprendre comment collecter efficacement les clés publiques des destinataires devient crucial pour des opérations de courrier sécurisé évolutives. Partie 2 nous a emmenés à travers un simple outil en ligne de commande pour signer et chiffrer des emails, puis les envoyer via SparkPost.
Dans cette partie, nous verrons comment l'outil peut être adapté pour injecter des flux de courrier dans des plateformes sur site telles que Port25 PowerMTA et Momentum.
OK – commençons!
Dans partie 1, nous avons fait un rapide tour de S/MIME, en examinant la signature et le chiffrement de nos flux de messages à travers une gamme de clients de messagerie. Pour les organisations mettant en œuvre le chiffrement S/MIME, comprendre comment collecter efficacement les clés publiques des destinataires devient crucial pour des opérations de courrier sécurisé évolutives. Partie 2 nous a emmenés à travers un simple outil en ligne de commande pour signer et chiffrer des emails, puis les envoyer via SparkPost.
Dans cette partie, nous verrons comment l'outil peut être adapté pour injecter des flux de courrier dans des plateformes sur site telles que Port25 PowerMTA et Momentum.
OK – commençons!
1. Démarrer
L'installation de l'outil, l'obtention de vos clés, etc. est exactement la même qu'avant. Lorsque vous utilisez un système de messagerie sur site tel que PowerMTA ou Momentum, vous êtes déjà responsable de la configuration des domaines d'envoi, des clés DKIM, etc. Les organisations fonctionnant avec des systèmes sur site doivent également souvent faire face à des défis de systèmes d'archivage d'emails pour se conformer aux réglementations et aux exigences de conservation des données. Ce que nous devons faire maintenant, c'est fournir un moyen d'injecter les messages S/MIME entièrement formés dans vos serveurs.
L'installation de l'outil, l'obtention de vos clés, etc. est exactement la même qu'avant. Lorsque vous utilisez un système de messagerie sur site tel que PowerMTA ou Momentum, vous êtes déjà responsable de la configuration des domaines d'envoi, des clés DKIM, etc. Les organisations fonctionnant avec des systèmes sur site doivent également souvent faire face à des défis de systèmes d'archivage d'emails pour se conformer aux réglementations et aux exigences de conservation des données. Ce que nous devons faire maintenant, c'est fournir un moyen d'injecter les messages S/MIME entièrement formés dans vos serveurs.
L'installation de l'outil, l'obtention de vos clés, etc. est exactement la même qu'avant. Lorsque vous utilisez un système de messagerie sur site tel que PowerMTA ou Momentum, vous êtes déjà responsable de la configuration des domaines d'envoi, des clés DKIM, etc. Les organisations fonctionnant avec des systèmes sur site doivent également souvent faire face à des défis de systèmes d'archivage d'emails pour se conformer aux réglementations et aux exigences de conservation des données. Ce que nous devons faire maintenant, c'est fournir un moyen d'injecter les messages S/MIME entièrement formés dans vos serveurs.
2. Injection SMTP vers Port25 PowerMTA
PowerMTA prend en charge divers moyens d'injection de messages, y compris un répertoire de "pickup" de fichiers, SMTP et une API. SMTP est la méthode utilisée ici.
Pour illustrer la configuration la plus simple possible, nous allons installer les outils S/MIME sur le même serveur que PowerMTA. Nous injectons des messages à l'écouteur, qui est ouvert par défaut sur le port TCP 25, acceptant uniquement le trafic local.
export SMTP_HOST=localhost
(Si vous oubliez cette étape, vous verrez : « Environment var SMTP_HOST not set – stopping » lorsque vous essayez de lancer.)
Nous avons déjà la clé privée de l'expéditeur (steve@thetucks.com.pem) et la clé publique du destinataire (steve.tuck@sparkpost.com.crt) présentes. Les premières lignes du fichier de message sont :
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
Nous envoyons le message avec :
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Nous voyons :
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
Le message arrive rapidement dans la boîte de réception et est signalé dans Mac Mail comme signé et crypté.

Fonction bonus : DKIM avec PowerMTA
DKIM est assez facile à configurer et coexiste joyeusement avec S/MIME. Les étapes sont :
Utilisez le site DKIM Wizard de PowerMTA pour créer la clé privée du domaine d'envoi (dans mon cas, mypmta.thetucks.com.pem) et le contenu de l'enregistrement DNS TXT public.
Configurez l'enregistrement DNS TXT, avec un sélecteur choisi. Par exemple, j'ai utilisé le sélecteur pmta201811. Les caractères valides pour le sélecteur sont définis ici.
Mettez le fichier mypmta.thetucks.com.pem sur le serveur dans le répertoire /etc/pmta .
Ajoutez ce qui suit à mon /etc/pmta/config et redémarrez le service pmta. (Ici, ces directives sont écrites à portée globale ; sur un système de production, vous pourriez préférer les ajouter sous un virtual-mta à la place.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
L'enregistrement DNS est validé via MX Toolbox, et DKIM est maintenant actif.

PowerMTA prend en charge divers moyens d'injection de messages, y compris un répertoire de "pickup" de fichiers, SMTP et une API. SMTP est la méthode utilisée ici.
Pour illustrer la configuration la plus simple possible, nous allons installer les outils S/MIME sur le même serveur que PowerMTA. Nous injectons des messages à l'écouteur, qui est ouvert par défaut sur le port TCP 25, acceptant uniquement le trafic local.
export SMTP_HOST=localhost
(Si vous oubliez cette étape, vous verrez : « Environment var SMTP_HOST not set – stopping » lorsque vous essayez de lancer.)
Nous avons déjà la clé privée de l'expéditeur (steve@thetucks.com.pem) et la clé publique du destinataire (steve.tuck@sparkpost.com.crt) présentes. Les premières lignes du fichier de message sont :
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
Nous envoyons le message avec :
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Nous voyons :
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
Le message arrive rapidement dans la boîte de réception et est signalé dans Mac Mail comme signé et crypté.

Fonction bonus : DKIM avec PowerMTA
DKIM est assez facile à configurer et coexiste joyeusement avec S/MIME. Les étapes sont :
Utilisez le site DKIM Wizard de PowerMTA pour créer la clé privée du domaine d'envoi (dans mon cas, mypmta.thetucks.com.pem) et le contenu de l'enregistrement DNS TXT public.
Configurez l'enregistrement DNS TXT, avec un sélecteur choisi. Par exemple, j'ai utilisé le sélecteur pmta201811. Les caractères valides pour le sélecteur sont définis ici.
Mettez le fichier mypmta.thetucks.com.pem sur le serveur dans le répertoire /etc/pmta .
Ajoutez ce qui suit à mon /etc/pmta/config et redémarrez le service pmta. (Ici, ces directives sont écrites à portée globale ; sur un système de production, vous pourriez préférer les ajouter sous un virtual-mta à la place.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
L'enregistrement DNS est validé via MX Toolbox, et DKIM est maintenant actif.

PowerMTA prend en charge divers moyens d'injection de messages, y compris un répertoire de "pickup" de fichiers, SMTP et une API. SMTP est la méthode utilisée ici.
Pour illustrer la configuration la plus simple possible, nous allons installer les outils S/MIME sur le même serveur que PowerMTA. Nous injectons des messages à l'écouteur, qui est ouvert par défaut sur le port TCP 25, acceptant uniquement le trafic local.
export SMTP_HOST=localhost
(Si vous oubliez cette étape, vous verrez : « Environment var SMTP_HOST not set – stopping » lorsque vous essayez de lancer.)
Nous avons déjà la clé privée de l'expéditeur (steve@thetucks.com.pem) et la clé publique du destinataire (steve.tuck@sparkpost.com.crt) présentes. Les premières lignes du fichier de message sont :
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
Nous envoyons le message avec :
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Nous voyons :
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
Le message arrive rapidement dans la boîte de réception et est signalé dans Mac Mail comme signé et crypté.

Fonction bonus : DKIM avec PowerMTA
DKIM est assez facile à configurer et coexiste joyeusement avec S/MIME. Les étapes sont :
Utilisez le site DKIM Wizard de PowerMTA pour créer la clé privée du domaine d'envoi (dans mon cas, mypmta.thetucks.com.pem) et le contenu de l'enregistrement DNS TXT public.
Configurez l'enregistrement DNS TXT, avec un sélecteur choisi. Par exemple, j'ai utilisé le sélecteur pmta201811. Les caractères valides pour le sélecteur sont définis ici.
Mettez le fichier mypmta.thetucks.com.pem sur le serveur dans le répertoire /etc/pmta .
Ajoutez ce qui suit à mon /etc/pmta/config et redémarrez le service pmta. (Ici, ces directives sont écrites à portée globale ; sur un système de production, vous pourriez préférer les ajouter sous un virtual-mta à la place.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
L'enregistrement DNS est validé via MX Toolbox, et DKIM est maintenant actif.

3. Injection SMTP Vers Momentum
Momentum prend en charge divers moyens d'injection de messages, notamment API et SMTP. SMTP est la méthode utilisée ici, vers un hôte déjà en train d'exécuter Momentum. Nous laisserons sa configuration inchangée, car elle a déjà la capacité d'accepter les injections entrantes d'autres hôtes approuvés.
Ceci est une version plus petite d'une configuration de production, où les nœuds de "génération" et les nœuds MTA sont séparés, mais étroitement couplés via un VLAN privé et des équilibres de charge, transportant le trafic d'injection SMTP interne.

Les outils S/MIME sont installés comme auparavant, et nous injecterons des messages à l'adresse de l'hôte SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
Comme auparavant, nous avons la clé privée de l'expéditeur (steve@thetucks.com.pem) et la clé publique du destinataire (steve.tuck@sparkpost.com.crt) déjà présentes sur le nœud de "génération". Les premières lignes du fichier de message correspondent à ces adresses.
Nous envoyons le message à partir du nœud de "génération" avec exactement la même commande qu'auparavant, et le message apparaît dans l'inbox.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Comme vous vous y attendez, S/MIME coexiste également heureusement avec la DKIM signing de Momentum.
Momentum prend en charge divers moyens d'injection de messages, notamment API et SMTP. SMTP est la méthode utilisée ici, vers un hôte déjà en train d'exécuter Momentum. Nous laisserons sa configuration inchangée, car elle a déjà la capacité d'accepter les injections entrantes d'autres hôtes approuvés.
Ceci est une version plus petite d'une configuration de production, où les nœuds de "génération" et les nœuds MTA sont séparés, mais étroitement couplés via un VLAN privé et des équilibres de charge, transportant le trafic d'injection SMTP interne.

Les outils S/MIME sont installés comme auparavant, et nous injecterons des messages à l'adresse de l'hôte SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
Comme auparavant, nous avons la clé privée de l'expéditeur (steve@thetucks.com.pem) et la clé publique du destinataire (steve.tuck@sparkpost.com.crt) déjà présentes sur le nœud de "génération". Les premières lignes du fichier de message correspondent à ces adresses.
Nous envoyons le message à partir du nœud de "génération" avec exactement la même commande qu'auparavant, et le message apparaît dans l'inbox.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Comme vous vous y attendez, S/MIME coexiste également heureusement avec la DKIM signing de Momentum.
Momentum prend en charge divers moyens d'injection de messages, notamment API et SMTP. SMTP est la méthode utilisée ici, vers un hôte déjà en train d'exécuter Momentum. Nous laisserons sa configuration inchangée, car elle a déjà la capacité d'accepter les injections entrantes d'autres hôtes approuvés.
Ceci est une version plus petite d'une configuration de production, où les nœuds de "génération" et les nœuds MTA sont séparés, mais étroitement couplés via un VLAN privé et des équilibres de charge, transportant le trafic d'injection SMTP interne.

Les outils S/MIME sont installés comme auparavant, et nous injecterons des messages à l'adresse de l'hôte SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
Comme auparavant, nous avons la clé privée de l'expéditeur (steve@thetucks.com.pem) et la clé publique du destinataire (steve.tuck@sparkpost.com.crt) déjà présentes sur le nœud de "génération". Les premières lignes du fichier de message correspondent à ces adresses.
Nous envoyons le message à partir du nœud de "génération" avec exactement la même commande qu'auparavant, et le message apparaît dans l'inbox.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Comme vous vous y attendez, S/MIME coexiste également heureusement avec la DKIM signing de Momentum.
4. Injection SMTP vers SparkPost
Dans la partie 2, nous avons utilisé l'API REST des transmissions de SparkPost pour injecter des messages. Bien sûr, il est également possible d'injecter des messages dans SparkPost en utilisant SMTP. Nous avons défini les variables d'environnement comme ceci :
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
Si vous utilisez le service hébergé dans l'UE de SparkPost, définissez alors SMTP_HOST comme smtp.eu.sparkpostmail.com.
(Voir ici pour plus d'options – par exemple, vous pouvez injecter sur le port 2525 plutôt que 587.)
La sortie ci-dessous montre que STARTTLS est utilisé, ainsi que le nom d'utilisateur et le mot de passe.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vous verrez :
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
Le mot de passe est imprimé avec des caractères ***, de sorte que vous ne compromettez pas la confidentialité de votre clé si quelqu'un regarde par-dessus votre épaule.
Sécurisation de vos Identifiants
Notez que les variables d'environnement pourraient être configurées dans un script shell ou similaire, pour éviter de retaper. Si c’est le cas, veillez à protéger vos mots de passe/clés API en limitant l'accès à ce fichier à vous-même uniquement. Par exemple, si votre fichier de configuration des identifiants s'appelle my_envs.sh, exécutez alors :
chmod 0700 my_envs.sh
Avertissements Liés à SMTP que Vous Pouvez Voir
L'injection SMTP de SparkPost est assez stricte, comme on peut s'y attendre d'un service public. Si vous n'avez pas défini le numéro de port SMTP, vous verrez un avertissement :
{ 'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied') }
Si vous n'avez pas défini le nom d'utilisateur SMTP ou le mot de passe, vous verrez :
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
Ces messages d'erreur sont simplement rapportés tels quels depuis la bibliothèque SMTP de Python, d’où le formatage.
Dans la partie 2, nous avons utilisé l'API REST des transmissions de SparkPost pour injecter des messages. Bien sûr, il est également possible d'injecter des messages dans SparkPost en utilisant SMTP. Nous avons défini les variables d'environnement comme ceci :
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
Si vous utilisez le service hébergé dans l'UE de SparkPost, définissez alors SMTP_HOST comme smtp.eu.sparkpostmail.com.
(Voir ici pour plus d'options – par exemple, vous pouvez injecter sur le port 2525 plutôt que 587.)
La sortie ci-dessous montre que STARTTLS est utilisé, ainsi que le nom d'utilisateur et le mot de passe.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vous verrez :
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
Le mot de passe est imprimé avec des caractères ***, de sorte que vous ne compromettez pas la confidentialité de votre clé si quelqu'un regarde par-dessus votre épaule.
Sécurisation de vos Identifiants
Notez que les variables d'environnement pourraient être configurées dans un script shell ou similaire, pour éviter de retaper. Si c’est le cas, veillez à protéger vos mots de passe/clés API en limitant l'accès à ce fichier à vous-même uniquement. Par exemple, si votre fichier de configuration des identifiants s'appelle my_envs.sh, exécutez alors :
chmod 0700 my_envs.sh
Avertissements Liés à SMTP que Vous Pouvez Voir
L'injection SMTP de SparkPost est assez stricte, comme on peut s'y attendre d'un service public. Si vous n'avez pas défini le numéro de port SMTP, vous verrez un avertissement :
{ 'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied') }
Si vous n'avez pas défini le nom d'utilisateur SMTP ou le mot de passe, vous verrez :
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
Ces messages d'erreur sont simplement rapportés tels quels depuis la bibliothèque SMTP de Python, d’où le formatage.
Dans la partie 2, nous avons utilisé l'API REST des transmissions de SparkPost pour injecter des messages. Bien sûr, il est également possible d'injecter des messages dans SparkPost en utilisant SMTP. Nous avons défini les variables d'environnement comme ceci :
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
Si vous utilisez le service hébergé dans l'UE de SparkPost, définissez alors SMTP_HOST comme smtp.eu.sparkpostmail.com.
(Voir ici pour plus d'options – par exemple, vous pouvez injecter sur le port 2525 plutôt que 587.)
La sortie ci-dessous montre que STARTTLS est utilisé, ainsi que le nom d'utilisateur et le mot de passe.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vous verrez :
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
Le mot de passe est imprimé avec des caractères ***, de sorte que vous ne compromettez pas la confidentialité de votre clé si quelqu'un regarde par-dessus votre épaule.
Sécurisation de vos Identifiants
Notez que les variables d'environnement pourraient être configurées dans un script shell ou similaire, pour éviter de retaper. Si c’est le cas, veillez à protéger vos mots de passe/clés API en limitant l'accès à ce fichier à vous-même uniquement. Par exemple, si votre fichier de configuration des identifiants s'appelle my_envs.sh, exécutez alors :
chmod 0700 my_envs.sh
Avertissements Liés à SMTP que Vous Pouvez Voir
L'injection SMTP de SparkPost est assez stricte, comme on peut s'y attendre d'un service public. Si vous n'avez pas défini le numéro de port SMTP, vous verrez un avertissement :
{ 'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied') }
Si vous n'avez pas défini le nom d'utilisateur SMTP ou le mot de passe, vous verrez :
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
Ces messages d'erreur sont simplement rapportés tels quels depuis la bibliothèque SMTP de Python, d’où le formatage.
Quel est le plus rapide - SMTP ou API ?
Comparaison des performances
Voici un aperçu rapide des tests de performance :
Mesure | SMTP | API | Remarques |
|---|---|---|---|
Petit fichier (~19 KB) | ~60 ms | ~60 ms | Performances presque identiques |
Grand fichier (~577 KB) | ~280 ms | ~200 ms | L'API est légèrement plus rapide avec des charges utiles plus grandes |
Franchement, S/MIME est peu susceptible d'être un cas d'utilisation à fort volume, mais avoir le même outil avec deux options de sortie nous a simplement incités à faire une course !
Le fichier de test de courrier électronique « Avocado » utilisé ici est d'environ 19KB. Répéter les tests 10 fois via une boucle bash a montré que les temps moyens étaient similaires pour SMTP et API, environ 60 millisecondes par message, ce qui est assez rapide. Dans ce cas, nous avons injecté à partir d'une instance EC2 moyennement située dans la même région d'hébergement que SparkPost.com, ce qui est un bon moyen de maintenir les temps d'aller-retour réseau bas.
En répétant cela avec un fichier de test plus grand (577KB), l'API a pris environ 200 millisecondes, tandis que SMTP a pris 280 millisecondes par message – toujours impressionnant pour une taille de fichier 30 fois plus grande. Bien sûr, les résultats peuvent varier selon l'emplacement, la congestion internet, etc., mais les performances ne devraient probablement pas être un problème.
Si vous avez vraiment besoin de performances maximales, un bon point de départ serait de lancer un nombre défini de processus/sessions d'injection concurrentes selon nos recommandations de meilleures pratiques de transmission – par exemple, à partir d'une tâche de superviseur.
Comparaison des performances
Voici un aperçu rapide des tests de performance :
Mesure | SMTP | API | Remarques |
|---|---|---|---|
Petit fichier (~19 KB) | ~60 ms | ~60 ms | Performances presque identiques |
Grand fichier (~577 KB) | ~280 ms | ~200 ms | L'API est légèrement plus rapide avec des charges utiles plus grandes |
Franchement, S/MIME est peu susceptible d'être un cas d'utilisation à fort volume, mais avoir le même outil avec deux options de sortie nous a simplement incités à faire une course !
Le fichier de test de courrier électronique « Avocado » utilisé ici est d'environ 19KB. Répéter les tests 10 fois via une boucle bash a montré que les temps moyens étaient similaires pour SMTP et API, environ 60 millisecondes par message, ce qui est assez rapide. Dans ce cas, nous avons injecté à partir d'une instance EC2 moyennement située dans la même région d'hébergement que SparkPost.com, ce qui est un bon moyen de maintenir les temps d'aller-retour réseau bas.
En répétant cela avec un fichier de test plus grand (577KB), l'API a pris environ 200 millisecondes, tandis que SMTP a pris 280 millisecondes par message – toujours impressionnant pour une taille de fichier 30 fois plus grande. Bien sûr, les résultats peuvent varier selon l'emplacement, la congestion internet, etc., mais les performances ne devraient probablement pas être un problème.
Si vous avez vraiment besoin de performances maximales, un bon point de départ serait de lancer un nombre défini de processus/sessions d'injection concurrentes selon nos recommandations de meilleures pratiques de transmission – par exemple, à partir d'une tâche de superviseur.
Comparaison des performances
Voici un aperçu rapide des tests de performance :
Mesure | SMTP | API | Remarques |
|---|---|---|---|
Petit fichier (~19 KB) | ~60 ms | ~60 ms | Performances presque identiques |
Grand fichier (~577 KB) | ~280 ms | ~200 ms | L'API est légèrement plus rapide avec des charges utiles plus grandes |
Franchement, S/MIME est peu susceptible d'être un cas d'utilisation à fort volume, mais avoir le même outil avec deux options de sortie nous a simplement incités à faire une course !
Le fichier de test de courrier électronique « Avocado » utilisé ici est d'environ 19KB. Répéter les tests 10 fois via une boucle bash a montré que les temps moyens étaient similaires pour SMTP et API, environ 60 millisecondes par message, ce qui est assez rapide. Dans ce cas, nous avons injecté à partir d'une instance EC2 moyennement située dans la même région d'hébergement que SparkPost.com, ce qui est un bon moyen de maintenir les temps d'aller-retour réseau bas.
En répétant cela avec un fichier de test plus grand (577KB), l'API a pris environ 200 millisecondes, tandis que SMTP a pris 280 millisecondes par message – toujours impressionnant pour une taille de fichier 30 fois plus grande. Bien sûr, les résultats peuvent varier selon l'emplacement, la congestion internet, etc., mais les performances ne devraient probablement pas être un problème.
Si vous avez vraiment besoin de performances maximales, un bon point de départ serait de lancer un nombre défini de processus/sessions d'injection concurrentes selon nos recommandations de meilleures pratiques de transmission – par exemple, à partir d'une tâche de superviseur.
Pour résumer …
Nous avons vu comment l'outil basé sur l'API SparkPost utilisé dans la Partie 2 est mis à jour pour prendre en charge l'injection SMTP afin de prendre en charge les MTAs sur site tels que Port25 PowerMTA et Momentum dans une variété de configurations, ainsi qu'avec SparkPost.
C’est tout pour le moment ! Bon envoi.
Nous avons vu comment l'outil basé sur l'API SparkPost utilisé dans la Partie 2 est mis à jour pour prendre en charge l'injection SMTP afin de prendre en charge les MTAs sur site tels que Port25 PowerMTA et Momentum dans une variété de configurations, ainsi qu'avec SparkPost.
C’est tout pour le moment ! Bon envoi.
Nous avons vu comment l'outil basé sur l'API SparkPost utilisé dans la Partie 2 est mis à jour pour prendre en charge l'injection SMTP afin de prendre en charge les MTAs sur site tels que Port25 PowerMTA et Momentum dans une variété de configurations, ainsi qu'avec SparkPost.
C’est tout pour le moment ! Bon envoi.



