S/MIME Bagian 3: Plug and Play untuk Email Aman di Lokasi

Burung

1 Des 2019

Email

1 min read

S/MIME Bagian 3: Plug and Play untuk Email Aman di Lokasi

Poin Penting

    • Integrasi S/MIME untuk MTA lokal: pelajari cara menyuntikkan aliran email yang ditandatangani dan dienkripsi ke dalam PowerMTA, Momentum, atau SparkPost SMTP sambil mempertahankan DKIM yang ada dan pengaturan kepatuhan.

    • Model keamanan hibrid: gabungkan enkripsi S/MIME + penandatanganan DKIM untuk menjamin keaslian pesan dan privasi konten di lingkungan yang diatur.

    • Alur penyebaran: konfigurasikan variabel lingkungan (SMTP_HOST, kredensial, kunci), jalankan workflow --sign --encrypt --send_smtp, dan validasikan laporan pengiriman.

    • Wawasan kinerja: tes menunjukkan kecepatan hampir identik untuk penyuntikan SMTP vs API (~60 ms per pesan, 200–280 ms untuk file yang lebih besar).

    • Praktik terbaik keamanan: simpan kunci privat dan kata sandi API dalam file terbatas (chmod 0700), gunakan STARTTLS dan sesi SMTP terotentikasi.

    • Kasus penggunaan: perusahaan yang memodernisasi sistem email lama dapat memperluas enkripsi end-to-end tanpa meninggalkan infrastruktur yang ada.

Sorotan Tanya jawab

  • Mengapa mengadaptasi S/MIME untuk server lokal alih-alih API cloud?

    Banyak industri yang diatur (sektor bank dan kesehatan) harus menyimpan surat di lokasi. Pendekatan ini mempertahankan kontrol atas aliran pesan sambil menambahkan perlindungan kriptografi modern.

  • Bagaimana cara kerja injeksi SMTP dengan PowerMTA atau Momentum?

    Anda menyuntikkan pesan S/MIME yang sudah lengkap ke pendengar lokal (port 25 atau VLAN pribadi). MTA ini kemudian menangani penandatanganan DKIM dan pengiriman seperti biasa.

  • Apakah S/MIME kompatibel dengan DKIM?

    Ya — DKIM menandatangani pesan setelah enkripsi S/MIME, sehingga otentikasi dan pemeriksaan integritas tetap utuh.

  • Bagaimana cara melindungi kredensial dan kunci SMTP saya?

    Ekspor variabel lingkungan hanya dalam skrip yang terkunci dan gunakan izin file untuk membatasi akses hanya untuk diri sendiri (chmod 0700 my_envs.sh).

  • Apa yang harus saya pantau setelah pengaturan?

    Latensi pengiriman (API vs SMTP), tingkat keberhasilan TLS handshake, hasil validasi DKIM/S-MIME, dan log kesalahan untuk "relaying denied" atau otentikasi yang hilang.

  • Siapa yang paling mendapat manfaat dari konfigurasi ini?

    Organisasi yang menjalankan gateway email mandiri yang memerlukan enkripsi dengan standar kepatuhan namun ingin alat yang siap digunakan tanpa menulis ulang saluran email.

Dalam bagian 1, kami melakukan tur cepat mengenai S/MIME, melihat tanda tangan dan enkripsi dari aliran pesan kami di berbagai klien email. Untuk organisasi yang menerapkan enkripsi S/MIME, memahami cara mengumpulkan kunci publik penerima dengan efisien menjadi penting untuk operasi email aman yang dapat diskalakan. Bagian 2 membawa kami melalui alat baris perintah sederhana untuk menandatangani dan mengenkripsi email, lalu mengirimkannya melalui SparkPost.

Dalam bagian ini, kita akan melihat bagaimana alat tersebut dapat disesuaikan untuk menyuntikkan aliran email ke platform on-premises seperti Port25 PowerMTA dan Momentum.

Oke – mari kita mulai!

Dalam bagian 1, kami melakukan tur cepat mengenai S/MIME, melihat tanda tangan dan enkripsi dari aliran pesan kami di berbagai klien email. Untuk organisasi yang menerapkan enkripsi S/MIME, memahami cara mengumpulkan kunci publik penerima dengan efisien menjadi penting untuk operasi email aman yang dapat diskalakan. Bagian 2 membawa kami melalui alat baris perintah sederhana untuk menandatangani dan mengenkripsi email, lalu mengirimkannya melalui SparkPost.

