Integration into Courier-MTA using maildrop
First, install SpamAssassin and Courier MTA according to their installation docs. Make sure they are functioning on their own. You may want to use spamc/spamd for better performance. What's left is the connection between Courier and SpamAssassin.
If you have virtual users (as opposed to plain *nix users), it is vital that you make sure that courier-mta (as well as courier-imap and courier-pop) uses the authdaemon as authentication module. That means that in
pop3d the variable AUTHMODULES should be set to
"authdaemon". Keep in mind that your courier config files may be in another directory. The authdaemon has to be configured to use the right authentication modules (mysql, userdb, whatever). Then patch SpamAssassin according to http://da.andaka.org/Doku/courier-spamassassin.html so that SpamAssassin can ask authdaemon for the whereabouts of the maildirs of virtual users (and plain users too — but if you only have plain users, you may skip this step).
To let Courier MTA use maildrop as default for delivery, edit
/etc/courier/courierd and set
"| /usr/bin/maildrop" (or whereever your maildrop binary is). Then edit
/etc/courier/maildroprc, the central maildrop script:
Via the xfilter line, maildrop pipes its contents through spamc; via the include line, the user's mailfilter script is called.