Postfix Overview - Global Architecture


Up one level | Introduction | Goals and features | Global architecture | Queue Management | Security

Pendahuluan

Beberapa mail system seperti sendmail diimplementasikan sebagai program monolitik yang melaksanakan semua tugas. Sebuah program yang besar mempermudah untuk berbagi data dengan yang lain di dalam sistem. Sayangnya, pada sebuah program yang besar juga mudah terjadi kesalahan yang fatal. Mailer lain seperti qmail memiliki hirarki yang kaku sebuah program yang menjalankan program lain dengan aturan yang sudah di tentukan dan membuang/mematikan program yang di jalankan tersebut setelah di gunakan. Pendekatan dengan cara ini memberikan pemisahan/pembagian dalam process creation overhead dan interprocess communication. Tambahan proses bisa di lakukan secara terbatas dengan membagi kinerja dalam batas yang masih bisa diterima.

Arsitektur Postfix

Postfix bekerja berasarkan proses semi-resident dan mutually cooperating yang melakukan tugas spesifik antara satu sama lain, tanpa membutuhkan hubungan proses parent-child. Lagi pula melakukan kinerja dalam proses yang terpisah memberikan pembatasan yang lebih baik daripada hanya menggunakan satu prorgam yang besar. Tambahan lagi, pendekatan Postfix memiliki keuntungan yaitu, sebuah proses seperti address rewriting berlaku untuk setiap program komponen Postfix tanpa perlu mengadakan atau menciptakan sebuah proses hanya untuk me-rewrite sebuah address. Ngomong-ngomong: Saya tidak mengklaim bahwa Postfix adalah satu-satunya program (mail) yang menggunakan pendekatan ini. Walaupun ini adalah disiplin baru, sangatlah sulit melakukan sesuatu dengan hal yang baru yang orang lain pun belum pernah melakukannya.

Postfix digunakan sebagai resident master server yang menjalankan Postfix daemon process on demand (sesuai permintaan): daemon process digunakan untuk mengirim atau menerima mail message di jaringan, juga digunakan untuk menyampaikan mail secara lokal, dll. Proses ini diciptakan sesuai jumlah yang bisa diatur/dikonfigurasi, dan bisa digunakan kembali sampai sekian kali sesuai dengan konfigurasi, dan hilang dengan sendirinya dalam batas waktu yang dapat di konfigurasi juga. Pendekatan ini secara drastis megurangi overhead penciptaan proses selain juga masih melakukan pembagian/pembatasan yang bagus pada proses yang berbeda.

Postfix diharapkan dapat menjadi pengganti Sendmail. Untuk alasan inilah Postfix mencoba dicocokkan dengan infrastrukur yang sudah ada. Bagaimanapun juga, banyak bagian pada system Postfix, seperti program local delivery, dapat dengan mudah diganti dengan menyunting pada sebuah file konfigurasi mirip dengan file konfigurasi inetd. Misalnya jika ingin menyediakan program local-delivery alternatif yang berjalan pada privilege rendah yang sudah ditentukan, untuk user POP/IMAP yang tidak pernah login ke shell dan bahkan mungkin tidak memiliki sebuah akun UNIX.

Sebagai hasilnya, Postfix dengan menggunakan arsitektur ini, sangat mudah untuk diminimumkan. Subsytem yang di non-aktifkan tidak dapat diexploit. Firewall tidak memerlukan local delivery. Pada workstation client, smtp listener dan subsystem local delivery dapat di matikan, atau client dapat me-mount direktori maildrop dari file server, tanpa menjalankan proses Postfix yang resident sama sekali.

Komunikasi antar proses pada Postfix

Inti pada system Postfix digunakan oleh sejumlah program yang semi-resident. Untuk alasan privasi, proses-proses Postfix ini berkomunikasi melalui soket Unix-domain atau FIFO yang berjalan pada direktori terproteksi. Walaupun sudah dengan privasi seperti ini, proses Postfix tidak benar-benar percaya dengan data yang diterima dengan cara ini; seperti isi dalam antrian file Postfix, semua di perlakukan sebagai gossip.

Jumlah informasi yang dilewatkan antara proses Postfix dibatasi. Dalam banyak hal, informasi yang dilewatkan antar proses Postfix adalah hanya nama file queue dan sebuah daftar penerima atau beberapa status informasi. Begitu sebuah message email disimpan ke dalam file, akan tetap disimpan di sana sampai terbaca oleh program mail delivery.

Postfix melakukan pencegahan yang tetap untuk menghindari kehilangan informasi: semua data akan di flush dan fsync() sebelum menerima (sinyal) acknowledge, dan mengecek semua error pada system call. Gaya pemrograman seperti ini mungkin baru bagi semua orang, tapi saya yakinkan Anda bahwa yang seperti itu sudah jadi penggunaan standar selama bertahun-tahun di berbagai tempat.


Up one level | Introduction | Goals and features | Global architecture | Queue Management | Security