Kamas Muhammad <kamas(@t)its.ac.id>
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.
Pendahuluan
Panduan ini ditujukan sebagai tutorial kecil-kecilan
pembuatan email server dengan memanfaatkan paket-paket yang tersedia pada
Debian Woody. Dokumen ini (mencoba) menjelaskan cara instalasi qmail (+patch),
vpopmail, courier-imap, squirrellmail, clamav dan beberapa konfigurasi yang
diperlukan.
1. Instalasi Qmail
Debian Woody menyediakan paket qmail-src yang berisi
source code qmail yang telah dilengkapi dengan build-script
yang memudahkan anda dalam melakukan kompilasinya. Paket source qmail ini juga
telah dilengkapi dengan patch QMAILQUEUE yang memungkinkan anda untuk mengubah
isi queue sebelum suatu mail dikirimkan.
Selain qmail-src itu sendiri, qmail juga membutuhkan ucspi-tcp
yang juga disertakan pada Debian Woody dengan nama paket ucspi-tcp-src.
Paket ini bertugas sebagai TCP Server yang mengatur koneksi jaringan
yang dilakukan oleh qmail.
Instalasi kedua paket di atas
dapat dilakukan dengan cara:
root:~# apt-get
install qmail-src uscpi-tcp-src
Setelah kedua paket di atas terinstall kita akan
mengcompile ucspi-tcp terlebih dahulu, baru setelah itu kita melakukan
kompilasi pada qmail.
root:~#
build-ucspi-tcp
Anda akan diminta memasukkan direktori untuk melakukan
kompilasi (defaultnya /tmp/ucspi-tcp). Ikuti perintah pada layar, dan setelah selesai anda akan
mendapatkan file ucspi-tcp_0.88-5_i386.deb yang dapat langsung anda install.
root:~# dpkg -i
/tmp/ucspi-tcp/ucspi-tcp_0.88-5_i386.deb
Ada beberapa patch yang diperlukan untuk membangun binary
qmail yaitu:
qmail-1.03-maxrcpt.patch: Digunakan untuk membatasi jumlah penerima per email. RFC2821
menyatakan bahwa suatu MTA harus dapat menerima setidaknya 100 penerima
untuk tiap mail, namun boleh juga bila kita tidak ingin menerimanya.
Pembatasan ini berguna untuk mengurangi spam.
qmail-1.03-mfcheck.3.patch: Digunakan untuk menolak email bila domain pengirim tidak
valid.
qmail-1.03-quotas-1.1.patch: Digunakan untuk menset "over quota" sebagai hard
error. Tanpa patch ini, "over quota" pada alamat tujuan
hanya menghasilkan soft error sehingga pesan akan secara terus
menerus dikirimkan hingga umur maksimal pada queue tercapai.
qmail-date-localtime.patch: Berguna agar qmail menggunakan format date lokal pada header
email yang dikirimkan.
qmail-smtpd-auth:
Memaksa user untuk login sebelum mengirim email. Hal ini berguna untuk
menghindari pengiriman email yang dilakukan oleh virus/worm.
Beberapa patch di atas telah digabung oleh John M. Simpson (jms1@spamcop.net)
menjadi 1 patch yaitu qmail-1.03-jms1.4a.patch yang dapat didownload dari http://www.jms1.net/qmail/qmail-1.03-jms1.4a.patch.
Catatan: Pastikan bahwa sebelum proses kompilasi dimulai IP
Address dan domain mailserver anda telah terdaftar pada Domain Name Server
yang anda gunakan. Bila belum
segera hubungi administrator jaringan anda, atau bila andalah administrator
jaringannya segera tambahkan entry mailserver pada DNS.
Di sini diasumsukan bahwa patch
yang sudah anda download berada pada direktori /tmp, dan kompilasi dilakukan pada direktori /tmp/qmail.
root:~#
build-qmail
This script unpacks the qmail source into a directory, and
compiles it to produce a binary qmail*.deb file.
The directory where this is done will end up containing the source
and package files for the qmail binary package, along with a
directory containing the unpacked source.
Enter a directory where you would like to do this [/tmp/qmail]
dpkg-source: extracting qmail in qmail-1.03
dpkg-source: extracting qmail in qmail-1.03
Binary package qmail will be compiled now
If you want to apply a custom patch, switch to another console and do it
now
This can take long time, depending on your machine
Press ENTER to continue...
Jangan tekan ENTER, buka shell lagi, dan lakukan patch pada
qmail.
root:~# cd
/tmp/qmail/qmail-1.03
root:/tmp/qmail/qmail-1.03# patch -p1 < /tmp/qmail-1.03-jms1.4a.patch
Anda akan mendapatkan beberapa error, betulkan dengan cara
mengkopikan isi file Makefile.rej dan qmail-smtpd.c.rej secara manual (caranya? silakan tanya tetangga, atau tanya ke
mbah google). Setelah anda membetulkannya tekan ENTER untuk memulai proses
kompilasi.
Setelah proses kompilasi selesai anda akan mendapatkan file
/tmp/qmail/qmail_1.03-24_i386.deb pada direktori /tmp/qmail. File ini dapat langsung diinstall pada banyak komputer tanpa harus
melakukan kompilasi ulang.
root:~# dpkg -i
/tmp/qmail/qmail_1.03-24_i386.deb
Bila proses instalasi qmail gagal mendeteksi domain yang
anda gunakan, isikan nama domain untuk mailserver anda pada file /var/qmail/control/me dengan cara mengedit file tersebut secara langsung atau dengan
mengeksekusi perintah:
root:~# echo
"nama.domain.anda" > /var/qmail/control/me
Setelah instalasi selesai jangan lupa untuk memasukkan
domain yang akan ditangani pada /var/qmail/control/rcpthosts. Hal ini
ditujukan agar mailserver anda tidak menjadi mail server open relay yang
dapat disalahgunakan oleh pihak-pihak yang tidak bertanggugjawab.
Jangan lupa untuk memeriksa isi file /etc/tcp.smtp
untuk menentukan network mana saja yang dapat menggunakan mailserver anda.
Secara default, isi dari file ini adalah:
127.0.0.1:allow,RELAYCLIENT=""
Anda dapat mengubah isi file itu menjadi:
127.0.0.1:allow,RELAYCLIENT=""
[IP Network Anda]:allow,RELAYCLIENT=""
:allow
Dengan konfigurasi semacam itu maka semua email yang
berasal dari localhost dan dari network anda dapat menggunakan
mailserver ini untuk mengirim email ke mana saja, sedangkan dari luar kedua
network tersebut hanya dapat menggunakan mailserver ini untuk mengirimkan email
ke alamat-alamat pada domain yang anda sebutkan pada /var/qmail/control/rcpthosts. Perbedaan dari kedua model perilaku ini ditentukan oleh RELAYCLIENT="". Opsi variabel ini menyebabkan network yang menyandangnya mempunyai
hak untuk menggunakan mailserver ini untuk mengirim email ke alamat apa pun (tidak
hanya pada yang disebutkan pada /var/qmail/control/rcpthost).
Setelah anda mengubah isi /etc/tcp.smtp jangan
lupa untuk membangun databasenya dengan menjalankan perintah:
root:~# tcprules
/etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
Hal terakhir yang kini harus anda lakukan adalah mengubah
perilaku penyimpanan qmail untuk menggunakan format Maildir. Qmail hasil
kompilasi Debian tidak memerlukan supervise script dan daemontools
melainkan mengunakan file /etc/init.d/qmail seperti halnya server lain yang terdapat pada Debian. Untuk itu
anda dapat mengubah file tersebut pada bagian alias_empty="|/usr/sbin/qmail-procmail" menjadi alias_empty="./Maildir/". Setting ini kira-kira terdapat pada baris ke-14 dan 15.
Setelah itu anda dapat menjalankan (start)/menghentikan
(stop) dan merestart qmail dengan perintah:
root:~#
/etc/init.d/qmail [start|stop|restart]
Anda dapat mencoba mailserver baru anda dengan menggunakan
telnet seperti yang digambarkan pada potongan program di bawah ini.
root:~# telnet
localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 exp1.its.ac.id ESMTP
MAIL FROM: <alamat@email.com>
250 ok
RCPT TO: <email@tujuan.di.rcpthosts>
250 ok
DATA
354 go ahead
ketik pesan anda di sini
dan setelah selesai akhiri dengan tanda titik (.)
.
250 ok [angka aneh]
Bila anda mendapatkan jawaban seperti di atas itu berarti
mailserver anda sudah berjalan dengan baik. Selamat! Silakan bikin kopi, minum
dan istirahat sebentar, instalasi qmail telah selesai.
2. Instalasi Vpopmail
Vpopmail adalah suatu program yang memungkinkan sebuah
mailserver menangani banyak domain dan banyak user tanpa harus membuat user
entry pada /etc/passwd. Tiap domain dapat mempunyai satu account postmaster sendiri
dengan password yang berbeda. Instalasi vpopmail tidak membuat kita harus
mengubah setting pada qmail karena setting tersebut akan ditangani oleh proses
instalasi vpopmail secara otomatis.
Selain untuk tujuan di atas, vpopmail juga menyertakan pop3
server yang memungkinkan kita untuk mendownload email-email yang ada di
server ke mail client yang ada di komputer lokal anda, misal: Outlook
Express atau Mozilla. Fasilitas ini membantu anda untuk menghindari
penuhnya mailbox anda di mailserver, sehingga email yang dikirim untuk anda
tidak akan bouncing.
Untuk menginstall paket ini anda tidak harus menginstall
terlebih dahulu seperti pada instalasi qmail dan ucspi-tcp, namun
dapat langsung menginstall dari .deb yang ada. Untuk dapat menginstall
dengan menggunakan apt-get tambahkan baris berikut pada file /etc/apt/sources.list
anda.
deb
http://debian.its.ac.id/other woody vpopmail
Anda dapat memilih beberapa backend penyimpanan
informasi username, di antaranya adalah:
- cdb: Penyimpanan dilakukan dengan menggunakan file cdb.
- mysql: Penyimpanan dilakukan dengan menggunakan database mysql.
- lmysql: Sama dengan mysql namun dengan tambahan dukungan Large
Site.
- pgsql: Penyimpanan dilakukan dengan menggunakan database PostgreSQL.
- oracle: Peyimpanan dilakukan dengan menggunakan database oracle.
Untuk menginstall vpopmail, ketik perintah di bawah ini.
Nantinya, segala macam ketergantungan/dependencies akan ikut terinstall secara
otomatis. Backend authentikasi yang secara default terinstall adalah cdb.
root:~# apt-get
install vopomail-bin
Ada beberapa perintah dasar yang disediakan oleh vpopmail.
Perintah-perintah ini adalah perintah dasar yang umum dipakai dalam manajemen
suatu domain beserta user-user di dalamnya.
vadddomain:
digunakan untuk menambahkan virtual domain dan POSTMASTER domain tersebut.
vadduser:
digunakan untuk menambahkan user pada domain virtual.
vpasswd: digunakan
untuk mengubah password user pada domain virtual.
vdeluser:
digunakan untuk menghapus suatu user virtual domain.
vdeldomain:
digunakan untuk menghapus virtual domain.
root:~# vadddomain
coba.domain.com
Please enter password for postmaster: *****
enter password again: *****
root:~# vadduser user1@coba.domain.com
Please enter password for user1@coba.domain.com: ****
enter password again: ****
Pada contoh di atas tampak bahwa domain coba.domain.com
telah sukses dibuat dan kita juga telah membuat user baru untuk domain itu
yakni user1@coba.domain.com.
3. Instalasi CourierIMAP
IMAP yang disediakan oleh CourierIMAP adalah IMAP
versi 2. Layanan ini mirip dengan layanan yang disediakan oleh pop3, namun
dengan menggunakan IMAP kita tidak harus memindahkan email pada mailserver ke
komputer kita, namun kita tetap dapat membaca email melalui email client
kesukaan kita.
Instalasi CourierIMAP cukup mudah, tambahkan baris berikut
ini pada file /etc/apt/sources.list.
deb
http://debian.its.ac.id/other woody courier
Instalasi dapat dilakukan dengan perintah:
root:~# apt-get
install courier-imap
Courier IMAP mendukung beberapa modul authentikasi. Setting
untuk penentuan modul ini terdapat pada file /etc/courier/imapd,
pada bagian AUTHMODULES. Beberapa contoh metode authentikasi yang didukung adalah:
- authpam: Digunakan untuk validasi user menggunakan library PAM, jadi
courier tidak melakukan authentikasi secara independen, melainkan dengan
menggunakan library yang telah disediakan oleh PAM.
- authpwd: Digunakan untuk validasi user berdasarkan file
/etc/passwd.
- authshadow: Persis seperti authpwd, namun password untuk user
diambil dari
/etc/shadow.
- authuserdb: Digunakan untuk validasi user berdasarkan database userdb.
- authvchkpw: Digunakan untuk validasi user dari vpopmail.
- authcram: Seperti pada authuserdb tetapi tidak secara langsung mengambil
username dan password, melainkan melalui mekanisme "Challenge/Response
Authentication Mechanism(CRAM)".
- authmysql: Digunakan untuk validasi user yang disimpan pada database
MySQL.
- authpgsql: Digunakan untuk validasi user yang disimpen pada database
PostgreSQL.
- authldap: Digunakan untuk validasi user dari direktori LDAP.
Karena di sini kita menyimpan username dengan menggunakan
vpopmail, maka authentikasi yang harus kita jalankan adalah authvchkpw.
Dengan demikian pastikan bahwa pada file /etc/courier/imapd
terdapat suatu baris yang berisi: AUTHMODULES="authvchkpw".
Banyak konfigurasi lain yang dapat anda lakukan. Anda dapat
membaca file konfigurasi mulai awal sampai akhir. Pada tiap-tiap konfigurasi
pasti ada suatu keterangan yang menyertainya, sehingga anda bisa membaca untuk
mengetahui maksudnya.
Setelah konfigurasi selesai anda dapat menjalankan
(start)/menghentikan (stop) dan merestart CourierIMAP dengan perintah:
root:~#
/etc/init.d/courier-imap [start|stop|restart]
Setelah anda berhasil menginstall CourierIMAP, anda dapat
mencobanya dengan telnet ke server IMAP dengan port 143. Sebagai contoh, bila anda telnet
dari komputer yang sedang anda install, anda dapat menjalankan perintah seperti
di bawah ini.
root:~# telnet
localhost 443
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc.
See COPYING for distribution information.
Bila anda telah mendapatkan jawaban seperti di atas,
berarti server IMAP anda telah bekerja dengan baik.
4. Instalasi Antivirus (ClamAV)
ClamAV adalah salah satu antivirus opensource yang tujuan
utamanya adalah untuk membersihkan/mengkarantina file-file yang terkena virus
yang beredar melalui email. Untuk dapat menscan virus yang masuk ClamAV tidak
bekerja sendiri, namun untuk dapat memeriksanya ClamAV butuh bantuan qmailscanner
yang instalasinya akan dibahas pada bab selanjutnya.
Database virus ClamAV diperbarui secara rutin. Anda dapat
melacak aktivitas proyek ini melalui website http://www.clamav.net/.
Selain dengan cara mendownload manual, ClamAV juga mempunyai daemon yang
bernama freshclam yang secara berkala mendownload database virus dari
internet, jadi anda tidak perlu secara rutin melakukan pemeliharaan anti virus (Istilah
keren dari dunia BSD: Install and forget it).
Sebelum anda menginstall ClamAV, tambahkan baris berikut
ini pada file /etc/apt/sources.list.
deb
http://debian.its.ac.id/other woody clamav
Untuk instalasinya gunakan perintah:
root:~# apt-get
install clamav
Setelah instalasi selesai anda dapat meneruskan ke bagian
selanjutnya. ClamAV tidak memerlukan konfigurasi apa pun.
5. Instalasi qmail-scanner
Qmail-scanner adalah program
yang digunakan oleh ClamAV(atau anti virus apapun) untuk memeriksa virus dari qmail-queue
(terutama attachment). Qmail-scanner memeriksa semua koneksi SMTP untuk
tiap koneksi yang keluar/masuk server (tergantung konfigurasinya). Bila
qmail-scanner menemukan virus maka email yang bervirus akan dikarantina.
Sesungguhnya qmail-scanner bukanlah suatu program.
Qmail-scanner adalah perl script yang dijalankan oleh tcp-server untuk
memeriksa virus pada qmail-queue. Qmail-scanner membutuhkan beberapa library
tambahan dari perl yaitu perl-suid, libtime-hires-perl, serta
beberapa program lain seperti tnef, razor, dan lainnya. Anda
tidak perlu menginstall semua program itu secara manual karena saat instalasi
qmail-scanner, program-program itu secara otomatis akan ikut terinstall. Untuk
menginstall qmail-scanner anda dapat menjalankan perintah:
root:~# apt-get
install qmail-scanner
Setelah instalasi selesai anda dapat melihat, dan bila
perlu mengubah file /var/spool/qmailscan/quarantine-attachments.txt. File ini berisi definisi beberapa virus dan anda juga dapat
mencegah adanya pengiriman beberapa jenis file, misal: .scr, .pif,
dan sebagainya yang anda curigai biasa digunakan oleh virus untuk menyebarkan
dirinya. Bila anda mengubah file tersebut anda harus menjalankan perintah
root:~#
/usr/sbin/qmail-scanner-queue.pl -g
untuk mengupdate hasil pengubahan anda pada file database .cdb
agar bisa digunakan oleh qmail-scanner. Selain file itu, anda juga dapat
mengubah file /usr/sbin/qmail-scanner-queue.pl untuk melakukan beberapa penyesuaian dengan sistem anda. Keterangan
lengkap mengenai file ini dapat anda tanyakan pada Mbah Google.
Sekarang, yang perlu kita lakukan adalah mengubah jalannya
email agar "mampir" terlebih dahulu ke puskesmas untuk periksa virus
sebelum diberangkatkan ke penerima email. Secara default, sebelum email
dikirimkan ke penerima email itu akan masuk ke daftar antrian. Scanning virus
dilakukan tepat sebelum email masuk ke dalam antrian. Pada saat itulah
qmail-scanner melakukan tugasnya. Untuk itu, kita harus menyebutkan email dari
network mana saja yang harus diperiksa oleh qmail-scanner.
Untuk keperluan itu kita melakukannya dengan memberikan variabel
global pada suatu koneksi tertentu, yang mana tugas ini dilakukan oleh
TCPSERVER. Variabel yang dibutuhkan adalah QMAILQUEUE. Bila pada
awalnya isi /etc/tcp.smtp anda seperti:
127.0.0.1:allow,RELAYCLIENT=""
192.168.10.:allow,RELAYCLIENT=""
:allow
(dengan asumsi 192.168.10.x adalah network anda) dan anda ingin memeriksa semua email yang masuk dari luar network
anda, anda dapat mengubah file itu menjadi:
127.0.0.1:allow,RELAYCLIENT=""
192.168.10.:allow,RELAYCLIENT=""
:allow,QMAILQUEUE="/usr/sbin/qmail-scanner-queue.pl"
Bila anda ingin memeriksa semua email yang melewati
mailserver anda, anda dapat menambahkan QMAILQUEUE="/usr/sbin/qmail-scanner-queue.pl" pada semua network yang disebutkan. Jangan lupa bahwa anda harus
kembali menggenerate database qmail-scanner dengan perintah di bawah.
root:~#
/usr/sbin/qmail-scanner-queue.pl -g
6. Aktifasi SMTP Auth
SMTP Auth adalah salah satu cara untuk menjaga agar
mailserver anda tidak digunakan secara ilegal oleh pihak-pihak yang
tidak bertanggung jawab. Untuk itu, setiap koneksi yang akan mengirimkan email
ke luar domain yang disebutkan di /var/qmail/control/rcpthosts harus menyediakan username dan password. Bila username dan password
yang disebutkan benar, maka email akan diteruskan kepada penerima, bila tidak
maka koneksi akan ditutup. Email yang menuju ke alamat lokal tidak perlu
divalidasi terlebih dahulu.
Cara kerja SMTP Auth adalah dengan men-set variabel RELAYCLIENT="" pada tiap koneksi yang berhasil authentikasi. Dengan adanya
variabel itu, maka suatu koneksi dapat mengirimkan email ke mana saja. Karena
itu, bila anda ingin semua koneksi dari network 192.168.10. harus login
terlebih dahulu, maka anda harus menghilangkan RELAYCLIENT="" dari file /etc/tcp.smtp sehingga kini file itu berisi:
127.0.0.1:allow,RELAYCLIENT=""
192.168.10.:allow
:allow,QMAILQUEUE="/usr/sbin/qmail-scanner-queue.pl"
Sekarang anda harus mengubah file /etc/init.d/qmail. Carilah perintah yang menjalankan qmail-smtpd dan ubahlah
(beri parameter) hingga menjadi:
/usr/sbin/qmail-smtpd
`hostname -f` /usr/bin/checkpassword /bin/true 2>&1 .......(dst)
dan restart qmail. Pastikan juga untuk menjalankan
root:~# chmod 4755
/usr/bin/checkpassword
agar checkpassword dapat melakukan authentikasi
dengan baik.
Untuk mencobanya, kita perlu menyediakan satu username dan
password yang valid. Misalkan username kita adalah admin@exp1.its.ac.id
dan passwordnya adalah rahasia. Kita akan mencoba username dan password
itu untuk mengirimkan email ke luar network kita. Sebelumnya anda harus
mengencode kedua string di atas dengan algoritma "base64" yang dapat
dibuat dengan script perl kecil seperti di bawah ini. (thx buat mas asfik).
use MIME::Base64;
print ('Username : ');
print encode_base64('admin@exp1.its.ac.id');
print ('Password : ');
print encode_base64('rahasia');
Misalkan nama script di atas adalah pass.pl, maka bila
dieksekusi akan seperti ini:
root:~# perl
pass.pl
Username : YWRtaW5AZG9tYWlua3UuYml6
Password : cmFoYXNpYQ==
Sekarang kita tinggal mencoba untuk mengirimkan email.
root:~# telnet
localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 exp1.its.ac.id ESMTP
AUTH LOGIN
334 VXNlcm5hbWU6
YWRtaW5AZG9tYWlua3UuYml6
334 UGFzc3dvcmQ6
cmFoYXNpYQ==
235 ok, go ahead (#2.0.0)
Bila anda mendapat jawaban seperti di atas, maka
authentikasi telah berjalan dengan baik. Namun bila anda mendapatkan jawaban 535 authorization failed (#5.7.0) itu berarti anda harus memeriksa kembali apakah ada yang kurang
dari proses instalasi anda.
7. Instalasi Webmail (SquirrelMail)
Instalasi SquirrelMail membutuhkan webserver apache,
dan php4 yang mendukung IMAP. Anda tinggal mendownload dari
http://www.squirrelmail.org dan kemudian mengekstrak pada direktori /var/www dan
menjalankan script config.pl yang disertakan untuk mengkonfigurasi webmail anda.
Selain mendownload sendiri, anda juga dapat menginstall
squirrelmail dari Debian dengan perintah:
root:~# apt-get
install squirrelmail
dan menjalankan script /etc/squirrelmail/conf.pl untuk menyesuaikan setting squirrelmail dengan mailserver yang ada.
8. Referensi
1.
http://www.jerfu.com/toaster/FullToaster_1.0.6.html
2. http://qmail.org
3. http://google.com and all it's derivatives
4. milis tanya-jawab@linux.or.id
5. tulisan2 mas asfik yang banyak banget
6. dan masi banyak lagi :)