Archive for the ‘SpamAssassin’ Category

h1

Menggunakan SpamAssassin

November 8, 2007

SpamAssassin (SA) adalah tool pendeteksi spam yang popular dan aktif dikembangkan saat ini. Banyak pengguna melaporkan tingkat pendeteksian amat baik, yaitu hingga 95% ke atas, sementara tingkat salah deteksi (false positive) nyaris tak ada. Saking popularnya, kini SA dipakai/didukung di berbagai software email lainnya. PerlMX misalnya, tool pemfilter email komersil buatan ActiveState, menggunakan SA. SA juga mulai dipakai oleh omail, qmail-scanner, dsb.

Pendekatan yang digunakan SA bersifat multistrategi, yaitu menggunakan banyak rule (lihat www.spamassassin.org/tests.html). Ada rule yang menganalisis keberadaan/ketidakberadaan header tertentu. Ada rule yang mencari frase-frase tertentu di bodi yang biasanya digunakan spam. Ada juga rule yang menggunakan tool lain seperti Razor, DCC, atau RBL. Satu rule yang match saja tidak langsung menyimpulkan sebuah mail menjadi spam atau bukan spam; melainkan, setiap match pada rule akan meningkatkan/mengurangi sejumlah poin (mis: antara -2,5 hingga +4,5). Semakin banyak poin yang terkumpul, berarti semakin besar peluang email tersebut spam. Jika mencapai poin tertentu (mis: 5,0), sebuah email akan dikategorikan spam.

Beberapa Keuntungan Menggunakan SA

