Here are some simple steps in debugging your SpamAssassin installation:
Run 'spamassassin --lint', especially if you just added anything to your *.cf files or a user_prefs file. Often times you might have something slightly wrong and either a) SpamAssassin stops parsing the file or b) it's just plain wrong and causing the error.
Run with '-D'. The debug output from spamassassin, sa-learn, spamd is sometimes very verbose, but it also gives you a large amount of data that can be very helpful. Often times debug is the only place to see what exactly is causing your error. When running spamd with -D you will see some initial startup activity, you can ignore this, it is just scanning a test message to help do the initial load of the perl modules.
Sometimes its necessary to output the SpamAssassin debug information to a file. This can be done by redirecting stdout to a file and then redirecting stderr to the same location. Run 'spamassassin -D --lint > test.log 2>&1'.
Speed issues: spamassassin -D --lint 2>&1 | less and look for any gaps in time
Failures: spamassassin -D --lint 2>&1 | grep failed
DNS related: spamassassin -D --lint 2>&1 | grep dns:
Shortciruit: spamassassin -D --lint 2>&1 | grep shortcircuit:
Bayes: spamassassin -D --lint 2>&1 | grep bayes:
If you are not seeing any BAYES rules hit in your logs/headers, make sure you have at least 200 ham and 200 spam tokens: sa-learn --dump magic
0.000 0 3 0 non-token data: bayes db version 0.000 0 2944470 0 non-token data: nspam 0.000 0 12169738 0 non-token data: nham