Bingung tentang alias_maps dan virtual_alias_maps

22

Saya sudah membaca ulang dokumen tentang hal ini serta posting lain di sini dan ini masih sangat tidak jelas bagi saya. Saya telah menguji berbagai hal untuk memahami perbedaan antara alias_mapsdan virtual_alias_mapsdan saya tidak melihat penggunaan 2 pengaturan terpisah ini di postfix. Inilah yang saya temukan sejauh ini (Catatan - Saya menggunakan postfix di server yang sama dengan server web saya sebagai klien nol untuk mengirim email saja) :

1) / etc / alias file:

root: [email protected]

Ketika saya menambahkan di atas ke alias_maps, saya perhatikan bahwa beberapa layanan seperti fail2ban dapat memilih ini dan mengirimkan email root ke alamat email alias yang disebutkan. Namun, saya juga memperhatikan bahwa beberapa layanan lain (seperti mailperintah) tidak menghargai ini dan mencoba mengirim email langsung ke [email protected] yang tidak ada (saya pikir ini adalah myoriginpengaturan postfix yang menambahkan @ mydomain.com) . Untuk memperbaiki ini saya kemudian menambahkanvirtual_alias_maps

2) / etc / postfix / virtual

root     [email protected]

Ketika hal di atas ditambahkan, semua layanan menggunakan email alias virtual ini. Saya juga memperhatikan bahwa begitu saya menambahkan di atas, bahkan fail2ban mulai mengabaikan pengaturan awal saya dalam /etc/aliases/file dan mulai mengikuti alamat email yang diberikan dalam file virtual.

Sekarang ini semakin membingungkan saya -

  1. Mengapa kita perlu /etc/aliases/ketika memiliki email di dalam alias alias peta yang tampaknya menimpanya?

  2. Apa tujuan dari memiliki 2 pemetaan alias terpisah ini dan kapan kita memutuskan kapan akan menggunakan apa?

  3. Mengapa fail2ban (yang dikonfigurasikan ke email root@localhost) pertama-tama mengikuti alamat email yang diberikan pada alias_maps(/ etc / aliases /) dan kemudian memutuskan untuk mengabaikan yang pernah virtual_alias_mapsditambahkan?

  4. Mengapa semua layanan tidak membaca alias email yang disebutkan di / etc / alias dan mereka hanya berfungsi ketika alias email ditambahkan di peta alias virtual?

Saya telah menghabiskan beberapa jam sejak kemarin dan masih tidak yakin. Bisakah seseorang membantu saya menghilangkan kebingungan saya?

EDIT: Ini adalah log surat saat email dikirim ke root menggunakan mail rootperintah. Email alias untuk root disebutkan di / etc / aliases /. Tetapi email tidak berfungsi sampai saya memindahkan alias root ini dari email aliases_mapskevirtual_aliases_maps

Log ketika alias email root disebutkan dalam /etc/aliases/:

Nov 14 16:39:27 Debian postfix/pickup[4339]: 0F12643432: uid=0 from=<root>

Nov 14 16:39:27 Debian postfix/cleanup[4495]: 0F12643432: message-id=<[email protected]>

Nov 14 16:39:27 Debian postfix/qmgr[4338]: 0F12643432: from=<[email protected]>, size=517, nrcpt=1 (queue active)

Nov 14 16:39:27 Debian postfix/error[4496]: 0F12643432: to=<[email protected]>, orig_to=<root>, relay=none, delay=0.04, delays=0.03/0/0/0.01, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to domainname.com[128.199.147.136]:25: Connection refused)

Ini adalah log setelah alias email untuk root dipindahkan dari /etc/aliases/ke /etc/postfix/virtualmana pengiriman email berhasil setelah perubahan:

Nov 14 16:44:58 Debian postfix/pickup[4545]: ADD9A43436: uid=0 from=<root>

Nov 14 16:44:58 Debian postfix/cleanup[4563]: ADD9A43436: message-id=<[email protected]>

Nov 14 16:44:58 Debian postfix/qmgr[4544]: ADD9A43436: from=<[email protected]>, size=453, nrcpt=1 (queue active)

