This document describes Baruwa 1.0.2. For development docs, go here.
Download the 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 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
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
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.