Here's how we set up our site-wide Spam``Assassin bayes database, including the ability for users to train it. 1. Create a new user `spamd` with home `/home/spamd`. 1. Perform the following as `spamd`: 1. `cd /home/spamd` 1. `maildirmake -S Maildir`, to create the shared Spam``Assassin mailbox. 1. `maildirmake -f SiteSpam -s write Maildir`, to create a writable folder for misclassified spam. 1. `maildirmake -f SiteHam -s write Maildir`, to create a writable folder for misclassified ham. 1. Add the following to `spamd`'s crontab to learn from and delete messages in those shared folders every five minutes: {{{ 0,5,10,15,20,25,30,35,40,45,50,55 * * * * sa-learn --spam --dir /home/spamd/Maildir/.SiteSpam/cur >/dev/null; cd /home/spamd/Maildir/.SiteSpam/cur ; ls | xargs -r rm 0,5,10,15,20,25,30,35,40,45,50,55 * * * * sa-learn --ham --dir /home/spamd/Maildir/.SiteHam/cur >/dev/null; cd /home/spamd/Maildir/.SiteHam/cur ; ls | xargs -r rm}}} The funny `xargs`-based way of deleting files is important, because `ls` has a hard limit on how many files it can handle, which we learned the hard way! Also, be sure there's a newline after the last line, or it won't be processed. 1. Modify `/etc/spamassassin/local.cf` with the directive: {{{ bayes_path /home/spamd/}}}