Creation date: 3/18/2005 by

Postfix:Internal Routing Delivery

Ini adalah versi perbaikan dari thread yang ada dimilist postfix.or.id.
Kesalahan fatal pada penggunaan syntax canonical_maps adalah proses penukaran alamat email yang tidak terkendali, baik pada posisi sender dan recipient.
Untuk mengatasinya maka akan dipakai opsi recipient_canonical_maps, dan sender_canonical_maps dimana alamat yang akan ditukar pada saat receive atau sending dapat diatur.

Internal Routing Delivery, bisa dikatakan _salah satu_ solusi untuk membuat banyak server beda regional dengan 1 domain, dimana beberapa user pada domain tersebut ada dibeberapa server.

Software bantu dan kondisi

  • Distro (wajib) Trustix Secure Linux 2.2 Cloud
  • Postfix 2.1.5 (default instalasi rpm)
  • Tpop3
  • Fetchmail
Kondisi yang berlaku disini adalah memakai local user, belum diaplikasikan pada virtual-user.

Bayangkanlah...

Suatu perusahaan berpusat diJakarta, mempunyai 100 karyawan.
Semua aktivitas email (smtp dan pop3) dilakukan diserver jakarta. Dengan domain abc.com
Karyawan dijakarta diantara-nya ani,agnes,ayu,anto,ari,abu dan lain-lain

Karena kondisi bisnis yang bagus, perusahaan ini-pun membuka cabang di berbagai daerah. Anggap Bandung.
Dengan jumlah karyawan 30 orang, diantaranya, budi,badu,beni,beno,bejo.
Koneksi internet hanya memakai dial-up (melask�-tenan).
Karena berada pada 1 induk perusahaan maka format email karyawan diBandung-pun sama yaitu [email protected]
misal [email protected],[email protected], [email protected] dan seterusnya.
Maka jumlah email user di server jakarta menjadi 130 user.
Diputuskan aktivitas smtp ikut pada smtp server dial-up isp, sedangkan pop3 tetap ikut pada server jakarta.

Setelah berjalan beberapa saat dirasakan ada satu kelemahan,yaitu :
Pada saat user dicabang ingin mengirim email kepada sesama user cabang 1 wilayah (misal [email protected] ke [email protected]),
maka harus menunggu hingga modem hidup.
Hal ini terjadi karena pada saat budi melakukan perintah send, MUA akan berusaha mengirimkan-nya ke server jakarta.
Dan badu-pun baru akan bisa mendonlot/menarik email tersebut bila sudah diterima server jakarta.
Dapat dibayangkan proses yang seharusnya bisa cepat menjadi lambat karena harus berputar di internet.
Atau mudah-nya disebut sebagai eksternal routing delivery, karena harus konek dulu ke server jakarta.

Anda sebagai Mailserver administrator diberi tugas untuk menyelesaikan masalah ini.

