Exim masuk helo_data keluar


0

Saya memiliki server email exim yang digunakan untuk beberapa situs web. Ini menggunakan string host yang berbeda untuk helo_data untuk setiap situs web yang dilayaninya. DNS dan rDNS untuk setiap string host yang berlaku diatur dengan benar.

Saya ingin log in exim mainlog yang menggunakan host string untuk setiap email yang dikirim.

Apakah ini mungkin dan jika tidak, apa pilihan saya untuk mengetahui string host mana yang digunakan dalam HELO berdasarkan email?

Terima kasih


Bagaimana Anda memberi tahu exim untuk beralih di antara nilai helo_data?
Majenko

Karena setiap nilai helo_data membutuhkan ip (antarmuka) sendiri, saya menetapkan nilai untuk antarmuka berdasarkan nilai $ sender_address_domain. Jika domain tertentu memiliki lebih dari satu antarmuka yang terkait dengannya, ia akan memilih satu secara acak. Setelah antarmuka ditetapkan, ia kemudian menggunakan nilai $ send_ip_address untuk memilih nilai yang benar untuk helo_data. Solusinya terdengar berbelit-belit tetapi berfungsi dan hanya sedikit rumit. Sebuah skrip menulis string konfigurasi yang sesuai sehingga tidak "sulit untuk dipelihara". Tidak cukup ruang dalam respons ini, saya akan memposting cuplikan kode setelah.
Radmilla Mustafa

interface = ${extract{$sender_address_domain}{one.com=${extract{${eval:1 + ${randint:2}}}{:}{10.1.0.1:10.1.0.2}{$value}{10.0.0.0}} two.com=10.2.0.1 three.com=10.3.0.1}{$value}{10.0.0.0}} helo_data = ${extract{$sending_ip_address}{10.0.0.0=mail.default.com 10.1.0.1=mail1.one.com 10.1.0.2=mail2.one.com 10.2.0.1=mail.two.com 10.3.0.1=mail.three.com}{$value}{mail.default.com}}
Radmilla Mustafa

Saya menganggap ini dilakukan dalam bagian transportasi?
Majenko

ya, dalam transportasi. Sudah cukup teruji dan berfungsi seperti yang diharapkan.
Radmilla Mustafa

Jawaban:


1

Jika Anda dapat memutuskan data helo di tahap ACL, Anda dapat menetapkannya ke $acl_m_... variabel ( $acl_m_outbound_helo ), yang dapat dirujuk di mana saja dalam masa pesan. Anda mungkin ingin melakukan ini di DATA ACL, berdasarkan sepenuhnya pada pengirim, bukan penerima.

Anda kemudian dapat menggunakan log_message dalam ACL yang sama untuk mencatat nilai; itu akan masuk ke mainlog bersama dengan id pesan Exim, untuk korelasi. Kemudian dalam transportasi, Anda hanya referensi yang sama $acl_m_outbound_helo untuk digunakan untuk koneksi.


ini terdengar sangat menjanjikan! Saya akan mencobanya dan kembali shorty.
Radmilla Mustafa

Saya menambahkan log_message ke setiap ACL menerima, restart exim tentu saja, tetapi tidak ada pesan ditambahkan ke mainlog Melihat dokumentasinya, saya hanya melihat log_message yang dirujuk di bagian yang berhubungan dengan tolak peringatan dan penundaan. Apakah log_message tidak berlaku untuk menerima atau saya mengabaikan sesuatu yang lain?
Radmilla Mustafa

Saya percaya menerima tidak mengizinkan log_message, namun memperingatkan sepertinya itu yang saya cari. Saya akan kembali ke sini dan memberikan pembaruan status.
Radmilla Mustafa

Menambahkan kondisi peringatan = true ke data acl tampaknya berfungsi dengan baik. Saya belum memuji solusi lengkapnya tetapi dari sini saya pikir itu harus menjadi masalah sederhana, kendala utama saya ditaklukkan. Terima kasih!
Radmilla Mustafa

0

Sayangnya tidak ada metode bawaan untuk mencatat variabel helo_data ke file mainlog.

Metode yang mungkin akan saya gunakan adalah menambahkan sebuah kait di suatu tempat di dalam jalur pesan untuk mencatat data yang saya cari ke file lain dengan beberapa referensi untuk kembali ke entri dalam file mainlog (misalkan ID pesan), atau saya akan membuat router terpisah & amp; transportasi berdasarkan per-situs web. Transport yang digunakan untuk mengirim email dicatat dalam file mainlog sebagai T = nilai my_transport.

Untuk log masuk kustom saya telah berhasil melakukan sesuatu yang serupa untuk memasukkan rincian email yang diterima ke dalam database menggunakan condition = nilai di router. Anda bisa menggunakan ${run{<command> <args>}} ekspansi string untuk mencapai ini:

condition = ${run{/path/to/interpreter /path/to/custom/logging/script $sender_domain $message_exim_id}{1}{0}}

(belum dicoba)

Cuplikan kecil di router akan mengeksekusi skrip /path/to/custom/logging/script menggunakan penerjemah /path/to/interpreter (/ bin / sh, / usr / bin / perl, apa pun) melewatinya nama domain pengirim dan ID pesan Exim.

Ini cukup berat, jadi tidak ideal di server penggunaan berat, tetapi mungkin hanya berfungsi ....


Saya juga berpikir untuk menyiapkan transport yang berbeda untuk setiap domain, ini pasti akan berhasil. Satu-satunya masalah adalah bahwa saya berpotensi berakhir suatu hari dengan lusinan transportasi yang semuanya memiliki konfigurasi yang hampir sama, dan ini akan sangat sulit untuk dipertahankan, bahkan jika itu dihasilkan skrip. Saya tidak yakin apa yang Anda maksud ketika Anda mengatakan "tambahkan sebuah kait di jalur pesan," bisakah Anda mengklarifikasi untuk saya? Terima kasih.
Radmilla Mustafa

Bagaimana dengan itu? (lihat edit)
Majenko

Itu sedikit terlalu banyak sumber daya untuk kebutuhan saya, kami mengirim banyak email dan mengeksekusi shell setiap kali tidak ideal. Terima kasih atas wawasan Anda.
Radmilla Mustafa

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.