Pertama, karena rule terus dikembangkan/diupdate baik kode maupun pembobotan poinnya, maka rule default yang hadir bersama distribusi SA sudah cukup klop untuk menangkap spam-spam yang berkeliaran saat ini sementara menghasilkan tingkat false positive yang serendah mungkin. Artinya, cukup instal SA lalu email-email Anda akan bisa disortir dengan baik. Ini berbeda dengan tool-tool yang menggunakan cara statistik konten. Agar tool tersebut menjadi `pandai’, dibutuhkan dulu sejumlah sampel spam-spam yang telah kita terima sebelumnya.

Kedua, Anda dapat menambah rule baru atau mengubah rule-rule yang telah ada. Sebagian besar rule disimpan dalam file teks (/usr/share/spamassassin/rules/*.cf). Rule lain yang lebih kompleks ditulis dalam kode Perl. Artinya, SA fleksibel dan dapat Anda modifikasi agar lebih sesuai menangkap spam-spam Anda. Namun jika tidak ingin pusing, cukup update SA secara berkala. Para developernya masih terus mengupdate rule-rule default.

Ketiga, SA cukup mudah digunakan. Berupa modul Perl, namun menyediakan binary bahkan daemon. Cukup masukkan email Anda lewat STDIN atau soket dan SA akan mengeluarkan email yang telah diberi header tambahan seperti X-Spam-Status, X-Spam-Flag, dsb. Dari keberadaan dan nilai header-header tersebut, dapat diketahui hasil pendeteksian. SA dapat dipakai bersama Sendmail, Qmail, dan MTA lain. Karena SA tidak melakukan pemfilteran sendiri, maka SA pun dapat dipakai bersama procmail atau tool filtering yang ada di MUA. Bahkan, ada yang sudah membuat plugin SA untuk Eudora. SA ditulis dalam Perl dan cukup portabel.

Kerugian Menggunakan SA

Kerugian utama menggunakan SA—atau bahkan tool pendeteksian lain secara umum—adalah meningkatnya beban server. Karena ditulis dalam Perl, overhead untuk startup program cukup besar karena harus mengkompile ulang ribuan baris modul Perl (bandingkan dengan program CGI Perl yang juga harus difork dan dikompile ulang di setiap request). Distribusi SA memang menyertakan versi daemon + client C yang overheadnya rendah, namun untuk memakai daemon ini secara safe diperlukan restriksi tertentu (misalnya, tidak bisa membaca konfigurasi per-user maupun melakukan whitelisting). Sebuah email dapat dideteksi rata-rata dalam waktu di bawah 0,5–1 detik (menggunakan /usr/bin/spamc) hingga beberapa detik (menggunakan /usr/bin/spamassassin). Kalikan itu dengan ribuan email yang masuk ke server Anda setiap hari (atau jam!)nya. Salah satu solusinya adalah hanya SA untuk user atau alamat email tertentu saja.

Instalasi SA

SA dapat dipakai di Unix maupun Windows (dengan sedikit modifikasi). Juga dapat disandingkan dengan berbagai MTA. Namun pembahasan di sini hanya akan menyinggung SA di Linux bersama Qmail, procmail, dan VmailMgr.

Karena berupa modul Perl, instalasi mudah. Anda dapat menggunakan CPAN:

$ perl -MCPAN -eshell
cpan> install Mail::SpamAssassin

Atau Anda dapat menginstalnya dari file instalasi lokal. Ambil tarball SA, ekstrak, lalu configure dan make seperti biasa:

$ tar xfz Mail-SpamAssassin-2.41.tar.gz
$ cd Mail-SpamAssassin-2.41
$ ./configure
$ make
# make install

Langkah di atas akan menginstal modul Mail::SpamAssassin::* di /usr/lib/perl5, dan binary di /usr/bin/spamassassin, /usr/bin/spamc, dan /usr/bin/spamd. Kalau Anda tidak memiliki akses root di server, installah SA ke direktori di bawah home Anda, misalnya di /home/steven/usr.

$ mkdir -p /home/steven/usr && cd /home/steven/usr
$ tar xfz Mail-SpamAssassin-2.41.tar.gz
$ cd Mail-SpamAssassin-2.41
$ perl Makefile.PL PREFIX=/home/steven/usr
$ make
# make install

Binary nanti akan terinstal di /home/steven/usr/bin/.

Memfilter Spam Ke Mailbox Terpisah (procmail)

Setelah SA terinstal, Anda bisa mulai menggunakannya. Ingat bahwa tugas SA hanyalah mendeteksi spam. Email yang masuk ke STDIN /usr/bin/spamassassin akan dikeluarkan kembali ke STDOUT dan ditambahi header X-Spam-*. Untuk memfilter berdasarkan keberadaan header ini, bisa dilakukan dengan program lain seperti procmail.

Untuk memasang SA di procmail, cukup tambahkan di .procmailrc:

:0fw
|/usr/bin/spamassassin

Bila perlu ganti /usr/bin/spamassassin dengan path yang sebenarnya. Maka semua email akan terlebih dahulu dipipe ke SA. Selanjutnya, filter berdasarkan header X-Spam-Status, misalnya:

:0:
* ^X-Spam-Status: Yes
spambox

Artinya, email yang telah disimpulkan sebagai spam akan masuk ke mbox spambox.

Membounce Spam (.qmail)

Jika Anda ingin semua spam tidak perlu masuk mailbox sama sekali, maka tambahkan di baris awal .qmail Anda:

|/usr/bin/spamassassin -e 100 2>&1 >/dev/null

Artinya, jika ternyata email adalah spam, kembalikan exitcode 100. Nilai 100 berarti kesalahan delivery fatal bagi qmail-local, sehingga email akan dibounce. Jika bukan spam, email akan diproses di baris-baris selanjutnya. Bisa juga Anda tulis begini (semua satu baris) untuk memberikan pesan yang lebih jelas:

|/usr/bin/bouncesaying "Sorry, your email is detected as spam" +
 /usr/bin/except /usr/bin/spamassassin -e 2>&1 >/dev/null

Memfilter Spam (VmailMgr)

Misalnya Anda menggunakan VMailMgr dan ingin memfilter email spam ke mailbox terpisah, katakanlah ./users/spambox. Maka pertama-tama, buatlah mail user spambox:

$ vadduser spambox

Lalu ubahlah .qmail-default Anda agar menjadi (total 2 baris):

|/usr/bin/condredirect spambox@domain.com +
 /usr/bin/except /usr/bin/spamassassin -e 2>&1 >/dev/null
|/usr/bin/vdeliver

Ganti spambox@domain.com dengan alamat yang benar. Terakhir, buat juga .qmail-spambox yang isinya:

|/usr/bin/vdeliver

agar spam tidak perlu melewati SA lagi. Jika tidak, akan terjadi looping sehingga spam Anda tidak akan sampai ke mailbox yang diinginkan.

Menandai Spam Saja (VMailMgr)

Jika di sisi server Anda hanya ingin menambahkan tag-tag X-Spam-* dan memfilter email di sisi klien (misalnya, dengan skrip mozfilter.rb seperti yang dijelaskan di artikel “Tutorial Regex, Bagian 5”) maka ubahlah .qmail-default Anda agar berbunyi:

|/usr/bin/spamassassin | /usr/bin/filepipe /usr/bin/vdeliver

Selain menambahkan header X-Spam-*, jika sebuah email dinyatakan spam SA juga akan mengawali subjek email dengan *****SPAM***** dan menambahkan keterangan di awal bodi, sehingga melihat maupun memfilternya cukuplah mudah.

Anda membutuhkan program filepipe yang dapat diambil di www.nougen.com/test/filepipe.tgz (atau dari CD). Taruhlah binarynya di /usr/bin/ misalnya.

Menggunakan spamc/spamd

Pasangan spamc/spamd bisa dipakai untuk menggantikan /usr/bin/spamassassin karena lebih efisien. Caranya, pertama-tama jalankan daemon spamd misalnya di port 10000 sebagai user nobody:

# spamd -u nobody -p 10000 -x -d

Selanjutnya, gantilah semua pemanggilan ke /usr/bin/spamassassin menjadi /usr/bin/spamc di .qmail atau .procmailrc Anda. Contoh:

|/usr/bin/spamc -p 10000 | /usr/bin/filepipe /usr/bin/vdeliver

Penutup

SA adalah tool yang cukup fleksibel. Untuk mengetahui konfigurasi SA (seperti mengatur pembobotan), memakai SA bersama Razor atau RBL, atau melakukan reporting spam otomatis, silakan lihat lebih jauh dokumentasi SA. Selamat mencoba.