Dalam bagian ini, kita akan melihat bagaimana alat tersebut dapat disesuaikan untuk menyuntikkan aliran email ke platform on-premises seperti Port25 PowerMTA dan Momentum.

Oke – mari kita mulai!

Dalam bagian 1, kami melakukan tur cepat mengenai S/MIME, melihat tanda tangan dan enkripsi dari aliran pesan kami di berbagai klien email. Untuk organisasi yang menerapkan enkripsi S/MIME, memahami cara mengumpulkan kunci publik penerima dengan efisien menjadi penting untuk operasi email aman yang dapat diskalakan. Bagian 2 membawa kami melalui alat baris perintah sederhana untuk menandatangani dan mengenkripsi email, lalu mengirimkannya melalui SparkPost.

Dalam bagian ini, kita akan melihat bagaimana alat tersebut dapat disesuaikan untuk menyuntikkan aliran email ke platform on-premises seperti Port25 PowerMTA dan Momentum.

Oke – mari kita mulai!

1. Memulai

Menginstal alat, mendapatkan kunci Anda, dll. adalah persis sama seperti sebelumnya. Saat Anda menggunakan sistem email di lokasi seperti PowerMTA atau Momentum, Anda sudah bertanggung jawab untuk mengatur domain pengiriman, kunci DKIM, dll. Organisasi yang menjalankan sistem di lokasi juga sering perlu mengatasi tantangan sistem pengarsipan email untuk kepatuhan peraturan dan kebutuhan retensi data. Apa yang perlu kita lakukan sekarang adalah menyediakan cara untuk menyuntikkan pesan S/MIME yang sudah terbentuk sepenuhnya ke dalam server Anda.

Menginstal alat, mendapatkan kunci Anda, dll. adalah persis sama seperti sebelumnya. Saat Anda menggunakan sistem email di lokasi seperti PowerMTA atau Momentum, Anda sudah bertanggung jawab untuk mengatur domain pengiriman, kunci DKIM, dll. Organisasi yang menjalankan sistem di lokasi juga sering perlu mengatasi tantangan sistem pengarsipan email untuk kepatuhan peraturan dan kebutuhan retensi data. Apa yang perlu kita lakukan sekarang adalah menyediakan cara untuk menyuntikkan pesan S/MIME yang sudah terbentuk sepenuhnya ke dalam server Anda.

Menginstal alat, mendapatkan kunci Anda, dll. adalah persis sama seperti sebelumnya. Saat Anda menggunakan sistem email di lokasi seperti PowerMTA atau Momentum, Anda sudah bertanggung jawab untuk mengatur domain pengiriman, kunci DKIM, dll. Organisasi yang menjalankan sistem di lokasi juga sering perlu mengatasi tantangan sistem pengarsipan email untuk kepatuhan peraturan dan kebutuhan retensi data. Apa yang perlu kita lakukan sekarang adalah menyediakan cara untuk menyuntikkan pesan S/MIME yang sudah terbentuk sepenuhnya ke dalam server Anda.

2. Penyuntikan SMTP menuju Port25 PowerMTA

PowerMTA mendukung berbagai cara penyuntikan pesan, termasuk direktori “pickup” file, SMTP, dan API. SMTP adalah metode yang digunakan di sini.

Untuk menggambarkan pengaturan yang mungkin paling sederhana, kita akan menginstal alat S/MIME di server yang sama dengan PowerMTA. Kita menyuntikkan pesan ke pendengar, yang terbuka secara default di port TCP 25, hanya menerima lalu lintas lokal.

export SMTP_HOST=localhost

(Jika Anda melupakan langkah itu, Anda akan melihat: “Environment var SMTP_HOST not set – stopping” ketika Anda mencoba untuk menjalankannya.)


Kita sudah memiliki kunci privat pengirim (steve@thetucks.com.pem) dan kunci publik penerima (steve.tuck@sparkpost.com.crt). Beberapa baris pertama dari file pesan adalah:

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


Kita mengirim pesan dengan:

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


Kita melihat:

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


Pesan tiba dengan cepat di kotak masuk dan dilaporkan di Mac Mail sebagai ditandatangani dan dienkripsi.

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


Fitur bonus: DKIM dengan PowerMTA

