amavis,clamav dan postfix admin pada email server postfix

 Amavisd

Amavisd-New adalah content filter yang ditulis menggunakan perl (Net::Server) dan berjalan secara daemonizedsehingga memungkinkan penanganan lalu lintas email besar tanpa harus banyak memakan resource komputer yang tersedia. Selain itu, amavisd-new dapat menerima email yang akan diperiksa melalui SMTP sehingga dapat dipadukan dengan mudah dengan hampir semua MTA yang ada.

Dalam memeriksa email, amavisd-new menyimpan hashtiap email yang masuk. Bila hash email yang masuk belum tersimpan maka amavis akan memeriksa email tersebut secara utuh. Bila hashnya sudah ditemukan maka email tersebut tidak akan diperiksa, dan keputusan terima/tolaknya diambil sesuai dengan hasil hash yang sudah ada. Bila sebelumnya email dengan jenis hash itu didrop, maka email baru ini akan didrop, dan sebaliknya.

Amavisd-New memerlukan beberapa modul perl yaitu:

  1. Archive::Tar

  2. Archive::Zip

  3. Compress::Zlib

  4. Convert::TNEF

  5. Convert::UUlib

  6. MIME::Base64

  7. MIME::Parser

  8. Mail::Internet

  9. Net::Server

  10. Net::SMTP

  11. Digest::MD5

  12. IO::Stringy

  13. Time::HiRes

  14. Unix::Syslog

Selain itu amavisd-new juga dapat menggunakan beberapa program kompresi, seperti unarj, unzip, unrar, dan sejenisnya digunakan untuk memeriksa virus yang dibawa oleh attachment yang dikompres.

Instalasi amavisd

Aplikasi amavisd-new membutuhkan dukungan modul perl. Secara default instaler TSL 2.0 tidak memberikan dukungan kepada modul-modul ini. Jadi harus mengambil secara langsung dari internet.

Amavisd-New memerlukan beberapa modul perl jadi cek terlebih dahulu apakah perl-devel dan modul – modul yang dibutuhkan sudah terinstall disistem.

[root@bugihlamo]# rpm -qa | grep perl

perl-5.8.0-10tr

perl-devel-5.8.0-10tr

module Archive::Zip membutuhkan binary zip dan unzip, pastikan sudah terinstall sebelumnya. bila tidak pada waktu make test akan terlihat pesan error
warning: unzip -t doesn’t seem to work,…

Cara yang paling mudah mendownload dan instalasi modul yang dibutuhkan adalah dengan menggunakan shell dari program perl dan konfigurasikan dengan sistem anda, bila shell perl sudah siap, maka mulailah mendownlot (serta instalasi) modul perl dengan perintah perintah :

[root@bugihlamo]# perl -MCPAN -e shell ‘install Archive::Tar’

Ulangi perintah diatas sampai semua modul perl terinstall

Sekarang kita akana memulai instalasi amavis.

  1. Ambil/download amavisd-new terbaru di

#wget –c http://www.ijs.si/software/amavisd/amavisd-new- /s

  1. lalu extrak dan masuk kedalam direktorynya

[root@bugihlamo]# tar -zxvf amavisd-new-20030616-p6.tar.gz

[root@bugihlamo]# cd amavisd-new-20030616

  1. Kopikan script amavisd ke /usr/local/sbin dan set ijin akses

