Table of Contents (Daftar isi)
Intro
Beberapa waktu lalu ketika melakukan pekerjaan untuk implementasi email server di salah satu klien, klien tersebut meminta agar tidak semua user dapat kirim dan terima dari luar (internet), dalam hal ini hanya user tertentu saja yang dapat mengirim dan menerima email dari luar. Cara tersebut bisa dilakukan di Zimbra Email Server dengan menggunakan AddOn tambahan yaitu CBPolicyD.
Namun, dengan pertimbangan agar penggunaan MTA Email server zimbra lebih optimal, dengan kata lain. Tugas si MTA ini hanya kirim dan terima saja. Akhirnya , dibuatkan 1 MTA server terpisah untuk scanning Spam dan Virus serta rule (peraturan) terkait pengiriman ke user menggunakan Mailborder.
Masalahnya, mailborder ini secara default hanya mendukung untuk pengecekan untuk virus dan spam karena memang tugasnya sebagai ASAV (Antispam Antivirus). Jadi untuk penambahan policy server nya menggunakan si CBpolicyD yang diintegrasikan di Mailborder.
Jika anda sudah mempunyai Mailborder juga, dan ingin menerapkan CBPolicyD pada server anda, maka artikel ini tepat untuk anda baca dan coba terapkan (mudah-mudahan) 🙂
Pengenalan Singkat PolicyD
CBPolicyD adalah sebuah addon untuk menerapkan sebuah policy/kebijakan terhadap MTA anda. Policyd ini memang di desain untuk email server skala besar yang memang mempunyai rule kompleks terhadap usernya. Banyak ide yang dapat diterapkan menggunakan CBPolicyD seperti pemabatasan akses, pengecekan SPF, EHLO HELO, dll.
Versi terakhir saat ini untuk policyd adalah versi 2 dengan Nama kode Cluebringer. sehingga disebut CBPolicyd. Salah satu keunggulan PolicyD yaitu kemudahan manajemen terhadap pembuatan policy, penggunaanya pun cukup mudah karena admin hanya perlu sedikit memahami algoritmanya untuk policy yang akan diterapkan seperti apa.
Integrasi PolicyD dengan Mailborder
PolicyD dapat diintegrasikan dengan mailborder, selama engine nya masih berbasis postfix. Berikut langkahnya :
Tinjauan Sistem
- Sistem Operasi Ubuntu 14.04
- Mailborder versi terbaru
Instalasi Dependensi (Paket yang dibutuhkan)
Berikut adalah dependensi yang dibutuhkan oleh policyd agar dapat dijalankan :
- MySQL, PostgreSQL or SQLite (Database)
- Net::Server >= 0.96
- Net::CIDR
- Config::IniFiles
- Cache::FastmMap
- Mail::SPF
Untuk database server yang akan digunakan yaitu menggunakan MySQL, secara default untuk mysql sudah tersedia di mailborder jadi kita tidak perlu melakukan instalasi mysql hanya modul perl nya saja. Berikut langkah-langkah untuk instalasi dependesi perl nya dengan menggunakan cpan :
cpan Net::Server cpan Net::CIDR cpan Config::IniFiles cpan Cache::FastmMap cpan Mail::SPF
Salin Binary dan Konfigurasi
Setelah dependensi diinstal, silakan lakukan instalasi untuk policyd. Download terlebih dahulu pake policyd nya, untuk versi policyd yang saat ini digunakan adalah v2.0.14, jika mungkin berbeda, bisa disesuaikan :
cd /srv/ wget -c https://download.policyd.org/v2.0.14/cluebringer-v2.0.14.tar.gz tar -zxvf cluebringer-v2.0.14.tar.gz cd cluebringer-v2.0.14/
Copy folder cbp ke /usr/local/lib/policyd-2.0/
, jika belum ada buat terlebih dahulu :
mkdir /usr/local/lib/policyd-2.0 cp -r cbp /usr/local/lib/policyd-2.0/
Copy juga binary cbpolicyd dan cbpadmin ke folder berikut :
cp cbpadmin /usr/local/bin/ cp cbpolicyd /usr/local/sbin/
Konfigurasi cluebringer.conf
Masih di folder /srv/cluebringer-v2.0.14
, salin file cluebringer.conf ke folder /etc/
dan edit filenya :
cp cluebringer.conf /etc/ vi /etc/cluebringer.conf
Hilangkan tanda #
pada baris berikut dan sesuaikan value nya :
pid_file=/var/run/cbpolicyd.pid log_level=3 log_file=/var/log/cbpolicyd.log log_mail=main log_detail=info port=10031 [database] #DSN=DBI:SQLite:dbname=policyd.sqlite DSN=DBI:mysql:database=policyd;host=localhost Username=root Password=rahasia
Jika sudah simpan konfigurasi tersebut.
Konfigurasi Database
Masuk ke folder database yang ada di folder binary tersebut dan jalankan perintah berikut untuk export konfigurasi databasenya :
cd database for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql accounting.tsql do ./convert-tsql mysql $i done > policyd.sql sed -i "s/TYPE=/Engine=/g" policyd.sql sed -i "s/ERROR: Cannot open file 'accounting.tsql'//g" policyd.sql
Buat database untuk policyd dan Import konfigurasi dari policyd.sql
ke database yang telah dibuat dengan menjalankan perintah berikut :
mysqladmin -u root -prahasia create policyd mysql -u root -p policyd < policyd.sql
Integrasi PolicyD dengan Postfix
Supaya postfix melakukan pengecekan ke PolicyD. Tambahkan konfigurasi check_policy_service inet:127.0.0.1:10031 ke smtpd_recipient_restrictions dan smtpd_end_of_data_restrictions pada main.cf
.
Untuk penambahan konfigurasi ke smtpd_recipient_restrictions bisa menambahkan via WebUI mailborder, Buka Mailborder | Mailborder Servers | Edit Postfix.
Tambahcheck_policy_service inet:127.0.0.1:10031,
pada bagiansmtpd_recipient_restrictions
sebelum permit_mynetworks,
. Seperti berikut :
... check_policy_service inet:127.0.0.1:10031, permit_mynetworks, reject_unauth_destination, ...
Jika sudah simpan konfigurasi.
Kemudian tambahkan pada smtpd_end_of_data_restriction. Jika anda menggunakan mailborder versi berbayar, anda dapat menambahkan rule dengan mailborder GUI di menu “Edit Postfix” kemudian pilih tanda Plus.
Namun, jika menggunakan mailborder versi komunitas anda harus edit di main.cf secara manual. hanya saja jika postfix di reload konfigurasi smtpd_end_of_data_restriction
akan hilang. Supaya permanen silakan jalankan perintah berikut :
chattr -i /etc/postfix/main.cf echo "smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031" >> /etc/postfix/main.cf chattr +i /etc/postfix/main.cf
Jika sudah, restart postfix untuk memuat ulang konfigurasi dengan perintah service postfix restart
. dan jalankan perintah cbpolicyd
untuk menghidupkan policyd.
Konfigurasi WebUI PolicyD
Salin folder webui yang ada di binary instalasi (/srv/cluebringer-v2.0.14)
ke folder /var/www/html dan edit konfigurasi database yang ada di folder /var/www/webui/include/config.php.
cp -r /srv/cluebringer-v2.0.14/webui /var/www/html/ vi /var/www/html/webui/includes/config.php
Ubah konfiugrasinya menjadi seperti berikut :
$DB_DSN="mysql:host=localhost;dbname=policyd"; $DB_USER="root"; $DB_PASS="rahasia";
Jika suda restart service apache2 dengan perintah berikut service apache2 restart
Buka alamat http://ipaddress/webui
Konfigurasi Hidup Otomatis saat Boot
Masukan perintah cbpolicyd
ke dalam /etc/rc.local sebelum exit 0
jika menggunakan ubuntu.
vi /etc/rc.local #!/bin/sh mkdir -p /var/lock/subsys cbpolicyd exit 0
Konfigurasi Proteksi untuk WebUI PolicyD
Secara prinsip untuk policyd sudah dapat digunakan untuk melakukan manajemen policy MTA sampai langkah diatas. Hanya saja webui nya dapat diakses secara bebas oleh orang lain yang tahu lokasi public_html nya. Solusi yang dapat dilakukan adalah memberi proteksi autentikasi terhadap webui. dengan .htaccess. Untuk membuatnya silakan lakukan langkah berikut :
Instal paket apache2-utils untuk htpasswd
apt-get install apache2-utils
Buat file .htaccess pada folder /var/www/html/webui/
dan isi seperti berikut :
vi /var/www/html/webui/.htaccess AuthUserFile /var/www/html/webui/.htpasswd AuthName "Please Insert Username and Password" AuthType Basic <LIMIT GET> require valid-user </LIMIT>
Jika sudah simpan konfigurasi.
Buat user untuk autentikasi dengan menggunakan htpasswd, jalankan perintah berikut :
touch /var/www/html/webui/.htpasswd htpasswd -cb .htpasswd USERNAME PASSWORD
Masukkan konfigurasi berikut pada /etc/apache2/apache2.conf :
<Directory /var/www/html/webui/> AllowOverride AuthConfig Order Deny,Allow Allow from all </Directory>
Terakhir, restart service apache2 dengan perintah service apache2 restart
.
Selesaii, silakan dicoba dan semoga bermanfaat 🙂
0 Comments