i use postfix on my mailserver, ans spamassassin for marking spammails, it work's really great except
one aspect:
postfix uses the filter.sh which gives the mail to spamassassin. my only problem is, that every mail is beeing scanned, even if they are bigger (e.g. > 2mb). the most spam is smaller then 100k so the actuall setup isn't good for the ressources on the server.
Using SpamAssassin by calling spamassassin isn't good at ALL for resources on the server.
The spamassassin script is the simplest, but by far the most inefficient way to use SA. It's intended for hand-run tests and low volume sites.
In the long run you'll want to shift to starting spamd at system startup and call spamc from filter.sh.
1) spamc automatically skips scans for really large messages
2) spamd will have pre-loaded an image of perl, saving a LOT of resources.
3) spamd will have pre-parsed /usr/share/spamassassin and /etc/mail/spamassassin, saving more resources.
4) spamd can have it's child count limited, preventing you from forking an infinite number of copies of SA.
5) If you're really high volume, you can set it up so they run on separate machines, thus separating the load of your MTA from the SA scanning back end.
The downsides?
1) If you edit or add rules in /etc/mail/spamassassin you've got to restart.
2) a very few people have had their spamd's hog memory. This was more of a problem in 3.0.0 than it is now in 3.0.2.
3) if spamd crashes (rare, but a very few seem to be posting about this lately), you've got to restart it before mail scanning will resume.