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