Solusi

  1. Membangun 1 buah mail server di cabang. Dengan nama bandung.abc.com.
    Ini jelas bisa dibangun, tetapi sekarang bila budi ingin mengirimkan email ke badu maka akan ditulis [email protected]
    User komplain karena tidak sepraktis dulu, karena harus menambahkan bandung.
    Pihak manajemen-pun tidak ingin penambahan cost untuk membuat kartu nama baru, karena perubahan ini.
    Sedangkan bila ditulis [email protected], maka email akan kembali diroutingkan ke internet.
    Dan karena mempergunakan sistem dial-up maka domain bandung.abc.com tidak akan dikenali di internet

  2. Membangun 1 buah mail server di cabang. Dengan nama domain sama dengan domain induk abc.com.
    Dengan cara begini, pada saat budi akan mengirimkan email ke badu cukup ditulis [email protected]
    User dan manajemen senang.
    Tapi pada saat akan mengirimkan email ke user jakarta, misal [email protected], permasalahan baru timbul.
    Dari sisi server muncul pesan error bahwa user ani tidak ada.
    Hal ini wajar karena user ani hanya dikenali diserver jakarta.

  3. Membangun 1 buah mail server di cabang. Dari pengalaman #2 maka dapat dipastikan nama domain harus beda dengan domain pusat.
    Maka dipilih kembali bandung.abc.com.
    Hanya saja kali ini mulai dimasukkan user domain user locak ke dalam file aliases. Dengan harapan bisa membelokkan delivery email. misal:

    [email protected] root# echo "[email protected]: badu" >> /etc/postfix/aliases
    [email protected] root# newaliases
    postalias: warning: /etc/postfix/aliases, line 209: name must be local
    Ups, ternyata aliases menolak jika di-isi dengan full dengan nama domain.

  4. Membangun 1 buah mail server di cabang. Dari pengalaman #2 maka dapat dipastikan nama domain harus beda dengan domain pusat.
    Maka dipilih kembali bandung.abc.com.
    Dari pengalaman #3 maka diketahui opsi aliases tidak dapat dipergunakan.
    Untungnya postfix masih menyediakan opsi lain yang masih dapat dipergunakan. Yaitu canonical.

    [email protected] root# postconf -d | grep canonical
    canonical_maps =
    recipient_canonical_maps =
    sender_canonical_maps =
    
    [email protected] root# man canonical
    ....
    The optional canonical table specifies an address mapping for local and
    non-local addresses. The mapping is used by the cleanup(8) daemon.  The
    address mapping is recursive.
    ....
    Intinya canonical akan manipulasi alamat local dan non-local.
    Proses mapping ini akan merubah fisik header dari email yang bersangkutan.

    Misal, dibuat mapping [email protected] [email protected]
    Dapat dibaca, bila ada email dengan tujuan [email protected] maka akan dirubah menjadi [email protected]
    Hal ini dapat dibuktikan pada MUA user, misal Lookout Express�, Eudora atau Kmail.

    Untuk keperluan kasus perusahaan abc.com maka yang dilakukan adalah, tambahkan opsi berikut pada main.cf
    [email protected] root# cd /etc/postfix
    [email protected] postfix# echo "recipient_canonical_maps = hash:/etc/postfix/recipient_canonical" >> main.cf
    [email protected] postfix# echo "sender_canonical_maps = hash:/etc/postfix/sender_canonical" >> main.cf

    recipient_canonical_maps dipergunakan untuk membelok-kan email bila sesama user local berkirim email.
    sender_canonical_maps dipergunakan untuk mengembalikan alamat email ke alamat asli pada saat melakukan replay.

    Pada /etc/postfix/recipient_canonical di-isikan sebagian/seluruh user local yang ada.
    [email protected] [email protected]
    [email protected] [email protected]
    [email protected] [email protected]
    [email protected] [email protected]
    [email protected] [email protected]
    Pada /etc/postfix/sender_canonical di-isikan.
    @bandung.abc.com @abc.com
    Lalu ubah menjadi file db dan reload postfix.
    [email protected] postfix# postmap recipient_canonical
    [email protected] postfix# postmap sender_canonical
    
    [email protected] postfix# postfix reload
    
    [email protected] postfix# postconf -n | grep canonical
    recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
    sender_canonical_maps = hash:/etc/postfix/sender_canonical
    
    Sekarang user local bisa saling berkirim email dengan domain tetap abc.com.
    Agar user tidak perlu konek ke-dua pop3 (local dan pusat), maka alamat pop3 server-pun sebaiknya dipindah kan server local.
    Dan dengan aplikasi fetchmail, secara periodic, akan mendolot email dari server pusat ke server local.

    Karena pada sender_canonical_maps akan mengganti seluruh alamat sender, maka ada kemungkinan pada saat sistem akan mengirimkan email ke root/postmaster, email akan terkirim ke root/postmaster domain pusat.
    Untuk menghindari hal ini maka set alias untuk postmaster dan/atau root pada file /etc/postfix/aliases.

    [email protected] postfix# echo "postmaster: root" >> /etc/postfix/aliases
    [email protected] postfix# echo "root: badu" >> /etc/postfix/aliases
    [email protected] postfix# newaliases

penutup

Mohon maaf beli judul artikelnya ndak match, masalahnya bingung mau dinamai apa.
Terimakasih untuk thexxxxx.net yang sudah memberikan ide untuk tulisan ini.


kembali ke [ daftar ] dokumentasi lainnya

Hosted by www.Geocities.ws

1