At 03:43 PM 10/3/2003 -0700, you wrote:
At 02:50 PM 10/3/2003, Doug
Ledbetter wrote:
Hello all,
I've setup SpamAssassin to
work with individual Vpopmail mailboxes. I want to know if sa-learn
can be used in this configuration? If so, how do you tell sa-learn
which Bayes database you want to use? I'm currently using one Bayes
database per email domain, but I may offer individual Bayes databases per
mailbox in the future.
Doug...
I would be interested in how you set SA up with individual vPop boxes. Do
you have any notes to share??
Sure, let me ramble for a minute. ;)
First, I should mention that I wanted maximum control over how
SpamAssassin works for individual mailboxes. I wanted to be able to
turn it on/off individually and configure SpamAssassin settings (ie-
Razor, hits, Bayes DB location, etc.) individually for each mailbox and I
wanted to store all this in an SQL database for ease of use.
- Obviously you need SpamAssassin installed. :)
I had to make a small change to one of the SpamAssassin scripts because
normally it won't read certain settings from a database for security
reasons. Notice I have modified the source of
SpamAssassin! Please use at your own risk! As long as
access to your database is secure, you shouldn't have any
problems.
/usr/lib/perl5/site_perl/5.6.1/Mail/SpamAssassin/Conf.pm
Around line 280:
sub parse_scores_only {
my ($self) = @_;
# $self-_parse ($_[1], 1); # don't copy $rules!
$self-_parse ($_[1], $disallow_rules_in_sql); # allow
copying of rules -dougl
}
Where:
my $disallow_rules_in_sql = 0;
- Here's how I run the spamd daemon:
spamd -d
-a -v -x -q -u vpopmail -H /home/vpopmail/
- OPTIONAL: Install Razor. Run 'razor-admin -create' '
razor-admin -register' as the vpopmail user. This creates a .razor
directory in /home/vpopmail. Don't forget to patch Razor if you're
using SpamAssassin 2.60 (patch is included with SpamAssasin
v2.60).
- Make sure you have a recent version of Procmail installed.
- Create a .procmailrc file and put it in the mailbox directory (ie-
/home/vpopmail/domains/domain/user/.procmailrc
Contents
of .procmailrc:
# Note: paths in this file are relative to the email domain
directory.
# ie- /home/vpopmail/domains/domain/
#
# The following 4 lines do verbose procmail logging useful for
debugging.
# Comment them out before receiving a lot of email. ;)
#
LOGFILE=./pm.log
LOG=
VERBOSE=yes
MAILBOX=./user/Maildir/
SPAMBOX=./spam/Maildir/#
optional
USER=full email address of mailbox
# SpamAssassin filter
:0fw
| /usr/bin/spamc -d 127.0.0.1 -u ${USER} -t 3
:0e
{
EXITCODE=$?
}
# If you want procmail to put spam messages into another mailbox,
# uncomment these next lines and be sure that SPAMBOX is
a valid
# mailbox
#
# Toss Spam into another maildir
#:0
#* ^X-Spam-Flag:.YES
#${SPAMBOX}
# Deliver the mail to the Maildir
${MAILBOX}
NOTE:
The above .procmailrc has Procmail doing the mail delivery and NOT
vdelivermail which means you won't get email quota support. If you
want to use vdelivermail, it's a little bit more tricky.
- Edit the .qmail-user file for the mailbox you want to
set up SpamAssassin:
| preline /usr/bin/procmail -t
./user/.procmailrc
- Known problem: SpamAssassin will not process email sent to a
catch-all account. Ie- you have a .qmail-default in the vpopmail
domain directory that says something like this:
| /home/vpopmail/bin/vdelivermail '' some email
address
The next version of Vpopmail should fix this problem.
- Create a MySQL database according to the SpamAssassin docs. Then
you can insert records like this:
mysql select * from userpref;
+-+--+-+++
| oid |
username
| preference |
value
| updated |
+-+--+-+++
| 1 | full email address |
use_bayes |
1
| 20030924164532 |
| 6 | full email address |
bayes_path |
/home/vpopmail/domains/domain/.spamassassin/bayes
| 20030924164532 |
| 4 | full email address |
report_safe |
0
| 20030924164532 |
| 7 | full email address | auto_whitelist_path
|
/home/vpopmail/domains/domain/.spamassassin/auto-whitelist
| 20030924164532 |
| 9 | full email address |
auto_learn |
1
| 20030924164532 |
| 10 | full email address |
rewrite_subject |
1
| 20030924164532 |
| 11 | full email address |
required_hits |
5.0
| 20030924164532 |
| 12 | full email address |
use_razor2 |
0
| 20030924164532 |
+-+--+-+++
8 rows in set (0.02 sec)
Each user (ie- full email address) can have it's own settings in this
table. This makes it really easy to turn on/off every SpamAssassin
option on an individual basis.
Note: Currently I'm using one Bayes database per email domain, but
I could change that to use one database per mailbox