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>

