postfix - bagaimana Anda mengarahkan semua email ke satu pengguna, mis. *@example.com → user@example.com


27

Saya menggunakan postfix untuk email saya. Saya tahu saya bisa menggunakan perintah / etc / aliases dan newaliases untuk mengarahkan ulang surel tertentu, misalnya saya dapat mengarahkan kembali root@example.com ke user@example.com dengan memasukkan root: user/ etc / aliases saya kemudian menjalankan newaliases. Namun saya ingin melakukan hal yang sama *: user, sehingga semua email ke example.com akan dikirim ke user@example.com.

Bagaimana saya melakukan ini?

Jawaban:


19

luser_relay = user@example.comdi Anda main.cfadalah apa yang Anda inginkan.

Untuk menonaktifkan pemeriksaan pengguna dan menerima semua email, Anda perlu menambahkan local_recipient_maps =opsi. Dokumentasi


1
Saya menambahkannya ke main.cf dan memulai kembali postfix. Saya mendapatkan kesalahan berikut di /var/log/main.info: <pre> 550 5.1.1 <myrandom@example.org>: Alamat penerima ditolak: Pengguna tidak dikenal di tabel penerima lokal; dari = <me@gmail.com> ke = <myrandom@example.org> </pre>
Rory

Jadi example.org tidak ada dalam daftar domain penerima lokal Anda, atau sesuatu yang lain telah salah konfigurasi.
womble

7
Saya membuatnya bekerja. Selain opsi luser_relay yang Anda sebutkan, Anda juga perlu menambahkan opsi "local_recipient_maps =". Halaman dokumentasi postfix ini menjelaskan bahwa: postfix.org/postconf.5.html#luser_relay
Rory

Apakah metode ini mempertahankan alamat email To? (peta virtual menulis ulang dan alamat To: asli hilang.)
user14645

1
@Sverre pertanyaan untuk pertanyaan, bukan komentar pada jawaban tujuh tahun untuk pertanyaan terkait tangensial.
womble

17

Apa yang Anda cari adalah tabel alias virtual dan dapat dilakukan dengan menggunakan ...

Pertama, Anda perlu mengedit, atau membuat jika belum ada, file / etc / postfix / virtual .

example.com   whatever
@example.com  user@example.com

Setelah ini disimpan, Anda harus menjalankannya postmap /etc/postfix/virtualuntuk menghasilkan /etc/postfix/virtual.db yang diindeks akan dibaca.

Anda kemudian perlu mengedit /etc/postfix/main.cf dan pastikan bahwa Anda memiliki baris berikut yang tidak di-komentar:

virtual_alias_maps = hash:/etc/postfix/virtual

Ini sebenarnya akan membuat postfix tahu tentang tabel alias virtual dan menggunakannya.

Masalah dengan menggunakan luser_relayopsi seperti yang telah disebutkan orang lain adalah bahwa ini diperlakukan sebagai pengguna resor terakhir untuk alamat yang tidak diketahui oleh agen pengiriman lokal. Jika postfix hanya menangani email untuk satu domain, ini dapat digunakan untuk ini tetapi dapat menutupi kesalahan konfigurasi lainnya dan kemungkinan akan menyebabkan hasil yang tidak terduga jika lebih dari satu domain sedang ditangani.

Satu peringatan yang saya merasa wajib untuk disebutkan adalah bahwa dengan membuat wildcard alias dari sifat ini Anda membuka sistem email Anda untuk menerima pesan untuk alamat yang tidak akan ada dan menjalankan risiko memiliki kotak surat yang diisi dengan cepat dengan spam karena tidak ada. kotak surat.


8

Ini sebenarnya cukup sederhana. Yang perlu Anda lakukan adalah memasukkan sesuatu seperti ini di main.cffile Anda :

virtual_alias_maps = regexp:/etc/postfix/virtual_alias

Bagian regexpmelakukan trik. Juga, /etc/postfix/virtual_aliasAnda memasukkan sesuatu seperti ini:

/^test/ you@yourdomain.com

Dalam contoh ini Anda harus menerima semua email dengan tujuan yang dimulai dengan 'tes'. Jangan lupa untuk postmap / etc / postfix / virtual_alias dan muat ulang postfix.


6

Untuk menggabungkan jawaban / komentar di atas yang paling mudah bagi saya (saya punya satu domain utama):
Tambahkan yang berikut ke /etc/postfix/main.cf:

luser_relay = user@domain.com (or local system user)
local_recipient_maps =

( local_recipient_maps =tidak memiliki nilai yang ditetapkan)

Saya menggunakan akun linux pengguna lokal dan juga menambahkan pengguna yang sama ke / etc / aliases sehingga pengguna mendapatkan semua email untuk di-root, postmaster, dll.

Anda juga dapat menggabungkan alamat yang sama ini di virtual_alias_mapsdan mengarahkan semua tangkapan domain domain virtual di akun utama yang sama.

Silakan berkonsultasi dengan luser_relay untuk informasi lebih lanjut.


3

Jika Anda ingin menggunakan alamat catch-all untuk domain saya, Anda dapat menggunakan /etc/aliasesgabungan dengan regex sebagai berikut:

Di /etc/postfix/main.cftambahkan
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/catch-all-local.regexp

Di /etc/postfix/catch-all-local.regexptambahkan
!/^owner-/ your-catch-all-user

Ini harus melakukan trik. Ini bekerja untuk saya, dan bekerja dengan virtual_alias_maps yang disetel secara paralel.


0

Ada tipe tabel pencarian statis yang kurang dikenal di Postfix, yang dapat digunakan untuk tujuan ini:

alias_database = static:user@example.com
alias_maps = static:user@example.com

Jika user@example.com tidak lokal untuk sistem ini, Anda juga mungkin akan ingin membuang semua pesan bounce dengan mengganti garis berakhir dengan bouncedengan discarddi master.cfuntuk menghindari loop email.


-4

Saya benci menjadi killjoy, tapi masalah Anda adalah Anda menggunakan Postfix. Postfix membuat latihan ini sangat sulit. Saya tahu: Saya harus melakukannya beberapa tahun yang lalu dan butuh berhari-hari untuk menyelesaikannya. The luserpilihan adalah yang benar, tetapi ada hal-hal lain untuk mendapatkan hak, juga. (Dan bahkan nama opsi menunjukkan bahwa penulis Postfix tidak benar-benar ingin mendukung ini.)

Saya merekomendasikan beralih ke Courier. Courier mendukung metode "catch-all" ini dengan cara yang jauh lebih masuk akal karena cara memperluas sistem alias yang ada.


1
Postfix tidak menyulitkan sama sekali. Alias ​​virtual adalah cara standar untuk melakukan catchall di Postfix dan sangat mudah. Yang mengatakan, pada apa pun selain server mail toy untuk domain pribadi Anda sendiri, catchall adalah ide yang sangat buruk.
Rob Chanter
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.