[root@bugihlamo# amavisd-new-20030616]# cp amavisd /usr/local/sbin/

  1. Siapkan direktory untuk amavisd, disini saya pilih user yang menjalankan amavis sama dengan user clamav, agar tidak bermasalah dengan daemon clamd.

[root amavisd-new-20030616]# mkdir /amavis

[root amavisd-new-20030616]# chown clamav:clamav /amavis/.

[root amavisd-new-20030616]# chmod 750 /amavis/

[root amavisd-new-20030616]# mkdir /var/virusmails

[rootamvidd-new-20030616]# chown clamav.clamav var/virusmails

[root amavisd-new-20030616]# chown root

/usr/local/sbin/amavisd

[root amavisd-new-20030616]# chmod 755 /usr/local/sbin/amavisd

  1. Kopikan file configurasi

[root amavisd-new-20030616]# cp amavisd.conf /etc/

[root amavisd-new-20030616]# chown root /etc/amavisd.conf

[root amavisd-new-20030616]# chmod 644 /etc/amavisd.conf

  1. .Edit beberapa bagian amavisd.conf dan edit seperti contoh :

[root amavisd-new-20030616]# vim /etc/amavisd.con

hilangkan tanda #

$mydomain =’bugihlamo.com’; (sesuaikan dengan domain anda)

$daemon_user =’clamav’;

$daemon_group =’clamav’;

$max_servers = 2;

@bypass_spam_checks_acl = qw( . ); hilangkan tanda # untuk

mematikan dukungan spamassin

@local_domains_acl = ( “.$mydomain” );

@inet_acl = qw( 127.0.0.1 );

$LOGFILE = “$MYHOME/amavis.log”;

$virus_admin = ‘virus-admin@bugihlamo.com’;

$spam_admin = ‘virus-admin@bugihlamo.com’;

$QUARANTINEDIR = ‘/var/virusmails’;

#$unix_socketname = “$MYHOME/amavisd.sock”;matikan baris

203, postfix tdk pakai sock helper hilangkan tanda #, untuk
dukungan daemon clamd, agar proses scanning lebih cepat

['Clam Antivirus-clamd',
    &ask_daemon, ["CONTSCAN {}n", '/var/amavis/clamd'],

qr/bOK$/, qr/bFOUND$/,

qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],


terlihat amavisd akan memakai local socket
/var/amavis/clamd,maka ubah /usr/local/etc/clamd.confsesuaikan dengan local socket yang diperlukan. Selain itu matikan semua antivirus yang tidak dipakai agar waktu startup amavisd bisa lebih cepat

  1. Bila file amavisd.conf dan clamd.conf sudah diedit dan disesuaikan, maka dicoba dengan test

[root amavisd-new-20030616]# /usr/local/sbin/amavisd debug ..starting. amavisd at mizuno.redkurawa.com..

..Perl version 5.008

..Module Amavis::Conf 1.15

..Net::Server: Beginning prefork (2 processes)

..Net::Server: Starting “2″ children

..Net::Server: Child Preforked (3061)

..Net::Server: Parent ready for children.

..Net::Server: Child Preforked (3062)

buka console/terminal baru, test port 10024 dan user yang menjalankan amavisd

[root@PPST-13 amavisd-new-20030616]# netstat -tpan | grep 10024

tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 3063/perl

  1. Agar bisa langsung start pada saat server berjalan kopikan file init script dari amavis ke init.d

[root amavisd-new-20030616# cp amavisd_init.sh /etc/init.d/amavisd

[root amavisd-new-20030616# chmod 755 /etc/init.d/amavisd

[root]# /etc/init.d/amavisd start

Starting amavisd: [ OK ]

Konfigurasi pada Postfix

Setelah selesai mengkonfigurasi amavisd-new, sekarang kita harus mengkonfigurasi postfix untuk menggunakan amavisd-new sebagai content-filter. Konfigurasi yang perlu dilakukan terdapat pada file main.cfdan master.cf.

A. main.cf

# vim /etc/postfix/main.cf

Tambahkan baris di bawah ini untuk menentukan ke mana postfix harus mengirimkan email yang akan diperiksa.


content_filter = smtp-amavis:[127.0.0.1]:10024             smtp-amavis_destination_concurrency_limit=10

B. master.cf

# vim /etc/postfix/master.cf

Tambahkan beberapa baris di bawah ini agar service “smtp-amavis” dapat digunakan oleh postfix.

smtp-amavis unix - - n - 2 smtp
       -o smtp_data_done_timeout=1200
       -o disable_dns_lookups=yes

127.0.0.1:10025 inet n - n - - smtpd

        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks= 192.168.1.0/24 127.0.0.0/8
        -o strict_rfc821_envelopes=yes

Pada baris pertama dapat anda lihat bahwa smtp-amavis dikonfigurasikan untuk dapat menerima dua email sekaligus dalam satu waktu. Angka yang terdapat di sini harus sama dengan angka yang terdapat pada variabel $max_serversyang terdapat pada konfigurasi amavisd-new.

Setelah itu jangan lupa untuk merestart postfix.

# /etc/init.d/postfix restart
Stopping amavisd: [ OK ].

Starting amavisd: [ OK ]

Anda dapat mengujinya dengan mengirimkan file berVirus(sample) yang terdapat pada paket clamav atau dengan telnet

# telnet 127.0.0.1 10024

Trying 127.0.0.1…

Connected to 127.0.0.1.

Escape character is ‘^]’.

220 [127.0.0.1] ESMTP amavisd-new service ready

MAIL FROM:root

250 2.1.0 Sender root OK

RCPT TO:

250 2.1.5 Recipient postmaster OK

DATA

354 End data with .

Subject: virus tes

tekan enter disini 1x

X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

250 2.5.0 Ok, id=00663-01, BOUNCE << respon dari amavis

quit

221 2.0.0 [127.0.0.1] (amavisd) closing transmission channel

Connection closed by foreign host.

Bila percobaan sukses anda akan menerima email warning dari virusalert@domain anda.com.

Installasi Clamav

Paket program yang dibutuhkan untuk instalasi clamav ada tiga yaitu clamav, clamav-daemon, dan clamav-freshclam.

Download, ekstrak dan ganti direktori ke source clam antivirus :


NOTE: sesuaikan dengan versi CLAMAV anda!

# tar -xzvf clamav-0.90.tar.gz

# cd clamav-0.90

Buat user dan group yang akan menjalankan daemon clam anvirus :


 

# groupadd clamav

# useradd -g clamav -s /bin/false -c “Clam AntiVirus” clamav

Lakukan kompilasi dan install :


 

# ./configure

# make

# make install

Pindah file konfigurasi standar dari clam antivirus, karena kita akan mengedit file konfigurasi tersebut :


 

# cd /usr/local/etc/clamd.conf

Editlah file clamd.conf


 

LogFile /var/log/clamav/clamd.log

LogFileUnlock yes

LogFileMaxSize 2M

LogVerbose

LogTime yes

LogClean yes

LogSyslog yes

LogVerbose yes

PidFile /var/run/clamd.pid

DatabaseDirectory /usr/src/clamav-0.90

LocalSocket /var/amavis/clamd

TCPSocket 3310

StreamMaxLength 20M

User clamav

Debug yes

ScanPE yes

ScanOLE2 yes

ScanMail yes

ScanHTML yes

ScanArchive

ArchiveMaxFileSize 15M

ArchiveMaxRecursion 10

ArchiveMaxFiles 1500

ArchiveMaxCompressionRatio 300

ArchiveBlockEncrypted no

ArchiveBlockMax no

Jalankan daemon clam antivirus (clamd ) :


 

# clamd

Periksa apakah daemon tersebut sudah berjalan seperti yang kita inginkan :


 

# ps aux grep clamd

clamav 8989 0.0 4.8 9340 6188 ? S 16:31 0:00 clamd

clamav 8990 0.0 4.8 9340 6188 ? S 16:31 0:00 clamd

clamav 8991 0.0 4.8 9340 6188 ? S 16:31 0:00 clamd

Untuk menjalankan daemon clamd setiap server di reboot :


 

# echo /usr/local/sbin/clamd >> /etc/rc.d/rc.local

Tanpa berpindah dari direktori source clam antivirus, lakukan test dengan cara menscan misalkan, direktori test:


 

# clamscan -r test

Kemudian download update database virus yang paling baru :


 

# freshclam

Jika sudah selesai kemudian kita jalankan daemon proses update database virus tersebut secara otomatis (akan dilaksanakan

pengecekan database virus yang paling baru 2 kali dalam sehari ) :


 

# touch /var/log/clamav/clam-update.log

# chmod 644 /var/log/clamav/clam-update.log

# chown clamav /var/log/clamav/clam-update.log

Jalankan daemonnya (freshclam):


 

    Postfix admin

Requirements:
- Postfix 2.0 atau Lebih tinggi.
- Apache 1.3.27 atau lebih Tinggi
- PHP 4.1 atau lebih Tinggi
- MySQL 3.23.55 atau lebih tinggi

Saya Asumsikan anda sudah menginstal Apache, PHP, dan MySQL pada
system komputer anda. Untuk Selanjutnya mari kita Instal postfix yg support MySQL.

Instalasi postfix admin

Download sourcenya di http://www.high5.net/postfixadmin/
[root]# tar xzvf postfixadmin-2.1.0.tgz

Baca dulu DATABASE_MYSQL.TXT, anda pelu mengubah password yg akan mengakses database anda misal user adalah postfix dan passwordnya adalah ‘ratna’, maka pada bagian ini di edit:
INSERT INTO user (Host, User, Password) VALUES (’localhost’,'postfix’,password(’postfix’));
Menjadi :
INSERT INTO user (Host, User, Password) VALUES (’localhost’,'postfix’,password(’ratna’));
dan :
INSERT INTO user (Host, User, Password) VALUES (’localhost’,'postfixadmin’,password(’postfixadmin’));
Menjadi :
INSERT INTO user (Host, User, Password) VALUES (’localhost’,'postfix’,password(’ratna));

Kemudian anda save ,setelah itu kita buat databasenya
[root postfixadmin-2.1.0# mysql -u root < DATABASE_MYSQL.TXT
Enter password:

untuk memastikan kalo databasenya sudah ada kita coba liat databasenya
[root] # /usr/bin/mysql -u postfix -p postfix
Enter password:

Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1439 to server version: 3.23.58-kepet-log
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.

mysql> show tables;
+——————-+
| Tables_in_postfix |
+——————-+
| admin |
| alias |
| domain |
| domain_admins |
| log |
| mailbox |
| vacation |
+——————-+
7 rows in set (0.04 sec)

mysql> desc admin;
+———-+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+————–+——+—–+———————+——-+
| username | varchar(255) | | PRI | | |
| password | varchar(255) | | | | |
| created | datetime | | | 0000-00-00 00:00:00 | |
| modified | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+———-+————–+——+—–+———————+——-+
5 rows in set (0.04 sec)

mysql> desc alias;
+———-+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+————–+——+—–+———————+——-+
| address | varchar(255) | | PRI | | |
| goto | text | | | | |
| domain | varchar(255) | | | | |
| created | datetime | | | 0000-00-00 00:00:00 | |
| modified | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+———-+————–+——+—–+———————+——-+
6 rows in set (0.00 sec)

mysql> desc domain;
+————-+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———————+——-+
| domain | varchar(255) | | PRI | | |
| description | varchar(255) | | | | |
| aliases | int(10) | | | -1 | |
| mailboxes | int(10) | | | -1 | |
| maxquota | int(10) | | | -1 | |
| created | datetime | | | 0000-00-00 00:00:00 | |
| modified | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+————-+————–+——+—–+———————+——-+
8 rows in set (0.00 sec)

mysql> desc domain_admins;
+———-+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+————–+——+—–+———————+——-+
| username | varchar(255) | | MUL | | |
| domain | varchar(255) | | | | |
| created | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+———-+————–+——+—–+———————+——-+
4 rows in set (0.01 sec)

mysql> desc log;
+———–+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+———–+————–+——+—–+———————+——-+
| timestamp | datetime | | MUL | 0000-00-00 00:00:00 | |
| username | varchar(255) | | | | |
| domain | varchar(255) | | | | |
| action | varchar(255) | | | | |
| data | varchar(255) | | | | |
+———–+————–+——+—–+———————+——-+
5 rows in set (0.00 sec)

mysql> desc mailbox;
+———-+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+———-+————–+——+—–+———————+——-+
| username | varchar(255) | | PRI | | |
| password | varchar(255) | | | | |
| name | varchar(255) | | | | |
| maildir | varchar(255) | | | | |
| quota | int(10) | | | -1 | |
| domain | varchar(255) | | | | |
| created | datetime | | | 0000-00-00 00:00:00 | |
| modified | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+———-+————–+——+—–+———————+——-+
9 rows in set (0.01 sec)

mysql> desc vacation;
+———+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————–+——+—–+———————+——-+
| email | varchar(255) | | PRI | | || subject | varchar(255) | | | | |
| body | text | | | | |
| cache | text | | | | |
| domain | varchar(255) | | | | |
| created | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+———+————–+——+—–+———————+——-+
7 rows in set (0.06 sec)

mysql> q
Bye

Pindahkan direktory postfixadmin-2.1.0 ke home direktori dari apache anda misalkan ada di /var/www/html/postfixadmin-2.1.0

[root@PPST-13 /src# mv postfixadmin-2.1.0 /var/www/html/postfix

pindah ke diretory /var/www/html/postfix
[root@PPST-13 /src# cd /var/www/html/postfix

Copy file config.inc.php.sample menjadi config.inc.php
[root@PPST-13 postfixadmin-2.1.0 # cp config.inc.sample config.inc.php

Edit file config.inc.php dan sesuaikan dengan user postfixadmin di MySQL.
//
$db_host = “localhost”;
$db_name = “postfix”;
$db_user = “postfix”;
$db_pass = “ratna”;
dst …

Tentukan user dan group yang menjalankan proses apache :
[root postfixadmin-2.1.0 # egrep ‘^(User|Group)’ /etc/httpd/conf/httpd.conf

User apache
Group apache

Dari perintah diatas kita peroleh user apache dan group apache, kemudian ganti kepemilikan direktori /var/www/postfix menjadi user apache dan group apache :
[root postfixadmin-2.1.0 # chown -R apache:apache /var/www/html/postfix/

ubah permisionnya (opsional)
[root postfixadmin-2.1.0 # chmod 640 *.php *.css
[root@PPST-13 postfixadmin-2.1.0 # chmod 640 admin/*.php.ht*
[root@PPST-13 postfixadmin-2.1.0 # chmod 640  images/*.png [root@PPST-13 postfixadmin-2.1.0 # chmod 640 languages/*.lang
[root postfixadmin-2.1.0 # chmod 640  users/*.php
[root  postfixadmin-2.1.0 # chmod 640 templates/*.tpl

Edit file .htaccess di /var/www/html/postfix/admin, dan sesuaikan dengan keberadaan file .htpasswd. Anda bisa menggunakan .htpasswd bawaan postfixadmin dengan user admin dan password juga admin. Sehingga baris pertama dari file .htaccess sebagai berikut.
AuthUserFile /var/www/html/postfix/admin

Buka Browser Anda, dan isikan pada kotak address dengan
http://host.domain_anda.com/admin
Anda akan diminta mengisikan user name dan password.. Jika Anda menggunakan file passwd bawaan postfixadmin, user dan passwordnya adalah admin.

Setelah Anda login yang harus Anda lakukan adalah:
-  Menambah Virtual Domain dengan New Domain

-  Menambahkan Admin Virtual Domain berupa alamat email dengan New Domain Admin

Berikutnya pada kotak address ganti dengan http://host.domain_anda.com/
Anda akan ditanya username untuk admin virtual domain. Isikan user dengan email dari admin dan passwordnya.

Setelah Anda login yang harus Anda lakukan adalah:
- Login dengan email admin domain yang sudah dibuat

- Menambah account untuk virtual domain dengan Add Mailbox

- Menambah alias yang akan diforward ke account di mailbox dengan Add Alias

- Melihat data alias dan mailbox dengan Overview

- Setelah itu Anda bisa mengirim pesan dengan memilih Send Email.

 [root posfixadmin-2.1.0 # tail –f /var/log/maillog

Jika proses pengiriman pesan berhasil, lihatlah isi dari direktori /home/vmail. Di dalam direktori tersebut akan terdapat sebuah direktori yang sama dengan domain virtual yang sudah ditambahkan. Dan di dalam direktori domain akan terdapat direktori mailbox dari account yang
sudah Anda tambahkan. Untuk itu lihatlah isi direktori “new” dari account yang sudah dikirimi pesan. Jika benar, maka akan terdapat file yang berisi
pesan.
Sampai di sini maka SMTP, MySQL, dan Potfixadmin sudah bekerja dengan baik…

This entry was posted on Saturday, April 12th, 2008 at 1:27 pm and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

1 Comment

  1. drivers Says:

    Thanks so very much for taking your time to create this very useful and informative site. I have learned a lot from your site. Thanks!! I think you have done an excellent job with your site. I will return in the near future.

    March 20th, 2009

Leave a Reply