Menempatkan Sinyal untuk On-Premises: Integrasi PowerMTA
Burung
30 Agu 2019
1 min read

Intisari Utama
Tujuan: Panduan ini menjelaskan cara mengintegrasikan PowerMTA 5.0+ dengan SparkPost Signals untuk mengalirkan data acara dan keterlibatan (bounces, opens, clicks, keluhan spam) dari MTA lokal langsung ke dalam lapisan analitik SparkPost.
Konfigurasi inti:
Tambahkan enable-signals true dan tentukan SparkPost ingest endpoint Anda (https://api.sparkpost.com/api/v1/ingest/events atau EU yang setara).
Gunakan API key yang valid dengan izin “Incoming Events: Write”.
Tentukan customer-id, dan secara opsional siapkan custom tracking domains untuk meningkatkan deliverabilitas.
Penyiapan pelacakan: Engagement Tracking PowerMTA secara otomatis menyuntikkan piksel buka dan klik ke dalam email HTML. Anda dapat menonaktifkan pelacakan per tautan dengan atribut data-msys-clicktrack="0".
Pelaporan selektif: Signals dapat diaktifkan secara global atau dibatasi untuk VirtualMTAs, pools, atau domain pengirim tertentu, memungkinkan kontrol data yang lebih detail.
Pengujian & verifikasi: Gunakan dasbor Integrasi Signals dan log PowerMTA untuk mengonfirmasi pemasukan acara dan melacak Health Scores, bounces, dan engagement metrics secara real time.
Penyetelan Deliverability:
Gunakan nama VirtualMTA dan Job yang bermakna — ini memetakan langsung ke IP Pools dan Campaign IDs dalam laporan SparkPost.
Konfigurasikan DKIM signing, TLS enforcement, dan relay rules yang tepat untuk mencegah injeksi yang tidak sah.
Penyiapan tingkat lanjut: Artikel ini juga mencakup snippet siap pakai untuk FBL & out-of-band bounce handling, authenticated SMTP injection (port 587), dan kode Python untuk menyanitasi header X-Job agar kompatibel.
Sorotan Q&A
Apa yang sebenarnya dilakukan integrasi Signals?
Ini secara otomatis mengunggah acara pesan PowerMTA (injeksi, pengiriman, pantulan, keterlibatan) ke dalam akun SparkPost Anda sehingga Anda dapat mengakses dasbor seperti Skor Kesehatan, laporan Penundaan, dan Pemantauan Perangkap Spam.
Mengapa mengintegrasikan Signals dengan MTA on-prem?
Banyak perusahaan menjalankan infrastruktur surat yang di-hosting sendiri untuk alasan kepatuhan tetapi tetap menginginkan kemampuan analitik dan pemantauan SparkPost. Signals menjembatani kesenjangan itu tanpa memigrasikan pengiriman surat ke cloud.
Bagaimana saya dapat memverifikasi bahwa event mengalir ke SparkPost?
Periksa log PowerMTA untuk
Signals: Transferred ... successfullydan konfirmasi entri acara di bawah Signals → Events Search di SparkPost.Bisakah saya menggunakan domain pelacakan saya sendiri?
Ya — konfigurasikan CNAME seperti
track.mycompany.com → pmta.spgo.io(US) ataupmta.eu.spgo.io(EU), kemudian daftarkan dan verifikasi di SparkPost untuk konsistensi branding dan reputasi.Bagaimana dengan privasi data atau penggunaan disk?
Direktif
min-free-spacesecara otomatis menghapus file acara JSON lama ketika ruang disk hampir habis, mencegah penumpukan data telemetri lokal.Apa "bonus feature" di akhir?
Sebuah utilitas regex Python (
pmtaSafeJobID) yang memastikan nama kampanye/pekerjaan hanya menggunakan karakter yang valid dalam format header PowerMTAX-Job, menggantikan karakter yang tidak aman dengan garis bawah.
Mari kita menjelajahi rincian pengaturan PowerMTA untuk SparkPost Signals.
Mari kita membahas secara rinci tentang mengatur PowerMTA untuk SparkPost Signals. Anda akan membutuhkan:
Sebuah host untuk menjalankan versi terbaru dari PowerMTA – baik mesin baru, atau mesin yang sudah ada
Akun SparkPost dengan izin kunci API untuk “Incoming Events: Write” seperti dijelaskan di sini
Kita akan mengatur PowerMTA untuk mengalirkan peristiwa ke akun SparkPost Anda, lalu Anda akan dapat menggunakan yang berikut ini:
Pertama, instal (atau tingkatkan) ke PowerMTA 5.0 r4 atau yang lebih baru, mengikuti petunjuk instalasi v5.0 biasa yang cukup mudah. Kemudian kita akan melalui langkah-langkah berikut:
Konfigurasi PowerMTA connector ke SparkPost Signals
Siapkan Engagement Tracking dengan domain pelacakan kustom
Pilih aliran lalu lintas PowerMTA mana yang akan dilaporkan ke Signals
Menguji bahwa acara Anda mencapai Signals
Tinjauan cara menggunakan nama yang bermakna yang ditampilkan dengan baik dalam pelaporan.
Kita juga akan membahas aspek pengaturan PowerPMTA spesifik lainnya yang digunakan dalam demo Signals kami:
FBL events (Keluhan Spam) dan remote (out-of-band) bounces
Konfigurasi injeksi, termasuk DKIM
Konfigurasi FBL dan OOB
Pengaturan dan penamaan VirtualMTA (dan bagaimana ini muncul dalam laporan SparkPost Signals Anda)
Akhirnya, ada “fitur tambahan” dengan kode untuk memastikan nama kampanye Anda kompatibel dengan konvensi nama PowerMTA X-Job.
Mari kita membahas secara rinci tentang mengatur PowerMTA untuk SparkPost Signals. Anda akan membutuhkan:
Sebuah host untuk menjalankan versi terbaru dari PowerMTA – baik mesin baru, atau mesin yang sudah ada
Akun SparkPost dengan izin kunci API untuk “Incoming Events: Write” seperti dijelaskan di sini
Kita akan mengatur PowerMTA untuk mengalirkan peristiwa ke akun SparkPost Anda, lalu Anda akan dapat menggunakan yang berikut ini:
Pertama, instal (atau tingkatkan) ke PowerMTA 5.0 r4 atau yang lebih baru, mengikuti petunjuk instalasi v5.0 biasa yang cukup mudah. Kemudian kita akan melalui langkah-langkah berikut:
Konfigurasi PowerMTA connector ke SparkPost Signals
Siapkan Engagement Tracking dengan domain pelacakan kustom
Pilih aliran lalu lintas PowerMTA mana yang akan dilaporkan ke Signals
Menguji bahwa acara Anda mencapai Signals
Tinjauan cara menggunakan nama yang bermakna yang ditampilkan dengan baik dalam pelaporan.
Kita juga akan membahas aspek pengaturan PowerPMTA spesifik lainnya yang digunakan dalam demo Signals kami:
FBL events (Keluhan Spam) dan remote (out-of-band) bounces
Konfigurasi injeksi, termasuk DKIM
Konfigurasi FBL dan OOB
Pengaturan dan penamaan VirtualMTA (dan bagaimana ini muncul dalam laporan SparkPost Signals Anda)
Akhirnya, ada “fitur tambahan” dengan kode untuk memastikan nama kampanye Anda kompatibel dengan konvensi nama PowerMTA X-Job.
Mari kita membahas secara rinci tentang mengatur PowerMTA untuk SparkPost Signals. Anda akan membutuhkan:
Sebuah host untuk menjalankan versi terbaru dari PowerMTA – baik mesin baru, atau mesin yang sudah ada
Akun SparkPost dengan izin kunci API untuk “Incoming Events: Write” seperti dijelaskan di sini
Kita akan mengatur PowerMTA untuk mengalirkan peristiwa ke akun SparkPost Anda, lalu Anda akan dapat menggunakan yang berikut ini:
Pertama, instal (atau tingkatkan) ke PowerMTA 5.0 r4 atau yang lebih baru, mengikuti petunjuk instalasi v5.0 biasa yang cukup mudah. Kemudian kita akan melalui langkah-langkah berikut:
Konfigurasi PowerMTA connector ke SparkPost Signals
Siapkan Engagement Tracking dengan domain pelacakan kustom
Pilih aliran lalu lintas PowerMTA mana yang akan dilaporkan ke Signals
Menguji bahwa acara Anda mencapai Signals
Tinjauan cara menggunakan nama yang bermakna yang ditampilkan dengan baik dalam pelaporan.
Kita juga akan membahas aspek pengaturan PowerPMTA spesifik lainnya yang digunakan dalam demo Signals kami:
FBL events (Keluhan Spam) dan remote (out-of-band) bounces
Konfigurasi injeksi, termasuk DKIM
Konfigurasi FBL dan OOB
Pengaturan dan penamaan VirtualMTA (dan bagaimana ini muncul dalam laporan SparkPost Signals Anda)
Akhirnya, ada “fitur tambahan” dengan kode untuk memastikan nama kampanye Anda kompatibel dengan konvensi nama PowerMTA X-Job.
Konfigurasikan PowerMTA connector
Konfigurasi Signals dijelaskan dalam bagian 10.1 Panduan Pengguna 5.0. Di sini kita akan mulai dengan “Use Case #2”, yang mengaktifkan Signals untuk semua lalu lintas dari host PowerMTA ini, dan mengaktifkan pelacakan keterlibatan SparkPost.
# # SparkPost Signals # <signals> api-key ##my ingest API key here## upload-url https://api.sparkpost.com/api/v1/ingest/events log-verbose true min-free-space 1G engagement-tracking sparkpost # this turns on the open and click tracking in PowerMTA customer-id 123 # Your SparkPost account number here </signals> enable-signals true
Berikut penjelasan setiap atributnya:
api-key
Ini unik untuk akun SparkPost Anda, ini adalah nilai yang Anda dapatkan dari SparkPost sebelumnya.
upload-url
Ini harus sesuai dengan alamat layanan API SparkPost Anda, apakah itu di AS atau UE. Untuk informasi lebih lanjut lihat di sini. Nilai umum adalah:
SparkPost (AS): https://api.sparkpost.com/api/v1/ingest/events
SparkPost UE: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Instruksi ini opsional dan ketika diaktifkan, memberikan sedikit lebih banyak info di file pmta.log, yang dapat berguna selama pengaturan untuk mengonfirmasi bahwa semuanya berfungsi dengan benar. Setiap menit, bahkan ketika tidak ada lalu lintas, Anda akan melihat:
2019-07-26 11:47:57 Signals: Discovered 0 files
Dengan lalu lintas, Anda akan melihat sesuatu seperti:
2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json 2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully. 2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully
min-free-space
Ini memberitahu PowerMTA tentang ambang batas ruang disk di mana harus mulai menghapus file acara JSON SparkPost terlama untuk memberi ruang bagi file baru ketika ruang disk hampir habis.
enable-signals
Ini memberi tahu PowerMTA untuk mengunggah ke Signals, dalam hal ini secara global untuk semua lalu lintas (lebih lanjut di sini, untuk v5.0). Anda dapat memilih lebih selektif tentang aliran lalu lintas yang ingin diunggah jika Anda mau.
Anda juga dapat menandai lalu lintas PowerMTA tertentu untuk dilaporkan sebagai milik subakun SparkPost – ini adalah cara lain untuk membedakan satu aliran lalu lintas dari yang lain.
engagement-tracking, customer-id
Solusi Pelacakan Keterlibatan PowerMTA default ke domain pelacakan untuk layanan yang di-hosting SparkPost AS. Anda menentukan ID pelanggan numerik SparkPost Anda; berikut petunjuk untuk menemukannya.
tracking-domain
Untuk akun SparkPost UE, tambahkan baris berikut:
tracking-domain pmta.eu.spgo.io # ini adalah titik akhir untuk SparkPost UE
Domain Pelacakan Khusus
Jika Anda lebih suka menggunakan domain pelacakan sendiri (ini lebih baik dari sudut pandang pengiriman), lakukan hal berikut:
Buat domain pelacakan dengan penyedia DNS Anda dengan membuat catatan CNAME. Ini biasanya akan menjadi subdomain dari domain tingkat atas Anda, misalnya track.mycompany.com .
track.mycompany.com CNAME pmta.spgo.io # if you have a SparkPost US account track.mycompany.com CNAME pmta.eu.spgo.io # if you have a SparkPost EU account
Anda juga dapat menggunakan domain pelacakan HTTPS, meskipun ini lebih rumit (lihat langkah-langkah konfigurasi SparkPost untuk domain pelacakan HTTPS).
Daftarkan domain pelacakan dalam akun SparkPost Anda, dan verifikasi. Tunggu beberapa menit sebelum mencoba ini, untuk memungkinkan perubahan DNS Anda menyebar melalui Internet, tergantung pada penyedia DNS Anda.
Konfigurasikan PowerMTA untuk menggunakan domain tersebut daripada default, dengan
tracking-domain yourdomain.com # Masukkan domain Anda sendiri di sini
Anda dapat memeriksa bahwa email yang dikirim Anda memiliki “piksel terbuka” yang ditambahkan dan tautan dibungkus, dengan melihat bagian dalam mail (di Gmail, gunakan menu di kanan atas dan pilih “Tampilkan Asli”).

Anda akan memperhatikan piksel terbuka di awal dan akhir HTML dalam email. Setiap tautan HTML juga diubah untuk memiliki REF yang menunjuk ke domain pelacakan.

Itulah semua yang Anda butuhkan untuk membuat SparkPost Signals berfungsi dengan Pelacakan Keterlibatan bawaan PowerMTA.
Mencegah tautan tertentu dalam email HTML Anda dilacak
Anda dapat mencegah PowerMTA dari melacak tautan tertentu, dengan menetapkan atribut khusus data-msys-clicktrack ke “0” :
<a href="#" data-msys-clicktrack="0">Contoh</a>
PowerMTA tidak akan membungkus tautan. PowerMTA juga akan menghapus atribut tersebut sebelum mengirim pesan kepada penerima Anda.
Konfigurasi Signals dijelaskan dalam bagian 10.1 Panduan Pengguna 5.0. Di sini kita akan mulai dengan “Use Case #2”, yang mengaktifkan Signals untuk semua lalu lintas dari host PowerMTA ini, dan mengaktifkan pelacakan keterlibatan SparkPost.
# # SparkPost Signals # <signals> api-key ##my ingest API key here## upload-url https://api.sparkpost.com/api/v1/ingest/events log-verbose true min-free-space 1G engagement-tracking sparkpost # this turns on the open and click tracking in PowerMTA customer-id 123 # Your SparkPost account number here </signals> enable-signals true
Berikut penjelasan setiap atributnya:
api-key
Ini unik untuk akun SparkPost Anda, ini adalah nilai yang Anda dapatkan dari SparkPost sebelumnya.
upload-url
Ini harus sesuai dengan alamat layanan API SparkPost Anda, apakah itu di AS atau UE. Untuk informasi lebih lanjut lihat di sini. Nilai umum adalah:
SparkPost (AS): https://api.sparkpost.com/api/v1/ingest/events
SparkPost UE: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Instruksi ini opsional dan ketika diaktifkan, memberikan sedikit lebih banyak info di file pmta.log, yang dapat berguna selama pengaturan untuk mengonfirmasi bahwa semuanya berfungsi dengan benar. Setiap menit, bahkan ketika tidak ada lalu lintas, Anda akan melihat:
2019-07-26 11:47:57 Signals: Discovered 0 files
Dengan lalu lintas, Anda akan melihat sesuatu seperti:
2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json 2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully. 2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully
min-free-space
Ini memberitahu PowerMTA tentang ambang batas ruang disk di mana harus mulai menghapus file acara JSON SparkPost terlama untuk memberi ruang bagi file baru ketika ruang disk hampir habis.
enable-signals
Ini memberi tahu PowerMTA untuk mengunggah ke Signals, dalam hal ini secara global untuk semua lalu lintas (lebih lanjut di sini, untuk v5.0). Anda dapat memilih lebih selektif tentang aliran lalu lintas yang ingin diunggah jika Anda mau.
Anda juga dapat menandai lalu lintas PowerMTA tertentu untuk dilaporkan sebagai milik subakun SparkPost – ini adalah cara lain untuk membedakan satu aliran lalu lintas dari yang lain.
engagement-tracking, customer-id
Solusi Pelacakan Keterlibatan PowerMTA default ke domain pelacakan untuk layanan yang di-hosting SparkPost AS. Anda menentukan ID pelanggan numerik SparkPost Anda; berikut petunjuk untuk menemukannya.
tracking-domain
Untuk akun SparkPost UE, tambahkan baris berikut:
tracking-domain pmta.eu.spgo.io # ini adalah titik akhir untuk SparkPost UE
Domain Pelacakan Khusus
Jika Anda lebih suka menggunakan domain pelacakan sendiri (ini lebih baik dari sudut pandang pengiriman), lakukan hal berikut:
Buat domain pelacakan dengan penyedia DNS Anda dengan membuat catatan CNAME. Ini biasanya akan menjadi subdomain dari domain tingkat atas Anda, misalnya track.mycompany.com .
track.mycompany.com CNAME pmta.spgo.io # if you have a SparkPost US account track.mycompany.com CNAME pmta.eu.spgo.io # if you have a SparkPost EU account
Anda juga dapat menggunakan domain pelacakan HTTPS, meskipun ini lebih rumit (lihat langkah-langkah konfigurasi SparkPost untuk domain pelacakan HTTPS).
Daftarkan domain pelacakan dalam akun SparkPost Anda, dan verifikasi. Tunggu beberapa menit sebelum mencoba ini, untuk memungkinkan perubahan DNS Anda menyebar melalui Internet, tergantung pada penyedia DNS Anda.
Konfigurasikan PowerMTA untuk menggunakan domain tersebut daripada default, dengan
tracking-domain yourdomain.com # Masukkan domain Anda sendiri di sini
Anda dapat memeriksa bahwa email yang dikirim Anda memiliki “piksel terbuka” yang ditambahkan dan tautan dibungkus, dengan melihat bagian dalam mail (di Gmail, gunakan menu di kanan atas dan pilih “Tampilkan Asli”).

Anda akan memperhatikan piksel terbuka di awal dan akhir HTML dalam email. Setiap tautan HTML juga diubah untuk memiliki REF yang menunjuk ke domain pelacakan.

Itulah semua yang Anda butuhkan untuk membuat SparkPost Signals berfungsi dengan Pelacakan Keterlibatan bawaan PowerMTA.
Mencegah tautan tertentu dalam email HTML Anda dilacak
Anda dapat mencegah PowerMTA dari melacak tautan tertentu, dengan menetapkan atribut khusus data-msys-clicktrack ke “0” :
<a href="#" data-msys-clicktrack="0">Contoh</a>
PowerMTA tidak akan membungkus tautan. PowerMTA juga akan menghapus atribut tersebut sebelum mengirim pesan kepada penerima Anda.
Konfigurasi Signals dijelaskan dalam bagian 10.1 Panduan Pengguna 5.0. Di sini kita akan mulai dengan “Use Case #2”, yang mengaktifkan Signals untuk semua lalu lintas dari host PowerMTA ini, dan mengaktifkan pelacakan keterlibatan SparkPost.
# # SparkPost Signals # <signals> api-key ##my ingest API key here## upload-url https://api.sparkpost.com/api/v1/ingest/events log-verbose true min-free-space 1G engagement-tracking sparkpost # this turns on the open and click tracking in PowerMTA customer-id 123 # Your SparkPost account number here </signals> enable-signals true
Berikut penjelasan setiap atributnya:
api-key
Ini unik untuk akun SparkPost Anda, ini adalah nilai yang Anda dapatkan dari SparkPost sebelumnya.
upload-url
Ini harus sesuai dengan alamat layanan API SparkPost Anda, apakah itu di AS atau UE. Untuk informasi lebih lanjut lihat di sini. Nilai umum adalah:
SparkPost (AS): https://api.sparkpost.com/api/v1/ingest/events
SparkPost UE: https://api.eu.sparkpost.com/api/v1/ingest/events
log-verbose
Instruksi ini opsional dan ketika diaktifkan, memberikan sedikit lebih banyak info di file pmta.log, yang dapat berguna selama pengaturan untuk mengonfirmasi bahwa semuanya berfungsi dengan benar. Setiap menit, bahkan ketika tidak ada lalu lintas, Anda akan melihat:
2019-07-26 11:47:57 Signals: Discovered 0 files
Dengan lalu lintas, Anda akan melihat sesuatu seperti:
2019-07-26 11:50:57 Signals: Discovered sp1-0000000000003FBD.json 2019-07-26 11:50:57 Signals: Transferred sp1-0000000000003FBD.json successfully. 2019-07-26 11:50:57 Signals: Discovered 1 file, transferred 1 file successfully
min-free-space
Ini memberitahu PowerMTA tentang ambang batas ruang disk di mana harus mulai menghapus file acara JSON SparkPost terlama untuk memberi ruang bagi file baru ketika ruang disk hampir habis.
enable-signals
Ini memberi tahu PowerMTA untuk mengunggah ke Signals, dalam hal ini secara global untuk semua lalu lintas (lebih lanjut di sini, untuk v5.0). Anda dapat memilih lebih selektif tentang aliran lalu lintas yang ingin diunggah jika Anda mau.
Anda juga dapat menandai lalu lintas PowerMTA tertentu untuk dilaporkan sebagai milik subakun SparkPost – ini adalah cara lain untuk membedakan satu aliran lalu lintas dari yang lain.
engagement-tracking, customer-id
Solusi Pelacakan Keterlibatan PowerMTA default ke domain pelacakan untuk layanan yang di-hosting SparkPost AS. Anda menentukan ID pelanggan numerik SparkPost Anda; berikut petunjuk untuk menemukannya.
tracking-domain
Untuk akun SparkPost UE, tambahkan baris berikut:
tracking-domain pmta.eu.spgo.io # ini adalah titik akhir untuk SparkPost UE
Domain Pelacakan Khusus
Jika Anda lebih suka menggunakan domain pelacakan sendiri (ini lebih baik dari sudut pandang pengiriman), lakukan hal berikut:
Buat domain pelacakan dengan penyedia DNS Anda dengan membuat catatan CNAME. Ini biasanya akan menjadi subdomain dari domain tingkat atas Anda, misalnya track.mycompany.com .
track.mycompany.com CNAME pmta.spgo.io # if you have a SparkPost US account track.mycompany.com CNAME pmta.eu.spgo.io # if you have a SparkPost EU account
Anda juga dapat menggunakan domain pelacakan HTTPS, meskipun ini lebih rumit (lihat langkah-langkah konfigurasi SparkPost untuk domain pelacakan HTTPS).
Daftarkan domain pelacakan dalam akun SparkPost Anda, dan verifikasi. Tunggu beberapa menit sebelum mencoba ini, untuk memungkinkan perubahan DNS Anda menyebar melalui Internet, tergantung pada penyedia DNS Anda.
Konfigurasikan PowerMTA untuk menggunakan domain tersebut daripada default, dengan
tracking-domain yourdomain.com # Masukkan domain Anda sendiri di sini
Anda dapat memeriksa bahwa email yang dikirim Anda memiliki “piksel terbuka” yang ditambahkan dan tautan dibungkus, dengan melihat bagian dalam mail (di Gmail, gunakan menu di kanan atas dan pilih “Tampilkan Asli”).

Anda akan memperhatikan piksel terbuka di awal dan akhir HTML dalam email. Setiap tautan HTML juga diubah untuk memiliki REF yang menunjuk ke domain pelacakan.

Itulah semua yang Anda butuhkan untuk membuat SparkPost Signals berfungsi dengan Pelacakan Keterlibatan bawaan PowerMTA.
Mencegah tautan tertentu dalam email HTML Anda dilacak
Anda dapat mencegah PowerMTA dari melacak tautan tertentu, dengan menetapkan atribut khusus data-msys-clicktrack ke “0” :
<a href="#" data-msys-clicktrack="0">Contoh</a>
PowerMTA tidak akan membungkus tautan. PowerMTA juga akan menghapus atribut tersebut sebelum mengirim pesan kepada penerima Anda.
Pilih aliran lalu lintas PowerMTA mana yang akan dilaporkan ke Signals
Anda dapat memilih Sinyal untuk aktif:
Secara global (ini yang kami gunakan dalam contoh di atas)
Untuk beberapa Virtual MTAs dan tidak lainnya
Untuk beberapa kolam Virtual MTA dan tidak lainnya
Untuk alamat "Pengirim" atau "Dari" tertentu yang diteruskan oleh PowerMTA, dalam kombinasi dengan pilihan Virtual MTA / kolam Virtual MTA
Konfigurasi ini sangat kuat dan diilustrasikan melalui serangkaian contoh penggunaan (v5.0) dalam Panduan Pengguna.
Anda dapat memilih Sinyal untuk aktif:
Secara global (ini yang kami gunakan dalam contoh di atas)
Untuk beberapa Virtual MTAs dan tidak lainnya
Untuk beberapa kolam Virtual MTA dan tidak lainnya
Untuk alamat "Pengirim" atau "Dari" tertentu yang diteruskan oleh PowerMTA, dalam kombinasi dengan pilihan Virtual MTA / kolam Virtual MTA
Konfigurasi ini sangat kuat dan diilustrasikan melalui serangkaian contoh penggunaan (v5.0) dalam Panduan Pengguna.
Anda dapat memilih Sinyal untuk aktif:
Secara global (ini yang kami gunakan dalam contoh di atas)
Untuk beberapa Virtual MTAs dan tidak lainnya
Untuk beberapa kolam Virtual MTA dan tidak lainnya
Untuk alamat "Pengirim" atau "Dari" tertentu yang diteruskan oleh PowerMTA, dalam kombinasi dengan pilihan Virtual MTA / kolam Virtual MTA
Konfigurasi ini sangat kuat dan diilustrasikan melalui serangkaian contoh penggunaan (v5.0) dalam Panduan Pengguna.
Menguji bahwa acara Anda mencapai Signals
Berikut adalah tampilan dari SparkPost Signals, terhubung ke PowerMTA. Anda dapat melihat bahwa skor kesehatan bervariasi.

Nama Kampanye tersedia sebagai aspek pelaporan, bersama dengan Subaccount, IP Pool, Mailbox Provider, dan Sending Domain.
Sambil melihat log PowerMTA, Anda dapat memeriksa bahwa data peristiwa mencapai SparkPost dengan melihat layar Integrasi Signals.

Di layar Pencarian Peristiwa SparkPost Anda, Anda harus melihat peristiwa muncul dalam beberapa menit. Ini akan mencakup peristiwa Inject dan Delivery, serta Bounce, dan mungkin Out-of-Band Bounce dan Spam Complaint jika Anda telah mengonfigurasi PowerMTA untuk menangani itu untuk Anda.
Jika Anda mengaktifkan Pelacakan Keterlibatan, Anda juga akan melihat peristiwa open, initial_open, dan click.
Berikut adalah tampilan dari SparkPost Signals, terhubung ke PowerMTA. Anda dapat melihat bahwa skor kesehatan bervariasi.

Nama Kampanye tersedia sebagai aspek pelaporan, bersama dengan Subaccount, IP Pool, Mailbox Provider, dan Sending Domain.
Sambil melihat log PowerMTA, Anda dapat memeriksa bahwa data peristiwa mencapai SparkPost dengan melihat layar Integrasi Signals.

Di layar Pencarian Peristiwa SparkPost Anda, Anda harus melihat peristiwa muncul dalam beberapa menit. Ini akan mencakup peristiwa Inject dan Delivery, serta Bounce, dan mungkin Out-of-Band Bounce dan Spam Complaint jika Anda telah mengonfigurasi PowerMTA untuk menangani itu untuk Anda.
Jika Anda mengaktifkan Pelacakan Keterlibatan, Anda juga akan melihat peristiwa open, initial_open, dan click.
Berikut adalah tampilan dari SparkPost Signals, terhubung ke PowerMTA. Anda dapat melihat bahwa skor kesehatan bervariasi.

Nama Kampanye tersedia sebagai aspek pelaporan, bersama dengan Subaccount, IP Pool, Mailbox Provider, dan Sending Domain.
Sambil melihat log PowerMTA, Anda dapat memeriksa bahwa data peristiwa mencapai SparkPost dengan melihat layar Integrasi Signals.

Di layar Pencarian Peristiwa SparkPost Anda, Anda harus melihat peristiwa muncul dalam beberapa menit. Ini akan mencakup peristiwa Inject dan Delivery, serta Bounce, dan mungkin Out-of-Band Bounce dan Spam Complaint jika Anda telah mengonfigurasi PowerMTA untuk menangani itu untuk Anda.
Jika Anda mengaktifkan Pelacakan Keterlibatan, Anda juga akan melihat peristiwa open, initial_open, dan click.
Menggunakan nama yang berarti agar terlihat baik dalam pelaporan
Menyiapkan nama PowerMTA VirtualMTA Pool dan nama Job yang bermakna dan mudah dibaca manusia adalah layak dilakukan. Ini muncul langsung dalam aspek SparkPost Signals Anda dan laporan Ringkasan.
Seperti yang disebutkan sebelumnya, Anda tidak perlu membuat pool ini di akun SparkPost Anda. SparkPost mengambilnya dari konfigurasi PowerMTA Anda.
Begini cara istilah konfigurasi PowerMTA diterjemahkan ke istilah SparkPost.
PowerMTA termSparkPost Laporan / Sinyal termDomain Penerima
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Namun, PowerMTA dapat memberi tag virtualMTAs, virtual MTA Pools, atau domain Sender-or-From dengan ID subakun untuk keperluan pelaporan SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Menyiapkan setidaknya satu alamat smtp-source-host juga memungkinkan SparkPost untuk mengidentifikasi alamat IP pengirim sehingga muncul pada peristiwa Injeksi dan Pengiriman, serta dalam tampilan laporan Ringkasan.
Nama Job diatur di PowerMTA melalui header dalam pesan yang diinjeksi. Selain memungkinkan kontrol pekerjaan individual (jeda/lanjutkan dll) yang berguna dengan sendirinya, PowerMTA meneruskan nama-nama ini ke pelaporan SparkPost Signals sebagai “campaign ID”. Lihat Panduan Pengguna v5.0 bagian 12.8 “Melacak kampanye di PowerMTA dengan JobID”.
Ada beberapa hal yang perlu diperhatikan terkait penamaan pekerjaan. Sementara SparkPost (dengan format JSON, dan penghindaran JSON) memungkinkan karakter seperti <SPACE> dalam nama kampanye, header surat lebih terbatas. Karakter yang valid yang diizinkan dalam header X-Job adalah:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
Dengan kata lain, karakter yang tidak diizinkan termasuk <SPACE>, tanda kutip ganda “ dan backtick `. Jika Anda terbiasa bekerja dengan nama X-Job, ini tidak akan mengejutkan, dan nama ID kampanye Anda akan “berfungsi dengan baik” pada pelaporan SparkPost. Jika seperti saya, Anda pertama kali belajar SparkPost, Anda mungkin menginginkan alat untuk memastikan nilai X-Job Anda aman; lihat fitur bonus di akhir artikel ini.
Menyiapkan nama PowerMTA VirtualMTA Pool dan nama Job yang bermakna dan mudah dibaca manusia adalah layak dilakukan. Ini muncul langsung dalam aspek SparkPost Signals Anda dan laporan Ringkasan.
Seperti yang disebutkan sebelumnya, Anda tidak perlu membuat pool ini di akun SparkPost Anda. SparkPost mengambilnya dari konfigurasi PowerMTA Anda.
Begini cara istilah konfigurasi PowerMTA diterjemahkan ke istilah SparkPost.
PowerMTA termSparkPost Laporan / Sinyal termDomain Penerima
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Namun, PowerMTA dapat memberi tag virtualMTAs, virtual MTA Pools, atau domain Sender-or-From dengan ID subakun untuk keperluan pelaporan SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Menyiapkan setidaknya satu alamat smtp-source-host juga memungkinkan SparkPost untuk mengidentifikasi alamat IP pengirim sehingga muncul pada peristiwa Injeksi dan Pengiriman, serta dalam tampilan laporan Ringkasan.
Nama Job diatur di PowerMTA melalui header dalam pesan yang diinjeksi. Selain memungkinkan kontrol pekerjaan individual (jeda/lanjutkan dll) yang berguna dengan sendirinya, PowerMTA meneruskan nama-nama ini ke pelaporan SparkPost Signals sebagai “campaign ID”. Lihat Panduan Pengguna v5.0 bagian 12.8 “Melacak kampanye di PowerMTA dengan JobID”.
Ada beberapa hal yang perlu diperhatikan terkait penamaan pekerjaan. Sementara SparkPost (dengan format JSON, dan penghindaran JSON) memungkinkan karakter seperti <SPACE> dalam nama kampanye, header surat lebih terbatas. Karakter yang valid yang diizinkan dalam header X-Job adalah:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
Dengan kata lain, karakter yang tidak diizinkan termasuk <SPACE>, tanda kutip ganda “ dan backtick `. Jika Anda terbiasa bekerja dengan nama X-Job, ini tidak akan mengejutkan, dan nama ID kampanye Anda akan “berfungsi dengan baik” pada pelaporan SparkPost. Jika seperti saya, Anda pertama kali belajar SparkPost, Anda mungkin menginginkan alat untuk memastikan nilai X-Job Anda aman; lihat fitur bonus di akhir artikel ini.
Menyiapkan nama PowerMTA VirtualMTA Pool dan nama Job yang bermakna dan mudah dibaca manusia adalah layak dilakukan. Ini muncul langsung dalam aspek SparkPost Signals Anda dan laporan Ringkasan.
Seperti yang disebutkan sebelumnya, Anda tidak perlu membuat pool ini di akun SparkPost Anda. SparkPost mengambilnya dari konfigurasi PowerMTA Anda.
Begini cara istilah konfigurasi PowerMTA diterjemahkan ke istilah SparkPost.
PowerMTA termSparkPost Laporan / Sinyal termDomain Penerima
(domain portion of “rcpt” field in Accounting file).Recipient Domain The domain portion of the “Sender” or “From” header in the message relayed by PowerMTA. (domain portion of “orig” in Accounting file).Sending Domain VirtualMTA (name)—VirtualMTA Pool (name) (“vmtaPool” in accounting file)IP Pool (name) smtp-source-host a.b.c.d (“dlvSourceIp” in accounting file)Sending IP a.b.c.d Job (name) (“jobId” in accounting file)Campaign ID (name)—Template (name) “Subaccount” is not a native PowerMTA concept
Namun, PowerMTA dapat memberi tag virtualMTAs, virtual MTA Pools, atau domain Sender-or-From dengan ID subakun untuk keperluan pelaporan SparkPost.
Subaccount ID (number) FBL (event) Spam Complaint (event) Remote Bounce (event) Out-of-Band bounce (event)
Menyiapkan setidaknya satu alamat smtp-source-host juga memungkinkan SparkPost untuk mengidentifikasi alamat IP pengirim sehingga muncul pada peristiwa Injeksi dan Pengiriman, serta dalam tampilan laporan Ringkasan.
Nama Job diatur di PowerMTA melalui header dalam pesan yang diinjeksi. Selain memungkinkan kontrol pekerjaan individual (jeda/lanjutkan dll) yang berguna dengan sendirinya, PowerMTA meneruskan nama-nama ini ke pelaporan SparkPost Signals sebagai “campaign ID”. Lihat Panduan Pengguna v5.0 bagian 12.8 “Melacak kampanye di PowerMTA dengan JobID”.
Ada beberapa hal yang perlu diperhatikan terkait penamaan pekerjaan. Sementara SparkPost (dengan format JSON, dan penghindaran JSON) memungkinkan karakter seperti <SPACE> dalam nama kampanye, header surat lebih terbatas. Karakter yang valid yang diizinkan dalam header X-Job adalah:
A-Za-z0-9!#$%&'()*+,-./:;<=>?@[\]^_{|}~
Dengan kata lain, karakter yang tidak diizinkan termasuk <SPACE>, tanda kutip ganda “ dan backtick `. Jika Anda terbiasa bekerja dengan nama X-Job, ini tidak akan mengejutkan, dan nama ID kampanye Anda akan “berfungsi dengan baik” pada pelaporan SparkPost. Jika seperti saya, Anda pertama kali belajar SparkPost, Anda mungkin menginginkan alat untuk memastikan nilai X-Job Anda aman; lihat fitur bonus di akhir artikel ini.
Acara FBL (Spam Complaints) dan remote (out-of-band) bounces
PowerMTA dapat menerima dan memproses acara FBL (dikenal di SparkPost sebagai acara Keluhan Spam) dan pantulan jarak jauh (dikenal di SparkPost sebagai pantulan di luar jalur, karena balasan datang beberapa waktu kemudian, bukan selama percakapan SMTP).
Ada artikel di Forum Dukungan Port25 tentang cara mengatur Bounce Processor dan FBL Processor. Jika Anda adalah pengguna PowerMTA yang sudah ada, Anda mungkin sudah memiliki ini.
Berikut adalah konfigurasi yang saya buat untuk demo, berdasarkan artikel-artikel ini dan berorientasi untuk hosting PowerMTA di Amazon EC2.
Jika Anda sudah terbiasa dengan konfigurasi PowerMTA di area ini, Anda bisa melewati bagian ini, hingga ke garis horizontal berikutnya.
PowerMTA dapat menerima dan memproses acara FBL (dikenal di SparkPost sebagai acara Keluhan Spam) dan pantulan jarak jauh (dikenal di SparkPost sebagai pantulan di luar jalur, karena balasan datang beberapa waktu kemudian, bukan selama percakapan SMTP).
Ada artikel di Forum Dukungan Port25 tentang cara mengatur Bounce Processor dan FBL Processor. Jika Anda adalah pengguna PowerMTA yang sudah ada, Anda mungkin sudah memiliki ini.
Berikut adalah konfigurasi yang saya buat untuk demo, berdasarkan artikel-artikel ini dan berorientasi untuk hosting PowerMTA di Amazon EC2.
Jika Anda sudah terbiasa dengan konfigurasi PowerMTA di area ini, Anda bisa melewati bagian ini, hingga ke garis horizontal berikutnya.
PowerMTA dapat menerima dan memproses acara FBL (dikenal di SparkPost sebagai acara Keluhan Spam) dan pantulan jarak jauh (dikenal di SparkPost sebagai pantulan di luar jalur, karena balasan datang beberapa waktu kemudian, bukan selama percakapan SMTP).
Ada artikel di Forum Dukungan Port25 tentang cara mengatur Bounce Processor dan FBL Processor. Jika Anda adalah pengguna PowerMTA yang sudah ada, Anda mungkin sudah memiliki ini.
Berikut adalah konfigurasi yang saya buat untuk demo, berdasarkan artikel-artikel ini dan berorientasi untuk hosting PowerMTA di Amazon EC2.
Jika Anda sudah terbiasa dengan konfigurasi PowerMTA di area ini, Anda bisa melewati bagian ini, hingga ke garis horizontal berikutnya.
Konfigurasi Injection
Kami akan menggunakan port 587 untuk pesan yang disuntikkan, yang akan datang melalui Internet publik dari host lain. Kami perlu menghentikan aktor jahat menemukan dan menyalahgunakan layanan ini, jadi kami menerapkan autentikasi nama pengguna/kata sandi dan TLS opsional, mirip dengan endpoint injeksi SMTP SparkPost.
Kami ingin dapat mengirim pesan dari sumber yang telah diautentikasi dengan benar ke tujuan mana pun. Kami juga menginginkan pendengar terpisah pada port 25 untuk FBL dan respons pantulan jarak jauh yang tidak memerlukan autentikasi
# IP address(es) and port(s) on which to listen for incoming SMTP connections smtp-listener 0.0.0.0:587 smtp-listener 0.0.0.0:25
Dalam deklarasi <source> berikut, kami menggunakan autentikasi nama pengguna/kata sandi dan TLS opsional untuk mempertahankan terhadap injeksi pesan berbahaya. Kami juga menetapkan batas kecepatan pada koneksi yang melakukan upaya kata sandi gagal.
Pengaturan Anda mungkin berbeda; misalnya, jika Anda memiliki jaringan pribadi antara injektor dan PowerMTA, Anda tidak memerlukan autentikasi kata sandi.
# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs # <source 0/0> log-connections false log-commands false # WARNING: verbose! just for dev log-data false # WARNING: even more verbose! smtp-service true # allow SMTP service smtp-max-auth-failure-rate 1/min allow-unencrypted-plain-auth false allow-starttls true rewrite-list mfrom </source> <source {auth}> always-allow-relaying yes # only if the auth succeeds default-virtual-mta default process-x-job true </source>
Deklarasi <source {auth}> (lihat di sini. v5.0) berlaku setelah autentikasi telah lolos. Di sini, ia memungkinkan relai lanjut, mengatur grup MTA virtual default untuk digunakan, dan menambahkan header X-Job (yang akan dilaporkan oleh SparkPost Signals sebagai campaign_id).
Daftar penulisan ulang memetakan pesan yang disuntikkan untuk menggunakan domain MAIL FROM tertentu (alias domain bounce atau Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Kemudian kami menyiapkan konfigurasi TLS dan nama pengguna / kata sandi SMTP kami, sesuai dengan rekomendasi saat ini.
# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 # smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem smtp-server-tls-allow-tlsv1 false smtp-server-tls-allow-tlsv1.1 false smtp-server-tls-allow-tlsv1.2 true smtp-server-tls-allow-tlsv1.3 true # # SMTP users (authenticated via SMTP AUTH) # <smtp-user SMTP_Injection> password ##PUT YOUR PASSWORD HERE## authentication-method password </smtp-user>
Kita dapat memeriksa bahwa TLS v1.0 yang (tidak aman, sudah kadaluarsa) tidak diterima menggunakan alat uji SMTP favorit saya, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Kita melihat:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Begitu juga untuk –tls-protocol tlsv1_1.
Melakukan penandatanganan DKIM pada pesan keluar kami adalah praktik yang baik (Saya mengikuti instruksi ini untuk menyiapkan kunci).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
Kami akan menggunakan port 587 untuk pesan yang disuntikkan, yang akan datang melalui Internet publik dari host lain. Kami perlu menghentikan aktor jahat menemukan dan menyalahgunakan layanan ini, jadi kami menerapkan autentikasi nama pengguna/kata sandi dan TLS opsional, mirip dengan endpoint injeksi SMTP SparkPost.
Kami ingin dapat mengirim pesan dari sumber yang telah diautentikasi dengan benar ke tujuan mana pun. Kami juga menginginkan pendengar terpisah pada port 25 untuk FBL dan respons pantulan jarak jauh yang tidak memerlukan autentikasi
# IP address(es) and port(s) on which to listen for incoming SMTP connections smtp-listener 0.0.0.0:587 smtp-listener 0.0.0.0:25
Dalam deklarasi <source> berikut, kami menggunakan autentikasi nama pengguna/kata sandi dan TLS opsional untuk mempertahankan terhadap injeksi pesan berbahaya. Kami juga menetapkan batas kecepatan pada koneksi yang melakukan upaya kata sandi gagal.
Pengaturan Anda mungkin berbeda; misalnya, jika Anda memiliki jaringan pribadi antara injektor dan PowerMTA, Anda tidak memerlukan autentikasi kata sandi.
# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs # <source 0/0> log-connections false log-commands false # WARNING: verbose! just for dev log-data false # WARNING: even more verbose! smtp-service true # allow SMTP service smtp-max-auth-failure-rate 1/min allow-unencrypted-plain-auth false allow-starttls true rewrite-list mfrom </source> <source {auth}> always-allow-relaying yes # only if the auth succeeds default-virtual-mta default process-x-job true </source>
Deklarasi <source {auth}> (lihat di sini. v5.0) berlaku setelah autentikasi telah lolos. Di sini, ia memungkinkan relai lanjut, mengatur grup MTA virtual default untuk digunakan, dan menambahkan header X-Job (yang akan dilaporkan oleh SparkPost Signals sebagai campaign_id).
Daftar penulisan ulang memetakan pesan yang disuntikkan untuk menggunakan domain MAIL FROM tertentu (alias domain bounce atau Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Kemudian kami menyiapkan konfigurasi TLS dan nama pengguna / kata sandi SMTP kami, sesuai dengan rekomendasi saat ini.
# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 # smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem smtp-server-tls-allow-tlsv1 false smtp-server-tls-allow-tlsv1.1 false smtp-server-tls-allow-tlsv1.2 true smtp-server-tls-allow-tlsv1.3 true # # SMTP users (authenticated via SMTP AUTH) # <smtp-user SMTP_Injection> password ##PUT YOUR PASSWORD HERE## authentication-method password </smtp-user>
Kita dapat memeriksa bahwa TLS v1.0 yang (tidak aman, sudah kadaluarsa) tidak diterima menggunakan alat uji SMTP favorit saya, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Kita melihat:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Begitu juga untuk –tls-protocol tlsv1_1.
Melakukan penandatanganan DKIM pada pesan keluar kami adalah praktik yang baik (Saya mengikuti instruksi ini untuk menyiapkan kunci).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
Kami akan menggunakan port 587 untuk pesan yang disuntikkan, yang akan datang melalui Internet publik dari host lain. Kami perlu menghentikan aktor jahat menemukan dan menyalahgunakan layanan ini, jadi kami menerapkan autentikasi nama pengguna/kata sandi dan TLS opsional, mirip dengan endpoint injeksi SMTP SparkPost.
Kami ingin dapat mengirim pesan dari sumber yang telah diautentikasi dengan benar ke tujuan mana pun. Kami juga menginginkan pendengar terpisah pada port 25 untuk FBL dan respons pantulan jarak jauh yang tidak memerlukan autentikasi
# IP address(es) and port(s) on which to listen for incoming SMTP connections smtp-listener 0.0.0.0:587 smtp-listener 0.0.0.0:25
Dalam deklarasi <source> berikut, kami menggunakan autentikasi nama pengguna/kata sandi dan TLS opsional untuk mempertahankan terhadap injeksi pesan berbahaya. Kami juga menetapkan batas kecepatan pada koneksi yang melakukan upaya kata sandi gagal.
Pengaturan Anda mungkin berbeda; misalnya, jika Anda memiliki jaringan pribadi antara injektor dan PowerMTA, Anda tidak memerlukan autentikasi kata sandi.
# One source rule for all injection, internal or external. Enforce auth, except for bounces and FBLs # <source 0/0> log-connections false log-commands false # WARNING: verbose! just for dev log-data false # WARNING: even more verbose! smtp-service true # allow SMTP service smtp-max-auth-failure-rate 1/min allow-unencrypted-plain-auth false allow-starttls true rewrite-list mfrom </source> <source {auth}> always-allow-relaying yes # only if the auth succeeds default-virtual-mta default process-x-job true </source>
Deklarasi <source {auth}> (lihat di sini. v5.0) berlaku setelah autentikasi telah lolos. Di sini, ia memungkinkan relai lanjut, mengatur grup MTA virtual default untuk digunakan, dan menambahkan header X-Job (yang akan dilaporkan oleh SparkPost Signals sebagai campaign_id).
Daftar penulisan ulang memetakan pesan yang disuntikkan untuk menggunakan domain MAIL FROM tertentu (alias domain bounce atau Return-Path:).
# # Rewrite the MAIL FROM address to match the bounce domain # <rewrite-list mfrom> mail-from *@pmta.signalsdemo.trymsys.net *@bounces.pmta.signalsdemo.trymsys.net </rewrite-list>
Kemudian kami menyiapkan konfigurasi TLS dan nama pengguna / kata sandi SMTP kami, sesuai dengan rekomendasi saat ini.
# # Secure the inbound service with username, password and TLS. SMT 2020-06-15 # smtp-server-tls-certificate /etc/pmta/pmtasignalsdemo.pem smtp-server-tls-allow-tlsv1 false smtp-server-tls-allow-tlsv1.1 false smtp-server-tls-allow-tlsv1.2 true smtp-server-tls-allow-tlsv1.3 true # # SMTP users (authenticated via SMTP AUTH) # <smtp-user SMTP_Injection> password ##PUT YOUR PASSWORD HERE## authentication-method password </smtp-user>
Kita dapat memeriksa bahwa TLS v1.0 yang (tidak aman, sudah kadaluarsa) tidak diterima menggunakan alat uji SMTP favorit saya, swaks.
swaks --server pmta.signalsdemo.trymsys.net --port 587 \ --to test@trymsys.net \ --from any@sparkpost.com \ --tls \ --tls-protocol tlsv1
Kita melihat:
*** TLS startup failed (connect(): error:00000000:lib(0):func(0):reason(0)) *** STARTTLS attempted but failed
Begitu juga untuk –tls-protocol tlsv1_1.
Melakukan penandatanganan DKIM pada pesan keluar kami adalah praktik yang baik (Saya mengikuti instruksi ini untuk menyiapkan kunci).
# # DKIM # domain-key mypmta, pmta.signalsdemo.trymsys.net, /etc/pmta/mypmta.pmta.signalsdemo.trymsys.net.pem
FBL dan OOB configuration
Sekarang .. akhirnya .. kami menyatakan domain spesifik mana yang terbuka untuk respons remote bounce dan FBL. Kami tidak ingin menyampaikan itu kemana pun (untuk mencegah serangan backscatter), hanya memproses respons tersebut secara internal.
# # Enable Bounce and FBL processing on specific domains # relay-domain pmta.signalsdemo.trymsys.net relay-domain bounces.pmta.signalsdemo.trymsys.net relay-domain fbl.pmta.signalsdemo.trymsys.net <bounce-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain pmta.signalsdemo.trymsys.net domain bounces.pmta.signalsdemo.trymsys.net </address-list> </bounce-processor> <feedback-loop-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain fbl.pmta.signalsdemo.trymsys.net </address-list> </feedback-loop-processor>
Anda dapat melihat saya menyiapkan dua domain bounce, saat saya mencoba-coba dengan menggunakan/tidak menggunakan aturan mfrom rewrite.
Domain FBL biasanya kemudian terdaftar dengan layanan eksternal seperti Microsoft SNDS; lihat artikel ini untuk informasi lebih lanjut. Untuk demo ini, FBL akan datang dari Bouncy Sink, jadi tidak perlu mendaftar.
Sekarang .. akhirnya .. kami menyatakan domain spesifik mana yang terbuka untuk respons remote bounce dan FBL. Kami tidak ingin menyampaikan itu kemana pun (untuk mencegah serangan backscatter), hanya memproses respons tersebut secara internal.
# # Enable Bounce and FBL processing on specific domains # relay-domain pmta.signalsdemo.trymsys.net relay-domain bounces.pmta.signalsdemo.trymsys.net relay-domain fbl.pmta.signalsdemo.trymsys.net <bounce-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain pmta.signalsdemo.trymsys.net domain bounces.pmta.signalsdemo.trymsys.net </address-list> </bounce-processor> <feedback-loop-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain fbl.pmta.signalsdemo.trymsys.net </address-list> </feedback-loop-processor>
Anda dapat melihat saya menyiapkan dua domain bounce, saat saya mencoba-coba dengan menggunakan/tidak menggunakan aturan mfrom rewrite.
Domain FBL biasanya kemudian terdaftar dengan layanan eksternal seperti Microsoft SNDS; lihat artikel ini untuk informasi lebih lanjut. Untuk demo ini, FBL akan datang dari Bouncy Sink, jadi tidak perlu mendaftar.
Sekarang .. akhirnya .. kami menyatakan domain spesifik mana yang terbuka untuk respons remote bounce dan FBL. Kami tidak ingin menyampaikan itu kemana pun (untuk mencegah serangan backscatter), hanya memproses respons tersebut secara internal.
# # Enable Bounce and FBL processing on specific domains # relay-domain pmta.signalsdemo.trymsys.net relay-domain bounces.pmta.signalsdemo.trymsys.net relay-domain fbl.pmta.signalsdemo.trymsys.net <bounce-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain pmta.signalsdemo.trymsys.net domain bounces.pmta.signalsdemo.trymsys.net </address-list> </bounce-processor> <feedback-loop-processor> deliver-unmatched-email no deliver-matched-email no <address-list> domain fbl.pmta.signalsdemo.trymsys.net </address-list> </feedback-loop-processor>
Anda dapat melihat saya menyiapkan dua domain bounce, saat saya mencoba-coba dengan menggunakan/tidak menggunakan aturan mfrom rewrite.
Domain FBL biasanya kemudian terdaftar dengan layanan eksternal seperti Microsoft SNDS; lihat artikel ini untuk informasi lebih lanjut. Untuk demo ini, FBL akan datang dari Bouncy Sink, jadi tidak perlu mendaftar.
Menguji pendengar SMTP
Penting untuk menguji bahwa pendengar SMTP Anda memerlukan otorisasi untuk tujuan umum apa pun, menolak pesan apa pun yang tidak secara khusus ditujukan ke domain FBL dan remote-bounce.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
Responnya, seperti yang diharapkan, menunjukkan bahwa penerusan ditolak:
550 5.7.1 penerusan ditolak untuk penerima di "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Akhir dari deskripsi pengaturan demo).
Penting untuk menguji bahwa pendengar SMTP Anda memerlukan otorisasi untuk tujuan umum apa pun, menolak pesan apa pun yang tidak secara khusus ditujukan ke domain FBL dan remote-bounce.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
Responnya, seperti yang diharapkan, menunjukkan bahwa penerusan ditolak:
550 5.7.1 penerusan ditolak untuk penerima di "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Akhir dari deskripsi pengaturan demo).
Penting untuk menguji bahwa pendengar SMTP Anda memerlukan otorisasi untuk tujuan umum apa pun, menolak pesan apa pun yang tidak secara khusus ditujukan ke domain FBL dan remote-bounce.
swaks --server pmta.signalsdemo.trymsys.net \ --port 25 \ --to test@strange.pmta.signalsdemo.trymsys.net \ --from any@sparkpost.com
Responnya, seperti yang diharapkan, menunjukkan bahwa penerusan ditolak:
550 5.7.1 penerusan ditolak untuk penerima di "RCPT TO:<test@strange.pmta.signalsdemo.trymsys.net>
(Akhir dari deskripsi pengaturan demo).
Pengaturan dan penamaan VirtualMTA
PowerMTA VirtualMTAs (dan VirtualMTA pools) adalah fitur kuat untuk mengelola aliran pesan, dan fitur pelaporan PowerMTA / SparkPost Signals berfungsi terbaik dengan ini aktif.
# # Route all outgoing traffic through this virtual mta / pool. # # Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events # will carry the correct sending_IP attribute # <virtual-mta mta1> smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net </virtual-mta> <virtual-mta-pool default> virtual-mta mta1 <domain *> max-smtp-out 20 # max. connections *per domain* bounce-after 4d12h # 4 days, 12 hours retry-after 10m # 10 minutes dkim-sign yes </domain> </virtual-mta-pool>
Pengaturan virtual-mta-pool dilaporkan di SparkPost sebagai “IP Pool”, dan tersedia sebagai faset pelaporan SparkPost Signals (menu drop-down di bawah grafik).

Laporan Ringkasan juga menunjukkan IP Pool sebagai faset pelaporan “Group By”.

Seperti disebutkan sebelumnya dalam artikel ini, mengatur setidaknya satu alamat smtp-source-host juga memungkinkan SparkPost untuk mengidentifikasi alamat IP pengirim dengan benar, sehingga muncul pada peristiwa Penyuntikan dan Pengiriman, dan pada Laporan Ringkasan:

Itu saja yang Anda butuhkan untuk mendapatkan integrasi dasar yang berfungsi antara PowerMTA dan SparkPost Signals. Anda akan menemukan contoh file konfigurasi lengkap di sini.
Sebelum Anda pergi, inilah fitur bonus yang saya sebutkan.
PowerMTA VirtualMTAs (dan VirtualMTA pools) adalah fitur kuat untuk mengelola aliran pesan, dan fitur pelaporan PowerMTA / SparkPost Signals berfungsi terbaik dengan ini aktif.
# # Route all outgoing traffic through this virtual mta / pool. # # Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events # will carry the correct sending_IP attribute # <virtual-mta mta1> smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net </virtual-mta> <virtual-mta-pool default> virtual-mta mta1 <domain *> max-smtp-out 20 # max. connections *per domain* bounce-after 4d12h # 4 days, 12 hours retry-after 10m # 10 minutes dkim-sign yes </domain> </virtual-mta-pool>
Pengaturan virtual-mta-pool dilaporkan di SparkPost sebagai “IP Pool”, dan tersedia sebagai faset pelaporan SparkPost Signals (menu drop-down di bawah grafik).

Laporan Ringkasan juga menunjukkan IP Pool sebagai faset pelaporan “Group By”.

Seperti disebutkan sebelumnya dalam artikel ini, mengatur setidaknya satu alamat smtp-source-host juga memungkinkan SparkPost untuk mengidentifikasi alamat IP pengirim dengan benar, sehingga muncul pada peristiwa Penyuntikan dan Pengiriman, dan pada Laporan Ringkasan:

Itu saja yang Anda butuhkan untuk mendapatkan integrasi dasar yang berfungsi antara PowerMTA dan SparkPost Signals. Anda akan menemukan contoh file konfigurasi lengkap di sini.
Sebelum Anda pergi, inilah fitur bonus yang saya sebutkan.
PowerMTA VirtualMTAs (dan VirtualMTA pools) adalah fitur kuat untuk mengelola aliran pesan, dan fitur pelaporan PowerMTA / SparkPost Signals berfungsi terbaik dengan ini aktif.
# # Route all outgoing traffic through this virtual mta / pool. # # Declare the delivery IP address here, so that SparkPost signals ingest injection (aka "reception") events # will carry the correct sending_IP attribute # <virtual-mta mta1> smtp-source-host 172.31.25.101 pmta.signalsdemo.trymsys.net </virtual-mta> <virtual-mta-pool default> virtual-mta mta1 <domain *> max-smtp-out 20 # max. connections *per domain* bounce-after 4d12h # 4 days, 12 hours retry-after 10m # 10 minutes dkim-sign yes </domain> </virtual-mta-pool>
Pengaturan virtual-mta-pool dilaporkan di SparkPost sebagai “IP Pool”, dan tersedia sebagai faset pelaporan SparkPost Signals (menu drop-down di bawah grafik).

Laporan Ringkasan juga menunjukkan IP Pool sebagai faset pelaporan “Group By”.

Seperti disebutkan sebelumnya dalam artikel ini, mengatur setidaknya satu alamat smtp-source-host juga memungkinkan SparkPost untuk mengidentifikasi alamat IP pengirim dengan benar, sehingga muncul pada peristiwa Penyuntikan dan Pengiriman, dan pada Laporan Ringkasan:

Itu saja yang Anda butuhkan untuk mendapatkan integrasi dasar yang berfungsi antara PowerMTA dan SparkPost Signals. Anda akan menemukan contoh file konfigurasi lengkap di sini.
Sebelum Anda pergi, inilah fitur bonus yang saya sebutkan.
Fitur bonus: pengecekan/penyaringan nama X-Job
Untuk memastikan setiap string karakter aman digunakan sebagai nama PowerMTA X-Job, berikut adalah fungsi Python sederhana untuk memetakan karakter tidak aman ke garis bawah “_”
import re def pmtaSafeJobID(s): """ :param s: str :return: str Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header. See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid Specifically disallow <sp> " ` but allow through most other chars. """ # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]' return re.sub(disallowedChars, '_', s)
Ini menggunakan ekspresi reguler Python dengan cara khusus. Deklarasikan kumpulan karakter yang tidak diizinkan menggunakan operator “set complement” ^ daripada mencantumkan semua karakter yang diizinkan. Artinya kita menangkap (dan membuat aman) karakter di luar set 7-bit biasa. Kita dapat menunjukkan hal itu menggunakan fragmen uji ini:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Memberikan
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Anda dapat melihat bahwa <SPACE>, tanda kutip ganda “, dan backtick `, serta semua karakter di luar ~ dipetakan ke garis bawah.
Untuk memastikan setiap string karakter aman digunakan sebagai nama PowerMTA X-Job, berikut adalah fungsi Python sederhana untuk memetakan karakter tidak aman ke garis bawah “_”
import re def pmtaSafeJobID(s): """ :param s: str :return: str Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header. See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid Specifically disallow <sp> " ` but allow through most other chars. """ # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]' return re.sub(disallowedChars, '_', s)
Ini menggunakan ekspresi reguler Python dengan cara khusus. Deklarasikan kumpulan karakter yang tidak diizinkan menggunakan operator “set complement” ^ daripada mencantumkan semua karakter yang diizinkan. Artinya kita menangkap (dan membuat aman) karakter di luar set 7-bit biasa. Kita dapat menunjukkan hal itu menggunakan fragmen uji ini:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Memberikan
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Anda dapat melihat bahwa <SPACE>, tanda kutip ganda “, dan backtick `, serta semua karakter di luar ~ dipetakan ke garis bawah.
Untuk memastikan setiap string karakter aman digunakan sebagai nama PowerMTA X-Job, berikut adalah fungsi Python sederhana untuk memetakan karakter tidak aman ke garis bawah “_”
import re def pmtaSafeJobID(s): """ :param s: str :return: str Map an arbitrary campaign ID string into allowed chars for PMTA X-Job header. See https://download.port25.com/files/UsersGuide-5.0.html#tracking-a-campaign-in-powermta-with-a-jobid Specifically disallow <sp> " ` but allow through most other chars. """ # Note have to escape ' - [ ] and double-escape \ - see https://docs.python.org/3/library/re.html disallowedChars = '[^A-Za-z0-9!#$%&\'()*+,\-./:;<=>?@$begin:math:display$\\\\\\\\$end:math:display$^_{|}~]' return re.sub(disallowedChars, '_', s)
Ini menggunakan ekspresi reguler Python dengan cara khusus. Deklarasikan kumpulan karakter yang tidak diizinkan menggunakan operator “set complement” ^ daripada mencantumkan semua karakter yang diizinkan. Artinya kita menangkap (dan membuat aman) karakter di luar set 7-bit biasa. Kita dapat menunjukkan hal itu menggunakan fragmen uji ini:
s='' for i in range(32, 256): s += chr(i) print(pmtaSafeJobID(s))
Memberikan
!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^abcdefghijklmnopqrstuvwxyz{|}~_________________________________________________________
Anda dapat melihat bahwa <SPACE>, tanda kutip ganda “, dan backtick `, serta semua karakter di luar ~ dipetakan ke garis bawah.