Nov 14 16:45:00 Debian postfix/smtp[4551]: ADD9A43436: to=<[email protected]>, orig_to=<root>, relay=somesite.com[108.160.157.120]:25, delay=1.9, delays=0.03/0/0.97/0.88, dsn=2.0.0, status=sent (250 OK id=1XpEqC-0002ry-9s)

Nov 14 16:45:00 Debian postfix/qmgr[4544]: ADD9A43436: removed
Neel
sumber
I also noticed that some other services (like mail command) does not respect this-> tolong tunjukkan entri maillog terkait dengan kondisi ini
masegaloeh
@masegaloeh Telah memperbarui posting saya dengan log surat
Neel

Jawaban:

35

Beberapa latar belakang

Postfix mewarisi beberapa fitur dari sendmail lama seperti milter dan alias. File /etc/aliasesadalah bagian dari aliaseswarisan dan diimplementasikan oleh alias_maps. Di sisi lain, postfix memiliki virtual_maps/ virtual_alias_mapsuntuk menangani email alias. Jadi apa perbedaan di antara mereka?

Parameter alias_maps

  • Digunakan hanya untuk pengiriman lokal (8)

  • Menurut kelas alamat di postfix , email akan dikirimkan oleh lokal (8) jika nama domain penerima terdaftar dimydestination

  • The masukan lookup hanya bagian lokal dari alamat email lengkap (misalnya myuser dari [email protected]). Ini membuang bagian domain penerima.

  • Hasil pencarian dapat berisi satu atau lebih hal berikut ini:

    • alamat email : email akan diteruskan ke alamat email
    • / file / name : email akan ditambahkan ke / file / name
    • | perintah : surat disalurkan ke perintah
    • : include: / file / name : include alias from / file / name

Parameter virtual_alias_maps

  • Digunakan oleh pengiriman virtual (5)

  • Selalu dipanggil pertama kali sebelum kelas alamat lainnya. Tidak peduli apakah domain penerima terdaftar di mydestination, virtual_mailbox_domainsatau tempat lain. Ini akan mengganti alamat / alias yang ditentukan di tempat lain.

  • The masukan lookup memiliki beberapa format yang

    • user @ domain : itu akan cocok dengan user @ domain secara harfiah

    • pengguna : itu akan cocok dengan pengguna @ situs ketika situs sama dengan $myorigin, ketika situs terdaftar $mydestination, atau ketika terdaftar di $inet_interfacesatau $proxy_interfaces. Fungsionalitas ini tumpang tindih dengan fungsionalitas alias lokal (5) database.

    • @ domain : ini akan cocok dengan email yang ditujukan untuk domainapa pun bagian lokalnya

  • Hasil pencarian harus

    • alamat email yang sah
    • pengguna tanpa domain. Postfix akan ditambahkan $myoriginjika append_at_myorigindiatur ya

Mengapa kita perlu / etc / alias ketika memiliki email di dalam peta alias virtual tampaknya menimpanya?

Seperti yang Anda lihat di atas, alias_maps(/ etc / alias) memiliki beberapa fitur tambahan (di samping penerusan) seperti pemipaan ke perintah. Ini kontras dengan virtual_alias_mapsemail yang hanya diteruskan.

Apa tujuan dari memiliki 2 pemetaan alias terpisah ini dan kapan kita memutuskan kapan akan menggunakan apa?

The alias_mapskelemahan yang Anda dapat membedakan jika penerima asli memiliki bentuk [email protected] atau [email protected] . Keduanya akan dipetakan untuk mem-root entri alias_maps. Di sisi lain Anda dapat menentukan alamat penerusan yang berbeda virtual_alias_maps.

Mengapa fail2ban (yang dikonfigurasi untuk email ke root @ localhost) pertama-tama mengikuti alamat email yang diberikan dalam alias_maps (/ etc / aliases /) dan kemudian memutuskan untuk mengabaikan bahwa begitu virtual_alias_maps ditambahkan?

Sebelum virtual_alias_maps ditambahkan : root @ localhost dihapus oleh alias_mapskarena localhost terdaftar di mydestination.

