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

Asfihani ([email protected])

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 :

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

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

[[email protected] src]# wget http://cr.yp.to/software/qmail-1.03.tar.gz 
[[email protected] src]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz 
[[email protected] 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 :

[[email protected] src]# wget http://qmail.cbn.net.id/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch 
[[email protected] src]# wget http://qmail.cbn.net.id/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch 
[[email protected] 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

[[email protected] src]# wget http://www.qmail.org/qmailqueue-patch 
[[email protected] src]# wget http://www.qmail.org/qmail-1.03-quotas-1.1.patch 

Ekstrak semua source tersebut :

[[email protected] src]# tar -xzvf qmail-1.03.tar.gz 
[[email protected] src]# tar -xzvf daemontools-0.76.tar.gz 
[[email protected] src]# tar -xzvf ucspi-tcp-0.88.tar.gz 

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

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

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

[[email protected] src]# cd qmail-1.03

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

[[email protected] qmail-1.03]# patch -p1 < ../qmail-1.03.errno.patch 

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

[[email protected] qmail-1.03]# patch -p1 < ../qmailqueue-patch
[[email protected] qmail-1.03]# patch -p1 < ../qmail-1.03-quotas-1.1.patch 

Kompile dan install qmail :

[[email protected] 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.

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

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

[[email protected] ucspi-tcp-0.88]# patch -p1 < ../ucspi-tcp-0.88.errno.patch

Kompile dan install ucspi-tcp :

[[email protected] ucspi-tcp-0.88]# make setup check 
[[email protected] ucspi-tcp-0.88]# cd ../admin/daemontools-0.76/

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

[[email protected] daemontools-0.76]# patch -p1 < ../../daemontools-0.76.errno.patch 

Kompile dan install daemontools :

[[email protected] daemontools-0.76]# ./package/install

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

[[email protected] 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 :

[[email protected] daemontools-0.76]# rm -rf /command/ 
[[email protected] daemontools-0.76]# mv command/ / 

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

[[email protected] asfik]# cp /var/qmail/boot/home /var/qmail/rc
[[email protected] 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 :

[[email protected] asfik]# mkdir -p /var/qmail/supervise/qmail-send/log 
[[email protected] asfik]# mkdir -p /var/qmail/supervise/qmail-smtpd/log

Buat file script supervise untuk menjalankan qmail-send :

[[email protected] asfik]# vi /var/qmail/supervise/qmail-send/run 

Isinya :

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

Buat file script supervise untuk menjalankan log qmail-send :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] asfik]# chmod 755 /var/qmail/supervise/qmail-send/run
[[email protected] asfik]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[[email protected] asfik]# chmod 755 /var/qmail/supervise/qmail-smtpd/run 
[[email protected] asfik]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

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

[[email protected] asfik]# mkdir -p /var/log/qmail/smtpd 
[[email protected] asfik]# chown qmaill /var/log/qmail /var/log/qmail/smtpd

Mengijinkan localhost untuk menggunakan smtp :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] src]# echo '10.126.10.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

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

[[email protected] src]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

Akhirnya kita masukkan script yang kita buat kedalam servis supervise :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] 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:

[[email protected] 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:

[[email protected] 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 :

[[email protected] src]# cd ~alias/ 
[[email protected] alias]# echo [email protected] > .qmail-root 
[[email protected] alias]# echo [email protected] > .qmail-postmaster
[[email protected] alias]# echo [email protected] > .qmail-mailer-daemon 

Ganti [email protected] 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) :

[[email protected] src]# wget http://www.vmailmgr.org/current/vmailmgr-0.96.9.tar.gz 
[[email protected] src]# wget http://people.cakraweb.com/~asfik/gcc-vmailmgr-fix-patch
[[email protected] src]# tar -xzvf vmailmgr-0.96.9.tar.gz 
[[email protected] src]# cd vmailmgr-0.96.9
[[email protected] 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 :

[[email protected] vmailmgr-0.96.9]# patch -p1 < ../gcc-vmailmgr-fix-patch 
[[email protected] vmailmgr-0.96.9]# make 
[[email protected] vmailmgr-0.96.9]# make install

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

[[email protected] asfik]# mkdir -p /var/qmail/supervise/qmail-pop3d 
[[email protected] 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 :

[[email protected] asfik]# mkdir -p /var/qmail/supervise/qmail-pop3d/log 
[[email protected] 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 :

[[email protected] asfik]# mkdir /var/log/qmail/pop3d
[[email protected] asfik]# chown qmaill /var/log/qmail/pop3d
[[email protected] asfik]# chmod 755 /var/qmail/supervise/qmail-pop3d/run 
[[email protected] asfik]# chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

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

[[email protected] asfik]# ln -s /var/qmail/supervise/qmail-pop3d /service 

Untuk memeriksa apakah servise pop3 server sudah bekerja :

[[email protected] 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 :

[[email protected] asfik]# telnet localhost 110 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
+OK <[email protected]>

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 :

[[email protected] src]# wget http://people.cakraweb.com/~asfik/qmailctl
[[email protected] src]# mv qmailctl /var/qmail/bin/qmailctl 
[[email protected] src]# chmod 755 /var/qmail/bin/qmailctl
[[email protected] 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 :

[[email protected] src]# ln -s /var/qmail/bin/qmailctl /etc/rc.d/init.d/qmail 
[[email protected] src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc0.d/K30qmail
[[email protected] src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc1.d/K30qmail 
[[email protected] src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc2.d/S80qmail 
[[email protected] src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc3.d/S80qmail 
[[email protected] src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc4.d/S80qmail 
[[email protected] src]# ln -s /etc/rc.d/init.d/qmail/qmail /etc/rc.d/rc5.d/S80qmail
[[email protected] 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 :

[[email protected] src]# qmailctl stop 
Stopping qmail...   
qmail-smtpd  
qmail-send  
qmail-pop3d 
[[email protected] src]# qmailctl start 
Starting qmail 

Atau dengan gaya klasik koboi Redhat :

[[email protected] src]# service qmail stop
Stopping qmail...   
qmail-smtpd   
qmail-send   
qmail-pop3d 
[[email protected] 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 :

[[email protected] src]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail 
[[email protected] 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 :

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

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

[[email protected] 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 :

[[email protected] asfik]# su - kadal 
[[email protected] 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) [email protected] :

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

Kemudian kita forward email [email protected], [email protected], [email protected] ke alamat email yang valid, misalnya [email protected] :

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

Untuk penghapusan suatu user (email account), misalnya [email protected] :

[[email protected] kadal]$ vdeluser embuh 
vdeluser: user 'embuh' successfully deleted. 

Kemudian kita mencoba mengetest mengirim email dari [email protected] ke [email protected] , dari perintah tail -f /var/log/qmail/current kita dapatkan log seperti berikut :

[[email protected] asfik]# tail -f /var/log/qmail/current
@400000003db6657501bc540c new msg 224662
@400000003db6657501bc6b7c info msg 224662: bytes 906 from <[email protected]> qp 995 uid 503
@400000003db6657501e995fc starting delivery 1: msg 224662 to local [email protected]
@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 :

[[email protected] 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 <[email protected]> qp 995 uid 503 
2002-10-23 16:01:31.032085500 starting delivery 1: msg 224662 to local [email protected] 
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 [email protected], anda bisa menggunakan POP3 client, misalnya Eudora, anda harus menggunakan format [email protected] misalnya [email protected] sebagai accoutname atau username untuk authentikasi ke server POP tersebut, atau anda juga bisa melalui old-fashioned-way, telnet port 110 di localhost :

[[email protected] asfik]# telnet localhost 110 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
+OK <[email protected]> 
user [email protected] 
+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 :

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

Buat direktori supervise untuk servis vmailmgrd :

[[email protected] asfik]# mkdir -p /var/qmail/supervise/vmailmgrd/log

Buat file supervise untuk menjalankan log vmailmgrd :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] asfik]# mkdir -p /var/log/qmail/vmailmgrd 
[[email protected] asfik]# chown qmaill /var/log/qmail/vmailmgrd 
[[email protected] asfik]# chmod 755 /var/qmail/supervise/vmailmgrd/log/run /var/qmail/supervise/vmailmgrd/run 

Akhirnya kita masukkan servis vmailmgrd kedalam /service :

[[email protected] asfik]# ln -s /var/qmail/supervise/vmailmgrd/ /service/ 

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

[[email protected] src]# wget http://unc.dl.sourceforge.net/sourceforge/omail/omail-admin-0.99-beta.tar.gz 
[[email protected] src]# wget http://untroubled.org/qmail-autoresponder/qmail-autoresponder-0.95.tar.gz
[[email protected] src]# tar -xzvf qmail-autoresponder-0.95.tar.gz 
[[email protected] src]# cd qmail-autoresponder-0.95 
[[email protected] qmail-autoresponder-0.95]# make 
[[email protected] qmail-autoresponder-0.95]# cp qmail-autoresponder /usr/local/bin/ 
[[email protected] qmail-autoresponder-0.95]# cd ..
[[email protected] 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 :

[[email protected] 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 = "[email protected]"; :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] src]# mkdir /etc/vmailmgr 
[[email protected] 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 :

[[email protected] 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 :

[[email protected] src]# wget http://unc.dl.sourceforge.net/sourceforge/courier/courier-imap-1.5.3.tar.gz 
[[email protected] src]# tar -xzvf courier-imap-1.5.3.tar.gz 
[[email protected] src]# cd courier-imap-1.5.3 
[[email protected] 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 
[[email protected] courier-imap-1.5.3]# make
[[email protected] 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 :) :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] courier-imap-1.5.3]# cp /usr/lib/courier-imap/etc/imapd.dist \
/usr/lib/courier-imap/etc/imapd 
[[email protected] 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":

[[email protected] courier-imap-1.5.3]# vi /usr/lib/courier-imap/etc/imapd 

Start daemon courier-imap :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] src]# wget http://unc.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.2.8.tar.gz
[[email protected] 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

[[email protected] src]# mv squirrelmail-1.2.8 /usr/local/httpd/htdocs/sqmail

Tentukan user dan group yang menjalankan proses apache :

[[email protected] 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 :

[[email protected] src]# chown -R www.www /usr/local/httpd/htdocs/sqmail/data/ 

Salin file konfigurasi standar ke file konfigurasi squirrelmail :

[[email protected] 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'; :

[[email protected] 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 :

[[email protected] src]# cd /usr/local/httpd/htdocs/sqmail/config 
[[email protected] config]# ./conf.pl 

Kemudian silakan dicoba dengan browser anda, misalnya http://www.wedus.com/sqmail, kemudian masukkan user yang telah anda buat misalnya [email protected] 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.

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

Edit file qmHandle :

[[email protected] 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 :

[[email protected] src]# mv qmHandle /usr/sbin/ 

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

[[email protected] src]# qmHandle -l -c
Messages in local queue: 0 
Messages in remote queue: 0 

Misalkan ada sebuah email yang bounce dan numpuk direktori queue :

[[email protected] src]# qmHandle -l -c
15643 (3, R) 
Return-path: 
From: [email protected]
To: [email protected] 
Subject: failure notice 
Date: 30 Oct 2002 01:26:58 -0000 
Size: 14634 bytes 

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

[[email protected] 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.

[[email protected] src]# wget http://www.netmeridian.com/e-huss/queue-fix.tar.gz 
[[email protected] src]# tar -xzvf queue-fix.tar.gz 
[[email protected] src]# cd queue-fix-1.4/ 
[[email protected] 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 :

[[email protected] queue-fix-1.4]# cp queue-fix /usr/sbin/ 

Jika anda ingin membetulkan struktur direktori queue qmail saja :

[[email protected] queue-fix-1.4]# qmailctl stop
[[email protected] queue-fix-1.4]# queue-fix -i /var/qmail/queue/ 
[[email protected] 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?):

[[email protected] queue-fix-1.4]# qmailctl stop
[[email protected] queue-fix-1.4]# mv /var/qmail/queue/ /var/qmail/old-queue
[[email protected] queue-fix-1.4]# mkdir /var/qmail/queue/ 
[[email protected] queue-fix-1.4]# queue-fix -i /var/qmail/queue/ 
[[email protected] 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 :

[[email protected] asfik]# touch /home/aquota.user
[[email protected] 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 :

[[email protected] asfik]# quotacheck -avugfm 

Test apakah quota sudah terpasang dengan semestinya :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] 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 :

[[email protected] asfik]# setquota -u kadal 10240 10240 0 0  /home 
[[email protected] 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) :

[[email protected] 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 :

[[email protected] asfik]# tail -f /var/log/qmail/current 
@400000003dbf7bb835dc0084 info msg 48056: bytes 890 from <[email protected]> qp 21917 uid 908 
@400000003dbf7bb837ca6ebc starting delivery 36258: msg 48056 to local [email protected]
@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 [email protected] 
@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