DKIM cukup mudah untuk dikonfigurasi dan coexist dengan bahagia dengan S/MIME. Langkah-langkahnya adalah:

  • Gunakan situs DKIM Wizard PowerMTA untuk membuat kunci privat domain pengirim (dalam kasus saya, mypmta.thetucks.com.pem) dan isi catatan DNS TXT publik.

  • Atur catatan DNS TXT, dengan pemilih yang dipilih. Misalnya, saya menggunakan pemilih pmta201811. Karakter pemilih yang valid didefinisikan di sini.

  • Tempatkan berkas mypmta.thetucks.com.pem di server dalam direktori /etc/pmta .

  • Tambahkan yang berikut ke konfigurasi /etc/pmta saya dan restart layanan pmta. (Di sini, direktif ini ditulis pada cakupan global; di sistem produksi, Anda mungkin lebih suka menambahkannya di bawah virtual-mta sebagai gantinya.)


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


Catatan DNS memeriksa OK melalui MX Toolbox, dan DKIM sekarang aktif.

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

PowerMTA mendukung berbagai cara penyuntikan pesan, termasuk direktori “pickup” file, SMTP, dan API. SMTP adalah metode yang digunakan di sini.

Untuk menggambarkan pengaturan yang mungkin paling sederhana, kita akan menginstal alat S/MIME di server yang sama dengan PowerMTA. Kita menyuntikkan pesan ke pendengar, yang terbuka secara default di port TCP 25, hanya menerima lalu lintas lokal.

export SMTP_HOST=localhost

(Jika Anda melupakan langkah itu, Anda akan melihat: “Environment var SMTP_HOST not set – stopping” ketika Anda mencoba untuk menjalankannya.)


Kita sudah memiliki kunci privat pengirim (steve@thetucks.com.pem) dan kunci publik penerima (steve.tuck@sparkpost.com.crt). Beberapa baris pertama dari file pesan adalah:

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


Kita mengirim pesan dengan:

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


Kita melihat:

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


Pesan tiba dengan cepat di kotak masuk dan dilaporkan di Mac Mail sebagai ditandatangani dan dienkripsi.

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


Fitur bonus: DKIM dengan PowerMTA

DKIM cukup mudah untuk dikonfigurasi dan coexist dengan bahagia dengan S/MIME. Langkah-langkahnya adalah:

  • Gunakan situs DKIM Wizard PowerMTA untuk membuat kunci privat domain pengirim (dalam kasus saya, mypmta.thetucks.com.pem) dan isi catatan DNS TXT publik.

  • Atur catatan DNS TXT, dengan pemilih yang dipilih. Misalnya, saya menggunakan pemilih pmta201811. Karakter pemilih yang valid didefinisikan di sini.

  • Tempatkan berkas mypmta.thetucks.com.pem di server dalam direktori /etc/pmta .

  • Tambahkan yang berikut ke konfigurasi /etc/pmta saya dan restart layanan pmta. (Di sini, direktif ini ditulis pada cakupan global; di sistem produksi, Anda mungkin lebih suka menambahkannya di bawah virtual-mta sebagai gantinya.)


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


Catatan DNS memeriksa OK melalui MX Toolbox, dan DKIM sekarang aktif.

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

PowerMTA mendukung berbagai cara penyuntikan pesan, termasuk direktori “pickup” file, SMTP, dan API. SMTP adalah metode yang digunakan di sini.

Untuk menggambarkan pengaturan yang mungkin paling sederhana, kita akan menginstal alat S/MIME di server yang sama dengan PowerMTA. Kita menyuntikkan pesan ke pendengar, yang terbuka secara default di port TCP 25, hanya menerima lalu lintas lokal.

export SMTP_HOST=localhost

(Jika Anda melupakan langkah itu, Anda akan melihat: “Environment var SMTP_HOST not set – stopping” ketika Anda mencoba untuk menjalankannya.)


Kita sudah memiliki kunci privat pengirim (steve@thetucks.com.pem) dan kunci publik penerima (steve.tuck@sparkpost.com.crt). Beberapa baris pertama dari file pesan adalah:

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


Kita mengirim pesan dengan:

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


Kita melihat:

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


Pesan tiba dengan cepat di kotak masuk dan dilaporkan di Mac Mail sebagai ditandatangani dan dienkripsi.

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


Fitur bonus: DKIM dengan PowerMTA

