Maintainer for this stuff: Daniel Quinlan
(rather obvious hint, isn't it?)

Scripts to handle running nightly mass-checks and merging results.

Recommended stuff:

 - account to run the nightly/hourly jobs

 - various directories:

   $HOME/scripts                 - the scripts
   $HOME/log                     - cron job logs
   $HOME/tmp                     - temporary files and "tagtime" timestamp file
   $HOME/cvs/spamassassin        - the tree (checked out with the correct tag)
   $HOME/cvs/spamassassin/corpus - the corpus description (for "mass-check -f")

 - $HOME/.corpus contains various settings, see corpus.example in this
   directory.

 - A cron job (hours for tagtime and corpus-nightly for your
   local time, this is US/Pacific, adjust appropriately for your
   timezone)

   The "tagtime" and "corpus-nightly" cron jobs will automatically handle
   daylight savings, since cron does not.  They do this by sleeping for 1 hour
   if they detect that they are run in the 0800-0859 hour. (This means you can
    "corpus-nightly" any other time of day, if you want).

   The "corpus-hourly" script only needs to be run if you are producing
   optional mass-check summary reports.

   "pyzor discover" only needs to be run if you are running Pyzor.

------- start of cut text --------------
PATH=/home/corpus/scripts:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin
0 1 * * * corpus-tagtime
10 1 * * * corpus-nightly >/home/corpus/log/nightly 2>&1
30 * * * * corpus-hourly >/home/corpus/log/hourly 2>&1
5 1 * * * pyzor discover >/dev/null 2>/dev/null
------- end ----------------------------
