by Asfihani (asfik@cakraweb.com)


iBNuX males nulis, jadi ambil punya orang :) kira kira sama deh..


1. Instal Postfix


Sebelum memulai, silakan anda uninstall software mailserver (MTA) lain yang
berada dalam server anda misalnya untuk Redhat biasanya terdapat sendmail
dan postfix standar, dan silakan anda membuat sebuah
direktori temporari untuk memudahkan penyimpanan source yang akan didownload.
Anda boleh membuat direktori dengan nama sembarang, seperti biasa disini saya
membuat direktori dengan nama src :


[root@wolfgang asfik]# service sendmail stop
[root@wolfgang asfik]# for a in $(rpm -qa | grep sendmail); do rpm -e --nodeps $a; done
[root@wolfgang asfik]# for a in $(rpm -qa | grep postfix); do rpm -e --nodeps $a; done
[root@wolfgang asfik]# mkdir src
[root@wolfgang asfik]# cd src


Buat username dan group yang akan mengurusi postfix :


[root@wolfgang src]# adduser -M -d /no/home -s /no/shell postfix
[root@wolfgang src]# groupadd postdrop


Download source postfix (yang paling baru), anda bisa mendapatkannya
dari mirror terdekat di Indonesia yaitu ISP CBN (untuk mirror yang lain silakan
anda berkunjung ke http://www.postfix.org/), serta download
patch (yang paling baru dan sesuai dengan postfi-nya) untuk digunakan pada
virtual delivery agent :


[root@wolfgang src]# wget \\
ftp://ftp.cbn.net.id/mirror/postfix-release/official/postfix-2.0.6.tar.gz
[root@wolfgang src]# wget \\
http://ftp.oav.net/others/postfix/VDA/postfix-2.0.6.patch.gz


Ekstrak :


[root@wolfgang src]# gunzip postfix-2.0.6.patch.gz
[root@wolfgang src]# tar -xzvf postfix-2.0.6.tar.gz


Ganti ke direktori source postfix, patch kemudian install. Pada
waktu melaksanakan make install nantinya anda akan ditanya-tanya, tekan
enter saja :) :


[root@wolfgang src]# cd postfix-2.0.6
[root@wolfgang postfix-2.0.6]# patch -p1 < ../postfix-2.0.6.patch
[root@wolfgang postfix-2.0.6]# make
[root@wolfgang postfix-2.0.6]# make install


Edit file /etc/postfix/main.cf pada bagian :


myhostname = wolfgang.cs.perbanas.edu
mydestination = $myhostname, localhost.$mydomain
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/


Silakan anda ganti myhostname dengan hostname yang FQDN, biasanya
adalah host dimana postfix tersebut dijalankan. Pada
mydestination silakan anda tambahkan domain yang dianggap sebagai
domain lokal bukan domain virtual. Jika anda merencanakan postfix agar
bisa digunakan sebagai smtp dari network anda (misalnya network 10.126.10.0/24)
maka anda tambahkan pada mynetworks = 10.126.10.0/24 . Dan jika anda
ingin menggunakan RBL untuk melawan email spam maka tambahkan :


maps_rbl_domains = relays.ordb.org
smtpd_helo_restrictions = reject_maps_rbl, permit_mynetworks


Untuk menolak pengirim dari domain yang tidak mempunya record A atau MX :


smtpd_sender_restrictions = reject_unknown_sender_domain


Kemudian bikin email alias yang akan mengurusi hal-hal yang berkaitan dengan
urusan teknis (ganti email asfik@cs.perbanas.edu sesuai dengan
konfigurasi yang anda inginkan) :


[root@wolfgang src]# echo "postfix: root" > /etc/aliases
[root@wolfgang src]# echo "root : asfik@cs.perbanas.edu" >> /etc/aliases
[root@wolfgang src]# echo "mailer-daemon : asfik@cs.perbanas.edu" >> /etc/aliases
[root@wolfgang src]# echo "postmaster : asfik@cs.perbanas.edu" >> /etc/aliases


Bikin database dari file aliases :


[root@wolfgang src]# newaliases


Start daemon postfix :


[root@wolfgang src]# postfix start


Jika anda perhatikan file log (tail -f /var/log/maillog)akan
anda dapatkan :


Mar 26 15:21:49 wolfgang postfix/postfix-script: starting the Postfix mail system
Mar 26 15:21:49 wolfgang postfix/master[4043]: daemon started -- version 2.0.6


Untuk menjalankan daemon postfix secara otomatis setiap kali server direstart
:


[root@wolfgang src]# echo "/usr/sbin/postfix start" >> /etc/rc.local


