Postfix Configuration - Address Manipulation


Up one level | Basic Configuration | UCE Controls | Rate Controls | Resource Controls | Address Manipulation

Introduction

Walaupun rilis awal Posftix tidak mempunyai "bahasa" untuk penulisan ulang address, ia bisa melakukan banyak manipulasi address dengan menggunakan tabel lookup. Saat sebuah message melewati sistem Postfix, addressnya akan dibongkar-pasang sesuai urutan yang dijelaskan di dokumen ini.

Bila tidak dituliskan khusus, semua parameter yang dijelaskan di sini terdapat dalam file main.cf. Jika Anda mengubah parameter dari sistem Postfix yang sedang beroperasi, jangan lupa menjalankan perintah postfix reload.

Semua mail:

Pengiriman lokal:

Menulis ulang address ke dalam bentuk standar

Sebelum daemon
cleanup mencocokkan sebuah address dengan tabel lookup manapun, ia pertama-tama menulis ulang address itu ke dalam bentuk standar user@fully.qualified.domain, dengan mengirimkan address ini kepada daemon trivial-rewrite. Tujuan menulis ulang address ke dalam bentuk standar ialah untuk mengurangi jumlah entry yang diperlukan di tabel lookup. Program trivial-rewrite dari Postfix melakukan manipulasi address yang telah ditetapkan sebagai berikut:
Mengubah @hosta,@hostb:user@site menjadi user@site
Fitur source route sudah tidak dianjurkan pemakaiannya. Postfix tidak dapat menangani address semacam itu; ia hanya bisa menghapus source route-nya.

Mengubah site!user menjadi user@site
Fitur ini diatur oleh parameter boolean swap_bangpath (default: yes). Tujuannya adalah untuk mengubah address bentuk UUCP menjadi bentuk domain. Fitur ini hanya berguna bila Anda menerima mail lewat UUCP; namun bila tidak pun, kemungkinan fitur ini tidak mendatangkan kerugian apa-apa.

Mengubah user%domain menjadi user@domain
Fitur ini diatur oleh parameter boolean allow_percent_hack (default: yes). Biasanya, fitur ini digunakan untuk menangani address seperti user%domain@otherdomain.

Mengubah user menjadi user@$myorigin
Fitur ini diatur oleh parameter boolean append_at_myorigin (default: yes). Tujuannya ialah untuk menangani user secara konsisten pada setiap komputer di dalam $myorigin.

Anda sebaiknya tidak mematikan fitur ini, karena banyak komponen Postfix yang beranggapan bahwa semua address berbentuk user@domain.

Jika komputer Anda bukan komputer utama untuk $myorigin dan Anda ingin agar beberapa user mailnya dikirim secara lokal tanpa melalui komputer utama tersebut, buatlah sebuah entry dalam tabel virtual yang mengalihkan (me-redirect) user@$myorigin ke user@$myhostname.

Mengubah user@host menjadi user@host.$mydomain
Fitur ini diatur oleh parameter boolean append_dot_mydomain (default: yes). Tujuannya ialah untuk menangani secara konsisten bentuk-bentuk yang berbeda dari hostname yang sama.

Sebagian orang akan berpendapat bahwa mengubah host menjadi host.$mydomain itu tidak baik. Itu sebabnya fitur ini bisa dimatikan. Yang lain menyukai kepraktisannya, yaitu domain lokal akan ditambahkan secara otomatis.

Mengubah user@site. menjadi user@site (tanpa titik di akhir)

Canonical address mapping

Sebelum daemon
cleanup menempatkan mail yang masuk ke queue incoming, daemon ini menggunakan tabel canonical untuk menulis ulang semua address pada message envelopes dan message headers, local maupun remote. Pemetaan ini berguna untuk mengganti login name dengan address berbentuk Firstname.Lastname, atau untuk menghapuskan domain-domain yang tidak berlaku pada mail address yang dihasilkan oleh sistem-sistem mail terdahulu.

Pemetaan canonical secara default dimatikan. Untuk mengaktifkannya, edit parameter canonical_maps dalam file main.cf dan berikan satu atau lebih tabel lookup, dipisahkan dengan whitespace atau koma. Misalnya:

canonical_maps = hash:/etc/postfix/canonical

Selain pemetaan canonical yang dilakukan baik terhadap address pengirim (sender) maupun penerima (recipient), Anda dapat menetapkan pemetaan canonical yang dilakukan hanya terhadap address pengirim atau hanya terhadap address penerima. Misalnya:

sender_canonical_maps = hash:/etc/postfix/sender_canonical

recipient_canonical_maps = hash:/etc/postfix/recipient_canonical

Pemetaan canonical pengirim dan penerima dilakukan sebelum pemetaan canonical yang umum.

Penulisan ulang untuk address pengirim saja berguna waktu Anda ingin mengubah address pengirim yang buruk kelihatannya menjadi address yang lebih cantik, sementara ingin agar tetap dapat mengirim mail ke address-address yang buruk tadi tanpa menciptakan loop mailer.

