blob: 1b2349b2096afdc58eade204dffa2987be0d1f33 [file] [log] [blame]
Introduction
============
Normally spamd looks for user_prefs for users listed in /etc/passwd. Of course
with vpopmail this doesn't work since vpopmail are virtual users and do not
exist in /etc/passwd. But each vpopmail user does have their own maildir where
personal user_prefs can be stored. I have patched spamd to look for user prefs
in the users vpopmail maildir.
Requirements
============
1. This should work with v.5.0.1-5.20 of vpopmail as long as it has the
seekable patch installed to allow you to use filters like procmail or
maildrop in the .qmail-default file. See http://www.thesafebox.com for this
patch. Older versions may work w/o patch but I don't know for sure.
2. SA v.2.20
3. Procmail or maildrop for filtering and running spamc.
Usage Tips and Examples
=======================
1. Run spamc with the "-u userid@somedomain.net" option. This is how spamd
determines what the vpopmail users name is and therefore their maildir.
2. Run spamd with the following switches:
spamd -v -u vpopmail (of course any other ones that you use)
where "vpopmail" is the name of your vpopmail account in /etc/passwd.
spamd will now run with proper ownership and will be able to read/write to any
vpopmail maildir. I would suggest you consider running spamd as:
spamd -d -v -u vpopmail -F 0
3. You can also use -c switch so that it will auto-create user_prefs file or
use some other interface outside of SA to create the personal user_prefs
(perhaps a modified phpsa interface). User_prefs dir will be created in the
vpopmail users maildir. It gets this info from the command:
vuserinfo -d userid@somedomain.net
For example if the user's maildir is:
/home/vpopmail/domains/somedomain.net/4/userid
then their user_prefs would be stored in:
/home/vpopmail/domains/somedomain.net/4/userid/.spamassassin/user_prefs
5. One gotcha - cannot have personal AWL dbs - only a sitewide AWL will work.
This is specified in your /etc/mail/spamassassin/local.cf file. Perhaps a
future enhancement would be to add the capability to have personal AWL db.
6. Of course vpopmail must have the seekable patch installed (see
http://www.thesafebox.com for patch). This will allow you to use procmail or
maildrop for filtering in the global .qmail-default file for each virtual
domain that you host.
7. Dallas Engelken contributed the following example files using maildrop:
after you have the seekable patch applied, you can filter through maildrop
by changing your domain/.qmail-default file to
| preline maildrop mailfilter
the mailfilter file must be owned by vpopmail:vckpw and have 0600
permissions. otherwise maildrop will not process it. the contents of
mailfilter should be something like this (of course edit paths to match your
setup):
####################################################
VPOP="| /var/vpopmail/pop/bin/vdelivermail '' bounce-no-mailbox"
VHOME=`/var/vpopmail/pop/bin/vuserinfo -d $EXT@$HOST`
if ( $SIZE < 262144 )
{
exception {
xfilter "/usr/bin/spamc -f -u $EXT@$HOST"
}
}
if (/^X-Spam-Flag: *YES/)
{
exception {
include $VHOME/Maildir/.mailfilter
}
## IF YOU WANT TO GATHER ALL SPAM INTO 1 MAILDRIR
#exception {
# to /home/pop/spam/
#}
## OR IF YOU WANT TO DELIVER SPAM TO THE USERS MAILDIR
exception {
to "$VPOP"
}
}
else
{
exception {
include $VHOME/Maildir/.mailfilter
}
exception {
to "$VPOP"
}
}
####################################################
8. Of course there are a myriad of ways to deliver the mail. For instance at
my site I divert all Spam to each individuals own Spam IMAP folder so I would
use:
to $VHOME/Maildir/.Spam
(of course .Spam must have been created ahead of time using maildirmake
command).
Hope this helps,
Ed Henderson <ed.henderson@certainty.net>