S/MIME Parte 3: Plug and Play per Email Sicuro On-Premises
Uccello
1 dic 2019
1 min read

Punti Chiave
Integrazione S/MIME per MTA on-premises: scopri come iniettare flussi di email firmati e crittografati in PowerMTA, Momentum o SparkPost SMTP mantenendo le configurazioni DKIM e di conformità esistenti.
Modello di sicurezza ibrido: combina crittografia S/MIME + firma DKIM per garantire sia l'autenticità del messaggio che la privacy del contenuto in ambienti regolamentati.
Flusso di distribuzione: configura le variabili ambientali (SMTP_HOST, credenziali, chiavi), esegui il flusso di lavoro --sign --encrypt --send_smtp e convalida i report di consegna.
Approfondimenti sulle prestazioni: i test mostrano una velocità quasi identica per l'iniezione SMTP rispetto all'API (~60 ms per messaggio, 200–280 ms per file di dimensioni maggiori).
Migliori pratiche di sicurezza: memorizza chiavi private e password API in file riservati (chmod 0700), utilizza STARTTLS e sessioni SMTP autenticate.
Casi d'uso: le imprese che modernizzano i sistemi di posta legacy possono estendere la crittografia end-to-end senza abbandonare l'infrastruttura esistente.
Punti salienti del Q&A
Perché adattare S/MIME per server on-prem invece di API cloud?
Molti settori regolamentati (bancario e sanitario) devono mantenere la posta in loco. Questo approccio mantiene il controllo sul flusso dei messaggi aggiungendo una protezione crittografica moderna.
Come funziona l'iniezione SMTP con PowerMTA o Momentum?
Inietti messaggi S/MIME completamente formati al listener locale (porta 25 o VLAN privata). Questi MTA gestiscono quindi la firma DKIM e la consegna come di consueto.
È S/MIME compatibile con DKIM?
Sì — DKIM firma il messaggio dopo la crittografia S/MIME, quindi i controlli di autenticazione e integrità rimangono intatti.
Come posso proteggere le mie credenziali e le mie chiavi SMTP?
Esporta le variabili d'ambiente solo in script bloccati e utilizza i permessi dei file per limitare l'accesso a te stesso (
chmod 0700 my_envs.sh).Cosa dovrei monitorare dopo la configurazione?
Latenza di consegna (API vs SMTP), tasso di successo della stretta di mano TLS, risultati della convalida DKIM/S-MIME e registri di errore per "inoltro negato" o autenticazione mancante.
Chi beneficia di più da questa configurazione?
Organizzazioni che gestiscono gateway di posta auto-ospitati che richiedono crittografia di livello di conformità e vogliono strumenti plug-and-play senza dover riscrivere i pipeline di posta.
Nel parte 1, abbiamo fatto un breve tour di S/MIME, esaminando la firma e la crittografia dei nostri flussi di messaggi attraverso una gamma di client di posta. Per le organizzazioni che implementano la crittografia S/MIME, comprendere come raccogliere efficientemente le chiavi pubbliche dei destinatari diventa cruciale per operazioni email sicure e scalabili. Parte 2 ci ha portato attraverso un semplice strumento da riga di comando per firmare e crittografare le email, per poi inviarle tramite SparkPost.
In questa parte, vedremo come lo strumento può essere adattato per iniettare flussi di posta in piattaforme on-premises come Port25 PowerMTA e Momentum.
OK – iniziamo!
Nel parte 1, abbiamo fatto un breve tour di S/MIME, esaminando la firma e la crittografia dei nostri flussi di messaggi attraverso una gamma di client di posta. Per le organizzazioni che implementano la crittografia S/MIME, comprendere come raccogliere efficientemente le chiavi pubbliche dei destinatari diventa cruciale per operazioni email sicure e scalabili. Parte 2 ci ha portato attraverso un semplice strumento da riga di comando per firmare e crittografare le email, per poi inviarle tramite SparkPost.
In questa parte, vedremo come lo strumento può essere adattato per iniettare flussi di posta in piattaforme on-premises come Port25 PowerMTA e Momentum.
OK – iniziamo!
Nel parte 1, abbiamo fatto un breve tour di S/MIME, esaminando la firma e la crittografia dei nostri flussi di messaggi attraverso una gamma di client di posta. Per le organizzazioni che implementano la crittografia S/MIME, comprendere come raccogliere efficientemente le chiavi pubbliche dei destinatari diventa cruciale per operazioni email sicure e scalabili. Parte 2 ci ha portato attraverso un semplice strumento da riga di comando per firmare e crittografare le email, per poi inviarle tramite SparkPost.
In questa parte, vedremo come lo strumento può essere adattato per iniettare flussi di posta in piattaforme on-premises come Port25 PowerMTA e Momentum.
OK – iniziamo!
1. Iniziare
Installare lo strumento, ottenere le tue chiavi ecc. è esattamente lo stesso di prima. Quando usi un sistema di posta elettronica on-premises come PowerMTA o Momentum, sei già responsabile per la configurazione dei domini di invio, delle chiavi DKIM ecc. Le organizzazioni che utilizzano sistemi on-premises devono spesso affrontare anche le sfide dei sistemi di archiviazione delle email per la conformità normativa e i requisiti di retention dei dati. Ciò che dobbiamo fare ora è fornire un modo per iniettare i messaggi S/MIME completamente formati nei tuoi server.
Installare lo strumento, ottenere le tue chiavi ecc. è esattamente lo stesso di prima. Quando usi un sistema di posta elettronica on-premises come PowerMTA o Momentum, sei già responsabile per la configurazione dei domini di invio, delle chiavi DKIM ecc. Le organizzazioni che utilizzano sistemi on-premises devono spesso affrontare anche le sfide dei sistemi di archiviazione delle email per la conformità normativa e i requisiti di retention dei dati. Ciò che dobbiamo fare ora è fornire un modo per iniettare i messaggi S/MIME completamente formati nei tuoi server.
Installare lo strumento, ottenere le tue chiavi ecc. è esattamente lo stesso di prima. Quando usi un sistema di posta elettronica on-premises come PowerMTA o Momentum, sei già responsabile per la configurazione dei domini di invio, delle chiavi DKIM ecc. Le organizzazioni che utilizzano sistemi on-premises devono spesso affrontare anche le sfide dei sistemi di archiviazione delle email per la conformità normativa e i requisiti di retention dei dati. Ciò che dobbiamo fare ora è fornire un modo per iniettare i messaggi S/MIME completamente formati nei tuoi server.
2. Iniezione SMTP verso Port25 PowerMTA
PowerMTA supporta vari metodi di iniezione dei messaggi, incluso un directory di "ritiro" dei file, SMTP e un'API. SMTP è il metodo utilizzato qui.
Per illustrare la configurazione più semplice possibile, installeremo gli strumenti S/MIME sullo stesso server di PowerMTA. Iniettiamo messaggi all'ascoltatore, che è aperto per impostazione predefinita sulla porta TCP 25, accettando solo traffico locale.
export SMTP_HOST=localhost
(Se dimentichi quel passaggio, vedrai: “Variabile di ambiente SMTP_HOST non impostata – arresto” quando provi a eseguire.)
Abbiamo la chiave privata del mittente (steve@thetucks.com.pem) e la chiave pubblica del destinatario (steve.tuck@sparkpost.com.crt) già presenti. Le prime righe del file di messaggio sono:
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
Inviamo il messaggio con:
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vediamo:
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
Il messaggio arriva rapidamente nella posta in arrivo e riporta in Mac Mail come firmato e crittografato.