Address masquerading

Address masquerading (penyamaran address) adalah sebuah metode untuk menyembunyikan semua host dalam sebuah domain di balik mail gateway, dan membuat seolah-olah mail itu dikirim dari gateway sendiri, bukan dari masing-masing komputer.

Address masquerading secara default dimatikan. Untuk mengaktifkannya, edit parameter masquerade_domains dalam file main.cf file dan berikan satu atau lebih nama domain, dipisahkan dengan whitespace atau koma. List ini diproses dari kiri ke kanan, dan proses berhenti pada entry pertama yang cocok. Jadi,

masquerade_domains = foo.example.com example.com
akan mengubah any.thing.foo.example.com menjadi foo.example.com, tetapi mengubah any.thing.else.example.com menjadi example.com.

Nama domain yang didahului ! berarti jangan menyamarkan domain ini atau subdomainnya. Jadi,

masquerade_domains = !foo.example.com example.com
tidak mengubah any.thing.foo.example.com dan foo.example.com, namun mengubah any.thing.else.example.com menjadi example.com.

Parameter konfigurasi masquerade_exceptions menyatakan user name mana yang harus dikecualikan waktu melakukan address masquerading. Berikan list dari user name, pola /nama/file atau tipe:tabel, dipisahkan dengan koma dan/atau whitespace. List ini akan dicocokkan dari kiri ke kanan, dan berhenti pada entry pertama yang cocok. Nyatakan dengan !nama untuk mengecualikan sebuah nama dari list itu. Pola /nama/file akan digantikan oleh isi file tersebut; pola tipe:tabel dicocokkan jika sebuah nama cocok dengan sebuah lookup key (sisi sebelah kanan diabaikan). Lanjutkan baris yang panjang dengan memulai baris berikutnya dengan whitespace. Misalnya,

masquerade_exceptions = root
masquerade_exceptions = /etc/postfix/masquerade-exceptions

Secara default, Postfix tidak membuat pengecualian apapun.

Poin yang samar: secara default, address masquerading dijalankan hanya terhadap message headers dan envelope sender addresses, namun tidak terhadap envelope recipients. Ini memungkinkan Anda untuk memakai address masquerading pada komputer mail gateway, sementara tetap dapat mem-forward mail dari luar kepada user di komputer-komputer individual.

Untuk membuat envelope recipient addresses juga dikenai masquerading, nyatakan (hanya tersedia pada versi Postfix setelah 20010802):

masquerade_classes = envelope_sender, envelope_recipient, header_sender, header_recipient

Jika Anda melakukan ini, Postfix tidak dapat lagi menghantarkan mail ke komputer-komputer individual.

Virtual address aliasing

Setelah melakukan pemetaan canonical dan masquerade, daemon cleanup menggunakan tabel virtual alias untuk mengalihkan (me-redirect) mail bagi semua penerima, baik lokal maupun remote. Pemetaan ini hanya berpengaruh terhadap envelope recipients, tidak terhadap message headers atau envelope senders. Virtual alias lookup berguna untuk mengalihkan mail yang ditujukan ke virtual alias domain kepada mailbox user yang sebenarnya, dan untuk mengalihkan mail yang ditujukan ke domain yang sudah tidak eksis lagi. Virtual alias lookup juga dapat digunakan untuk mengubah Firstname.Lastname kembali menjadi login name UNIX, meskipun tampaknya aliases lokal lebih tepat untuk ini.

Virtual aliasing secara default dimatikan. Untuk mengaktifkannya, edit parameter virtual_alias_maps dalam file main.cf dan berikan satu atau lebih tabel lookup, dipisahkan dengan whitespace atau koma. Misalnya:

virtual_alias_maps = hash:/etc/postfix/virtual

Address yang didapati pada pemetaan virtual alias akan menjalani siklus pemetaan virtual aliasing sekali lagi, namun tidak lagi menjalani pemetaan canonical, guna menghindari terjadinya loop.

Mail transport switch

Setelah daemon penulisan ulang dan penerjemahan address menetapkan tujuan dari sebuah message, ia menentukan metode pengiriman default bagi tujuan tersebut. Postfix menetapkan empat kelas address utama, masing-masing dengan metode pengiriman defaultnya.
Tujuan cocok denganAgen pengiriman defaultParameter pengatur
$mydestination atau $inet_interfaces local $local_transport
$virtual_mailbox_domains virtual $virtual_transport
$relay_domains relay (klon dari smtp) $relay_transport
tak satu pun smtp $default_transport
Tabel opsional
transport membatalkan metode pengiriman pesan yang default (tabel ini digunakan oleh daemon penulisan ulang dan penerjemahan addrees). Tabel transport dapat digunakan untuk mengirim mail ke situs-situs tertentu lewat UUCP, atau untuk mengirim mail ke sistem mail yang benar-benar tidak berfungsi baik, yang hanya dapat menangani satu koneksi SMTP pada satu waktu (ya, sistem seperti ini benar-benar ada dan orang-orang dulu mengeluarkan uang untuk sistem ini)

