You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Next »

Nightly Mass-Check Runs

What?

Nightly MassCheck runs are currently the primary vehicle for evaluating the quality of rules checked into SpamAssassin. Every night contributors check out a specific revision of SpamAssassin from SVN and run MassCheck on their corpora. They upload their MassCheck logs to an rsync server, where lots of analysis takes place, visible through the RuleQaApp.

(There's also an older, clunkier version of the analysis scripts running on DanielQuinlan's server; see http://www.pathname.com/~corpus .)

There are three ways to do this; using a script we distribute, doing it yourself, or just uploading your corpus to our server.

How? (The Easiest Way)

If you rsync up your corpus to our server, as described in UploadedCorpora, it can be mass-checked there. Unfortunately you have to share your mail corpus with whoever might have access to that machine. (It's not expected that anyone will ever actually look, but it's there nonetheless. If you are very concerned about privacy, you may be advised to strip out the more private mails before uploading, or mass-check on your own machine instead. This is what I do --jm)

Details for PMC members on how to set up new accounts for this are below, under '(Administrivia: setting up a nightly mass-check user on spamassassin.zones.apache.org)'.

How? (Less Easy, The Corpus-Nightly Script)

The corpus-nightly script in the masses/rule-qa/ directory of the SpamAssassin tree can be used to set up a mass-checker on your mail. Here's a step-by-step account of the process.

First off, you'll also need to ask for RsyncAccounts and make sure you get a "nightly" account rather than a release-time account. You also need to install Subversion to get the "svn" command.

Then run:

mkdir $HOME/nightlymc
cd $HOME/nightlymc
svn co http://svn.apache.org/repos/asf/spamassassin/trunk
cp masses/rule-qa/corpus.example ~/.corpus

Edit '~/.corpus' to have values something like this, replacing /home/jm with whatever your own $HOME is.

vi ~/.corpus
# temporary working directory for summary results
tmp=/home/jm/nightlymc/tmp

# subversion directory location
# [this is the directory you have already checked out!]
tree=/home/jm/nightlymc/trunk

# rsync username and password (see RsyncAccounts)
username=jm
password=xyzzy

# weekly and nightly mass-check options
opts_weekly="--restart=500 --tail=15000 --net -j 8 -f /home/jm/nightlymc/targets"
opts_nightly="--restart=500 --tail=15000 -f /home/jm/nightlymc/targets"

# weekly and nightly mass-check user_prefs files
prefs_weekly=/home/jm/nightlymc/user_prefs.weekly
prefs_nightly=/home/jm/nightlymc/user_prefs.nightly

Now, create those two user_prefs files. Here's suggested (basic) settings:

user_prefs.nightly:

use_bayes 0
use_auto_whitelist 0
internal_networks 127/8
trusted_networks 127/8

I suggest just "cp"'ing that file to user_prefs.weekly as well, but if you wanted different settings to control network rules, go ahead. It might make sense to extend those with full trusted-networks data, if you like.

Edit ~/nightlymc/targets:

ham:detect:/local/cor/recent/ham/*
spam:detect:/local/cor/recent/spam/*

That's it – now run
/home/jm/nightlymc/trunk/masses/rule-qa/corpus-nightly and watch as it starts mass-checking. Once you're happy enough with it, set that command to run in cron.

Note: the best time to run a mass-check is as soon as possible after 0900 UTC. Daylight savings time in some local timezones can be troublesome, so the script will adjust for this by sleeping for an hour if it detects that it was started in the 0800 UTC hour period, so you no longer have to worry about that.

How? (For Hackers, The DIY Version)

Here's more detail on that process, if you don't want to use the "corpus-nightly" script.

Get ahold of http://rsync.spamassassin.org/$VERS-versions.txt, where
$VERS is either "nightly" or "weekly". "nightly" is updated a little before 0900 UTC Sunday through Friday. "weekly" is updated at the same time on Saturdays, and is meant to be a net-enabled run. ie: wait until at least 0900 UTC before trying to do a corpus run. The above files are also available via the standard rsync system.

Get a "nightly" rsync account (see 'How?' above).

The format of the above files is a file of "date <tab> revision <LF>", date in YYYY-MM-DD format, revision being the value that comes out of SVN. New lines are added to the bottom of the file.

So... Grab the file, find the right line (you can either grep for the date, or just take the last line of the file), and use the second column to update your corpora version. ie:

REV=`tail -1 nightly.txt | awk '{print $2}'`
cd /path/to/spamassassin-checkout
svn update -r $REV

Alternatively, if you would prefer to pick it up via rsync:

rsync -vrz --delete \
     rsync://rsync.spamassassin.org/tagged_builds/nightly_mass_check .

(replace "nightly" with "weekly" for the weekly builds.)

Then use that build of SpamAssassin to perform a MassCheck , and when that completes, upload the results as per the instructions in http://spamassassin.org/dist/masses/CORPUS_SUBMIT_NIGHTLY .

Note: The result log-files must have an SVN revision line in the output, like so:

# mass-check results from jm@jalapeno, on Mon Nov 21 09:10:15 UTC 2005
# M:SA version 3.2.0-r322462
# SVN revision: 345462
# Perl version: 5.008003 on i386-linux-thread-multi
# Switches: '--progress --tail=20000 -j 4 -f /home/jm/cor/tgts'

If that line isn't present, the rule-QA reporting system cannot correlate the logs with the source revision, and instead ignores them.

If you do not use SVN to retrieve the SpamAssassin source tree, this may not be present, since "mass-check" cannot use "svn info" to get the current revision data. However, there's a workaround. Before running "mass-check", run "svn info" and redirect the output into a file called "svninfo.tmp" in the "masses" directory. Mass-check will read that and use its data for the "SVN revision:" line.

(The version of the tree available at rsync://rsync.spamassassin.org/tagged_builds/nightly_mass_check and .../weekly_mass_check already has this file included.)

(Administrivia: setting up a nightly mass-check user on spamassassin.zones.apache.org)

For PMC members who want to set up a user for the "Easiest" method. Log in to the zone and run:

MCUSER=[username]
MCPWD=[random password]

sudo mkdir /export/home/nitemc/$MCUSER
sudo chmod 1777 /export/home/nitemc/$MCUSER
cd /export/home/nitemc/$MCUSER
echo "$MCPWD" > rsync_password
chmod 600 rsync_password

sed -e "s/MCUSER/$MCUSER/" -e "s/MCPWD/$MCPWD/" > .corpus

And paste in these lines:

opts_weekly="--net -j 8 --reuse --cache --cachedir=/tmpfs/aicache_nightly --cs_schedule_cache --cs_cachedir=/export/home/nitemc/cache --restart=500 ham:detect:/export/home/bbmass/uploadedcorpora/MCUSER/ham/* --after="-15552000" --tail=25000 spam:detect:/export/home/bbmass/uploadedcorpora/MCUSER/spam/*"
opts_nightly=" --reuse --cache --cachedir=/tmpfs/aicache_nightly --cs_schedule_cache --cs_cachedir=/export/home/nitemc/cache --restart=500 ham:detect:/export/home/bbmass/uploadedcorpora/MCUSER/ham/* --after="-15552000" --tail=25000 spam:detect:/export/home/bbmass/uploadedcorpora/MCUSER/spam/*"
tmp=$HOME/tmp
tree=$HOME/svn
prefs_weekly=$HOME/user_prefs.weekly
prefs_nightly=$HOME/user_prefs.nightly
username=bb-MCUSER
password=__RSYNC_PASSWORD__
serverhost=spamassassin.zones.apache.org.:38899
clienthosts=__CLIENTHOSTS__
clienttree=nightlymc_MCUSER

Then CTRL-D to end cat.

mkdir tmp
svn co http://svn.apache.org/repos/asf/spamassassin/trunk svn
[accept certificate 'p'ermanently]

sudo chown -R nitemc .

In SVN trunk, edit build/nightlymc/run_nitemc, add their username to the list, check that file in.

Then in the zone, as the uid "automc", do this:

  cd /home/automc/svn/spamassassin
  svn up

so that that latest script is updated for when cron runs.

Finally, edit /home/corpus-rsync/secrets and add a line to the end, like so:

$MCUSER:$MCPWD

e.g. if MCUSER was "bb-jm" and the generated MCPWD was "Wi0FdPWg":

bb-jm:Wi0FdPWg
  • No labels