DKIM cukup mudah untuk dikonfigurasi dan coexist dengan bahagia dengan S/MIME. Langkah-langkahnya adalah:

  • Gunakan situs DKIM Wizard PowerMTA untuk membuat kunci privat domain pengirim (dalam kasus saya, mypmta.thetucks.com.pem) dan isi catatan DNS TXT publik.

  • Atur catatan DNS TXT, dengan pemilih yang dipilih. Misalnya, saya menggunakan pemilih pmta201811. Karakter pemilih yang valid didefinisikan di sini.

  • Tempatkan berkas mypmta.thetucks.com.pem di server dalam direktori /etc/pmta .

  • Tambahkan yang berikut ke konfigurasi /etc/pmta saya dan restart layanan pmta. (Di sini, direktif ini ditulis pada cakupan global; di sistem produksi, Anda mungkin lebih suka menambahkannya di bawah virtual-mta sebagai gantinya.)


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


Catatan DNS memeriksa OK melalui MX Toolbox, dan DKIM sekarang aktif.

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

3. Penyuntikan SMTP Terhadap Momentum

Momentum mendukung berbagai cara untuk menyuntikkan pesan, termasuk API dan SMTP. SMTP adalah metode yang digunakan di sini, menuju host yang sudah menjalankan Momentum. Kami akan membiarkan konfigurasinya tidak berubah, karena sudah memiliki kemampuan untuk menerima suntikan masuk dari host lain yang disetujui.

Ini adalah versi yang lebih kecil dari pengaturan produksi, di mana node “generasi” dan node MTA terpisah, tetapi saling terkait erat melalui VLAN pribadi dan load-balancer, yang membawa lalu lintas suntikan SMTP internal.


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


Alat S/MIME diinstal seperti sebelumnya, dan kami akan menyuntikkan pesan ke alamat host SMTP (MTA):

export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here

Sebagaimana sebelumnya, kami memiliki kunci pribadi pengirim (steve@thetucks.com.pem) dan kunci publik penerima (steve.tuck@sparkpost.com.crt) sudah ada di node “generasi”. Beberapa baris pertama dari file pesan cocok dengan alamat-alamat ini.

Kami mengirim pesan dari node “generasi” dengan perintah yang persis sama seperti sebelumnya, dan pesan muncul di kotak masuk.

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

Seperti yang Anda harapkan, S/MIME juga dengan senang hati hidup berdampingan dengan penandatanganan DKIM Momentum.

Momentum mendukung berbagai cara untuk menyuntikkan pesan, termasuk API dan SMTP. SMTP adalah metode yang digunakan di sini, menuju host yang sudah menjalankan Momentum. Kami akan membiarkan konfigurasinya tidak berubah, karena sudah memiliki kemampuan untuk menerima suntikan masuk dari host lain yang disetujui.

Ini adalah versi yang lebih kecil dari pengaturan produksi, di mana node “generasi” dan node MTA terpisah, tetapi saling terkait erat melalui VLAN pribadi dan load-balancer, yang membawa lalu lintas suntikan SMTP internal.


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


Alat S/MIME diinstal seperti sebelumnya, dan kami akan menyuntikkan pesan ke alamat host SMTP (MTA):

export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here

Sebagaimana sebelumnya, kami memiliki kunci pribadi pengirim (steve@thetucks.com.pem) dan kunci publik penerima (steve.tuck@sparkpost.com.crt) sudah ada di node “generasi”. Beberapa baris pertama dari file pesan cocok dengan alamat-alamat ini.

Kami mengirim pesan dari node “generasi” dengan perintah yang persis sama seperti sebelumnya, dan pesan muncul di kotak masuk.

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

Seperti yang Anda harapkan, S/MIME juga dengan senang hati hidup berdampingan dengan penandatanganan DKIM Momentum.

Momentum mendukung berbagai cara untuk menyuntikkan pesan, termasuk API dan SMTP. SMTP adalah metode yang digunakan di sini, menuju host yang sudah menjalankan Momentum. Kami akan membiarkan konfigurasinya tidak berubah, karena sudah memiliki kemampuan untuk menerima suntikan masuk dari host lain yang disetujui.

Ini adalah versi yang lebih kecil dari pengaturan produksi, di mana node “generasi” dan node MTA terpisah, tetapi saling terkait erat melalui VLAN pribadi dan load-balancer, yang membawa lalu lintas suntikan SMTP internal.


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


Alat S/MIME diinstal seperti sebelumnya, dan kami akan menyuntikkan pesan ke alamat host SMTP (MTA):