Lookup menggunakan tabel transport secara default dimatikan. Untuk mengaktifkannya, edit parameter transport_maps dalam file main.cf dan berikan satu atau lebih tabel lookup, dipisahkan dengan whitespace atau koma. Misalnya,

transport_maps = hash:/etc/postfix/transport

Relocated users table

Selanjutnya, daemon penulisan ulang dan penerjemahan address mencocokkan tiap nama penerima dengan database
relocated. Tabel ini menyediakan informasi tentang bagaimana mencapai user yang sudah tidak mempunyai account lagi, atau apa yang harus dilakukan terhadap mail yang ditujukan ke seluruh domain yang sudah tidak ada lagi. Bila sebuah mail dikirimkan ke address yang tertera dalam tabel ini, message itu akan dikembalikan dengan pesan yang informatif.

Lookup untuk relocated user secara default dimatikan. Untuk mengaktifkannya, edit parameter relocated_maps dalam file main.cf dan berikan satu atau lebih tabel lookup, dipisahkan dengan whitespace atau koma. Misalnya,

relocated_maps = hash:/etc/postfix/relocated

Alias database

Bila mail akan dikirimkan secara lokal, agen pengiriman
local mencocokkan tiap-tiap nama penerima lokal dengan database aliases. Pemetaan ini tidak berpengaruh pada address di header message. Alias lokal biasanya digunakan untuk mewujudkan distribution lists, atau untuk mengalihkan mail yang ditujukan ke alias-alias standar seperti postmaster kepada orang yang benar-benar ada. Tabel ini dapat juga digunakan untuk memetakan address Firstname.Lastname ke login name.

Lookup alias secara default diaktifkan. Konfigurasi default tergantung pada environment sistem, namun biasanya salah satu dari yang berikut ini:

alias_maps = hash:/etc/aliases
alias_maps = dbm:/etc/aliases, nis:mail.aliases

Path ke file alias database diatur lewat parameter konfigurasi alias_database. Nilai parameter ini tergantung kepada sistem. Biasanya adalah salah satu dari yang berikut ini:

alias_database = hash:/etc/aliases (4.4BSD, LINUX)
alias_database = dbm:/etc/aliases (4.3BSD, SYSV<4)
alias_database = dbm:/etc/mail/aliases (SYSV4)

Demi alasan keamanan, pengiriman yang ditujukan kepada command dan file dijalankan dengan hak dari pemilik alias database. Sebuah userid yang default, default_privs, digunakan untuk pengiriman kepada command/file di alias yang dipunyai oleh root-owned.

Per-user .forward files

User dapat mengatur pengiriman mailnya sendiri dengan menetapkan address-address tujuan di dalam file yang disebut .forward di home directory mereka. Sintaks file ini sama dengan sintaks alias sistem, hanya di file ini lookup key dan tanda titik dua tidak dipakai.

Non-existent users

Saat agen pengiriman lokal mendapati bahwa user yang seharusnya menerima sebuah message tidak eksis, message itu biasanya dikembalikan ke si pengirim ("user unknown"). Kadang kala, kita ingin mem-forward mail bagi penerima-penerima yang tak eksis ke komputer yang lain. Untuk ini, Anda dapat memberikan tujuan alternatif dengan parameter konfigurasi luser_relay.

Sebagai pilihan lain, mail bagi penerima yang tidak eksis dapat didelegasikan ke sebuah message transport yang sama sekali berbeda, seperti yang ditentukan oleh parameter konfigurasi fallback_transport. Untuk lengkapnya, lihat keterangan tentang agen pengiriman local.

Catatan: jika Anda menggunakan fitur luser_relay untuk menerima mail bagi account non-UNIX, Anda harus menuliskan:

local_recipient_maps =
(dikosongkan) dalam file main.cf, jika tidak server SMTP Postfix akan menolak mail bagi account non-UNIX dengan pesan "User unknown in local recipient table".

luser_relay dapat menetapkan satu address. Address ini akan dikenai ekspansi $name. Contoh-contoh yang paling berguna adalah:

$user@other.host
Username saja, tanpa ekstensi address, akan ditambahkan di depan @other.host. Misalnya, mail untuk username+foo akan dikirimkan ke username@other.host.

$mailbox@other.host
Seluruh localpart dari address penerima mula-mula, termasuk ekstensi address, ditambahkan di depan @other.host. Misalnya, mail untuk username+foo akan dikirimkan ke username+foo@other.host.

sysadmin+$user
The bare username, without address extension, is appended to sysadmin. For example, mail for username+foo is sent to sysadmin+username.

sysadmin+$mailbox
Seluruh localpart dari address penerima mula-mula, termasuk ekstensi address, akan ditambahkan di belakang sysadmin. Misalnya, mail untuk username+foo akan dikirimkan ke sysadmin+username+foo.

Up one level | Basic Configuration | UCE Controls | Rate Controls | Resource Controls | Address Manipulation