I. Pendahuluan
Pada artikel sebelumnya, kita sudah membuat mail server postfix di Centos 5.4. Namun, sebenarnya itu belum sempurna karena mail server itu belum dilengkapi dengan antivirus dan anti spam. Maka dari itu, artikel ini akan menjelaskan bagaimana cara menginstal antivirus dan antispam pada postfix.
II. Langkah-Langkah
1. Instal Clamav
Clamav merupakan software anti virus yang digunakan untuk UNIX. Software ini didesain untuk men-scan email dan terintegrasi dengan mail server. Paket clamav menyediakan sebuah daemon yang flexible dan scalable multi threaded, sebuah comman di line scanner, dan sebuah tool untuk update otomatis via internet. Clamav dapat terintegrasi dengan baik di Mail Scanner. Berikut adalah langkah-langkah menginstalnya:
# yum -y install yum-priorities
# wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm
# rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm
# yum -y install clamav clamd unrar
Setelah menginstal antivirus, kita akan mengkonfigurasinya dengan cara:
# vi /etc/sysconfig/i18n
Rubah LANG="en_US.UTF-8" menjadi LANG="en_US"
2. Install Mail Scanner
Mail scanner merupakan software open source yang digunakan untuk men-scan seluruh email dari virus-virus, spam dan serangan-serangan sekurity yang lain. Mailscanner mengkombinasikan program-program secara bersama-sama untuk menghindari spam dan memblok virus-virus. Berikut adalah langkah-langkahnya:
# wget http://www.mailscanner.info/files/4/rpm/MailScanner-4.78.17-1.rpm.tar.gz
# tar -zxvf MailScanner-4.78.17-1.rpm.tar.gz
# cd MailScanner-4.78.17-1
# ./install.sh
Setelah itu kita mengkonfigurasi mailscanner seperti berikut:
# cd /etc/MailScanner/
# mv MailScanner.conf MailScanner.conf.orig
# cat MailScanner.conf.orig | egrep ^[^#] > MailScanner.conf
Rubah file MailScanner.conf menjadi:
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Incoming Work Group = clamav
Incoming Work Permissions = 0640
Virus Scanners = clamd
Clamd Socket = /tmp/clamd.socket
Clamd Lock File = /var/lock/subsys/clamd
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
Quarantine User = root
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Whole Message = yes
Quarantine Whole Message As Queue Files = no
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
Spam Actions = store
High Scoring Spam Actions = store
Always Looked Up Last = &MailWatchLogging
Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Filename Rules = %etc-dir%/filename.rules
Filetype Rules = %etc-dir%/filetype.rules
Dangerous Content Scanning = %rules-dir%/content.scanning.rules
# mkdir /var/spool/MailScanner/spamassassin/
# chown -R postfix:postfix /var/spool/MailScanner/
3. Install SpamAssassin
Spamassassin merupakan software open source yang digunakan untuk memfilter sebuah email supaya mengetahui apakah sebuah email termasuk kategori spam atau tidak. SpamAssassin merupakan program yang flexibel, mudah untuk di extend. MailScanner merekomendasikan untuk menginstal spamassassin dari .tar.gz atau melalui perl shell. Di artikel ini menggunakan perl shell. Namun sebelumnya cek terlebih dahulu apakah spamassassin sudah ada dalam sistem kita atau tidak dengan cara:
# rpm -qa | grep spamassassin
Jika memang sudah ada, hilangkan spamassassin dengan cara:
# yum remove spamassassin
Kemudian kita instal spamassassin dengan cara:
# perl -MCPAN -e shell
tulis no ketika ditanya untuk manual configuration.
cpan> install Net::DNS
cpan> install Mail::SpamAssassin
cpan> quit
Jika ada error seperti berikut:
cpan> install Net::DNS
Please check, if the URLs I found in your configuration file () are valid.
The urllist can be edited. E.g. with 'o conf urllist push ftp://myurl/'
Could not fetch modules/03modlist.data.gz
Going to write /root/.cpan/Metadata
Warning: Cannot install Net:DNS, don't know what it is.
Try the command
i /Net:DNS/
to find objects with matching identifiers.
cpan> install Mail::SpamAssassin
Warning: Cannot install Mail::SpamAssassin, don't know what it is.
Try the command
i /Mail::SpamAssassin/ to find objects with matching identifiers.
Maka penulis melakukan hal-hal berikut ini (Masih dalam CPAN prompt):
cpan> o conf urllist
cpan> o conf urllist shift
Pilih server CPAN di http://www.cpan.org/SITES.html. Karena penulis tinggal di Indonesia, maka penulis memilih ftp://cermin.lipi.go.id/pub/CPAN/
cpan> o conf urllist push ftp://cermin.lipi.go.id/pub/CPAN/
cpan> o conf urllist
cpan> o conf commit
cpan> exit
# perl -MCPAN -e shell
cpan> install Bundle::CPAN
cpan> install Net::DNS
cpan> install NetAddr::IP
cpan> install Mail::SPF
cpan> install IP::Country
cpan> install Razor2
cpan> install Net::Ident
cpan> install IO::Socket::INET6
cpan> install Mail::DKIM
cpan> install Encode::Detect
cpan> install Mail::SpamAssassin
Dengan demikian, SpamAssassin sudah terinstal dalam sistem.
4. Konfigurasi Postfix
Kemudian, kita mengkonfigurasi postfix agar terintegrasi antara postfix dengan antivirus. Berikut adalah langkah-langkahnya:
# touch /etc/postfix/header_checks
# echo "/^Received:/ HOLD" > /etc/postfix/header_checks
# vi /etc/postfix/main.cf
Tambahkan baris seperti ini:
header_checks = regexp:/etc/postfix/header_checks
Jalankan perintah-perintah berikut:
# postfix stop
# chkconfig --level 345 clamd on
# /etc/init.d/clamd start
5. Instal Mailwatch
Mailwatch merupakan software untuk menampilkan Mailscanner yang dapat diakses melalui web-based. Berikut adalah langkah-langkahnya:
# yum -y install php-gd
# cd /tmp/
# wget http://sourceforge.net/projects/mailwatch/files/mailwatch/1.0.4/mailwatch-1.0.4.tar.gz/download
# tar -zxvf mailwatch-1.0.4.tar.gz
# mysql -p < /tmp/mailwatch-1.0.4/create.sql
Troubleshoot:
Ketika menuliskan perintah di atas, ada error seperti berikut:
ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-------------------------------------------------------
CREATE DATABASE /*' at line 1
Solusi:
Hapus line 4 yang hanya berisi ------------------- kemudian ketikkan perintah semula dan seharusnya sudah tidak ada masalah lagi.
6. Konfigurasi mysql
#mysql -u root -p
mysql>GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'password';
mysql>FLUSH PRIVILEGES;
mysql>quit;
7. Konfigurasi Mailwatch
# vi /tmp/mailwatch-1.0.4/MailWatch.pm
rubah di dalam file tersebut menjadi seperti di bawah ini:
my($db_user) = 'mailwatch';
my($db_pass) = 'password';
# mv /tmp/mailwatch-1.0.4/MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions/
# cd /tmp/mailwatch-1.0.4/; mv mailscanner/ /var/www/html/
# mkdir /var/www/html/mailscanner/temp/
# chown -R apache:apache /var/www/html/mailscanner/
Kemudian lakukan perintah-perintah berikut:
# chown root:apache /var/www/html/mailscanner/images/ /var/www/html/mailscanner/images/cache/
# chmod ug+rwx /var/www/html/mailscanner/images/ /var/www/html/mailscanner/images/cache/
# chmod ug+rw /var/www/html/mailscanner/temp/
# vi /var/www/html/mailscanner/conf.php.example
define(DB_USER, 'mailwatch');
define(DB_PASS, 'password');
define(QUARANTINE_USE_FLAG, true);
# mv /var/www/html/mailscanner/conf.php.example /var/www/html/mailscanner/conf.php
# vi /tmp/mailwatch-1.0.4/SQLBlackWhiteList.pm Rubah menjadi: my($db_user) = 'mailwatch'; my($db_pass) = 'password';
# mv /tmp/mailwatch-1.0.4/SQLBlackWhiteList.pm /usr/lib/MailScanner/MailScanner/CustomFunctions/
# mysql mailscanner -u mailwatch -p
Masukkan passwordnya:
> INSERT INTO users VALUES ('admin',md5('password'),'admin','A','0','0','0','0','0');
> \q
8. Konfigurasi Spamassassin
# vi /etc/MailScanner/spam.assassin.prefs.conf
Rubah menjadi:
bayes_path /var/spool/MailScanner/spamassassin/bayes
bayes_file_mode 0660
Kemudian lakukan perintah-perintah berikut:
# chown postfix:apache /var/spool/MailScanner/spamassassin/ /var/spool/MailScanner/spamassassin/bayes/
# chmod g+rws /var/spool/MailScanner/spamassassin/
# chmod g+rw /var/spool/MailScanner/spamassassin/bayes_*
9. Tes Mail Scanner
# spamassassin -D -p /etc/MailScanner/spam.assassin.prefs.conf --lint
Dan seharusnya ada tampilan seperti berikut:

10. Konfigurasi GeoIP
Agar database geoip terupdate di web interface mailwatch, maka lakukan langkah-langkah berikut ini:
# vi /var/www/html/mailscanner/geoip_update.php
Rubah:
dbquery("LOAD DATA INFILE '".$base.'/'.$file2."' INTO TABLE geoip_country FIELDS TERMINATED BY ',' ENCLOSED BY '\"'");
menjadi:
dbquery("LOAD DATA LOCAL INFILE '".$base.'/'.$file2."' INTO TABLE geoip_country FIELDS TERMINATED BY ',' ENCLOSED BY '\"'");
# vi /etc/cron.daily/clean.quarantine
Cek bahwa di file tersebut nilai disabled=1 ==> $disabled = 1;
# vi /tmp/mailwatch-1.0.4/tools/db_clean.php
Rubah menjadi seperti berikut: (Hapus huruf n)==> #!/usr/bin/php -q
# cp /tmp/mailwatch-1.0.4/tools/quarantine_maint.php /usr/local/bin/
# cp /tmp/mailwatch-1.0.4/tools/db_clean.php /usr/local/bin/
# chmod +x /usr/local/bin/quarantine_maint.php /usr/local/bin/db_clean.php
# echo "/usr/local/bin/quarantine_maint.php --clean" > /etc/cron.daily/mailwatch_quarantine_maint.sh
# echo "/usr/local/bin/db_clean.php" > /etc/cron.daily/mailwatch_db_clean.sh
# chmod +x /etc/cron.daily/mailwatch*
# cp /tmp/mailwatch-1.0.4/mailq.php /usr/local/bin/
# crontab -e
0-59 * * * * /usr/local/bin/mailq.php
11. Konfigurasi whitelist
Masuk ke mysql sebagai mailwatch. Lalu pilih database mailscanner dan tabel whitelist. Pada tabel tersebut, masukkan nilai-nilai sebagai berikut:
to_address = default
to_domain = default
from_address = 127.0.0.1
Untuk lebih mudahnya, lebih baik menggunakan phpmyadmin, sehingga akan terlihat seperti berikut:

12. Konfigurasi MailScanner
Berikutnya, kita akan mengkonfigurasi mailscanner. Perlu diperhatikan bahwa untuk memisahkan sebuah skrip dalam satu baris harus menggunakan Tab. Berikut adalah langkah-langkahnya:
# cd /etc/MailScanner/
# touch filename.rules filetype.rules filename.rules.allowall.conf filetype.rules.allowall.conf rules/content.scanning.rules
# vi filename.rules
From: 127.0.0.1 /etc/MailScanner/filename.rules.allowall.conf
FromOrTo: default /etc/MailScanner/filename.rules.conf
# vi filetype.rules
From: 127.0.0.1 /etc/MailScanner/filetype.rules.allowall.conf
FromOrTo: default /etc/MailScanner/filetype.rules.conf
# vi filename.rules.allowall.conf
allow .* - -
# vi filetype.rules.allowall.conf
allow .* - -
# vi rules/content.scanning.rules
From: 127.0.0.1 no
FromOrTo: default yes
# chown -R postfix:apache /var/spool/MailScanner/quarantine/
# chmod g+rws /var/spool/MailScanner/quarantine/
III. Menyalakan MailScanner
# chkconfig --level 2345 MailScanner on
# service MailScanner start && tail -f /var/log/maillog
Jika tidak ada error, maka akan terlihat seperti berikut:

Harus diingat bahwa perintah untuk menyalakan dan mematikan postfix sudah berubah. Dahulu kita menggunakan postfix start untuk menyalakan dan postfix stop untuk mematikan. Sekarang kita akan menggunakan perintah service MailScanner start untuk menyalan postfix, service MailScanner stop untuk mematikan postfix, dan service MailScanner restart untuk merestart postfix.
Sekarang buka browser, lalu ketikkan:
http://alamat_ip/mailscanner
Lalu masukkan username dan password. Dalam hal ini admin dan password, maka akan terlihat gambar seperti berikut:
Yang harus dilakukan pertama kali adalah kita harus mengupdate spamassassin rule dan database geoip dengan cara menekan item Tools/Links. Kemudian setelah itu pilih item Update Spamassassin Rule Descriptions untuk mengupdate spamassassin rule dan jika sudah selesai maka pilih item Update GeoIP Database untuk mengupdate database GeoIP.
Dengan demikian, kita sudah berhasil menginstal antivirus dan antispam pada postfix di ventos 5.4.
IV. Lain-Lain
Pada saat penulis melihat log untuk mail server yang ada di /var/log/maillog terlihat ada tulisan sebagai berikut:
mail MailScanner[2994]: Cannot find Socket (/tmp/clamd.socket) Exiting!
Ternyata setelah mencari jawabannya di berbagai forum diskusi, hal ini diakibatkan kesalahan pada saat mengkonfigurasi MailScanner.conf pada bagian Clamd Socket. Yang tertulis di sana adalah /tmp/clamd.socket. Seharusnya tertulis /var/run/clamav/clamd.sock sebagaimana yang ada di dalam file clamd.conf di folder /etc. Setelah itu restart MailScanner dan seharusnya tulisan Cannot find Socket (/tmp/clamd.socket) Exiting! sudah tidak ada dalam log mail server.
Referensi:
http://adityo.blog.binusian.org/
http://www.howtoforge.com/
Berbagai Forum Diskusi
22 Dzulqa'dah 1430 H
10 November 2009 M
+ 2
+ 3
Dear Accank, Hal itu tergantung dari...
Dear Ronald, Terima kasih atas saran...
Untuk pengguna debian 6.0 (squeeze) d...
mas sy ingin bertanya,dari semua netw...
Dear Syukran, Mungkin hadits ini bis...