"Untuk ibu saya tercinta, guru pertama saya "
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?)
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]wedus 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
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 .
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 [r[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 :).
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
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.
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.
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
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
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 :)
30 Juli 2003
12 Desember 2002
25 Nopember 2002
08 Nopember 2002
01 Nopember 2002
30 Oktober 2002
28 Oktober 2002
24 Oktober 2002