Tutorial instalasi Qmail, Courier Imap, dan Squirrelmail

Asfihani ([email protected])

30 Juli 2003
Dokumen (tutorial) ini ditujukan untuk membantu membuat sebuah mailserver untuk satu domain, serta aplikasi pendukung pembacaan email melalui web (webmail) dengan menggunakan squirrelmail secara step-by-step dalam Bahasa Indonesia. Anda juga bisa melihat tulisan Jamaludin Ahmad tentang instalasi qmail di http://www.jamalinux.com/?open=writing=qmail. Sistem Operasi yang digunakan adalah Redhat Linux 7.3. Semua paket menggunakan format source tarball. Dokumen ini diketik menggunakan lyx dan dapat anda dapatkan dalam format PDF di http://people.cakraweb.com/~asfik/writings/qmail.pdf. 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 dikemudian hari anda menginginkan software anti-virus, serta quotas-patch, yang berguna untuk membounce email jika suatu user sistem (user email) sudah melebihi quota sistem :

[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 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

Pada langkah yang penting ini kita akan menentukan nama domain yang akan diurusi/dihandle oleh qmail diserver ini, misalnya wedus.com. Masukkan nama domain tersebut ke file rcpthosts dan locals sehingga nantinya akan dianggap sebagai domain lokal dan bukan virtual oleh qmail, misalnya :

[root@wedus qmail-1.03]# echo wedus.com >> /var/qmail/control/locals
[root@wedus qmail-1.03]# echo wedus.com >> /var/qmail/control/rcpthosts

Install ucspi-tcp dan daemontools :

[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 

Kompil 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 [email protected] > .qmail-root 
[root@wedus alias]# echo [email protected] > .qmail-postmaster
[root@wedus alias]# echo [email protected] > .qmail-mailer-daemon 

Ganti [email protected] dengan email yang bertanggung jawab terhadap server email tersebut (anda?)

Donwload paket checkpassword, yang akan digunakan sebagai module authentikasi menggunakan protokol pop3 :

[root@wedus src]# wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz 
[root@wedus src]# tar -xzvf checkpassword-0.90.tar.gz

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

[root@wedus src]# wget http://qmail.cbn.net.id/moni.csi.hu/pub/glibc-2.3.1/checkpassword-0.90.errno.patch

Pindah ke direktori source checkpassword :

[root@wedus src]# cd checkpassword-0.90 

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

[root@wedus checkpassword-0.90]# patch -p1 < ../checkpassword-0.90.errno.patch

Kompile dan install checkpassword :

[root@wedus checkpassword-0.90]# make setup check 

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 checkpassword 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 <[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 :

[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

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 user account email

Pada intinya karena hanya mengurusi satu domain, maka setiap anda menambah satu buah account email, maka yang anda lakukan adalah sama dengan menambah satu buah account pada system Linux anda. Dan ini (amat) sangat berisiko, titik terlemah berada pada password user anda. Anda bisa mengatasinya dengan menggunakan alternatif program cek password yang yang lain yang tentunya tidak akan membaca password di /etc/passwd, atau menggunakan virtualdomain, tapi hanya anda set untuk mengurusi atau menerima email ke satu domain saja. Anyway, mari kita coba menambahkan email pada domain yang telah kita buat, misalnya account email [email protected]. Karena user paijo ini kita set hanya untuk menerima email, kita tidak akan memberi akses ssh/telnet/ftp/whatever kepada paijo untuk mengurangi resiko :

[root@wedus asfik]# adduser -s /bin/false paijo 
[root@wedus asfik]# passwd paijo 
Changing password for user paijo. 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

Buat direktori untuk menyimpan email untuk user paijo :

[root@core asfik]# /var/qmail/bin/maildirmake ~paijo/Maildir 
[root@core asfik]# chown -R paijo.paijo ~paijo/Maildir 

Beritahu kepada qmail untuk mengantarkan email ke direktori Maildir dihomedirektori user paijo :

[root@wedus asfik]# echo "./Maildir/" > ~paijo/.qmail 
[root@wedus asfik]# chown paijo.paijo ~paijo/.qmail 

Supaya anda tidak repot-repot lagi membuat file .qmail dan direktori Maildir setiap penambahan user baru :

[root@wedus asfik]# echo "./Maildir/" > /etc/skel/.qmail 
[root@wedus asfik]# maildirmake /etc/skel/Maildir 

Sehingga setiap nanti anda menambah user baru (adduser), otomatis file dan direktori tersebut diatas akan terbuat, sekarang kita mencoba mengirim email ke user [email protected] , anda boleh saja mencoba mengirim dengan menggunakan MUA seperti Eudora, pine, mutt atau yang lain, kita coba memakai old-fashioned-way, telnet port 25 di localhost :

[root@wedus asfik]# telnet localhost 25 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
220 gibas.wedus.com ESMTP 
mail from : Asfihani <[email protected]> 
250 ok 
rcpt to: [email protected] 
250 ok 
data 
354 go ahead 
Subject: Ini mengetest saja lho :)
ini budi 
. 
250 ok 1036218269 qp 917 
quit 
221 gibas.wedus.com 
Connection closed by foreign host. 

Jika anda lihat pada file /var/log/qmail/current akan ada log yang menujukkan email telah diterima dengan selamat :

[root@wedus asfik]# tail -f /var/log/qmail/current
@400000003dc36fa70e90532c new msg 224669 
@400000003dc36fa70e906e84 info msg 224669: bytes 202 from <[email protected]> qp 917 uid 503 @400000003dc36fa70ebda8a4 starting delivery 1: msg 224669 to local [email protected] @400000003dc36fa70ebf526c status: local 1/10 remote 0/20 
@400000003dc36fa70fa3ce9c delivery 1: success: did_1+0+0/ 
@400000003dc36fa70fa3e9f4 status: local 0/10 remote 0/20 
@400000003dc36fa70fa614a4 end msg 224669 

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-11-02 13:24:29.244346500 info msg 224669: bytes 202 from <[email protected]> qp 917 uid 503 
2002-11-02 13:24:29.247310500 starting delivery 1: msg 224669 to local [email protected] 
2002-11-02 13:24:29.247419500 status: local 1/10 remote 0/20 
2002-11-02 13:24:29.262393500 delivery 1: success: did_1+0+0/ 
2002-11-02 13:24:29.262400500 status: local 0/10 remote 0/20 
2002-11-02 13:24:29.262542500 end msg 224669 

Untuk membuktikan email sudah sampai dengan selamat di mailbox paijo :

[root@wedus asfik]# ls ~paijo/Maildir/new/ 
1036218269.921.gibas.wedus.com 
[root@wedus asfik]# cat ~paijo/Maildir/new/1036218269.921.gibas.wedus.com 
Return-Path: <[email protected]> 
Delivered-To: [email protected]
Received: (qmail 917 invoked from network); 2 Nov 2002 06:24:08 -0000 
Received: from unknown (127.0.0.1)   
by localhost with SMTP; 2 Nov 2002 06:24:08 -0000 
Subject: Ini mengetest saja lho :)
ini budi 

Lalu kita periksa apakah email tersebut sudah masuk ke dalam mailbox [email protected], anda bisa menggunakan POP3 client, misalnya Eudora, sebagai accoutname atau username untuk authentikasi ke server silakan gunakan user paijo, 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 <[email protected]> 
user paijo 
+OK 
pass 123 
+OK 
list 
+OK 
1 273 
. 
retr 1 
+OK 
Return-Path: <[email protected]> 
Delivered-To: [email protected] 
Received: (qmail 917 invoked from network); 2 Nov 2002 06:24:08 -0000 
Received: from unknown (127.0.0.1)   
by localhost with SMTP; 2 Nov 2002 06:24:08 -0000 
Subject: Ini mengetest saja lho :)
ini budi
. 
quit 
+OK Connection closed by foreign host. 

Disitu kita lihat email sudah masuk dengan sukses. Untuk melakukan penambahan account email yang lain silakan mengulangi langkah-langkah diatas. Jika anda tidak mempunyai rencana untuk memberikan akses webmail kepada user anda, anda telah selesai menginstall qmail. Untuk melaporkan sukses dalam installasi anda :

[root@wedus asfik]#(echo 'Nama Anda tulis disini'; uname -a) | mail [email protected] 

2. 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 tujuan kita menggunakan Courier Imap adalah 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 --disable-root-check \
--without-authdaemon --with-authpam --enable-workarounds-for-imap-client-bugs
[root@wedus courier-imap-1.5.3]# make 
[root@wedus courier-imap-1.5.3]# make install 

Kita tidak membutuhkan module authentikasi yang lain, selain authpam, jadi ya dihapus saja :)

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

Salin modu authpam yang telah kita kompilasi diatas ke direktori modul authentikasi untuk imap servernya :

[root@wedus courier-imap-1.5.3]# cp authlib/authpam /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="authpam":

[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

3. 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 $domain = 'mydomain.com'; menjadi$domain = 'wedus.com'; dan $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 dalam mengkonfigurasi squirrelmail secara manual, 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 paijo kemudian anda bisa mengganti Personal Information atau Folder Preferences dari menu Options.

4. 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.

4.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: [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):

[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

4.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

4.3 Quota per user (account email)

Tujuannya adalah membatasi pemakaian harddisk untuk suatu user (account email). Bagaimana cara mengatur quota pada linux dengan baik dan benar, silakan kunjungi http://www.tldp.org/HOWTO/mini/Quota.html. Jika misalnya partisini /home anda sudah terpisah dan 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 user paijo misalnya sebesar 10 MB :

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

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

[root@wedus asfik]# quota -uv paijo
Disk quotas for user paijo (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 suatu email dibounce :

[root@wedus 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 :)

5. ChangeLog

30 Juli 2003

08 Nopember 2002

02 Nopember 2002

6. Referensi

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