Funzionalità bonus: DKIM con PowerMTA
DKIM è piuttosto facile da configurare e coesiste felicemente con S/MIME. I passaggi sono:
Utilizza il sito DKIM Wizard di PowerMTA per creare la chiave privata del dominio di invio (nel mio caso, mypmta.thetucks.com.pem) e i contenuti del record DNS TXT pubblico.
Configura il record DNS TXT, con un selettore scelto. Ad esempio, ho usato il selettore pmta201811. I caratteri del selettore validi sono definiti qui.
Metti il file mypmta.thetucks.com.pem sul server nella directory /etc/pmta .
Aggiungi quanto segue al mio /etc/pmta/config e riavvia il servizio pmta. (Qui, queste direttive sono scritte a livello globale; su un sistema di produzione, potresti preferire aggiungerle sotto un virtual-mta invece.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
Il record DNS è stato verificato correttamente tramite MX Toolbox, e DKIM è ora attivo.

PowerMTA supporta vari metodi di iniezione dei messaggi, incluso un directory di "ritiro" dei file, SMTP e un'API. SMTP è il metodo utilizzato qui.
Per illustrare la configurazione più semplice possibile, installeremo gli strumenti S/MIME sullo stesso server di PowerMTA. Iniettiamo messaggi all'ascoltatore, che è aperto per impostazione predefinita sulla porta TCP 25, accettando solo traffico locale.
export SMTP_HOST=localhost
(Se dimentichi quel passaggio, vedrai: “Variabile di ambiente SMTP_HOST non impostata – arresto” quando provi a eseguire.)
Abbiamo la chiave privata del mittente (steve@thetucks.com.pem) e la chiave pubblica del destinatario (steve.tuck@sparkpost.com.crt) già presenti. Le prime righe del file di messaggio sono:
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
Inviamo il messaggio con:
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vediamo:
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
Il messaggio arriva rapidamente nella posta in arrivo e riporta in Mac Mail come firmato e crittografato.

Funzionalità bonus: DKIM con PowerMTA
DKIM è piuttosto facile da configurare e coesiste felicemente con S/MIME. I passaggi sono:
Utilizza il sito DKIM Wizard di PowerMTA per creare la chiave privata del dominio di invio (nel mio caso, mypmta.thetucks.com.pem) e i contenuti del record DNS TXT pubblico.
Configura il record DNS TXT, con un selettore scelto. Ad esempio, ho usato il selettore pmta201811. I caratteri del selettore validi sono definiti qui.
Metti il file mypmta.thetucks.com.pem sul server nella directory /etc/pmta .
Aggiungi quanto segue al mio /etc/pmta/config e riavvia il servizio pmta. (Qui, queste direttive sono scritte a livello globale; su un sistema di produzione, potresti preferire aggiungerle sotto un virtual-mta invece.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
Il record DNS è stato verificato correttamente tramite MX Toolbox, e DKIM è ora attivo.

PowerMTA supporta vari metodi di iniezione dei messaggi, incluso un directory di "ritiro" dei file, SMTP e un'API. SMTP è il metodo utilizzato qui.
Per illustrare la configurazione più semplice possibile, installeremo gli strumenti S/MIME sullo stesso server di PowerMTA. Iniettiamo messaggi all'ascoltatore, che è aperto per impostazione predefinita sulla porta TCP 25, accettando solo traffico locale.
export SMTP_HOST=localhost
(Se dimentichi quel passaggio, vedrai: “Variabile di ambiente SMTP_HOST non impostata – arresto” quando provi a eseguire.)
Abbiamo la chiave privata del mittente (steve@thetucks.com.pem) e la chiave pubblica del destinatario (steve.tuck@sparkpost.com.crt) già presenti. Le prime righe del file di messaggio sono:
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
Inviamo il messaggio con:
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vediamo:
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
Il messaggio arriva rapidamente nella posta in arrivo e riporta in Mac Mail come firmato e crittografato.

Funzionalità bonus: DKIM con PowerMTA
DKIM è piuttosto facile da configurare e coesiste felicemente con S/MIME. I passaggi sono:
Utilizza il sito DKIM Wizard di PowerMTA per creare la chiave privata del dominio di invio (nel mio caso, mypmta.thetucks.com.pem) e i contenuti del record DNS TXT pubblico.
Configura il record DNS TXT, con un selettore scelto. Ad esempio, ho usato il selettore pmta201811. I caratteri del selettore validi sono definiti qui.
Metti il file mypmta.thetucks.com.pem sul server nella directory /etc/pmta .
Aggiungi quanto segue al mio /etc/pmta/config e riavvia il servizio pmta. (Qui, queste direttive sono scritte a livello globale; su un sistema di produzione, potresti preferire aggiungerle sotto un virtual-mta invece.)
host-name thetucks.com domain-key pmta201811,*,/etc/pmta/mypmta.thetucks.com.pem <domain *> dkim-sign yes </domain>
Il record DNS è stato verificato correttamente tramite MX Toolbox, e DKIM è ora attivo.

3. Iniezione SMTP verso Momentum
Momentum supporta vari mezzi di iniezione dei messaggi, inclusi API e SMTP. SMTP è il metodo utilizzato qui, verso un host già in esecuzione con Momentum. Lasceremo la sua configurazione invariata, poiché ha già una capacità di accettare iniezioni in arrivo da altri host approvati.
Questa è una versione più piccola di una configurazione di produzione, dove i nodi di “generazione” e i nodi MTA sono separati, ma strettamente collegati tramite una VLAN privata e bilanciatori di carico, che gestiscono il traffico di iniezione SMTP interno.

Gli strumenti S/MIME sono installati come prima, e inietteremo messaggi all'indirizzo dell'host SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
Come prima, abbiamo la chiave privata del mittente (steve@thetucks.com.pem) e la chiave pubblica del destinatario (steve.tuck@sparkpost.com.crt) già presenti sul nodo di “generazione”. Le prime righe del file di messaggio corrispondono a questi indirizzi.
Inviamo il messaggio dal nodo di “generazione” con esattamente lo stesso comando di prima, e il messaggio appare nella casella di posta.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Come ci si aspetterebbe, S/MIME coesiste felicemente anche con la firma DKIM di Momentum.
Momentum supporta vari mezzi di iniezione dei messaggi, inclusi API e SMTP. SMTP è il metodo utilizzato qui, verso un host già in esecuzione con Momentum. Lasceremo la sua configurazione invariata, poiché ha già una capacità di accettare iniezioni in arrivo da altri host approvati.
Questa è una versione più piccola di una configurazione di produzione, dove i nodi di “generazione” e i nodi MTA sono separati, ma strettamente collegati tramite una VLAN privata e bilanciatori di carico, che gestiscono il traffico di iniezione SMTP interno.

Gli strumenti S/MIME sono installati come prima, e inietteremo messaggi all'indirizzo dell'host SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
Come prima, abbiamo la chiave privata del mittente (steve@thetucks.com.pem) e la chiave pubblica del destinatario (steve.tuck@sparkpost.com.crt) già presenti sul nodo di “generazione”. Le prime righe del file di messaggio corrispondono a questi indirizzi.
Inviamo il messaggio dal nodo di “generazione” con esattamente lo stesso comando di prima, e il messaggio appare nella casella di posta.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Come ci si aspetterebbe, S/MIME coesiste felicemente anche con la firma DKIM di Momentum.
Momentum supporta vari mezzi di iniezione dei messaggi, inclusi API e SMTP. SMTP è il metodo utilizzato qui, verso un host già in esecuzione con Momentum. Lasceremo la sua configurazione invariata, poiché ha già una capacità di accettare iniezioni in arrivo da altri host approvati.
Questa è una versione più piccola di una configurazione di produzione, dove i nodi di “generazione” e i nodi MTA sono separati, ma strettamente collegati tramite una VLAN privata e bilanciatori di carico, che gestiscono il traffico di iniezione SMTP interno.

Gli strumenti S/MIME sono installati come prima, e inietteremo messaggi all'indirizzo dell'host SMTP (MTA):
export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here
Come prima, abbiamo la chiave privata del mittente (steve@thetucks.com.pem) e la chiave pubblica del destinatario (steve.tuck@sparkpost.com.crt) già presenti sul nodo di “generazione”. Le prime righe del file di messaggio corrispondono a questi indirizzi.
Inviamo il messaggio dal nodo di “generazione” con esattamente lo stesso comando di prima, e il messaggio appare nella casella di posta.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Come ci si aspetterebbe, S/MIME coesiste felicemente anche con la firma DKIM di Momentum.
4. Iniezione SMTP verso SparkPost
Nel parte 2 abbiamo utilizzato l'API REST delle trasmissioni di SparkPost per iniettare messaggi. Naturalmente, è possibile iniettare messaggi in SparkPost anche utilizzando SMTP. Abbiamo impostato le variabili ambiente in questo modo:
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
Se stai utilizzando il servizio ospitato in UE di SparkPost, imposta SMTP_HOST come smtp.eu.sparkpostmail.com.
(Vedi qui per ulteriori opzioni – ad esempio puoi iniettare sulla porta 2525 invece di 587.)
Il seguente output mostra che STARTTLS è utilizzato, insieme al nome utente e alla password.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vedrai:
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
La password viene stampata con caratteri sostitutivi ***, quindi non comprometti la privacy della tua chiave se qualcuno ti sta guardando.
Proteggere le tue credenziali
Nota che le variabili ambiente possono essere impostate in un file di script shell o simile, per risparmiare tempo di riscrittura. Se lo fai, ti preghiamo di proteggere le tue password/API key limitando l'accesso a quel file solo a te stesso. Ad esempio, se il tuo file di configurazione delle credenziali è chiamato my_envs.sh, esegui:
chmod 0700 my_envs.sh
Avvertenze relative a SMTP che potresti vedere
Il servizio di iniezione SMTP di SparkPost è piuttosto rigido, come ci si potrebbe aspettare da un servizio pubblico. Se non hai impostato il numero della porta SMTP, vedrai un avviso:
{ 'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied') }
Se non hai impostato il nome utente SMTP o non hai impostato la password, vedrai:
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
Questi messaggi di errore vengono riportati semplicemente così come sono dalla libreria SMTP di Python, da qui il formato.
Nel parte 2 abbiamo utilizzato l'API REST delle trasmissioni di SparkPost per iniettare messaggi. Naturalmente, è possibile iniettare messaggi in SparkPost anche utilizzando SMTP. Abbiamo impostato le variabili ambiente in questo modo:
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
Se stai utilizzando il servizio ospitato in UE di SparkPost, imposta SMTP_HOST come smtp.eu.sparkpostmail.com.
(Vedi qui per ulteriori opzioni – ad esempio puoi iniettare sulla porta 2525 invece di 587.)
Il seguente output mostra che STARTTLS è utilizzato, insieme al nome utente e alla password.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vedrai:
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
La password viene stampata con caratteri sostitutivi ***, quindi non comprometti la privacy della tua chiave se qualcuno ti sta guardando.
Proteggere le tue credenziali
Nota che le variabili ambiente possono essere impostate in un file di script shell o simile, per risparmiare tempo di riscrittura. Se lo fai, ti preghiamo di proteggere le tue password/API key limitando l'accesso a quel file solo a te stesso. Ad esempio, se il tuo file di configurazione delle credenziali è chiamato my_envs.sh, esegui:
chmod 0700 my_envs.sh
Avvertenze relative a SMTP che potresti vedere
Il servizio di iniezione SMTP di SparkPost è piuttosto rigido, come ci si potrebbe aspettare da un servizio pubblico. Se non hai impostato il numero della porta SMTP, vedrai un avviso:
{ 'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied') }
Se non hai impostato il nome utente SMTP o non hai impostato la password, vedrai:
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
Questi messaggi di errore vengono riportati semplicemente così come sono dalla libreria SMTP di Python, da qui il formato.
Nel parte 2 abbiamo utilizzato l'API REST delle trasmissioni di SparkPost per iniettare messaggi. Naturalmente, è possibile iniettare messaggi in SparkPost anche utilizzando SMTP. Abbiamo impostato le variabili ambiente in questo modo:
export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>
Se stai utilizzando il servizio ospitato in UE di SparkPost, imposta SMTP_HOST come smtp.eu.sparkpostmail.com.
(Vedi qui per ulteriori opzioni – ad esempio puoi iniettare sulla porta 2525 invece di 587.)
Il seguente output mostra che STARTTLS è utilizzato, insieme al nome utente e alla password.
./sparkpostSMIME.py tests/fancy-HTML-to-smt.eml --sign --encrypt --send_smtp
Vedrai:
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
La password viene stampata con caratteri sostitutivi ***, quindi non comprometti la privacy della tua chiave se qualcuno ti sta guardando.
Proteggere le tue credenziali
Nota che le variabili ambiente possono essere impostate in un file di script shell o simile, per risparmiare tempo di riscrittura. Se lo fai, ti preghiamo di proteggere le tue password/API key limitando l'accesso a quel file solo a te stesso. Ad esempio, se il tuo file di configurazione delle credenziali è chiamato my_envs.sh, esegui:
chmod 0700 my_envs.sh
Avvertenze relative a SMTP che potresti vedere
Il servizio di iniezione SMTP di SparkPost è piuttosto rigido, come ci si potrebbe aspettare da un servizio pubblico. Se non hai impostato il numero della porta SMTP, vedrai un avviso:
{ 'bob.lumreeker@gmail.com': (550, b'5.7.1 relaying denied') }
Se non hai impostato il nome utente SMTP o non hai impostato la password, vedrai:
(530, b'5.7.1 Authorization required. Ref. https://developers.sparkpost.com/api/index#header-smtp-relay-endpoints', 'steve@thetucks.com')
Questi messaggi di errore vengono riportati semplicemente così come sono dalla libreria SMTP di Python, da qui il formato.
Quale è più veloce – SMTP o API?
Confronto delle prestazioni
Ecco un rapido riepilogo dei test di prestazione:
Misurazione | SMTP | API | Note |
|---|---|---|---|
File piccolo (~19 KB) | ~60 ms | ~60 ms | Prestazioni praticamente identiche |
File grande (~577 KB) | ~280 ms | ~200 ms | API leggermente più veloce con carichi più grandi |
Francamente, S/MIME è improbabile che sia un caso d'uso ad alto volume, ma avere lo stesso strumento con due opzioni di output era inevitabile che ci portasse a una gara!
Il file di test email "Avocado" utilizzato qui è di circa 19KB. Ripetere i test 10 volte tramite un ciclo bash ha mostrato che i tempi medi erano simili per SMTP e API, intorno ai 60 millisecondi per messaggio, che è piuttosto veloce. In questo caso, abbiamo iniettato da un'istanza EC2 di dimensioni medie nella stessa regione di hosting di SparkPost.com, il che è un buon modo per mantenere bassi i tempi di andata e ritorno della rete.
Ripetendo con un file di test più grande (577KB), l'API ha impiegato circa 200 millisecondi, mentre SMTP ha impiegato 280 millisecondi per messaggio – ancora impressionante per una dimensione del file 30 volte più grande. Ovviamente, i tuoi risultati possono variare a seconda della posizione, congestione di internet ecc., ma le prestazioni non saranno probabilmente un problema.
Se hai davvero bisogno di prestazioni massime, un buon punto di partenza sarebbe lanciare un numero impostato di processi/sessioni di iniezione concorrenti secondo le nostre raccomandazioni sulle migliori pratiche di trasmissione – ad esempio, da un compito di supervisione.
Confronto delle prestazioni
Ecco un rapido riepilogo dei test di prestazione:
Misurazione | SMTP | API | Note |
|---|---|---|---|
File piccolo (~19 KB) | ~60 ms | ~60 ms | Prestazioni praticamente identiche |
File grande (~577 KB) | ~280 ms | ~200 ms | API leggermente più veloce con carichi più grandi |
Francamente, S/MIME è improbabile che sia un caso d'uso ad alto volume, ma avere lo stesso strumento con due opzioni di output era inevitabile che ci portasse a una gara!
Il file di test email "Avocado" utilizzato qui è di circa 19KB. Ripetere i test 10 volte tramite un ciclo bash ha mostrato che i tempi medi erano simili per SMTP e API, intorno ai 60 millisecondi per messaggio, che è piuttosto veloce. In questo caso, abbiamo iniettato da un'istanza EC2 di dimensioni medie nella stessa regione di hosting di SparkPost.com, il che è un buon modo per mantenere bassi i tempi di andata e ritorno della rete.
Ripetendo con un file di test più grande (577KB), l'API ha impiegato circa 200 millisecondi, mentre SMTP ha impiegato 280 millisecondi per messaggio – ancora impressionante per una dimensione del file 30 volte più grande. Ovviamente, i tuoi risultati possono variare a seconda della posizione, congestione di internet ecc., ma le prestazioni non saranno probabilmente un problema.
Se hai davvero bisogno di prestazioni massime, un buon punto di partenza sarebbe lanciare un numero impostato di processi/sessioni di iniezione concorrenti secondo le nostre raccomandazioni sulle migliori pratiche di trasmissione – ad esempio, da un compito di supervisione.
Confronto delle prestazioni
Ecco un rapido riepilogo dei test di prestazione:
Misurazione | SMTP | API | Note |
|---|---|---|---|
File piccolo (~19 KB) | ~60 ms | ~60 ms | Prestazioni praticamente identiche |
File grande (~577 KB) | ~280 ms | ~200 ms | API leggermente più veloce con carichi più grandi |
Francamente, S/MIME è improbabile che sia un caso d'uso ad alto volume, ma avere lo stesso strumento con due opzioni di output era inevitabile che ci portasse a una gara!
Il file di test email "Avocado" utilizzato qui è di circa 19KB. Ripetere i test 10 volte tramite un ciclo bash ha mostrato che i tempi medi erano simili per SMTP e API, intorno ai 60 millisecondi per messaggio, che è piuttosto veloce. In questo caso, abbiamo iniettato da un'istanza EC2 di dimensioni medie nella stessa regione di hosting di SparkPost.com, il che è un buon modo per mantenere bassi i tempi di andata e ritorno della rete.
Ripetendo con un file di test più grande (577KB), l'API ha impiegato circa 200 millisecondi, mentre SMTP ha impiegato 280 millisecondi per messaggio – ancora impressionante per una dimensione del file 30 volte più grande. Ovviamente, i tuoi risultati possono variare a seconda della posizione, congestione di internet ecc., ma le prestazioni non saranno probabilmente un problema.
Se hai davvero bisogno di prestazioni massime, un buon punto di partenza sarebbe lanciare un numero impostato di processi/sessioni di iniezione concorrenti secondo le nostre raccomandazioni sulle migliori pratiche di trasmissione – ad esempio, da un compito di supervisione.