Kemudian anda bisa mencoba mengetest mengirimkan suatu email ke domain lokal
yang sesuai dengan definisi pada mydestination. Jika suskses, maka akan
masuk ke dalam direktori Maildir/ di home direktori user yang anda
kirimin email. Langkah selanjutnya adalah mengkonfigurasi user sistem yang akan
bertugas mengurusi semua virtual domain di postfix, disini kita
misalkan user tersebut adalah virtual :


[root@wolfgang src]# adduser virtual


Cek UID dan GID dari informasi user tersebut karena akan kita gunakan untuk
pada konfigurasi postfix :


[root@wolfgang src]# id virtual
uid=521(virtual) gid=522(virtual) groups=522(virtual)


Edit kembali file /etc/postfix/main.cf, tambahkan beberapa baris
berikut ini (ganti angka 521/522 dengan UID/GID dari user yang akan kita jadikan
sebagai basecamp domain-domain virtual, misalnya user virtual) :


mailbox_transport = virtual
virtual_mailbox_base = /home/virtual
virtual_mailbox_maps = hash:/etc/postfix/virtual
virtual_uid_maps = static:521
virtual_gid_maps = static:522
virtual_create_maildirsize = yes


Pada virtual_mailbox_base tersebut nantinya email semua virtual
domain akan disimpan pada direktori tersebut. Oleh karena itu pada waktu
adduser user virtual tersebut anda bisa menentukan dimana
kira-kira sisa harddisk anda yang paling banyak, tentunya anda bisa menggunakan
argument -d pada waktu adduser untuk mengarahkannya. Sebagai
contoh misalnya kita akan membuat sebuah virtual domain yang bernama
cs.perbanas.edu, maka nantinya semua email pada domain tersebut akan
disimpan pada direktori /home/virtual/cs.perbanas.edu .


Langkah selanjutnya adalah edit file /etc/postfix/virtual, pada bagian
paling bawah tambahkan :


cs.perbanas.edu Computer Science Department STIMIK Perbanas


Kemudian juga kita bikin sebuah account test misalnya
asfik@cs.perbanas.edu, maka anda tambahkan juga pada file yang sama
(tanda / pada akhir baris menujukkan penggunaan format Maildir sebagai
penyimpanan email) :


asfik@cs.perbanas.edu cs.perbanas.edu/asfik/


Jangan lupa email postmaster@cs.perbanas.edu juga akan diforward ke
asfik@cs.perbanas.edu, maka kita tambahkan :


postmaster@cs.perbanas.edu cs.perbanas.edu/asfik/


Bikin database dari file tersebut :


[root@wolfgang src]# postmap /etc/postfix/virtual


Test untuk mengirim ke email tersebut (jangan khawatir, karena postfix akan
membuatkan direktori new,cur,tmp secara otomatis), maka jika sukses konfigurasi
anda, pada file /var/log/maillog bisa anda dapatkan :


Mar 29 14:14:56 wolfgang postfix/virtual[9689]: E81EABB3A: to=<asfik@cs.perbanas.edu>,
relay=virtual, delay=0, status=sent (maildir)


Untuk memastikan anda bisa memeriksa file email tersebut pada direktori
/home/virtual/cs.perbanas.edu/asfik/new :


[root@wolfgang src]# ls /home/virtual/cs.perbanas.edu/asfik/new/
1049073505.V307I14f59f.wolfgang.cs.perbanas.edu


Jika anda ingin membatasi quota setiap user virtual, edit file
/etc/postfix/main.cf, kemudian tambahkan baris berikut ini :


virtual_mailbox_limit_maps = hash:/etc/postfix/vquota
virtual_mailbox_limit_override = yes


Reload daemon postfix :


[root@wolfgang src]# postfix reload


Kemudian buat file /etc/postfix/vquota, misalnya untuk user virtual
asfik@cs.perbanas.edu akan kita quota sebesar 1 Mb, maka pada file
tersebut tambahkan sebagai berikut :


asfik@cs.perbanas.edu 1024000


Generate database dari file tersebut supaya dibaca oleh postfix :


[root@wolfgang src]# postmap /etc/postfix/vquota


Bila anda melakukan penambahan virtual domain yang lain (lagi), anda tinggal
mengedit file /etc/postfix/virtual, misalnya sebagai contoh untuk
menambahkan domain alkhwarizmi.net dengan user
asfik@alkhwarizmi.net:


alkhwarizmi.net Al-Khwarizmi Foundation
asfik@alkhwarizmi.net alkhwarizmi.net/asfik/


Jika sukses semua email untuk user di domain alkhwarizmi.netnanti akan
disimpan pada direktori /home/virtual/alkhwarizmi.net dan seperti biasa,
jangan lupa untuk melakukan postmap ke pada file
/etc/postfix/main.cf agar database yang baru dibaca oleh postfix.


2. Install tpop3d


Sebagai POP3 servernya kita gunakan tpop3d yang mendukung format
Maildir dengan menggunakan metode autentikasi file text biasa
(flat-text/flat file), donwload tpop3d (yang paling baru) dan
patch untuk auth-flatfile:


[root@wolfgang src]# wget \\
http://www.ex-parrot.com/~chris/tpop3d/tpop3d-1.4.2.tar.gz
[root@wolfgang src]# wget \\
http://www.ex-parrot.com/~chris/tpop3d/tpop3d-1.4.2-auth-flatfile-broken.patch


Ekstrak, kemudian ganti direktori ke source tpop3d :


[root@wolfgang src]# tar -xzvf tpop3d-1.4.2.tar.gz
[root@wolfgang src]# cd tpop3d-1.4.2


Patch, kemudian compile,dan install :


[root@wolfgang tpop3d-1.4.2]# patch -p0 < ../tpop3d-1.4.2-auth-flatfile-broken.patch
[root@wolfgang tpop3d-1.4.2]# ./configure --enable-auth-flatfile --enable-mbox-maildir
[root@wolfgang tpop3d-1.4.2]# make
[root@wolfgang tpop3d-1.4.2]# make install


Buat file /etc/tpop3d.conf isinya :


listen-address: 0.0.0.0
log-facility: local6
mailbox: maildir:/home/virtual/$(domain)/$(local_part)/
auth-flatfile-enable: yes
auth-flatfile-passwd-file: /etc/virtual/$(domain)/passwd
auth-flatfile-mail-user: virtual
auth-flatfile-mail-group: virtual


Jika user yang menghandel domain virtual adalah bukan user
virtual, maka silakan anda sesuaikan pada
auth-flatfile-mail-user dan auth-flatfile-mail-group .
Kemudian karena kita tidak ingin membanjiri file /var/log/maillogdengan
pesan dari daemon tpop3d maka kita putuskan untuk menyimpan log
tersebut pada file yang lain, misalnya /var/log/tpop3d.log, maka pada
file /etc/syslog.conf tambahkan :


local6.* /var/log/tpop3d.log


Bikin file /var/log/tpop3d.log :


[root@wolfgang src]# touch /var/log/tpop3d.log


Restart syslogd anda (killall -HUP syslogd atau service
syslog restart
), kemudian jalankan daemon tpop3d :


[root@wolfgang src]# /usr/local/sbin/tpop3d


Untuk menjalankan daemon tersebut secara otomatis setiap kali server
direstart :


[root@wolfgang src]# echo "/usr/local/sbin/tpop3d" >> /etc/rc.local


Buat direktori untuk menyimpan database password untuk user virtual, nantinya
setiap password dari virtual domain akan disimpan dengan format berikut
/etc/virtual/DOMAIN/passwd misanyalnya untuk domain
cs.perbanas.edu akan disimpan dalam file
/etc/virtual/cs.perbanas.edu/passwd:


[root@wolfgang src]# mkdir /etc/virtual


Sebenarnya anda bisa membuat sendiri data password tersebut dengan
menggunakan utilitas htpasswd yang bisa anda dapatkan dari paket software
apache. Format password yang digunakan adalah sama dengan format password
pada file /etc/passwd . Namun, saya juga membuat shell script
yang sangat sederhana dan juga menggunakan (membutuhkan binari) dari htpasswd
tersebut, anda bisa mendapatkannya di http://people.cakraweb.com/~asfik/vtadduser
dan http://people.cakraweb.com/~asfik/vtdeluser
(tentu anda harus mencocokkan variabel-variabel yang dibutuhkan jika berbeda
dengan contoh disini) :

[root@wolfgang src]# wget http://people.cakraweb.com/~asfik/vtadduser

Misalkan untuk membuat password user asfik@cs.perbanas.edu dengan
password rahasiadeh :


[root@wolfgang src]# vtadduser asfik@cs.perbanas.edu rahasiadeh

Test dengan telnet ke localhost port 110 (tentunya anda juga bisa mencobanya
dengan Eudora atau MUA kesayangan anda yang lain) :


[root@wolfgang src]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK <c5e60956fa012a8f01224c673a0f162f@wolfgang.cs.perbanas.edu>
user asfik@cs.perbanas.edu
+OK Tell me your password.
pass rahasiadeh
+OK Welcome aboard! You have 2 messages.
list
+OK Scan list follows:
1 794
.
quit
+OK Done
Connection closed by foreign host.

Untuk menghapus user dan password (tidak termasuk data email), anda bisa
menggunakan perintah vtdeluser, misalnya :


[root@wolfgang src]# vtdeluser asfik@cs.perbanas.edu

Jika anda menginginkan data email user tersebut dihapus juga, anda bisa
menghapus secara manual direktori /home/virtual/cs.perbanas.edu/asfik,
jika anda tidak menginginkan akses email dengan menggunakan webmail maka anda
sudah selesai mengkonfigurasi postfix dengan virtual domain dan pop3 servernya
:)

Tidak ada komentar: