Instalasi Qmail, Vmailmgr, Omail Admin, Courier Imap, dan Squirrelmail

Asfihani (asfik@cakraweb.com)

30 Juli 2003
Dokumen (tutorial) ini ditujukan untuk membantu membuat sebuah mailserver dengan beberapa domain sekaligus menggunakan vmailmgr, serta aplikasi pendukung pembacaan email melalui web (webmail) dengan menggunakan squirrelmail secara step-by-step dalam Bahasa Indonesia. Jika anda mengingikan tutorial vpopmail silakan kunjungi http://chipset.bogor.suse.or.id/articles/zach_mail.txt. Tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Saran, koreksi, kritik, kesalahan ketik, maupun ucapan silakan dikirimkan ke email tersebut diatas. Terima Kasih.

"Untuk ibu saya tercinta, guru pertama saya "

1. Instalasi Qmail

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

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

Download qmail dan paket pendukung yang lain (daemontools, ucspi-tcp) :

[root@wedus src]# wget http://cr.yp.to/software/qmail-1.03.tar.gz 
[root@wedus src]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz 
[root@wedus src]# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz 

Perhatian : Jika anda menggunakan glibc versi 2.3 keatas (misalnya Redhat 9), silakan download patch untuk qmail dari miror lokal kesayangan anda misalnya dari ISP CBN :

[root@wedus src]# wget http://qmail.cbn.net.id/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch 
[root@wedus src]# wget http://qmail.cbn.net.id/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch 
[root@wedus src]# wget http://qmail.cbn.net.id/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch

Download qmailqueue-patch, yang berguna sebagai add-on qmail agar bisa menjalankan external program, misalnya jika anda menginginkan software anti-virus serta quotas-patch, yang berguna untuk membounce email jika suatu user sistem sudah melebihi quota sistem, misalnya untuk pemberian quota perdomain dengan vmailmgr

[root@wedus src]# wget http://www.qmail.org/qmailqueue-patch 
[root@wedus src]# wget http://www.qmail.org/qmail-1.03-quotas-1.1.patch 

Ekstrak semua source tersebut :

[root@wedus src]# tar -xzvf qmail-1.03.tar.gz 
[root@wedus src]# tar -xzvf daemontools-0.76.tar.gz 
[root@wedus src]# tar -xzvf ucspi-tcp-0.88.tar.gz 

Buat direktori untuk qmail dan pembuatan account user yang akan menjalankan dan mengurusi qmail :

[root@wedus src]# mkdir /var/qmail 
[root@wedus src]# groupadd nofiles 
[root@wedus src]# useradd -g nofiles -d /var/qmail/alias alias 
[root@wedus src]# useradd -g nofiles -d /var/qmail qmaild 
[root@wedus src]# useradd -g nofiles -d /var/qmail qmaill
[root@wedus src]# useradd -g nofiles -d /var/qmail qmailp 
[root@wedus src]# groupadd qmail 
[root@wedus src]# useradd -g qmail -d /var/qmail qmailq 
[root@wedus src]# useradd -g qmail -d /var/qmail qmailr 
[root@wedus src]# useradd -g qmail -d /var/qmail qmails 

Kompilasi qmail, daemontools, tcpserver dan mengepatch qmail dengan beberapa patch tersebut diatas :

[root@wedus src]# cd qmail-1.03

Perhatian : Jika anda menggunakan glibc versi 2.3 keatas (misalnya Redhat 9), patch qmail anda :

[root@wedus qmail-1.03]# patch -p1 < ../qmail-1.03.errno.patch 

Jika diperlukan, patch qmail anda dengan queue patch dan quota patch :

[root@wedus qmail-1.03]# patch -p1 < ../qmailqueue-patch
[root@wedus qmail-1.03]# patch -p1 < ../qmail-1.03-quotas-1.1.patch 

Kompile dan install qmail :

[root@wedus qmail-1.03]# make setup check

Membuat file konfigurasi qmail, disini silakan anda ganti gibas.wedus.comdengan hostname anda yang FQDN (bisa diresolve), misalnya serverku.domain.com.Ingat, hostname tidak harus sama dengan nama server host tempat anda menginstall qmail tersebut.

[root@wedus qmail-1.03]# ./config-fast gibas.wedus.com
[root@wedus qmail-1.03]# cd ../ucspi-tcp-0.88 

Perhatian : Jika anda menggunakan glibc versi 2.3 keatas (misalnya Redhat 9), patch ucspi-tcp anda :

[root@wedus ucspi-tcp-0.88]# patch -p1 < ../ucspi-tcp-0.88.errno.patch

Kompile dan install ucspi-tcp :

[root@wedus ucspi-tcp-0.88]# make setup check 
[root@wedus ucspi-tcp-0.88]# cd ../admin/daemontools-0.76/

Perhatian : Jika anda menggunakan glibc versi 2.3 keatas (misalnya Redhat 9), patch daemontools anda :

[root@wedus daemontools-0.76]# patch -p1 < ../../daemontools-0.76.errno.patch 

Kompile dan install daemontools :

[root@wedus daemontools-0.76]# ./package/install

Jika daemontools sukses terinstal, anda bisa mengecek dengan menggunakan perintah ps, misalnya :

[root@wedus daemontools-0.76]# ps ax | grep read 
6529 ? S 0:00 readproctitle service errors: .......................

Saya kurang suka dengan struktur penempatan atau symlink file dan direktori pada daemontools dan (menurut saya lho) cenderung amburadul, jadi direktori /command saya hapus kemudian diganti dengan direktori command dari source daemontools :

[root@wedus daemontools-0.76]# rm -rf /command/ 
[root@wedus daemontools-0.76]# mv command/ / 

Buat file startup untuk menjalankan qmail-send, dan mengganti defaultdelivery dari format Mailbox ke format Maildir :

[root@wedus asfik]# cp /var/qmail/boot/home /var/qmail/rc
[root@wedus asfik]# perl -pi -e "s/Mailbox splogger qmail/Maildir\//g" /var/qmail/rc

Jika perintah perl tersebut diatas ada kesalahan atau linux ada tidak terinstall program perl (sulit dipercaya?), silakan secara manual anda mengganti pada file /var/qmail/rc dari baris ini :

qmail-start ./Mailbox splogger qmail

menjadi :

qmail-start ./Maildir/

Buat direktori untuk menyimpan file-file supervise :

[root@wedus asfik]# mkdir -p /var/qmail/supervise/qmail-send/log 
[root@wedus asfik]# mkdir -p /var/qmail/supervise/qmail-smtpd/log

Buat file script supervise untuk menjalankan qmail-send :

[root@wedus asfik]# vi /var/qmail/supervise/qmail-send/run 

Isinya :

#!/bin/sh 
exec /var/qmail/rc

Buat file script supervise untuk menjalankan log qmail-send :

[root@wedus asfik]# vi /var/qmail/supervise/qmail-send/log/run 

Isinnya :

#!/bin/sh 
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s1048576 /var/log/qmail

Buat file script supervise untuk menjalankan qmail-smtpd :

[root@wedus asfik]# vi /var/qmail/supervise/qmail-smtpd/run 

Isinya :

#!/bin/sh 
PATH=$PATH:/usr/local/bin:/var/qmail/bin 
export PATH
QMAILDUID=`id -u qmaild` 
NOFILESGID=`id -g qmaild` 
MAXSMTPD=30 
exec /usr/local/bin/softlimit -m 5000000 \
tcpserver -H -R -v -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" -u "$QMAILDUID" -g "$NOFILESGID" \
0 25 qmail-smtpd 2>&1

Variabel MAXSMTPD bisa anda sesuaikan dengan kondisi kebutuhan dan beban mailserver anda. Jika anda menginginkan penolakan terhadap email yang datang dari mailserver yang open relay yang biasanya merupakan SPAM, anda bisa menggunakan rblsmtpd menjadi :

tcpserver -H -R -v -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" -u "$QMAILDUID" -g "$NOFILESGID" \
0 25 rblsmtpd -r relays.ordb.org rblsmtpd -b qmail-smtpd 2>&1

Jika anda menggunakan rblsmtpd, anda nanti bisa melihat lognya di /var/log/qmail/smtpd/current :

[root@wedus asfik]# tail -f /var/log/qmail/smtpd/current 
@400000003dbca93728ec47bc tcpserver: pid 11461 from 128.154.20.228
@400000003dbca93804e39064 rblsmtpd: 128.154.20.228 pid 11461: 451 This mail was \
handled by an open relay - please visit <http://ORDB.org/lookup/?host=128.154.20.228> 

Buat file script supervise untuk menjalankan log qmail-smtpd :

[root@wedus asfik]# vi /var/qmail/supervise/qmail-smtpd/log/run

Isinya :

#!/bin/sh 
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s1048576 /var/log/qmail/smtpd

Ubah menjadi file-file yang bisa dieksekusi :

[root@wedus asfik]# chmod 755 /var/qmail/supervise/qmail-send/run
[root@wedus asfik]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[root@wedus asfik]# chmod 755 /var/qmail/supervise/qmail-smtpd/run 
[root@wedus asfik]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

Buat direktori untuk log qmail-send dan qmail-smtpd :

[root@wedus asfik]# mkdir -p /var/log/qmail/smtpd 
[root@wedus asfik]# chown qmaill /var/log/qmail /var/log/qmail/smtpd

Mengijinkan localhost untuk menggunakan smtp :

[root@wedus src]# echo '127.0.0.1:allow,RELAYCLIENT=""' > /etc/tcp.smtp

Mengatur IP/Network mana saja yang bisa menggunakan smtp server anda, jika misalnya anda menginginkan komputer di jaringan intranet anda dengan IP 10.126.10.11 bisa menggunakan smtp anda, maka :

[root@wedus src]# echo '10.126.10.11:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

Atau jika anda mengijinkan seluruh network anda, misalnya 10.126.10.0/24 maka :

[root@wedus src]# echo '10.126.10.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

Jangan lupa, setiap selesai penambahan untuk selalu membuat database baru dengan :

[root@wedus src]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

Akhirnya kita masukkan script yang kita buat kedalam servis supervise :

[root@wedus asfik]# ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service 

Untuk mengecek apakah supervise sudah menjalankan tugasnya dengan benar bisa digunakan perintah ps, misalnya :

[root@wedus asfik]# ps ax | grep qmail  
6636 ?        S      0:00 supervise qmail-send  
6638 ?        S      0:00 supervise qmail-smtpd  
6640 ?        S      0:00 qmail-send  
6641 ?        S      0:00 /usr/local/bin/multilog t s1048576 /var/log/qmail  
6643 ?        S      0:00 /usr/local/bin/multilog t s1048576 /var/log/qmail/smt  
6644 ?        S      0:00 qmail-lspawn ./Maildir/  
6646 ?        S      0:00 qmail-rspawn  
6647 ?        S      0:00 qmail-clean

Untuk sekedar memastikan, anda juga bisa telnet ke localhost port 25 :

[root@wedus src]# telnet localhost 25 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
220 gibas.wedus.com ESMTP 

Jika sampai langkah ini, anda belum sukses atau menemui error, coba periksa sekali lagi apakah penulisan script anda sudah betul dan tidak kurang, atau apakah ada langkah/perintah yang anda lewatkan. Anda juga bisa melihat kemungkinan pesan kesalahan/error pada file log /var/log/qmail/current atau /var/log/qmail/smtpd/current atau bisa juga pada proses readproctile, misalnya, dalam kondisi normal:

[root@wedus src]# ps ax | grep read 
673 ? S 0:00 readproctitle service errors: ....................... 

Jika ada sesuatu error/kesalahan pada servise supervise, misalnya jika sebuah command `id` tidak diketemukan karena kesalahan environment $PATH:

[root@wedus src]# ps ax | grep read 
673 ? S 0:00 readproctitle service errors: .......?\id...?\command..\?not...found

PENTING. Untuk menerima email bounce ke postmaster silakan anda buat minimal tiga buah email sebagai berikut :

[root@wedus src]# cd ~alias/ 
[root@wedus alias]# echo paijo@sapi.net > .qmail-root 
[root@wedus alias]# echo paijo@sapi.net > .qmail-postmaster
[root@wedus alias]# echo paijo@sapi.net > .qmail-mailer-daemon 

Ganti paijo@sapi.net dengan email yang bertanggung jawab terhadap server email tersebut (anda?)

2. Instalasi Vmailmgr

Alasan pribadi saya kenapa memilih vmailmgr dibandingkan dengan vpopmail adalah saya kurang suka struktur direktori penempatan domain di vpopmail yang menyimpan semua domain dalam satu direktori /home/vpopmail/domains, tapi jika saya memakai vmailmgr setiap domain akan dihandle/diurusi oleh satu user sistem yang berbeda. Saya tidak bisa membayangkan jika lupa mengetik rm -rf ~vpopmail (*kidding*) atau user vpopmail diambil alih oleh orang yang tidak berhak. Walaupun hal tersebut di vpopmail bisa diatasi dengan menggunakan switches -u dan -g untuk userid dan groupid yang berbeda untuk setiap domain, tapi perintahvaddomain di vpopmail secara default masih memakai user vpopmail untuk menghandle domain yang mau ditambah. Alasan yang lain adalah saya ingin membatasi pemakai harddisk (quota) perdomain. Jika memakai vmailmgr saya tinggal mensetup quota system untuk user yang menangani suatu domain tertentu, dan voila, satu domain tersebut sudah diquota, sekali lagi ini alasan pribadi saya, dan anda (sangat) boleh tidak setuju :)

Jika anda menggunakan redhat 7.3 (dengan gcc-2.96) silakan download patch untuk membetulkan kesalahan pada waktu kompilasi di http://people.cakraweb.com/~asfik/gcc-vmailmgr-fix-patch atau anda bisa juga menggunakan patch dari Ondrej Sury di http://www.sury.cz/qmail/vmailmgr-gcc-3.2.diff.gz (Refferensi: 1, 2)

Donwload vmailmgr, ekstrak, dan kompilasi (dan mengepatch, jika gcc anda bermasalah) :

[root@wedus src]# wget http://www.vmailmgr.org/current/vmailmgr-0.96.9.tar.gz 
[root@wedus src]# wget http://people.cakraweb.com/~asfik/gcc-vmailmgr-fix-patch
[root@wedus src]# tar -xzvf vmailmgr-0.96.9.tar.gz 
[root@wedus src]# cd vmailmgr-0.96.9
[root@wedus vmailmgr-0.96.9]# ./configure 

Sekali lagi , jika anda tidak menggunakan Redhat 7.3 (gcc-2.96) abaikan command patch dibawah ini, anda bisa langsung make :

[root@wedus vmailmgr-0.96.9]# patch -p1 < ../gcc-vmailmgr-fix-patch 
[root@wedus vmailmgr-0.96.9]# make 
[root@wedus vmailmgr-0.96.9]# make install

Buat direktori dan file script supervise untuk menjalankan qmail-pop3d (pop server) :

[root@wedus asfik]# mkdir -p /var/qmail/supervise/qmail-pop3d 
[root@wedus asfik]# vi /var/qmail/supervise/qmail-pop3d/run 

Isinya :

#!/bin/sh 
PATH=$PATH:/usr/local/bin:/var/qmail/bin 
export PATH 
MAXPOP3D=30 
exec /usr/local/bin/softlimit -m 5000000 \
tcpserver -H -v -c "$MAXPOP3D" 0 110 qmail-popup gibas.wedus.com checkvpw qmail-pop3d Maildir/ 2>&1

Silakan anda sesuaikan variabel MAXPOP3D dan hostname gibas.wedus.comdengan konfigurasi yang sesuai dengan kondisi mail server anda.

Buat file script supervise untuk menjalankan log qmail-pop3d :

[root@wedus asfik]# mkdir -p /var/qmail/supervise/qmail-pop3d/log 
[root@wedus asfik]# vi /var/qmail/supervise/qmail-pop3d/log/run

Isinya :

#!/bin/sh 
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s1048576 /var/log/qmail/pop3d

Buat direktori log qmail-pop3d serta mengeset file script tersebut menjadi executable :

[root@wedus asfik]# mkdir /var/log/qmail/pop3d
[root@wedus asfik]# chown qmaill /var/log/qmail/pop3d
[root@wedus asfik]# chmod 755 /var/qmail/supervise/qmail-pop3d/run 
[root@wedus asfik]# chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

Akhirnya kita masukkan script supervise qmail-pop3d kedalam /service :

[root@wedus asfik]# ln -s /var/qmail/supervise/qmail-pop3d /service 

Untuk memeriksa apakah servise pop3 server sudah bekerja :

[root@wedus asfik]# ps ax | grep tcpserver  
1057 ?        S      0:00 tcpserver -H -R -v -x /etc/tcp.smtp.cdb -c 30 -u 503
1061 ?        S      0:00 tcpserver -H -v -c 30 0 110 qmail-popup gibas.wedus.com

Untuk sekedar memastikan, anda bisa mencoba telnet ke localhost port 110 :

[root@wedus asfik]# telnet localhost 110 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
+OK <5724.1035514277@gibas.wedus.com>

Download script untuk menjalankan qmail, anda bisa download di http://www.lifewithqmail.org/qmailctl-script-dt70 namun anda harus menambahkan untuk start/stop daemon pop3d nya, atau alternatif lain script yang sudah ditambah start/stop daemon pop3d di http://people.cakraweb.com/~asfik/qmailctl :

[root@wedus src]# wget http://people.cakraweb.com/~asfik/qmailctl
[root@wedus src]# mv qmailctl /var/qmail/bin/qmailctl 
[root@wedus src]# chmod 755 /var/qmail/bin/qmailctl
[root@wedus src]# ln -s /var/qmail/bin/qmailctl /usr/bin

Reza Iskandar Ahmad berpendapat bahwa script qmailctl dari website Dave Sill kurang efektif, dikutip dari email yang dikirimkannya :

"qmailctl dari Dave Sill tidak efektif untuk menghentikan proses qmail. Oleh karena ini seharusnya untuk menghentikan proses qmail terlebih dahulu menghapus symlink script supervise ke /service, barulah kemudian dengan invokasi svc -dx ke direktori script supervise. Hal tersebut akan lebih efektif." Jika anda setuju, berikut ini tambahan (yang dirubah) pada file qmailctl menurutnya :

[...]
start)          
echo -n "Starting qmail : "          
ln -s /var/qmail/supervise/* /service         
;;
[...]
stop) 
echo -n "Stopping qmail: "
rm -f /service/qmail-* 
svc -dx /var/qmail/supervise/* 
svc -dx /var/qmail/supervise/*/log 
;;
[..]

Jika anda tidak memakai Redhat based style, anda bisa langsung ke Start-Stop qmail :

