Being pretty much a new guy to the SA scene, I think I can help you understand which does what...
SpamAssassin is the actual processing program. When run directly as "spamassassin" it needs to load a PERL processor (the scripting language it's written in), runs, and then unloads from memory when done. This is fine for many applications, but when you need to check a lot of email (like many of us that host email accounts for customers) that translates into a very slow process as you have to wait for the whole load, execute, unload process to run. You also must run "spamassassin" on the machine that has the email to be scanned. "spamd" is a "daemon" (the "d" in spamd) or service. It is a copy of "spamassassin" that is loaded ahead of time (usually during the computer's boot up), and not unloaded. So initially, you may have 5 copies (also called children) of spamd running (5 copies of spamassassin) which is a quick hit on resources, but from there on it is MUCH faster as it doesn't ever need to unload and reload again for each message it needs to process. It is always ready and waiting... plus it has code to allow it to talk to another server that has the email that needs processing... which brings me to... "spamc" is a "client" (the "c" in spamc). It is very small, so it loads very quickly as all it has to do is simply pass the message that needs processing/checking to the server that is running spamd and then wait for a response from spamd on what it found. Now, you don't need two computers to use spamc/spamd. Many run it on the same computer because it is faster than running spamassassin as it is always ready to run (no load/unload waiting). Recap: ====== SpamAssassin: Processing program. It loads, processes, and unloads. SpamD: It is SpamAssassin, but doesn't unload, so it is always ready. It listens for a communication from SpamC (on same or different computer). SpamC: It passes a message to be processed to SpamD (on same or different computer). So what you really want to do is get SpamD running with a line like: spamd -i 0.0.0.0 -A 192.168/16,127.0.0.1 the -i tells spamd to listen on all IPs available (in case the computer has more than 1 IP) the -A tells spamd to accept SpamC connections from the following IP/IP blocks - in my case 192.168.x.x (any computer on my private network - I have 3 servers using SpamC to talk to it) and 127.0.0.1 (itself) By default spamd in spamassassin 3.x will run 5 children (5 copies of spamassassin)... which will require a 512MB machine. You can add a "-m 3" to make it have 3 children if you have only 256MB. You call spamc with a line like: spamc -d 192.168.0.13 <messagetotest >messageresults the -d 192.168.0.12 tells spamc that the spamd is running on the computer at IP 192.168.0.13... the default is 127.0.0.1, so you don't need this bit if you wanted it to talk to spamd running on the same PC. I hope this helps you and others out. Oh, and you "wise and knowledgeable" devs and users... feel free to correct me if I'm wrong about anything. ------------------------------------------------------------ Jason J Ellingson Technical Consultant 615.301.1682 : nashville 612.605.1132 : minneapolis www.ellingson.com [EMAIL PROTECTED] -----Original Message----- From: John Fleming [mailto:[EMAIL PROTECTED] Sent: Sunday, October 31, 2004 3:21 PM To: users@spamassassin.apache.org Subject: Re: Load Average Problems OK, I'll bare my ignorance here in hopes of enlightenment. I'm probably lucky that I have SA working as well as I do. I only have a loose understanding of the different roles of "spamassassin", "spamc", and "spamd". I start things with /etc/init.d/spamassassin. Then in procmail, I pipe the msg to spamc. In neither of these places do I see how to pass any options to spamd. I've also tried: # spamd -m 2 but this gets an error about the socket being in use. What am I missing? - John