.. _install:

============
Installation
============

Install Baruwa
==============

Download the `Baruwa <http://pypi.python.org/pypi/baruwa>`_ source
and untar it::

    # tar xzvf baruwa-<version>.tar.gz
    # cd baruwa-<version>

Make sure you have the required packages installed then proceed. 
The following commands should be run as a privileged user.

**Create the database**::

    # mysqladmin -u root -p create baruwa

**Create a Mysql user for baruwa**

Run the command from the mysql prompt::

    mysql> GRANT ALL ON baruwa.* TO baruwa@localhost IDENTIFIED BY '<password>';
    mysql> flush privileges;

**Install Baruwa**

Run::

    # python setup.py install

Configure Baruwa
================

**Configure the Baruwa settings**

Edit the Baruwa settings.py file::

	# baruwa_path=$(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
	# vi $baruwa_path/baruwa/settings.py
	
Set the following options::

    DATABASE_NAME = 'baruwa'
    DATABASE_USER = 'baruwa'
    DATABASE_PASSWORD = '<password>'
    DATABASE_HOST = 'localhost'

Populate the database and create admin user::

	# $baruwa_path/baruwa/manage.py syncdb
	
The syncdb command populates your SQL database and allows you 
to create the admin user.

Edit the settings.py file and make configuration changes to suit your site.::

	# vi $baruwa_path/baruwa/settings.py

Link to the dojo toolkit::

	# ln -s /path/to/dojo $baruwa_path/baruwa/static/js
	# ln -s /path/to/dojox $baruwa_path/baruwa/static/js
	# ln -s /path/to/dijit $baruwa_path/baruwa/static/js

**Configure the Web server**

**Apache/mod_wsgi**

Make sure mod_wsgi is enabled, uncomment the following line in
/etc/httpd/conf.d/wsgi.conf::

    LoadModule wsgi_module modules/mod_wsgi.so

Use the sample configuration provided (extras/baruwa-mod_wsgi.conf) 
as a template. Copy to your apache configuration directory usually
/etc/httpd/conf.d

Make sure that your apache is configured for name based virtual
hosting such that you can run other sites on the same box if you
wish to.

Edit /etc/httpd/conf.d/baruwa-mod_wsgi.conf and set ServerName to
the hostname you will use to access baruwa

Restart apache for the configuration to take effect.::

    # /etc/init.d/httpd reload

**Lighttpd**

Use the generic django instructions at 
http://docs.djangoproject.com/en/1.1/howto/deployment/fastcgi/#lighttpd-setup

**Nginx**

Use the nginx instructions at http://wiki.nginx.org/NginxDjangoFastCGI

**Cherokee**

Use the cherokee cookbook instructions at http://www.cherokee-project.com/doc/cookbook_django.html

Configure MailScanner
=====================

**Edit and install BaruwaSQL.pm**

Edit extras/BaruwaSQL.pm and set the variables::

	my ($db_name)   = 'baruwa';
	my ($db_host)   = 'localhost';
	my ($db_user)   = 'baruwa';
	my ($db_pass)   = '<password>';
	my ($sqlite_db) = "/var/spool/MailScanner/incoming/baruwa.db";

Copy it to the MailScanner custom functions directory::

	# confdir=$(/usr/sbin/Quick.Peek 'Custom Functions Dir' /etc/MailScanner/MailScanner.conf)
	# cp extras/BaruwaSQL.pm $confdir/

Next edit the MailScanner config file /etc/MailScanner/MailScanner.conf,
you need to make sure that the following options are set::

    Quarantine User = exim (Or what ever your "Run As User" is set to)
    Quarantine Group = apache (or your webserver user if not 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
    Always Looked Up Last = &BaruwaSQL

To actually quarantine and later process messages with in baruwa, set
'store' as one of your keywords for the "Spam Actions" and
"High Scoring Spam Actions" MailScanner options

**Integrate SQL Blacklists/Whitelists**

Edit extras/BaruwaLists.pm and set the variables::

	my ($db_name) = 'baruwa';
	my ($db_host) = 'localhost';
	my ($db_user) = 'baruwa';
	my ($db_pass) = '<password>';

Copy it to the MailScanner custom functions directory::

	# confdir=$(/usr/sbin/Quick.Peek 'Custom Functions Dir' /etc/MailScanner/MailScanner.conf)
	# cp extras/BaruwaLists.pm $confdir/

Next edit the MailScanner config file /etc/MailScanner/MailScanner.conf, and
set the following options::

    Is Definitely Not Spam = &BaruwaWhitelist
    Is Definitely Spam = &BaruwaBlacklist

**Integrate per user settings**

Edit extras/BaruwaUserSettings.pm and set the variables::

    my ($db_name) = 'baruwa';
    my ($db_host) = 'localhost';
    my ($db_user) = 'baruwa';
    my ($db_pass) = '<password>';

Copy it to the MailScanner custom functions directory::

	# confdir=$(/usr/sbin/Quick.Peek 'Custom Functions Dir' /etc/MailScanner/MailScanner.conf)
	# cp extras/BaruwaUserSettings.pm $confdir

Edit the MailScanner config file /etc/MailScanner/MailScanner.conf, and
set the following options::

    Required SpamAssassin Score = &BaruwaLowScore
    High SpamAssassin Score = &BaruwaHighScore

If you want users to be able to turn off spam checks for their own profiles,
set the following options::

    Spam Checks = &BaruwaShouldScan

**Apply configuration changes**

Restart up MailScanner::

    # /etc/init.d/MailScanner restart

Testing
=======

**Verify that is working**

Check your log files you should see

Baruwa SQL logger::

	Aug  9 18:58:27 localhost MailScanner[8470]: Logging message 1OiVg7-0003zS-9s to Baruwa SQL 
	Aug  9 18:58:27 localhost MailScanner[11052]: 1OiVg7-0003zS-9s: Logged to Baruwa SQL

Baruwa Lists::

	Aug 9 18:32:42 localhost MailScanner[27260]: Starting Baruwa whitelists 
	Aug 9 18:32:42 localhost MailScanner[27260]: Read 6 whitelist items 
	Aug 9 18:32:42 localhost MailScanner[27260]: Ip blocks whitelisted 192.168.1.0/24 192.168.2.0/24 xxx.xx.xxx.0/26

Baruwa User settings::

    Aug 9 15:00:03 localhost MailScanner[25708]: Baruwa - Populating spam score settings
    Aug 9 15:00:03 localhost MailScanner[25708]: Read 1 spam score settings
    Aug 9 14:59:53 localhost MailScanner[25668]: Baruwa - Populating high spam score settings
    Aug 9 14:59:53 localhost MailScanner[25668]: Read 1 high spam score settings

Point your browser to http://hostname_used login with admin user and password
and start working. You can now use the interface to add users, domains and 
process messages, etc etc.

Distribution / OS installation
==============================

    + :ref:`installcentos`.
    + :ref:`installfedora`.
    + :ref:`installdeb`.

