The Perfect SpamSnake - Ubuntu 8.04 LTS - Page 05
9 MailWatch Installation InstructionsThis setup assumes you are using Apache v2.x and not Apache v1.x.
9.1 Before StartingMake sure that MailScanner is working before you continue with the MailWatch install! Notes for Ubuntu: You must have a working MailScanner set-up and running copies of MySQL, Apache, and PHP. You must also have the Perl DBD-MySQL package installed for the Perl portions of MailScanner to utilize the MySQL database.
These will be commented out you must remove the "#" to activate them:
9.2 InstallationAll commands below should be run as root.
9.3 Download the latest MailWatch releasewget http://downloads.sourceforge.net/mailwatch/mailwatch-1.0.4.tar.gz?modtime=1178902008&big_mirror=0
9.4 Create the databasemysql -p < create.sql NOTE: you will need to modify the above as necessary for your system if you have a root password for your MySQL database (recommended!) - Debian will ask for one.
9.5 Create a MySQL user and password & Set-up MailScanner for SQL loggingmysql -p Remember the password! You need the single quotes ' to surround your password.
9.6 Edit and copy MailWatch.pmEdit MailWatch.pm and change the $db_user and $db_pass values accordingly and move MailWatch.pm. mv MailWatch.pm /etc/MailScanner/CustomFunctions/
9.7 Create a MailWatch Web Usermysql mailscanner -u mailwatch -p Enter password: ****** mysql> INSERT INTO users VALUES ('username',md5('password'),'mailscanner','A','0','0','0','0','0');
9.8 Install & Configure MailWatchFrom within the unpacked mailwatch directory move the directory called 'mailscanner' to the web server's root. mv mailscanner/ /var/www/ Make a temp directory: mkdir temp Check the permissions of /var/www/mailscanner/images and /var/www/images/cache - they should be ug+rwx and owned by root and in the same group as the web server user. chown root:www-data images Create conf.php by copying conf.php.example and edit the values to suit, you will need to set DB_USER and DB_PASS to the MySQL user and password that you created earlier. Change these values as shown below: define(DB_USER, 'mailwatch'); define(DB_PASS, 'password'); define(MAILWATCH_HOME, '/var/www/mailscanner'); define(MS_LIB_DIR, '/usr/share/MailScanner/'); define(QUARANTINE_USE_FLAG, true);
9.9 Set-up MailScannerNext edit /etc/MailScanner/MailScanner.conf. vi /etc/MailScanner/MailScanner.conf You need to make sure that the following options are set:
And check these as well:
Spam Actions, High Scoring Spam Actions and No Spam Actions should also have 'store' as one of the keywords if you want to quarantine those items for bayes learning or viewing from within MailWatch.
9.10 Integrate SQL Blacklist/Whitelist (optional)If you would like to manage the MailScanner whitelist and blacklist from within the MailWatch web interface perform the following steps. 1. Edit the MySQL connection values within the CreateList subroutine of SQLBlackWhiteList.pm to match the values you entered previous into MailWatch.pm. Both files should contain the same values. (Look for the following lines in SQLBlackWhiteList.pm and enter your own data.) my($db_user) = 'mailwatch'; my($db_pass) = 'password'; 2. Copy SQLBlackWhiteList.pm to /etc/MailScanner/CustomFunctions/. 3. Edit MailScanner.conf and set:
9.11 Fix to allow MailWatch to work with Postfix Inbound/Outbound QueueDownload the patch from http://www.gbnetwork.co.uk/mailscanner/postfixmail.tar.gz cd /usr/src
9.12 SpamAssassinFirst we need to disable the default SpamAssassin configuration file: mv /etc/spamassassin/local.cf /etc/spamassassin/local.cf.disabled Now let's backup the SpamAssassin configuration file in MailScanner then edit: cp /etc/MailScanner/spam.assassin.prefs.conf /etc/MailScanner/spam.assassin.prefs.conf.back Add pyzor and razor paths: vi /etc/MailScanner/spam.assassin.prefs.conf Add these lines to the top of spam.assassin.prefs.conf: pyzor_options --homedir /var/lib/MailScanner/ Comment out the following:
9.13 Move the Bayesian Databases and set-up permissions (skip this if you don't use bayes)Edit /etc/MailScanner/spam.assassin.prefs.conf and set: vi /etc/MailScanner/spam.assassin.prefs.conf bayes_path /etc/MailScanner/bayes/bayes bayes_file_mode 0660 Look for these lines and change them accordingly: bayes_ignore_header X-YOURDOMAIN-COM-MailScanner bayes_ignore_header X-YOURDOMAIN-COM-MailScanner-SpamCheck bayes_ignore_header X-YOURDOMAIN-COM-MailScanner-SpamScore bayes_ignore_header X-YOURDOMAIN-COM-MailScanner-Information "YOURDOMAIN-COM" should be replaced with whatever you used for "%org-name%" in the MailScanner.conf file. Leave the "X-" in place. Create the 'new' bayes directory, make the directory owned by the same group as the web server user and make the directory setgid: mkdir /etc/MailScanner/bayes Copy the existing bayes databases and set the permissions (Note: This part can be skipped if bayes was not previously enabled because the bayes directory would not have been created): cp /var/lib/MailScanner/bayes_* /etc/MailScanner/bayes Make sure that "bayes_auto_expire 0" is not commented out in spam.assassin.prefs.conf: bayes_auto_expire 0 Edit the SpamAssassin v310.pre to enable Razor and DCC: vi /etc/spamassassin/v310.pre Uncomment the following lines: loadplugin Mail::SpamAssassin::Plugin::DCC loadplugin Mail::SpamAssassin::Plugin::Razor2 If you want then you can test SpamAssassin to make sure that it is using the new databases correctly: spamassassin -D -p /etc/MailScanner/spam.assassin.prefs.conf --lint and you should see something like: debug: using "/etc/MailScanner/spam.assassin.prefs.conf" for user prefs file
9.13.1 SpamAssassin Bayes Database to SQL ConversionPre-requisities a. You'll need the perl-DBI and perl-DBD-MySQL modules installed. Assumptions and Variables: SpamAssassin Bayes Database Name: sa_bayes Create the MySQL database: First of all, create a database on the server where you intend on storing the bayesian information. mysql -u root -p mysql> create database sa_bayes; Locate the bayes_mysql.sql file: find / -name bayes_mysql.sql Backup your current bayes database: sa-learn -p /etc/MailScanner/spam.assassin.prefs.conf --backup > sa_bayes_backup.txt Warning: The next command can completely wipe out your bayes database! sa-learn -p /path/to/spam.assassin.prefs.conf --clear #(entirely optional, incase you want to rollback) Make some changes to your spam.assassin.prefs.conf: bayes_store_module Mail::SpamAssassin::BayesStore::SQL bayes_sql_dsn DBI:mysql:sa_bayes:localhost bayes_sql_username sa_user bayes_sql_password sa_password bayes_sql_override_username root and comment out the following lines: #bayes_path /etc/MailScanner/bayes/bayes #bayes_file_mode 0660 Populate the Bayes SQL database. Now for recovering the bayes_dbm to bayes_sql. sa-learn -p /etc/MailScanner/spam.assassin.prefs.conf --restore sa_bayes_backup.txt This process may take some time depending on the size of your bayes database. Also add this to your crontab: crontab -e 30 01 * * * /path/to/sa-learn --force-expire --sync -p /etc/MailScanner/spam.assassin.prefs.conf
9.14 Bring it all TogetherNow that we have everything in there, set the correct permissions: chown -R postfix:www-data /var/spool/MailScanner chmod -R u+rwx,g+rx /var/spool/MailScanner/quarantine
Finally make sure you restart MailScanner. /etc/init.d/mailscanner restart Test out the setup: spamassassin -x -D -p /etc/MailScanner/spam.assassin.prefs.conf --lint Check for lines like: debug: bayes: Database connection established and some more like debug: bayes: tok_get_all: Token Count: 20 You should see lines come up with DCC, Pyzor and Razor that say loading plugin and hopefully no errors. Finishing up this part we need to add cron jobs that will clean/update, you probably saw the message about this after the MailScanner install script finished. First edit conf.php and set 'QUARANTINE_DAYS_TO_KEEP' in conf.php and change the following line in db_clean. #!/usr/bin/php -qn to #!/usr/bin/php -q Install quarantine clean up script: cp /usr/src/mailwatch-1.0.4/tools/quarantine_maint.php /usr/bin/quarantine_maint.php Run crontab -e and add the following: 15 10 * * 2 /usr/bin/quarantine_maint.php --clean &> /dev/null 58 23 * * * /usr/bin/db_clean.php &> /dev/null Disable the mailscanner installed cron script /etc/cron.daily/clean.quarantine (Note: Do this only if the clean.quarantine script exists). $disabled = 1;
9.15 Rebootreboot Check your mail.log again: tail -f /var/log/mail.log At this point you should have a functional spamfilter and should see something like: Jun 13 12:18:23 hoshi MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.20-3 starting... Congratulations - you now have MailScanner logging to MySQL.
9.16 Test the MailWatch interfacePoint your browser to http://<hostname>/mailscanner/ - you should be prompted for a username and password - enter the details of the MailWatch web user that you created earlier, and you should see a list of the last 50 messages processed by MailScanner. If you're not able to see the mails, then you may have to set the following persmissions: chgrp -R www-data /var/spool/MailScanner
You may have to create the following to prevent an error in a lint test: mkdir /var/www/.spamassassin
|
| 127.0.0.1 | default | Delete |
9.25 Fix to Allow Multiple Release of Messages in Message Operations
Edit /var/www/mailscanner/do_message_ops.php and make the following changes:
case 'F':
$type='forget';
break;
case 'R':
$type='release';
break;
default:
continue;
break;
Then, find the following section and change it to look like this:
$itemnum = array($num);
if ($type == 'release'){
if($quarantined = quarantine_list_items($id,RPC_ONLY)) {
$to = $quarantined[0]['to'];
}
echo "<tr><td><a href=\"detail.php?id=$id\">$id</a></td><td>$type</td><td>" . quarantine_release($quarantined, $itemnum, $to, RPC_ONLY) . "</td></tr>\n";
} else {
echo "<tr><td><a href=\"detail.php?id=$id\">$id</a></td><td>$type</td><td>" . quarantine_learn($items, $itemnum, $type, RPC_ONLY) . "</td></tr>\n";
}
}
echo "</TABLE>\n";
}
}
}
}
echo " </TD>\n";
Next we edit the /var/www/mailscanner/functions.php file and change:
$fieldname[$f] = "Ops<br>S H F";
To
$fieldname[$f] = "Ops<br>S H F R";
Next change:
array_unshift($row, "<INPUT NAME=\"OPT-REPLACEME\" TYPE=RADIO VALUE=\"S\"> <INPUT NAME=\"OPT-REPLACEME\" TYPE=RADIO VALUE=\"H\"> <INPUT NAME=\"OPT-REPLACEME\" TYPE=RADIO VALUE=\"F\">");
To:
array_unshift($row, "<INPUT NAME=\"OPT-REPLACEME\" TYPE=RADIO VALUE=\"S\"> <INPUT NAME=\"OPT-REPLACEME\" TYPE=RADIO VALUE=\"H\"> <INPUT NAME=\"OPT-REPLACEME\" TYPE=RADIO VALUE=\"F\"> <INPUT NAME=\"OPT-REPLACEME\" TYPE=RADIO VALUE=\"R\"> ");
Next find the block with the javascript function to handle radio buttons. Add a third value like so:
echo "function SetRadios(p) {\n";
echo " var val;\n";
echo " if (p == 'S') {\n";
echo " val = 0;\n";
echo " } else if (p == 'H') {\n";
echo " val = 1;\n";
echo " } else if (p == 'F') {\n";
echo " val = 2;\n";
echo " } else if (p == 'R') {\n";
echo " val = 3;\n";
echo " } else if (p == 'C') {\n";
echo " ClearRadios();\n";
Now, add the text for the radios:
echo " <a href=\"javascript:SetRadios('S')\">S</a>";
echo " <a href=\"javascript:SetRadios('H')\">H</a>";
echo " <a href=\"javascript:SetRadios('F')\">F</a>";
echo " <a href=\"javascript:SetRadios('R')\">R</a>";
Finally, change:
echo "<P><b>S</b> = Spam <b>H</b> = Ham <b>F</b> = Forget\n";
To:
echo "<P><b>S</b> = Spam <b>H</b> = Ham <b>F</b> = Forget <b>R</b> = Release\n";
9.26 Fix to Allow Correct ClamAV Status
Change the following in /var/www/mailscanner/clamav_status.php file:
<?passthru(get_virus_conf('clamav')." -V | awk -f ./clamav.awk");?>
to
<?passthru(‘/usr/sbin/clamd –V | awk –f ./clamav.awk’);?>
![]() | Please do not use the comment function to ask for help! If you need help, please use our forum: http://www.howtoforge.com/forums |
![]() | Comments will be published after administrator approval. |



print: 


Recent comments
1 day 12 hours ago
1 day 19 hours ago
2 days 1 hour ago
3 days 2 hours ago
4 days 4 hours ago
4 days 11 hours ago
4 days 13 hours ago
5 days 13 hours ago
1 week 31 min ago
1 week 11 hours ago