export SMTP_HOST=xx.xx.xx.xx # set your own MTA / VIP address here

Sebagaimana sebelumnya, kami memiliki kunci pribadi pengirim (steve@thetucks.com.pem) dan kunci publik penerima (steve.tuck@sparkpost.com.crt) sudah ada di node “generasi”. Beberapa baris pertama dari file pesan cocok dengan alamat-alamat ini.

Kami mengirim pesan dari node “generasi” dengan perintah yang persis sama seperti sebelumnya, dan pesan muncul di kotak masuk.

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

Seperti yang Anda harapkan, S/MIME juga dengan senang hati hidup berdampingan dengan penandatanganan DKIM Momentum.

4. Penyuntikan SMTP menuju SparkPost

Dalam bagian 2, kami menggunakan API REST transmisi SparkPost untuk menyuntikkan pesan. Tentu saja, juga memungkinkan untuk menyuntikkan pesan ke SparkPost menggunakan SMTP. Kami mengatur variabel lingkungan seperti ini:

export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>

Jika Anda menggunakan layanan SparkPost hosted EU, maka atur SMTP_HOST sebagai smtp.eu.sparkpostmail.com.
(Lihat di sini untuk opsi lainnya – misalnya, Anda dapat menyuntikkan di port 2525 daripada 587.)

Output di bawah ini menunjukkan STARTTLS digunakan, bersama dengan nama pengguna dan kata sandi.

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


Anda akan melihat:

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

Kata sandi dicetak dengan karakter pengganti ***, jadi Anda tidak mengkompromikan privasi kunci Anda jika seseorang melihat dari belakang.

Mengamankan Kredensial Anda

Perhatikan bahwa variabel lingkungan dapat diatur dalam file skrip shell atau serupa, untuk menghindari pengetikan ulang. Jika Anda melakukannya, harap jaga kata sandi/kunci API Anda dengan membatasi akses ke file itu hanya untuk Anda sendiri. Misalnya, jika file pengaturan kredensial Anda bernama my_envs.sh, maka jalankan:

chmod 0700 my_envs.sh


Peringatan Terkait SMTP yang Mungkin Anda Lihat

Penyuntikan SMTP SparkPost cukup ketat, seperti yang Anda harapkan dari layanan publik. Jika Anda belum mengatur nomor port SMTP, Anda akan melihat peringatan:

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


Jika Anda belum mengatur nama pengguna SMTP atau belum mengatur kata sandi, Anda akan melihat:

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

Pesan kesalahan ini dilaporkan apa adanya dari pustaka SMTP Python, sehingga formatnya.

Dalam bagian 2, kami menggunakan API REST transmisi SparkPost untuk menyuntikkan pesan. Tentu saja, juga memungkinkan untuk menyuntikkan pesan ke SparkPost menggunakan SMTP. Kami mengatur variabel lingkungan seperti ini:

export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>

Jika Anda menggunakan layanan SparkPost hosted EU, maka atur SMTP_HOST sebagai smtp.eu.sparkpostmail.com.
(Lihat di sini untuk opsi lainnya – misalnya, Anda dapat menyuntikkan di port 2525 daripada 587.)

Output di bawah ini menunjukkan STARTTLS digunakan, bersama dengan nama pengguna dan kata sandi.

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


Anda akan melihat:

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

Kata sandi dicetak dengan karakter pengganti ***, jadi Anda tidak mengkompromikan privasi kunci Anda jika seseorang melihat dari belakang.

Mengamankan Kredensial Anda

Perhatikan bahwa variabel lingkungan dapat diatur dalam file skrip shell atau serupa, untuk menghindari pengetikan ulang. Jika Anda melakukannya, harap jaga kata sandi/kunci API Anda dengan membatasi akses ke file itu hanya untuk Anda sendiri. Misalnya, jika file pengaturan kredensial Anda bernama my_envs.sh, maka jalankan:

chmod 0700 my_envs.sh


Peringatan Terkait SMTP yang Mungkin Anda Lihat

Penyuntikan SMTP SparkPost cukup ketat, seperti yang Anda harapkan dari layanan publik. Jika Anda belum mengatur nomor port SMTP, Anda akan melihat peringatan:

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


Jika Anda belum mengatur nama pengguna SMTP atau belum mengatur kata sandi, Anda akan melihat:

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

