Postfix: memilih host relay berdasarkan Dari: header surat daripada pengirim amplop

9

Saya telah berhasil mengatur Postfix untuk menyampaikan email melalui Mandrill menggunakan SASL dan sender_dependent_relayhost_mapsdengan tabel MySQL sehingga pengirim yang berbeda terhubung ke Mandrill menggunakan nama pengguna Mandrill mereka sendiri dan kunci API.

Sejauh ini bagus, tapi saya punya tiga pengguna yang semuanya menggunakan Penyedia Layanan Email dan Pengirim di amplop pesan diatur ke "[email protected]" untuk ketiga pengguna, dan satu-satunya tempat yang berisi email pengguna sebenarnya alamatnya ada di header Dari: email .

Saya senang dengan keamanan (atau ketiadaan) menggunakan header Dari: email karena saya hanya meneruskan email yang dikirim ke alamat email tertentu yang dikontrol dengan ketat, tetapi saya akan sangat berterima kasih atas saran bagaimana saya bisa terbaik tentukan relayhost berdasarkan nilai header Dari : . Apakah ada cara untuk mengatur nilai amplop agar sama dengan bidang Dari? Atau cara lain untuk melakukan ini?

Adrian Savage
sumber
Apakah ketiga pengguna menggunakan kredensial SASL yang sama?
masegaloeh
Tidak, mereka masing-masing memiliki kredensial SASL yang berbeda. Ketika mereka mengirim langsung dari klien surat mereka, itu mengidentifikasi dengan benar relay surat dan kredensial SASL mereka berdasarkan alamat pengiriman mereka. Penggunaan infusionmail.com ESP membuat mustahil pada tahap ini untuk melakukan pencarian yang sama berdasarkan pengirim, karena pengirimnya sama dan hanya Dari: header email yang berbeda.
Adrian Savage

Jawaban:

5

Berdasarkan utas ini pada mailing-list postfix: transport yang berbeda untuk semua email yang diperkenalkan melalui sendmail (1) , sepertinya case Anda memungkinkan. Sayangnya Anda tidak bisa hanya mengandalkan dua tabel sender_dependent_relayhost_mapsdan smtp_sasl_password_maps. Anda perlu memodifikasi master.cf. Idenya menggunakan header_checksuntuk merutekan email ke berbagai transportasi. Kemudian di setiap transportasi, kami mendefinisikan klien smtp yang menggunakan kredensial independen dan relayhost.

Pertama, tentukan header_check di main.cf dan tabel pcre-nya

#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       smtp3:[host3.example.com]

Baik, sekarang kita setup smtp1, smtp2, smtp3transportasi di master.cf

#master.cf
smtp1    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay

File smtpX.relaymemiliki konten serupa mis

[hostX.example.com]   userX:passwordX

Penolakan:

masegaloeh
sumber
0

Ini bekerja untuk saya dengan satu perubahan: tindakan "FILTER" perlu ditambahkan dalam file header_dependent_relay :

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       FILTER smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       FILTER smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       FILTER smtp3:[host3.example.com]

Lihat http://www.postfix.org/header_checks.5.html

Aurel
sumber