 1. If you don't already have a submission account, send a request to
    private@spamassassin.apache.org and ask for a score generation mass-check
    submission account.  You will receive your username and password
    via email, it will only be good for the score generation mass-check
    submissions.  If you're interested in the nightly submissions,
    please see the CORPUS_SUBMIT_NIGHTLY document.

 2. Get the latest version of SA following the instructions in the score
    generation mass-check announcement email.
 3. Now cd to the "masses" directory in the checked-out SVN code tree.
 4. Read README to gain understanding of what mass-check does.
 5. Run mass-check against your ham and spam mail archives.
 6. Clean the results: see <http://wiki.apache.org/spamassassin/CorpusCleaning>.
 7. rename ham.log and spam.log to the appropriate filenames.  ** see note below **
 8. rsync -CPcvzb ham-yourname.log spam-yourname.log username@rsync.spamassassin.org::submit

Thanks for your help!


Note: Depending on what type of mass-check you've run, the name of
the file you need to upload may be different.  The different types of
mass-check are combinations of with/without Bayes, and with/without
Net rules.  The resulting filenames are:

Set 0		ham-nobayes-nonet-username.log	spam-nobayes-nonet-username.log
Set 1		ham-nobayes-net-username.log	spam-nobayes-net-username.log
Set 2		ham-bayes-nonet-username.log	spam-bayes-nonet-username.log
Set 3		ham-bayes-net-username.log	spam-bayes-net-username.log

For GA mass-check runs, there will be 3 announcements for people to run
sets 1-3 (we can get the set 0 results by removing the net results from
set 1 ...)