Pesan kesalahan ini dilaporkan apa adanya dari pustaka SMTP Python, sehingga formatnya.

Dalam bagian 2, kami menggunakan API REST transmisi SparkPost untuk menyuntikkan pesan. Tentu saja, juga memungkinkan untuk menyuntikkan pesan ke SparkPost menggunakan SMTP. Kami mengatur variabel lingkungan seperti ini:

export SMTP_PASSWORD=<<YOUR_API_KEY_HERE>

Jika Anda menggunakan layanan SparkPost hosted EU, maka atur SMTP_HOST sebagai smtp.eu.sparkpostmail.com.
(Lihat di sini untuk opsi lainnya – misalnya, Anda dapat menyuntikkan di port 2525 daripada 587.)

Output di bawah ini menunjukkan STARTTLS digunakan, bersama dengan nama pengguna dan kata sandi.

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


Anda akan melihat:

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

Kata sandi dicetak dengan karakter pengganti ***, jadi Anda tidak mengkompromikan privasi kunci Anda jika seseorang melihat dari belakang.

Mengamankan Kredensial Anda

Perhatikan bahwa variabel lingkungan dapat diatur dalam file skrip shell atau serupa, untuk menghindari pengetikan ulang. Jika Anda melakukannya, harap jaga kata sandi/kunci API Anda dengan membatasi akses ke file itu hanya untuk Anda sendiri. Misalnya, jika file pengaturan kredensial Anda bernama my_envs.sh, maka jalankan:

chmod 0700 my_envs.sh


Peringatan Terkait SMTP yang Mungkin Anda Lihat

Penyuntikan SMTP SparkPost cukup ketat, seperti yang Anda harapkan dari layanan publik. Jika Anda belum mengatur nomor port SMTP, Anda akan melihat peringatan:

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


Jika Anda belum mengatur nama pengguna SMTP atau belum mengatur kata sandi, Anda akan melihat:

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

Pesan kesalahan ini dilaporkan apa adanya dari pustaka SMTP Python, sehingga formatnya.

Mana yang lebih cepat - SMTP atau API?

Perbandingan kinerja

Berikut adalah ringkasan cepat dari tes kinerja:

Pengukuran

SMTP

API

Keterangan

Berkas kecil (~19 KB)

~60 ms

~60 ms

Kinerja hampir identik

Berkas besar (~577 KB)

~280 ms

~200 ms

API sedikit lebih cepat dengan muatan yang lebih besar

Terus terang, S/MIME tidak mungkin menjadi kasus penggunaan dengan volume tinggi, tetapi memiliki alat yang sama dengan dua opsi keluaran hanya meminta kami untuk mengadakan perlombaan!

File tes email “Avocado” yang digunakan di sini sebesar kira-kira 19KB. Mengulang tes 10 kali melalui loop bash menunjukkan waktu rata-rata yang serupa untuk SMTP dan API, sekitar 60 milidetik per pesan, yang cukup cepat. Dalam hal ini, kami menyuntikkan dari instance EC2 medium di wilayah hosting yang sama dengan SparkPost.com, yang merupakan cara baik untuk menjaga waktu putar jaringan tetap rendah.

Dengan mengulangi ini menggunakan berkas tes yang lebih besar (577KB), API memerlukan waktu sekitar 200 milidetik, sementara SMTP memerlukan 280 milidetik per pesan – masih mengesankan untuk ukuran berkas yang 30x lebih besar. Tentu saja, pengalaman Anda mungkin bervariasi tergantung pada lokasi, kemacetan internet, dll., tetapi kinerja tidak mungkin menjadi masalah.

Jika Anda benar-benar memerlukan kinerja maksimum, titik awal yang baik adalah meluncurkan sejumlah proses/sesi suntikan konkuren yang sesuai dengan rekomendasi praktik terbaik transmisi kami – misalnya, dari tugas pengawas.

Perbandingan kinerja

Berikut adalah ringkasan cepat dari tes kinerja:

Pengukuran

SMTP

API

Keterangan

Berkas kecil (~19 KB)

~60 ms

~60 ms

Kinerja hampir identik

Berkas besar (~577 KB)

~280 ms

~200 ms

API sedikit lebih cepat dengan muatan yang lebih besar

Terus terang, S/MIME tidak mungkin menjadi kasus penggunaan dengan volume tinggi, tetapi memiliki alat yang sama dengan dua opsi keluaran hanya meminta kami untuk mengadakan perlombaan!

File tes email “Avocado” yang digunakan di sini sebesar kira-kira 19KB. Mengulang tes 10 kali melalui loop bash menunjukkan waktu rata-rata yang serupa untuk SMTP dan API, sekitar 60 milidetik per pesan, yang cukup cepat. Dalam hal ini, kami menyuntikkan dari instance EC2 medium di wilayah hosting yang sama dengan SparkPost.com, yang merupakan cara baik untuk menjaga waktu putar jaringan tetap rendah.

Dengan mengulangi ini menggunakan berkas tes yang lebih besar (577KB), API memerlukan waktu sekitar 200 milidetik, sementara SMTP memerlukan 280 milidetik per pesan – masih mengesankan untuk ukuran berkas yang 30x lebih besar. Tentu saja, pengalaman Anda mungkin bervariasi tergantung pada lokasi, kemacetan internet, dll., tetapi kinerja tidak mungkin menjadi masalah.

Jika Anda benar-benar memerlukan kinerja maksimum, titik awal yang baik adalah meluncurkan sejumlah proses/sesi suntikan konkuren yang sesuai dengan rekomendasi praktik terbaik transmisi kami – misalnya, dari tugas pengawas.

Perbandingan kinerja

Berikut adalah ringkasan cepat dari tes kinerja:

Pengukuran

SMTP

API

Keterangan

Berkas kecil (~19 KB)

~60 ms

~60 ms

Kinerja hampir identik

Berkas besar (~577 KB)

~280 ms

~200 ms

API sedikit lebih cepat dengan muatan yang lebih besar

Terus terang, S/MIME tidak mungkin menjadi kasus penggunaan dengan volume tinggi, tetapi memiliki alat yang sama dengan dua opsi keluaran hanya meminta kami untuk mengadakan perlombaan!

File tes email “Avocado” yang digunakan di sini sebesar kira-kira 19KB. Mengulang tes 10 kali melalui loop bash menunjukkan waktu rata-rata yang serupa untuk SMTP dan API, sekitar 60 milidetik per pesan, yang cukup cepat. Dalam hal ini, kami menyuntikkan dari instance EC2 medium di wilayah hosting yang sama dengan SparkPost.com, yang merupakan cara baik untuk menjaga waktu putar jaringan tetap rendah.

Dengan mengulangi ini menggunakan berkas tes yang lebih besar (577KB), API memerlukan waktu sekitar 200 milidetik, sementara SMTP memerlukan 280 milidetik per pesan – masih mengesankan untuk ukuran berkas yang 30x lebih besar. Tentu saja, pengalaman Anda mungkin bervariasi tergantung pada lokasi, kemacetan internet, dll., tetapi kinerja tidak mungkin menjadi masalah.

Jika Anda benar-benar memerlukan kinerja maksimum, titik awal yang baik adalah meluncurkan sejumlah proses/sesi suntikan konkuren yang sesuai dengan rekomendasi praktik terbaik transmisi kami – misalnya, dari tugas pengawas.

Menyimpulkan ...

Kami telah melihat bagaimana alat berbasis API SparkPost yang digunakan di Bagian 2 diperbarui untuk mendukung injeksi SMTP guna mendukung MTA di lokasi seperti Port25 PowerMTA dan Momentum dalam berbagai konfigurasi, serta dengan SparkPost.

Itu saja untuk sekarang! Selamat mengirim.

Kami telah melihat bagaimana alat berbasis API SparkPost yang digunakan di Bagian 2 diperbarui untuk mendukung injeksi SMTP guna mendukung MTA di lokasi seperti Port25 PowerMTA dan Momentum dalam berbagai konfigurasi, serta dengan SparkPost.

Itu saja untuk sekarang! Selamat mengirim.

Kami telah melihat bagaimana alat berbasis API SparkPost yang digunakan di Bagian 2 diperbarui untuk mendukung injeksi SMTP guna mendukung MTA di lokasi seperti Port25 PowerMTA dan Momentum dalam berbagai konfigurasi, serta dengan SparkPost.

Itu saja untuk sekarang! Selamat mengirim.

Berita lainnya

Baca lebih lanjut dari kategori ini

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

Platform AI-native lengkap yang dapat berkembang seiring dengan bisnis Anda.

© 2025 Burung

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

Platform AI-native lengkap yang dapat berkembang seiring dengan bisnis Anda.

© 2025 Burung