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

Dalam bagian ini, kami akan melihat bagaimana alat ini dapat disesuaikan untuk menyuntikkan aliran email ke platform lokal seperti PowerMTA dan Momentum.

Author

Burung

Kategori

Email

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

Dalam bagian ini, kami akan melihat bagaimana alat ini dapat disesuaikan untuk menyuntikkan aliran email ke platform lokal seperti PowerMTA dan Momentum.

Author

Burung

Kategori

Email

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

Dalam bagian ini, kami akan melihat bagaimana alat ini dapat disesuaikan untuk menyuntikkan aliran email ke platform lokal seperti PowerMTA dan Momentum.

Author

Burung

Kategori

Email

Di bagian 1, kami telah melakukan tur cepat tentang S/MIME, melihat tanda tangan dan enkripsi aliran pesan kami di berbagai klien email. Bagian 2 membawa kami melalui alat baris perintah sederhana untuk menandatangani dan mengenkripsi email, lalu mengirimkannya melalui SparkPost.

Di bagian ini, kita akan melihat bagaimana alat ini dapat disesuaikan untuk menyuntikkan aliran email ke platform lokal seperti Port25 PowerMTA dan Momentum.

Oke – mari kita mulai!

1. Memulai

Memasang alat, mendapatkan kunci Anda, dll. sama persis seperti sebelumnya. Ketika Anda menggunakan sistem email on-premises seperti PowerMTA atau Momentum, Anda sudah bertanggung jawab untuk mengatur domain pengirim, kunci DKIM, dll. Apa yang perlu kita lakukan sekarang adalah memberikan cara untuk menyuntikkan pesan S/MIME yang sepenuhnya terbentuk ke server Anda.

2. Penyuntikan SMTP menuju Port25 PowerMTA

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

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

export SMTP_HOST=localhost

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

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

To: SteveT <steve.tuck@sparkpost.com> From: Steve <steve@thetucks.com> Subject: Ini adalah pesan yang dibuat menggunakan HEML MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 Content-Language: id-ID Content-Transfer-Encoding: 7bit

Kami mengirim pesan dengan:

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

Kami melihat:

Dibuka koneksi SMTP (plain) ke localhost, port 25, user="", password="" Mengirim tests/fancy-HTML-to-smt.eml Dari: Steve <steve@thetucks.com> Kepada: SteveT <steve.tuck@sparkpost.com> OK - dalam 0.028 detik

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

Fitur bonus: DKIM dengan PowerMTA

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

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

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

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

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

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

Catatan DNS terverifikasi dengan baik melalui MX Toolbox, dan DKIM sekarang aktif.


3. Penyuntikan SMTP Menuju Momentum

Momentum mendukung berbagai cara penyuntikan 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 penyuntikan yang masuk dari host yang disetujui lainnya.

Ini adalah versi lebih kecil dari pengaturan produksi, di mana node “generasi” dan node MTA terpisah, tetapi berkaitan erat melalui VLAN pribadi dan pengimbang beban, yang membawa lalu lintas penyuntikan SMTP internal.


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

export SMTP_HOST=xx.xx.xx.xx # atur alamat MTA / VIP Anda di sini

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

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

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

Sesuai yang Anda harapkan, S/MIME juga dapat berdampingan dengan penandatanganan DKIM Momentum.

4. Penyuntikan SMTP menuju SparkPost

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

export SMTP_PASSWORD=<<KUNCI API ANDA DI SINI>> export SMTP_HOST=smtp.sparkpostmail.com export SMTP_USER=SMTP_Injection export SMTP_PORT=587

Jika Anda menggunakan layanan host EU SparkPost maka atur SMTP_HOST sebagai smtp.eu.sparkpostmail.com.
(Lihat di sini untuk lebih banyak pilihan – misalnya Anda dapat menyuntikkan di port 2525 daripada 587.)

Output di bawah 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:

Dibuka koneksi SMTP (STARTTLS) ke smtp.sparkpostmail.com, port 587, user="SMTP_Injection", password="****************************************" Mengirim tests/fancy-HTML-to-smt.eml Dari: Steve <steve@thetucks.com> Kepada: SteveT <steve.tuck@sparkpost.com> OK - dalam 0.057 detik

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

Mengamankan Kredensial Anda

Perhatikan bahwa variabel lingkungan dapat diatur dalam file skrip shell atau serupa, untuk menghindari pengetikan ulang. Jika Anda melakukannya, harap lindungi kata sandi/ kunci API Anda dengan membatasi akses ke file tersebut hanya untuk diri 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 hanya dilaporkan apa adanya dari pustaka SMTP Python, oleh karena itu formatnya.

Mana yang lebih cepat – SMTP atau API?

Sejujurnya, S/MIME tidak mungkin menjadi kasus penggunaan volume tinggi, tetapi memiliki alat yang sama dengan dua opsi output hanya meminta kami untuk melakukan perlombaan!

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

Mengulang ini dengan file uji yang lebih besar (577KB), API memerlukan waktu sekitar 200 milidetik, sementara SMTP memerlukan waktu 280 milidetik per pesan – masih mengesankan untuk ukuran file 30x lebih besar. Tentu saja, hasil Anda mungkin bervariasi tergantung lokasi, kemacetan internet, dll, tetapi kinerja tidak mungkin menjadi masalah.

Jika Anda benar-benar membutuhkan kinerja maksimum, titik awal yang baik akan meluncurkan sejumlah proses/sesi penyuntikan paralel sesuai dengan rekomendasi praktik terbaik transmisi kami – misalnya dari tugas pengawas.

Merangkum ...

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

Itu saja untuk sekarang! Selamat mengirim.

Sign up

Platform yang didukung AI untuk Pemasaran, Dukungan, dan Keuangan

Dengan mengklik "Dapatkan Demo" Anda setuju dengan Bird's

Sign up

Platform yang didukung AI untuk Pemasaran, Dukungan, dan Keuangan

Dengan mengklik "Dapatkan Demo" Anda setuju dengan Bird's

Sign up

Platform yang didukung AI untuk Pemasaran, Dukungan, dan Keuangan

Dengan mengklik "Dapatkan Demo" Anda setuju dengan Bird's

Channels

Grow

Engage

Automate

APIs

Resources

Company

Socials

Tumbuh

Kelola

Otomatisasi

Tumbuh

Kelola

Otomatisasi