Setelah virtual_alias_maps ditentukan : Entri root(dalam virtual_alias_maps) tidak memiliki bagian domain dan localhost terdaftar mydestination, sehingga akan cocok root [email protected].

Mengapa semua layanan tidak membaca alias email yang disebutkan di / etc / alias dan mereka hanya berfungsi ketika alias email ditambahkan di peta alias virtual?

Perintah mail rootakan mengirim email ke root. Karena kekurangan bagian-bagian domain, postfix trivial-rewrite akan menambahkan myorigin ke bagian-bagian domain. Jadi, email akan dikirim ke root @ myorigin .

Sebelum virtual_alias_maps ditambahkan : Sayangnya, myorigintidak terdaftar mydestination, jadi tidak akan alias alias_maps.

Setelah virtual_alias_maps ditambahkan : Entri root(dalam virtual_alias_maps) tidak memiliki bagian domain dan myorigin (jelas) sama dengan myorigin, sehingga akan cocok root [email protected].

masegaloeh
sumber
1
Dalam kalimat The alias_mapskelemahan yang Anda dapat membedakan ... kata dapat mungkin dimaksudkan untuk menjadi tidak bisa . Kalau tidak, aku tidak bisa memahaminya.
Daniel Böhmer
2
  1. /etc/aliasesapakah ada terutama untuk pengiriman lokal, misalnya, mail ke root dari cron, dll, itu bagus untuk menjaga alias lokal Anda terpisah, virtual_alias_mapsjuga dapat digunakan dengan SQL DB, dan sebagainya.

  2. virtual_alias_maps adalah untuk ketika Anda memiliki pengguna virtual (dan domain virtual), seringkali yang tidak memetakan ke pengguna sistem, tetapi jika Anda tidak memiliki domain virtual, dan sangat sedikit pengguna, fungsi semacam itu mungkin tidak diperlukan.

  3. fail2ban tidak peduli, itu hanya mengirimkan email ke MTA.

  4. Anda harus lebih spesifik, layanan apa, bagaimana dan di mana mereka mengirim surat?

NickW
sumber
Terima kasih @NickW beberapa hal: (1) Untuk Tidak: 4, perintah mail adalah salah satu layanan yang melakukan ini. Maksud saya jika / etc / alias terutama untuk pengiriman lokal ke pengguna lokal, bukankah seharusnya mail rootperintah benar-benar termasuk dalam kategori ini? Mengapa layanan ini tidak mempertimbangkan info di / etc / aliases ketika ini merupakan pengiriman lokal? (2) Mempertimbangkan ini untuk skenario saya, apakah itu praktik yang baik untuk memiliki pengguna alias alamat email yang disebutkan di keduanya /etc/aliasesserta virtual_alias_mapsmereka bekerja untuk semuanya?
Neel
1
1. Ok, perintah mail harus digunakan /etc/aliasessecara default, pertanyaan yang benar-benar bodoh, Anda menjalankannya newaliasessetelah memperbarui file, kan? 2. Saya akan mengatakan bahwa itu berlebihan, jika orang akan menerima surat dari mesin lokal, akan lebih baik mengkonfigurasi skrip untuk menggunakan alamat email yang tepat, dengan cara itu akan dialihkan melalui postfix, dan dikirim ke tujuan yang benar.
NickW
hai @NickW ya saya membangun kembali alias menggunakan newaliasessetelah perubahan. Satu-satunya hal yang bisa saya pikirkan mengapa tidak menggunakan alias adalah mungkin karena pengaturan postfix yang menambahkan @$domain_namesetelah pengguna dan karenanya virtual_alias_mapsdiperlukan untuk mengarahkan ulang email-email tersebut. Saya membaca ini di postfix docs dan mungkin itu sebabnya mailperintah untuk me- root tidak bekerja dengan aliases: postfix.org/STANDARD_CONFIGURATION_README.html#some_local Bagaimanapun, terima kasih banyak telah membantu saya memahami Nick yang lebih baik ini. Saya sangat menghargainya .. :)
Neel
Senang telah membantu :)
NickW