[root@wedus src]# ln -s /var/qmail/bin/qmailctl /etc/rc.d/init.d/qmail 
[root@wedus src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc0.d/K30qmail
[root@wedus src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc1.d/K30qmail 
[root@wedus src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc2.d/S80qmail 
[root@wedus src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc3.d/S80qmail 
[root@wedus src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc4.d/S80qmail 
[root@wedus src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc5.d/S80qmail
[root@wedus src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc6.d/K30qmail 

Untuk Start-Stop qmail anda bisa lakukan perintah berikut :

[root@wedus src]# qmailctl stop 
Stopping qmail...   
qmail-smtpd  
qmail-send  
qmail-pop3d 
[root@wedus src]# qmailctl start 
Starting qmail 

Atau dengan gaya klasik koboi Redhat :

[root@wedus src]# service qmail stop
Stopping qmail...   
qmail-smtpd   
qmail-send   
qmail-pop3d 
[root@wedus src]# service qmail start 
Starting qmail 

Kadang kita butuh akses ke wrapper sendmail (misalnya script cgi) atau mua yang menggunakan wrapper sendmail (mutt, pine dll), jadi kita lakukan symlink ke binari qmail untuk wrapper sendmail :

[root@wedus src]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 
[root@wedus src]# ln -s /var/qmail/bin/sendmail /usr/bin/sendmail

Penambahan virtual domain di vmailmgr

Disini misalnya kita membuat sebuah virtual domain kadal.edu dengan user sistem yang menghandle adalah kadal. Ingat password yang diberikan untuk user kadal akan kita gunakan nanti dalam memanage domain kadal.edu menggunakan omail-admin :

[root@wedus asfik]# adduser kadal 
[root@wedus asfik]# passwd kadal 
Changing password for user kadal. 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@wedus asfik]# echo kadal.edu >> /var/qmail/control/rcpthosts 
[root@wedus asfik]# echo kadal.edu:kadal >> /var/qmail/control/virtualdomains

Jangan lupa mengirim sinyal HUP ke qmail-send agar membaca file konfigurasi yang baru :

[root@wedus asfik]# killall -HUP qmail-send

Kemudian kita ganti (su - ) ke user kadal untuk mengeset direktori dan file-file yang dibutuhkan oleh vmailmgr untuk domain kadal.edu :

[root@wedus asfik]# su - kadal 
[kadal@wedus kadal]$ vsetup 
vsetup: created users directory. 
vsetup: wrote '.qmail-default' file. 
vsetup: added alias 'mailer-daemon' 
vsetup: added alias 'postmaster' 
vsetup: added alias 'root'

Kita coba buat sebuah user name (account email) asfik@kadal.edu :

[kadal@wedus kadal]$ vadduser asfik 
Enter the user's new password: 
Please type it again for verification: 
vadduser: user 'asfik' successfully added

Kemudian kita forward email postmaster@kadal.edu, mailer-daemon@kadal.edu, root@kadal.edu ke alamat email yang valid, misalnya asfik@kadal.edu :

[kadal@wedus kadal]$ vchforwards postmaster asfik 
vchforwards: User 'postmaster' successfully changed. 
[kadal@wedus kadal]$ vchforwards mailer-daemon  asfik 
vchforwards: User 'mailer-daemon' successfully changed. 
[kadal@wedus kadal]$ vchforwards root  asfik 
vchforwards: User 'root' successfully changed. 

Untuk penghapusan suatu user (email account), misalnya embuh@kadal.edu :

[kadal@wedus kadal]$ vdeluser embuh 
vdeluser: user 'embuh' successfully deleted. 

Kemudian kita mencoba mengetest mengirim email dari asfik@wedus.com ke asfik@kadal.edu , dari perintah tail -f /var/log/qmail/current kita dapatkan log seperti berikut :

[root@wedus asfik]# tail -f /var/log/qmail/current
@400000003db6657501bc540c new msg 224662
@400000003db6657501bc6b7c info msg 224662: bytes 906 from <asfik@wedus.com> qp 995 uid 503
@400000003db6657501e995fc starting delivery 1: msg 224662 to local kadal-asfik@kadal.edu
@400000003db6657501eb3fc4 status: local 1/10 remote 0/20
@400000003db6657504fac1e4 delivery 1: success: did_0+0+1/
@400000003db6657504fad954 status: local 0/10 remote 0/20
@400000003db6657504fd8cbc end msg 224662

Jika anda mengubah hasil format log dari unix timestamps ke format yang lebih mudah dibaca oleh manusia, anda bisa piping dengan menggunakan tai64nlocal :

[root@wedus asfik]# tail -f /var/log/qmail/current | tai64nlocal
2002-10-23 16:01:31.029119500 new msg 224662 
2002-10-23 16:01:31.029125500 info msg 224662: bytes 906 from <asfik@wedus.com> qp 995 uid 503 
2002-10-23 16:01:31.032085500 starting delivery 1: msg 224662 to local kadal-asfik@kadal.edu 
2002-10-23 16:01:31.032194500 status: local 1/10 remote 0/20 
2002-10-23 16:01:31.083542500 delivery 1: success: did_0+0+1/ 
2002-10-23 16:01:31.083548500 status: local 0/10 remote 0/20 
2002-10-23 16:01:31.083725500 end msg 224662 

Lalu kita periksa apakah email tersebut sudah masuk ke dalam mailbox asfik@kadal.edu, anda bisa menggunakan POP3 client, misalnya Eudora, anda harus menggunakan format user@domain misalnya asfik@kadal.edu sebagai accoutname atau username untuk authentikasi ke server POP tersebut, atau anda juga bisa melalui old-fashioned-way, telnet port 110 di localhost :

[root@wedus asfik]# telnet localhost 110 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
+OK <5897.1035517402@gibas.wedus.com> 
user asfik@kadal.edu 
+OK 
pass 123
+OK 
list
+OK 
1 988 
. 
quit 
+OK 
Connection closed by foreign host. 

Disitu kita lihat email sudah masuk dengan sukses. Untuk melakukan penambahan virtual domain yang lain silakan mengulangi langkah-langkah diatas. Untuk perintah-perintah yang lain didalam vmailmgr anda bisa mencoba : vaddalias vadduser vaddusers vchattr vchforwards vdeluser vpasswd vpasswds vpopbull vrehash vsetup .

3. Instalasi Omail-Admin

Omail admin dipakai untuk memanage account user pada suatu domain dengan menggunakan web. Membutuhkan suatu webserver, misalnya apache yang sudah dikonfigurasi dengan modul php. Omail admin membutuhkan paket ucspi-unix yang digunakan untuk authentikasi dan paket qmail-autoresponder. Saya mencoba menggunakan source tarball untuk menginstal ucspi-unix, namun pada waktu make terjadi error, maka saya menggunakan ucspi-unix versi rpm.

Download paket ucspi-unix versi rpm :

[root@wedus src]# wget http://untroubled.org/ucspi-unix/rh7/ucspi-unix-0.36-1.i386.rpm
[root@wedus src]# rpm -ivh ucspi-unix-0.36-1.i386.rpm
Preparing... ########################################### [100%] 
1:ucspi-unix ########################################### [100%]

Buat direktori supervise untuk servis vmailmgrd :

[root@wedus asfik]# mkdir -p /var/qmail/supervise/vmailmgrd/log

Buat file supervise untuk menjalankan log vmailmgrd :

[root@wedus asfik]# vi /var/qmail/supervise/vmailmgrd/log/run 

Isinya :

#!/bin/sh 
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s1048576 /var/log/qmail/vmailmgrd

Buat file supervise untuk menjalankan vmailmgrd :

[root@wedus asfik]# vi /var/qmail/supervise/vmailmgrd/run

Isinya :

#!/bin/sh
exec /usr/local/bin/softlimit -m 9000000 \ 
/usr/bin/unixserver -v -- /tmp/.vmailmgrd /usr/local/sbin/vmailmgrd -V 2>&1

Buat direktori supervise untuk log vmailmgrd dan mengubah setting file script menjadi executable :

[root@wedus asfik]# mkdir -p /var/log/qmail/vmailmgrd 
[root@wedus asfik]# chown qmaill /var/log/qmail/vmailmgrd 
[root@wedus asfik]# chmod 755 /var/qmail/supervise/vmailmgrd/log/run /var/qmail/supervise/vmailmgrd/run 

Akhirnya kita masukkan servis vmailmgrd kedalam /service :

[root@wedus asfik]# ln -s /var/qmail/supervise/vmailmgrd/ /service/ 

Donwload paket omail-admin dan qmail-autoresponder, dilanjutkan kompilasi dan instalasi :

[root@wedus src]# wget http://unc.dl.sourceforge.net/sourceforge/omail/omail-admin-0.99-beta.tar.gz 
[root@wedus src]# wget http://untroubled.org/qmail-autoresponder/qmail-autoresponder-0.95.tar.gz
[root@wedus src]# tar -xzvf qmail-autoresponder-0.95.tar.gz 
[root@wedus src]# cd qmail-autoresponder-0.95 
[root@wedus qmail-autoresponder-0.95]# make 
[root@wedus qmail-autoresponder-0.95]# cp qmail-autoresponder /usr/local/bin/ 
[root@wedus qmail-autoresponder-0.95]# cd ..
[root@wedus src]# tar -xzvf omail-admin-0.99-beta.tar.gz 

Disini anda harus menentukan URL dimana omail-admin bisa diakses. Anda bisa melihat file konfigurasi apache anda (httpd.conf)dan mencari directive DocumentRoot. Kalau anda menggunakan apache dari paket RPM Redhat, biasanya default DocumentRoot terdapat pada direktori /var/www/html. Disini saya contohkan domain saya adalah wedus.comdengan DocumentRoot di /usr/local/httpd/htdocs :

[root@wedus src]# mv omail-admin-0.99-beta /usr/local/httpd/htdocs/admin

Edit file config.php dan ganti variabel $sysadmin_maildengan email yang bertanggung jawab terhadap omail-admin, misalnya $sysadmin_mail = "asfik@wedus.com"; :

[root@wedus src]# vi /usr/local/httpd/htdocs/admin/config.php 

Dan jika anda menginginkan default dari bahasanya adalah indonesia, ubah variabel $default_language :

$default_language = "id"; 

Kemudian anda bisa mencoba login untuk memanage domain kadal.edu dengan menggunakan username kadal dan password yang telah kita berikan diatas, melalui url http://www.wedus.com/admin. Jika ada pesan kesalahan login tidak diterima atau password salah, silakan anda periksa file php.ini, pastikan register_global=On. Jika anda berhasil login, anda bisa melihat log dari authentikasi user kadal pada file /var/log/qmail/vmailmgrd/current dengan perintah sebagai berikut :

[root@wedus src]# tail -f /var/log/qmail/vmailmgrd/current 
@400000003db76f1112f4bad4 [4242] Accepted connection
@400000003db76f1112f6d9cc [4242] Request: listdomain kadal.edu <adminpass>
@400000003db76f11131fd5fc [4242] Completed: OK:
@400000003db76f11137b7ed4 [4243] Accepted connection
@400000003db76f11137dad6c [4243] Request: listdomain kadal.edu <adminpass> @400000003db76f1113a6922c [4243] Completed: OK:
@400000003db76f1113ea1b3c [4244] Accepted connection 
@400000003db76f1113eef954 [4244] Request: autoresponse kadal-asfik <password> status
@400000003db76f111420a044 [4244] Completed: OK: nonexistant
@400000003db76f11187187bc [4245] Accepted connection
@400000003db76f111873ba3c [4245] Request: listdomain kadal.edu <adminpass>

Mengeset vmailmgr supaya menjalankan qmail-autoresponder :

[root@wedus src]# mkdir /etc/vmailmgr 
[root@wedus src]# vi /etc/vmailmgr/vdeliver-postdeliver 

Isinya :

#!/bin/sh 
if test -s $MAILDIR/autoresponse/message.txt 
then   
qmail-autoresponder message.txt $MAILDIR/autoresponse 
fi 

Set menjadi file yang bisa dieksekusi :

[root@wedus src]# chmod 755 /etc/vmailmgr/vdeliver-postdeliver

Jika anda tidak membutuhkan fasilitas webmail akses untuk user anda silakan meloncat ke "Lain-lain", membaca tulisan dibawah ini hanya akan menghabiskan waktu anda, lebih baik digunakan untuk tidur atau nonton tv :).

4. Instalasi Courier Imap

Courier Imap, sesuai dengan namanya adalah sebuah IMAP server, yaitu sebuah IMAP server yang mendukung format penyimpanan email dengan menggunakan format Maildir. Dalam hal ini kita menggunakan Courier Imap untuk backend dari webmail squirrelmail.

Donwload courier-imap, ekstrak sourcenya, dan kita kompilasi :

[root@wedus src]# wget http://unc.dl.sourceforge.net/sourceforge/courier/courier-imap-1.5.3.tar.gz 
[root@wedus src]# tar -xzvf courier-imap-1.5.3.tar.gz 
[root@wedus src]# cd courier-imap-1.5.3 
[root@wedus courier-imap-1.5.3]# ./configure  --enable-workarounds-for-imap-client-bugs \
--disable-root-check --without-authcram --without-authcustom \
--without-authldap --without-authpam --without-authpgsql \
--without-authuserdb --without-authdaemon --without-authmysql \
--without-authvchkpw --without-authshadow 
[root@wedus courier-imap-1.5.3]# make
[root@wedus courier-imap-1.5.3]# make install 

Kita tidak membutuhkan module authentikasi yang lain (jika ada), selain authvmailmgr, jadi module dari courier-imap ya dihapus saja :) :

[root@wedus courier-imap-1.5.3]# rm -rf /usr/lib/courier-imap/libexec/authlib/*

Salin modul authvmailmgr dari source vmailmgr yang telah kita kompilasi diatas ke direktori modul authentikasi untuk imap servernya :

[root@wedus courier-imap-1.5.3]# cp ../vmailmgr-0.96.9/authenticate/authvmailmgr \
/usr/lib/courier-imap/libexec/authlib/

Salin file konfigurasi standar dari courier-imap :

[root@wedus courier-imap-1.5.3]# cp /usr/lib/courier-imap/etc/imapd.dist \
/usr/lib/courier-imap/etc/imapd 
[root@wedus courier-imap-1.5.3]# cp /usr/lib/courier-imap/etc/imapd-ssl.dist \
/usr/lib/courier-imap/etc/imapd-ssl 

Edit file /usr/lib/courier-imap/etc/imapd , karena courier imap ini hanya digunakan untuk webmail ganti pada baris ADDRESS=0 menjadi ADDRESS=127.0.0.1 . Jika webmail anda adalah webmail yang sibuk, anda bisa menaikkan variabel MAXDAEMONS dan MAXPERIP, yang terpenting adalah ganti pada AUTHMODULES="authdaemon" menjadi AUTHMODULES="authvmailmgr":

[root@wedus courier-imap-1.5.3]# vi /usr/lib/courier-imap/etc/imapd 

Start daemon courier-imap :

[root@wedus courier-imap-1.5.3]# /usr/lib/courier-imap/libexec/imapd.rc start 

Anda bisa memeriksa apakah servise courier-imap anda sudah berjalan semestinya, kita gunakan perintah ps :

[root@wedus courier-imap-1.5.3]# ps ax | grep imap 
2049 ? S 0:00 /usr/lib/courier-imap/libexec/couriertcpd -address=12 
2052 ? S 0:00 /usr/lib/courier-imap/libexec/courierlogger imapd 

Agar setiap reboot daemon courier-imap dijalankan secara otomatis :

[root@wedus courier-imap-1.5.3]# echo "/usr/lib/courier-imap/libexec/imapd.rc start" >> /etc/rc.local

5. Instalasi Squirrelmail

Menurut file INSTALL dari distribusi Squirrelmail, software ini membutuhkan php4 yang minimal dikompilasi dengan opsi --enable-track-vars --enable-force-cgi-redirect --with-gettext serta membutuhkan register_global=On dan file_uploads = On di php.ini (jika php anda menggunakan default RPM Redhat file php.ini terletak didirektori /etc).

Download dan ekstrak paket squirrelmail :

[root@wedus src]# wget http://unc.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.2.8.tar.gz
[root@wedus src]# tar -xzvf squirrelmail-1.2.8.tar.gz 

Tentukan letak direktori squirrelmail, misalnya disini saya letakkan didirektori /usr/local/httpd/htdocs/sqmail sehingga akan bisa diakses melalui http://www.wedus.com/sqmail

[root@wedus src]# mv squirrelmail-1.2.8 /usr/local/httpd/htdocs/sqmail

Tentukan user dan group yang menjalankan proses apache :

[root@wedus src]# egrep '^(User|Group)' /usr/local/httpd/conf/httpd.conf 
User www 
Group www 

Dari perintah diatas kita peroleh user www dan group www, kemudian ganti kepemilikan direktori /usr/local/httpd/htdocs/sqmail/data menjadi user www dan group www :

[root@wedus src]# chown -R www.www /usr/local/httpd/htdocs/sqmail/data/ 

Salin file konfigurasi standar ke file konfigurasi squirrelmail :

[root@wedus src]# cp /usr/local/httpd/htdocs/sqmail/config/config_default.php \
/usr/local/httpd/htdocs/sqmail/config/config.php 

Edit file tersebut dari $imap_server_type = 'cyrus'; menjadi$imap_server_type = 'courier'; :

[root@wedus src]# vi /usr/local/httpd/htdocs/sqmail/config/config.php 

Atau jika anda mengalami kesulitan anda bisa menggunakan script perl yang disertakan oleh squirrelmail, pada direktori config :

[root@wedus src]# cd /usr/local/httpd/htdocs/sqmail/config 
[root@wedus config]# ./conf.pl 

Kemudian silakan dicoba dengan browser anda, misalnya http://www.wedus.com/sqmail, kemudian masukkan user yang telah anda buat misalnya asfik@kadal.edu kemudian anda bisa mengganti Personal Information atau Folder Preferences dari menu Options.

6. Lain-lain

Didalam penggunaannya, terkadang qmail menemui suatu masalah, misalnya queue macet atau menumpuk, atau mailbox anda dispam dan kemudian bounce ke alamat yang tidak ketahuan jluntrung dan sangkan parannya ataupun tiba-tiba struktur direktori queue anda rusak. Atau anda punya gagasan untuk membatasi total pemakain harddisk untuk suatu domain.

6.1 qmHandle

qmHandle digunakan untuk melihat direktori queue ataupun menghapus dan melihat suatu email di direktori queue. Program ini membutuhkan perl, jadi silakan diperiksa distro linux kesayangan anda, apakah sudah terinstall perl atau belum.

[root@wedus src]# wget http://www.io.com/~mick/soft/qmHandle-0.5.1.tar.gz 
[root@wedus src]# tar -xzvf qmHandle-0.5.1.tar.gz 

Edit file qmHandle :

[root@wedus src]# vi qmHandle

Hapus atau beri tanda "#" pada baris ini :

$qmcmd = "csh -cf '/var/qmail/rc &'";

Unmark/uncommnet (hilangkan tanda "#") pada baris ini :

$qmcmd = '/etc/init.d/qmail start';

Atau jika anda tidak menggunakan init untuk memulai qmail :

$qmcmd = '/usr/bin/qmailctl start';

Pindahkan file binari nya ke direktori /usr/sbin atau direktori dimana anda ingat file tsb dan masuk lingkungan $PATH anda :

[root@wedus src]# mv qmHandle /usr/sbin/ 

Jika tidak ada email yang menyangkut di direktori queue, hasil perintah qmHandle -l -c adalah :

[root@wedus src]# qmHandle -l -c
Messages in local queue: 0 
Messages in remote queue: 0 

Misalkan ada sebuah email yang bounce dan numpuk direktori queue :

[root@wedus src]# qmHandle -l -c
15643 (3, R) 
Return-path: 
From: MAILER-DAEMON@gibas.wedus.com
To: lVKXwgvIgtQ3BL6d2TeG27oGW_yy@reply.yahoo.com 
Subject: failure notice 
Date: 30 Oct 2002 01:26:58 -0000 
Size: 14634 bytes 

Dan anda ingin menghapusnya (nomor 15643 didapat dari hasil diatas):

[root@wedus src]# qmHandle -d15643
Terminating qmail (pid 491)... this might take a while if qmail is working. 
Restarting qmail... Starting qmail done (hopefully). 

Untuk menghapus beberapa nomor sekaligus (misalnya nomor 1,2,3) anda bisa menggunakan qmHandle -d1 -d2 -d3 untuk menghapusnya, untuk penggunaan lebih lanjut qmHandle -h

6.2 queue-fix

Jika direktori queue anda tiba-tiba membengkak dan banyak antrian di queue, mungkin mailbox anda ada yang terkena spam atau virus atau diserang (let's say dibomb lah). Anda bisa melihat salah satu message email yang terkena spam/virus/bomb tersebut dengan qmHandle. Tapi jika jumlah message banyak menghapus dengan qmHandle adalah pekerjaan yang melelahkan :), solusinya mungkin bisa dengan menghapus direktori queue yang lama dan mengganti dengan direktori queue yang baru.

[root@wedus src]# wget http://www.netmeridian.com/e-huss/queue-fix.tar.gz 
[root@wedus src]# tar -xzvf queue-fix.tar.gz 
[root@wedus src]# cd queue-fix-1.4/ 
[root@wedus queue-fix-1.4]# make 

Pindahkan file binari nya ke direktori /usr/sbin atau direktori dimana anda ingat file tsb dan masuk lingkungan $PATH anda :

[root@wedus queue-fix-1.4]# cp queue-fix /usr/sbin/ 

Jika anda ingin membetulkan struktur direktori queue qmail saja :

[root@wedus queue-fix-1.4]# qmailctl stop
[root@wedus queue-fix-1.4]# queue-fix -i /var/qmail/queue/ 
[root@wedus queue-fix-1.4]# qmailctl start

Jika anda ingin mengganti (menghapus yang lama dan membuat yang baru) struktur direktori queue qmail, perintah mv ditujukan untuk membackup direktori queue jika suatu saat nanti akan dilakukan investigasi dari pihak berwajib (anda?):

[root@wedus queue-fix-1.4]# qmailctl stop
[root@wedus queue-fix-1.4]# mv /var/qmail/queue/ /var/qmail/old-queue
[root@wedus queue-fix-1.4]# mkdir /var/qmail/queue/ 
[root@wedus queue-fix-1.4]# queue-fix -i /var/qmail/queue/ 
[root@wedus queue-fix-1.4]# qmailctl start

6.3 Quota Perdomain

Tujuannya adalah membatasi pemakaian harddisk untuk suatu domain. Prinsipnya setiap domain yang akan kita quota, kita cari dulu user system yang menghandle domain tersebut kemudian kita quota. Bagaimana cara mengatur quota pada linux dengan baik dan benar, silakan kunjungi http://www.tldp.org/HOWTO/mini/Quota.html.Sebelumnya anda juga harus menentukan home direktori dari user-user yang akan menghandle virtual domain anda, akan lebih baik jika home direktori tersebut diletakkan pada partisi yang terpisah (misalnya /home) agar mudah untuk melakukan quota.

Jika direktori /home anda akan diquota maka pada file /etc/fstab anda ubah dari :

LABEL=/home /home ext3 defaults 1 2 

Menjadi :

LABEL=/home /home ext3 defaults,usrquota 1 2 

Buat file kosong pada partisi /home ganti modenya menjadi 700 :

[root@wedus asfik]# touch /home/aquota.user
[root@wedus asfik]# chmod 700 /home/aquota.user

Reboot linux anda, pastikan setiap reboot akan menjalankan quotaon, default pada Redhat sudah dimasukkan dalam file /etc/rc.d/rc.sysinit . Lakukan quotacheck sebelum melakukan penambahan quota :

[root@wedus asfik]# quotacheck -avugfm 

Test apakah quota sudah terpasang dengan semestinya :

[root@wedus asfik]# quota -uv root 
Disk quotas for user root (uid 0):      
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace     
 /dev/hda8  135052       0       0            3545       0       0 

Jika belum terpasang maka hasil keluaran perintah diatas adalah :

[root@wedus asfik]# quota -uv root 
Disk quotas for user root (uid 0): none 

Sekarang kita coba untuk memberi quota pada domain yang kita buat tersebut diatas, misalnya kadal.edu :

[root@wedus asfik]# grep ^kadal.edu /var/qmail/control/virtualdomains 
kadal.edu:kadal 

Dari keluaran perintah diatas kita dapatkan bahwa domain kadal.edu ditangane oleh user kadal , kita set quota untuk domain tersebut ke 10 MB misalnya :

[root@wedus asfik]# setquota -u kadal 10240 10240 0 0  /home 
[root@wedus asfik]# quota -uv kadal 
Disk quotas for user kadal (uid 188): 
Filesystem blocks quota limit grace files quota limit grace 
/dev/hda7 496 10000 10000 none 212 0 0 

Jika suatu saat user kadal telah melebihi quota (ditunjukkan dengan tanda * pada hasil keluaran perintah quota) yang kita berikan maka semua email yang dikirm ke domain tersebut akan dibounce ke sendernya (dikirim balik ke pengirimnya) :

[root@wedus asfik]# quota -uv kadal 
Disk quotas for user kadal (uid 188): 
Filesystem blocks quota limit grace files quota limit grace 
/dev/hda7 11496* 10000 10000 none 212 0 0 

Hasil dari perintah tail -f /var/log/qmail/current yang menunjukkan email tersebut dibounce :

[root@wedus asfik]# tail -f /var/log/qmail/current 
@400000003dbf7bb835dc0084 info msg 48056: bytes 890 from <asfik@wedus.com> qp 21917 uid 908 
@400000003dbf7bb837ca6ebc starting delivery 36258: msg 48056 to local kadal-asfik@kadal.edu
@400000003dbf7bb837ca95cc status: local 1/10 remote 2/20 
@400000003dbf7bb8382e54f4 delivery 36258: failure: Recipient's_mailbox_is_full,_message_returned_to_sender._(#5.2.2)/ 
@400000003dbf7bb8382e7434 status: local 0/10 remote 2/20 
@400000003dbf7bb9003b0f24 bounce msg 48056 qp 21921 
@400000003dbf7bb9003b2a7c end msg 48056 
@400000003dbf7bb9003b324c new msg 48058 
@400000003dbf7bb9003b3634 info msg 48058: bytes 1453 from <> qp 21921 uid 914 
@400000003dbf7bb901b55ecc starting delivery 36259: msg 48058 to remote asfik@wedus.com 
@400000003dbf7bb901b57a24 status: local 0/10 remote 3/20 
@400000003dbf7bbe19c42354 delivery 36259: success: 10.126.10.13_accepted_message./Remote_host_said:_250_Ok:_queued_as_04CF6329D2/ 
@400000003dbf7bbe19c44a64 status: local 0/10 remote 2/20 
@400000003dbf7bbe19c45234 end msg 48058 

Jika tidak (belum) bekerja sebagaimana mestinya, silakan anda kunjungi site quota mini howto tersebut diatas. Happy reading :)

7. ChangeLog

30 Juli 2003

12 Desember 2002

25 Nopember 2002

08 Nopember 2002

01 Nopember 2002

30 Oktober 2002

28 Oktober 2002

24 Oktober 2002

8. Referensi

  1. http://www.lifewithqmail.org
  2. http://www.qmail.org
  3. http://www.vmailmgr.org
  4. http://www.courier-mta.org/
  5. http://www.squirrelmail.org
  6. File INSTALL, README dan direktori docs pada setiap distribusi paket