Postfix: apa itu sebenarnya alias domain?

12

Saya pikir saya mengerti "Alias ​​domains" karena itu hanyalah alias untuk domain lain! Jadi ketika saya mengatur kotak surat seperti "[email protected]", dan menambahkan "alias.com" sebagai alias domain untuk "main.com" alamat "[email protected]" juga berfungsi ... Tapi tidak !

Jadi, saya telah menambahkan domain ini:

  • main.com
  • alias.com

Saya telah membuat kotak surat ini:

Lalu saya memetakan alias domain ini:

  • alias.com => main.com

Dan kemudian ketika saya mengirim email ke [email protected] saya menerima kesalahan ini:

Recipient address rejected: User unknown in virtual mailbox table (state 13).

Saya tidak ingin membuat alias untuk setiap domain, karena saya punya beberapa. Saya juga tidak ingin menggunakan wildcard (seperti info @ *) karena ada juga domain lain yang bukan aliasmain.com

Jadi ... apa ini sebenarnya?

skerit
sumber
Saya mengharapkan hal yang sama dan masih tidak mengerti mengapa itu tidak terjadi.
Josh M.

Jawaban:

4

Penjelasannya ada dalam dokumentasi: http://www.postfix.org/VIRTUAL_README.html#virtual_alias

Anda ingin "alias kotak surat" alias virtual_mailbox_alias dan virtual_mailbox_maps tetapi berbicara tentang "alias domain": http://www.postfix.org/ADDRESS_CLASS_README.html#virtual_alias_class

mailq
sumber
3
Saya sepertinya tidak bisa memahami dokumen - bagaimana Anda memiliki kotak surat domain1.comalias apa pun<mailbox>@domain2.com ?
Josh M.
2
@ Josh. Anda bisa menggunakan tabel hash virtual_alias_mapsdengan entri formulir @domain1.com @domain2.com. Lihat jawaban saya untuk detailnya.
Sam Hanes
12

Menambahkan alias.comke virtual_alias_domainsadalah langkah pertama yang benar, tetapi itu hanya memberitahu Postfix bahwa Anda ingin menggunakan domain itu untuk alias. Itu tidak mengatakan apa yang seharusnya alias. Untuk itu, Anda perlu menggunakan peta alias virtual.

Pertama, tambahkan sesuatu seperti ini ke main.cf:

virtual_alias_domains = alias.com
virtual_alias_maps = hash:/etc/postfix/virtual

Menambahkan virtual_alias_mapsmemberi Anda file ( /etc/postfix/virtual) yang digunakan sebagai peta alias virtual. Tapi apa yang Anda masukkan ke file itu? Menurut halaman virtual (5) :

Format input untuk perintah postmap (1) adalah sebagai berikut:

  pattern address, address, ...

Saat pola cocok dengan alamat email, gantilah dengan alamat yang sesuai.

dan

Dengan pencarian dari file yang diindeks seperti DB atau DBM, atau dari tabel jaringan seperti NIS, LDAP atau SQL, setiap kueri pengguna @ domain menghasilkan urutan pola kueri seperti dijelaskan di bawah ini. Setiap pola kueri dikirim ke setiap tabel pencarian yang ditentukan sebelum mencoba pola kueri berikutnya, hingga kecocokan ditemukan.

...

@domain address, address, ...

Alihkan email untuk pengguna lain dalam domain ke alamat.

dan

Hasil pencarian tunduk pada penulisan ulang alamat: Ketika hasilnya memiliki formulir @otherdomain, hasilnya menjadi pengguna yang sama di otherdomain. Ini hanya berfungsi untuk alamat pertama dalam hasil pencarian multi-alamat.

Karenanya, memasukkan ini /etc/postfix/virtualakan mencapai alias domain lengkap yang Anda inginkan:

# map any <user>@alias.com to the matching <user>@main.com
@alias.com     @main.com

Kemudian, karena file itu adalah tabel hash, Anda perlu menjalankan postmap( penjelasan , halaman manual ):

postmap /etc/postfix/virtual

Anda dapat menemukan informasi lebih lanjut tentang domain virtual di Postfix Virtual Domain HOWTO dan tentang alias di Postfix Address Rewriting HOWTO .

Sam Hanes
sumber
Jadi, antarmuka PostfixAdmin memiliki bug , karena antarmuka ( edit.php?table=aliasdomain) gagal untuk mengatakan kepada pengguna bahwa tidak ada alias sebenarnya akan terjadi ketika menandai itu sebagai diaktifkan.
Peter Krauss
2
Saya tidak akan mengatakan itu bug, tepatnya, karena itu sebenarnya mengkonfigurasi domain alias virtual. Sebaliknya, saya menduga bahwa PostfixAdmin mengharapkan Anda untuk mengetahui apa itu virtual domain alias Postfix, dan Anda juga perlu menambahkan alias yang sebenarnya untuk membuatnya melakukan apa saja. Mungkin akan lebih baik jika mengatakan itu padamu.
Sam Hanes
1

@Josh M.

Saya tidak tahu apakah ini cara yang benar dan / atau praktik yang baik tetapi saya menggunakan sesuatu seperti ini:

virtual_alias_maps = regexp:/etc/postfix/domain_rewriting pgsql:/etc/postfix/pgsql/     virtual_alias_maps.cf

$ cat /etc/postfix/domain_rewriting 
/^(.*)@domain1.com$/     ${1}@domain2.com
Maximilian Kaul
sumber
1
Meskipun tidak sepenuhnya salah (itu akan melakukan apa yang Anda harapkan), menggunakan tabel regex kurang efisien daripada menggunakan tabel hash dengan @domain1.com @domain2.comsintaks yang saya perinci dalam jawaban saya.
Sam Hanes
1

Ini adalah versi singkat dari jawaban @ sam-hanes '(yang cocok untuk saya)

Di virtual_alias_maps Anda, tambahkan:

@from.domain <tab> @to.domain

Di baris perintah lakukan:

 postmap /path/to/yourvirtualalismapsfile

Dalam file main.cf Anda, tambahkan:

virtual_alias_domains : from.domain

virtual_alias_domains memberitahu postfix bahwa semua alamat kotak surat yang berbentuk [email protected] semuanya alias.

ychaouche
sumber