Ok, I've put together my findings on porting SpamAssassin to Win32. I
plan to post this as a HOWTO on an HTML web page at some point if it
passes muster with you guys.

A few notes:

- I'm not a perl expert - heck I barely know perl. So be gentle in
your comments, please!
- The sections which may be of most interest are the sections of
problems with Win32/SpamAssassin: chiefly, the auto-whitelist feature
doesn't work (long discussion below), and the razor-lookup always
timesout.

So I'm opening the floor. Here's the document as is:

USING SPAMASSASSIN WITH WIN32

Draft 1, [EMAIL PROTECTED]

LIMITATIONS

- autowhitelist doesn't function (SEE AUTOWHITELIST DOESNT WORK)
- Most people don't have visual c++ so they can't compile SPAMC, so
spamassassin must be run in "serial mode".
- razor is unreliable.
- a few installation quirks

These will all be discussed in more detail later



First of all, use WinNT/2K/XP only. It IS possible to get it
running on Win9x, but Perl acts unreliably on such platforms.

PART I: Installing Perl

1. This is very easy. Go to http://www.activestate.com, and select
the ActivePerl
download. Choose the MSI installer version.

2. Double click the MSI file and run it. All of the default options
are fine.
Don't worry if the Perl installer seems to take a really long time.
Wait
at least 10 minutes before worrying.

3. Open a DOS box and type PERL -V to verify all is well.

4. In subsequent sections, it will be assumed that Perl was installed
in C:\perl. Make appropriate changes if necessary.

PART II: Installing NMAKE

1. We need NMAKE to build Perl modules
2. Obtain from ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe
3. Extract the files, and place them in C:\perl\bin


PART III: Installing the needed Modules, part I.

We do this using the Perl Package Manager, rather than CPAN when
possible, as it downloads the best versions for Win32.

Basic method of operation:

1. open dos box.
2. Type PPM
3. At the PPM> prompt, type install <modulename>

For SpamAssassin itself, we need only one module, Net::DNS,
so we'd type install Net::DNS

If Razor functionality is needed, also install these
modules:

Net::Ping [See notes on this in RAZOR section]
Time::HiRes
Digest::SHA1

We will also need to install Mail::Internet. Unfortunately
this is not available via the PPM repository currently.
See RAZOR section below for more.


Part IV: Obtaining Spam Assassin

Go to http://www.spamassassin.org, choose download, and get
the ZIP file distribution.

Use WinZIP or other ZIP extractor, and extract the ZipFile 
off the root. For SpamAssassin 2.11, for example, this will
create Mail-SpamAssassin-2.11 off C:\

We'll refer to this directory as the SPAMSOURCE directory
below.

PART V: Pre-install

Open a DOS box, go to the SPAMSOURCE directory and type

PERL windows_install.pl
PERL makefile.pl


PART VI: Getting the NMAKE to work, Part I

Here's where we start to see quirks, most of them easy to fix.
We will go through each error message one by one until the NMAKE
compiles.
(The main reason to do this is to achieve better understanding what
works and what doesn't, so if a new branch of SpamAssassin changes
things...)

1. Open a dos box and go to the SPAMSOURCE directory.
2. Type NMAKE
3. It will fail, complaining that TOUCH cannot be found. It may also
complain about
spamd/spamc.

REASON: TOUCH isn't a Windows command. Also genning the HTML docs
from
the POD file confuses the Windows command interpreter

WORKAROUND THIS: Open MAKEFILE (SPAMSOURCE directory) in NotePad, and
find

pm_to_blib: spamassassin doc/.made

Change it to

pm_to_blib: spamassassin doc/.made

which will skip this section. (See CLEANING UP THE QUIRKS). Save the
file.

4. Try NMAKE again!
5. It will (most likely) fail again, complaining that CL is not
recognized.

REASON: One component of Spamassassin is spamc, the client piece of a
neato way to really
speed up SpamAssassin. But most of us don't own Visual C++, and so we
don't have a C compiler handy.
Unix people have life easy :)

WORKAROUND: Well, if you really need spamc, you gotta get a C
compiler. Otherwise, 
open MAKEFILE in Notepad again, and find

        $(CFCC) $(CFCCFLAGS) $(CFOPTIMIZE) spamd/spamc.c \
                        -o $@ $(CFLDFLAGS) $(CFLIBS)

Comment these lines out by placing a # character at the BEGINNING of
each line. Please re-read
the last sentence - if # isn't the very first character the line will
NOT be commented out
properly.

6. Run NMAKE again. It should complete (the error about
blib\script\spamc is fine, and occurs
because we never compiled spamc)

PART VII: Getting NMAKE to work, Part II

Here we get NMAKE INSTALL to work properly. NMAKE TEST will never
work, 
as there are too many whacked modules at this point. Oh well.

1. Open a DOS box and go to SPAMSOURCE directory.
2. Type NMAKE INSTALL
3. You will see a failure right after the mkdir -P command

REASON: 3 issues come up now. The first is that mkdir -P has no
analogue. We'll
use MKDIR instead. Second some of the paths for the rule directories
won't work
as is. Finally, some of the installation routines will not work to
copy configuration files, so we need to work around that too!

WORKAROUND 1: Open MAKEFILE, and change all mkdir -P command to
simply mkdir
(eg     mkdir -p $(DEF_RULES_DIR) to mkdir $(DEF_RULES_DIR)

WORKAROUND 2: Also, find

DEF_RULES_DIR   = $(PREFIX)/share/spamassassin
LOCAL_RULES_DIR = /etc/mail/spamassassin

and change them to

DEF_RULES_DIR   = $(PREFIX)\share\spamassassin
LOCAL_RULES_DIR = \etc\mail\spamassassin

WORKAROUND 3: Finally, change these lines

inst_cfs: $(LOCAL_RULES_DIR) $(DEF_RULES_DIR)
$(DEF_RULES_DIR)/user_prefs.template 
$(LOCAL_RULES_DIR)/local.cf migrate_cfs
        for file in $(RULES) ; do \
          $(CP) rules/$$file $(DEF_RULES_DIR)/$$file; \
        done

$(DEF_RULES_DIR)/user_prefs.template: rules/user_prefs.template
        $(CP) rules/user_prefs.template $(DEF_RULES_DIR)/user_prefs.template

$(LOCAL_RULES_DIR)/local.cf: rules/local.cf
        [ -f $(LOCAL_RULES_DIR)/local.cf ] || $(CP) rules/local.cf
$(LOCAL_RULES_DIR)/local.cf

migrate_cfs:
        [ ! -f /etc/spamassassin.cf ] || $(MV) /etc/spamassassin.cf
/etc/mail/spamassassin/migrated.cf
        [ ! -f /etc/mail/spamassassin.cf ] || $(MV)
/etc/mail/spamassassin.cf /etc/mail/spamassassin/migrated.cf

to

inst_cfs: $(LOCAL_RULES_DIR) $(DEF_RULES_DIR)
$(DEF_RULES_DIR)/user_prefs.template 
#$(LOCAL_RULES_DIR)/local.cf migrate_cfs
#       for file in $(RULES) ; do \
#         $(CP) rules/$$file $(DEF_RULES_DIR)/$$file; \
#       done

$(DEF_RULES_DIR)/user_prefs.template: rules/user_prefs.template
        $(CP) rules/user_prefs.template $(DEF_RULES_DIR)/user_prefs.template

$(LOCAL_RULES_DIR)/local.cf: rules/local.cf
        [ -f $(LOCAL_RULES_DIR)/local.cf ] || $(CP) rules/local.cf
$(LOCAL_RULES_DIR)/local.cf

migrate_cfs:
#       [ ! -f /etc/spamassassin.cf ] || $(MV) /etc/spamassassin.cf
/etc/mail/spamassassin/migrated.cf
#       [ ! -f /etc/mail/spamassassin.cf ] || $(MV)
/etc/mail/spamassassin.cf /etc/mail/spamassassin/migrated.cf

(We are basically commenting out sections that would fail to copy
files correctly. Don't worry - it's groovy)


4. Run NMAKE INSTALL - all should be well now.

PART VIII: CLEANING UP THE QUIRKS

1. First, manually copy the files in rules directory to
\etc\mail\spamassassin, which should
now exist. This copies the default rules nicely. This is NEEDED for
SpamAssassin
to work.
2. Next, find \perl\bin\spamasasssin.bat, and add at the beginning
SET RES_NAMESERVERS=ipaddress , where ipaddress is the ipaddress of
your DNS server. If you
have more than one, add additional ones, separating with a space
character.
This is needed for all RBL lookups - the Net::DNS module is not
currently capable of checking
the Windows registry, so we have to "help it"

3a. Open up NotePad, and type this in:

REM Run from the top of the Spam Assassin install directory
mkdir \spamdocs
call pod2html spamassassin. --outfile \spamdocs\spamassassin.html
call pod2html spamd\spamc.pod  --outfile \spamdocs\spamc.html
call pod2html spamd\spamd. --outfile \spamdocs\spamd.html
call pod2html spamproxy\spamproxyd. --outfile
\spamdocs\spamproxyd.html
call pod2html lib\mail\spamassassin\conf.pm --outfile
\spamdocs\conf.html
call pod2html lib\mail\spamassassin\permsgstatus.pm --outfile
\spamdocs\permsgstatus.html
call pod2html lib\mail\spamassassin\persistentaddrlist.pm --outfile
\spamdocs\persistentaddrlist.html
call pod2html lib\mail\spamassassin\smtp\smarthost.pm --outfile
\spamdocs\smarthost.html
call pod2html lib\mail\spamassassin.pm --outfile
\spamdocs\spamassassinclass.html

3b. Save this file as POD.BAT in the SPAMSOURCE directory.
3c. Open a DOS box, go to SPAMSOURCE and type POD. This will generate
the HTML docs for SpamAssassin, and
place them in \spamdocs. This works around the faulty TOUCH/POD2HTML
script issues we originally
disabled.

4a. Ok, we will try a test. It will fail, proving life is weird <g>.
>From the SPAMSOURCE
directory, type 

PERL -S "spamassassin" -P < sample-spam.txt

I'll bet you you will get a "getpwuid is unimplemented" error.

4b. Fixing this isn't too bad. Go to \perl\site\lib\mail. You'll find
spamassassin.pm. It will be
read-only (change this). Open it in Notepad and find

   return (getpwuid($>))[7];

change this to

#  return (getpwuid($>))[7];

PART IX: TESTING

Create a temporary directory called TEST off the root. Copy the
sample-spam.txt and sample-nonspam.txt
files from the SPAMSOURCE directory.

Open a DOS box.

1. Type

spamassassin -P -D -t < sample-nonspam.txt > nospam.txt

This should run fine, and when you look at nospam.txt the report
should be hunky dory.

2. Type

spamassassin -P -D -t < sample-spam.txt > spam.txt

This should run fine and the report should label this as spam.
Note the RBL check should register as spam as well.


Notes for usage:

- You can process any MIME message by typing

spamassassin -P < inputfile > outputfile

- Adding a -e switch will set the ERRORLEVEL to non-zero for spam!

- only free RBL lists are on by default. See the SPAMSOURCE README
for more
details on this.


PART X: AUTOWHITELIST DOESN'T WORK

The Auto-WhiteList is a neat optional piece of SpamAssassin. With the
feature enabled, people who send non-spam
are added to the "whitelist" - meaning they become increasingly less
likely to have their mail falsely flagged
as spam. 

Unfortunately, it doesn't work on Win32. The STATS/LINK/UNLINK
functions of the NFS-Safe Locking in DBAddrList.PM
go down in flames on Win32 (always tries 30 times to get the lock,
finds it stale and then fails). While one
could simply disable it, it would of course only be reliable if only
one instance of SpamAssassin were accessing
the database at one time. An unsafe assumption!

Anyway, this is probably best addressed in the main code branch. Some
possibilties:

- if Win32, use the classic flock routines, which do work
- Try the LockFile::Simple library, which may work. This might be
worth doing anyway to the maintainers;
it's a more modular elegant version of what they use anyway.

Otherwise you'll have to manually add whitelisted addresses to the
configuration files.

RAZOR

Well, this is a bit of a pain, and I doubt it will work reliably. 
Fortunately it is optional

Here  are the considerations

1. To install, begin by installing all of SpamAssassin and all of the
optional modules listed in
Part III.

2. You will also need to install Mail::Internet. Open a DOS box, type

perl -MCPAN -e shell

You will be asked some fairly frightening and confusing questions.
Ignore them, and mindlessly hit
RETURN, until you are asked for some URLS to download stuff from.
Choose some random sites.
Eventually you'll be at the CPAN> prompt again, from which you type
install Mail::Internet, and
all is hopefully well.

3. Download the RAZOR package from razor.sourceforge.net, and ungzip
and untar it (WinZip works
well for this). Place the main package off the root.

4. Build it. Go to the Razor-subdirectory and type these commands in
order:

perl makefile.pl
nmake
nmake test
nmake install

It should all go pretty well.

5. Type razor-check at the DOS prompt. If you are unlucky like me,
you'll get an "alarm
function unimplemented in ping.pm". This isn't such a big deal - we
installed a working
Net::Ping library back in Part III (it's installed at
\perl\site\net\ping.pm). But the
ActivePerl distribution comes with the BAD version of PING as the
default. Let's fix that.
Go to \perl\lib\Net and rename ping.pm to badping.pm 
and all should be well (hopefully this working ping will be
integrated into the core
shortly).

6. Now we come to a bigger problem. The ALARM function is also used
in SpamAssassin's razor
lookup function. While we can disable it (and will), this might be a
bad idea, as it could
lead to "odd" timeouts and hangs if the razor server isn't up. So do
at your own risk!

The problem ALARM functions are located in
\perl\site\lib\mail\spamassassin\dns.pm . There are
two of them and they need to be commented out with a # at the
beginning of the line. If they are not,
SpamAssassin will run fine, but ALWAYS time-out on the RAZOR
check.USING SPAMASSASSIN WITH WIN32

Draft 1, [EMAIL PROTECTED]

LIMITATIONS

- autowhitelist doesn't function (SEE AUTOWHITELIST DOESNT WORK)
- Most people don't have visual c++ so they can't compile SPAMC, so
spamassassin must be run in "serial mode".
- razor is unreliable.
- a few installation quirks

These will all be discussed in more detail later



First of all, use WinNT/2K/XP only. It IS possible to get it
running on Win9x, but Perl acts unreliably on such platforms.

PART I: Installing Perl

1. This is very easy. Go to http://www.activestate.com, and select
the ActivePerl
download. Choose the MSI installer version.

2. Double click the MSI file and run it. All of the default options
are fine.
Don't worry if the Perl installer seems to take a really long time.
Wait
at least 10 minutes before worrying.

3. Open a DOS box and type PERL -V to verify all is well.

4. In subsequent sections, it will be assumed that Perl was installed
in C:\perl. Make appropriate changes if necessary.

PART II: Installing NMAKE

1. We need NMAKE to build Perl modules
2. Obtain from ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe
3. Extract the files, and place them in C:\perl\bin


PART III: Installing the needed Modules, part I.

We do this using the Perl Package Manager, rather than CPAN when
possible, as it downloads the best versions for Win32.

Basic method of operation:

1. open dos box.
2. Type PPM
3. At the PPM> prompt, type install <modulename>

For SpamAssassin itself, we need only one module, Net::DNS,
so we'd type install Net::DNS

If Razor functionality is needed, also install these
modules:

Net::Ping [See notes on this in RAZOR section]
Time::HiRes
Digest::SHA1

We will also need to install Mail::Internet. Unfortunately
this is not available via the PPM repository currently.
See RAZOR section below for more.


Part IV: Obtaining Spam Assassin

Go to http://www.spamassassin.org, choose download, and get
the ZIP file distribution.

Use WinZIP or other ZIP extractor, and extract the ZipFile 
off the root. For SpamAssassin 2.11, for example, this will
create Mail-SpamAssassin-2.11 off C:\

We'll refer to this directory as the SPAMSOURCE directory
below.

PART V: Pre-install

Open a DOS box, go to the SPAMSOURCE directory and type

PERL windows_install.pl
PERL makefile.pl


PART VI: Getting the NMAKE to work, Part I

Here's where we start to see quirks, most of them easy to fix.
We will go through each error message one by one until the NMAKE
compiles.
(The main reason to do this is to achieve better understanding what
works and what doesn't, so if a new branch of SpamAssassin changes
things...)

1. Open a dos box and go to the SPAMSOURCE directory.
2. Type NMAKE
3. It will fail, complaining that TOUCH cannot be found. It may also
complain about
spamd/spamc.

REASON: TOUCH isn't a Windows command. Also genning the HTML docs
from
the POD file confuses the Windows command interpreter

WORKAROUND THIS: Open MAKEFILE (SPAMSOURCE directory) in NotePad, and
find

pm_to_blib: spamassassin doc/.made

Change it to

pm_to_blib: spamassassin doc/.made

which will skip this section. (See CLEANING UP THE QUIRKS). Save the
file.

4. Try NMAKE again!
5. It will (most likely) fail again, complaining that CL is not
recognized.

REASON: One component of Spamassassin is spamc, the client piece of a
neato way to really
speed up SpamAssassin. But most of us don't own Visual C++, and so we
don't have a C compiler handy.
Unix people have life easy :)

WORKAROUND: Well, if you really need spamc, you gotta get a C
compiler. Otherwise, 
open MAKEFILE in Notepad again, and find

        $(CFCC) $(CFCCFLAGS) $(CFOPTIMIZE) spamd/spamc.c \
                        -o $@ $(CFLDFLAGS) $(CFLIBS)

Comment these lines out by placing a # character at the BEGINNING of
each line. Please re-read
the last sentence - if # isn't the very first character the line will
NOT be commented out
properly.

6. Run NMAKE again. It should complete (the error about
blib\script\spamc is fine, and occurs
because we never compiled spamc)

PART VII: Getting NMAKE to work, Part II

Here we get NMAKE INSTALL to work properly. NMAKE TEST will never
work, 
as there are too many whacked modules at this point. Oh well.

1. Open a DOS box and go to SPAMSOURCE directory.
2. Type NMAKE INSTALL
3. You will see a failure right after the mkdir -P command

REASON: 3 issues come up now. The first is that mkdir -P has no
analogue. We'll
use MKDIR instead. Second some of the paths for the rule directories
won't work
as is. Finally, some of the installation routines will not work to
copy configuration files, so we need to work around that too!

WORKAROUND 1: Open MAKEFILE, and change all mkdir -P command to
simply mkdir
(eg     mkdir -p $(DEF_RULES_DIR) to mkdir $(DEF_RULES_DIR)

WORKAROUND 2: Also, find

DEF_RULES_DIR   = $(PREFIX)/share/spamassassin
LOCAL_RULES_DIR = /etc/mail/spamassassin

and change them to

DEF_RULES_DIR   = $(PREFIX)\share\spamassassin
LOCAL_RULES_DIR = \etc\mail\spamassassin

WORKAROUND 3: Finally, change these lines

inst_cfs: $(LOCAL_RULES_DIR) $(DEF_RULES_DIR)
$(DEF_RULES_DIR)/user_prefs.template 
$(LOCAL_RULES_DIR)/local.cf migrate_cfs
        for file in $(RULES) ; do \
          $(CP) rules/$$file $(DEF_RULES_DIR)/$$file; \
        done

$(DEF_RULES_DIR)/user_prefs.template: rules/user_prefs.template
        $(CP) rules/user_prefs.template $(DEF_RULES_DIR)/user_prefs.template

$(LOCAL_RULES_DIR)/local.cf: rules/local.cf
        [ -f $(LOCAL_RULES_DIR)/local.cf ] || $(CP) rules/local.cf
$(LOCAL_RULES_DIR)/local.cf

migrate_cfs:
        [ ! -f /etc/spamassassin.cf ] || $(MV) /etc/spamassassin.cf
/etc/mail/spamassassin/migrated.cf
        [ ! -f /etc/mail/spamassassin.cf ] || $(MV)
/etc/mail/spamassassin.cf /etc/mail/spamassassin/migrated.cf

to

inst_cfs: $(LOCAL_RULES_DIR) $(DEF_RULES_DIR)
$(DEF_RULES_DIR)/user_prefs.template 
#$(LOCAL_RULES_DIR)/local.cf migrate_cfs
#       for file in $(RULES) ; do \
#         $(CP) rules/$$file $(DEF_RULES_DIR)/$$file; \
#       done

$(DEF_RULES_DIR)/user_prefs.template: rules/user_prefs.template
        $(CP) rules/user_prefs.template $(DEF_RULES_DIR)/user_prefs.template

$(LOCAL_RULES_DIR)/local.cf: rules/local.cf
        [ -f $(LOCAL_RULES_DIR)/local.cf ] || $(CP) rules/local.cf
$(LOCAL_RULES_DIR)/local.cf

migrate_cfs:
#       [ ! -f /etc/spamassassin.cf ] || $(MV) /etc/spamassassin.cf
/etc/mail/spamassassin/migrated.cf
#       [ ! -f /etc/mail/spamassassin.cf ] || $(MV)
/etc/mail/spamassassin.cf /etc/mail/spamassassin/migrated.cf

(We are basically commenting out sections that would fail to copy
files correctly. Don't worry - it's groovy)


4. Run NMAKE INSTALL - all should be well now.

PART VIII: CLEANING UP THE QUIRKS

1. First, manually copy the files in rules directory to
\etc\mail\spamassassin, which should
now exist. This copies the default rules nicely. This is NEEDED for
SpamAssassin
to work.
2. Next, find \perl\bin\spamasasssin.bat, and add at the beginning
SET RES_NAMESERVERS=ipaddress , where ipaddress is the ipaddress of
your DNS server. If you
have more than one, add additional ones, separating with a space
character.
This is needed for all RBL lookups - the Net::DNS module is not
currently capable of checking
the Windows registry, so we have to "help it"

3a. Open up NotePad, and type this in:

REM Run from the top of the Spam Assassin install directory
mkdir \spamdocs
call pod2html spamassassin. --outfile \spamdocs\spamassassin.html
call pod2html spamd\spamc.pod  --outfile \spamdocs\spamc.html
call pod2html spamd\spamd. --outfile \spamdocs\spamd.html
call pod2html spamproxy\spamproxyd. --outfile
\spamdocs\spamproxyd.html
call pod2html lib\mail\spamassassin\conf.pm --outfile
\spamdocs\conf.html
call pod2html lib\mail\spamassassin\permsgstatus.pm --outfile
\spamdocs\permsgstatus.html
call pod2html lib\mail\spamassassin\persistentaddrlist.pm --outfile
\spamdocs\persistentaddrlist.html
call pod2html lib\mail\spamassassin\smtp\smarthost.pm --outfile
\spamdocs\smarthost.html
call pod2html lib\mail\spamassassin.pm --outfile
\spamdocs\spamassassinclass.html

3b. Save this file as POD.BAT in the SPAMSOURCE directory.
3c. Open a DOS box, go to SPAMSOURCE and type POD. This will generate
the HTML docs for SpamAssassin, and
place them in \spamdocs. This works around the faulty TOUCH/POD2HTML
script issues we originally
disabled.

4a. Ok, we will try a test. It will fail, proving life is weird <g>.
>From the SPAMSOURCE
directory, type 

PERL -S "spamassassin" -P < sample-spam.txt

I'll bet you you will get a "getpwuid is unimplemented" error.

4b. Fixing this isn't too bad. Go to \perl\site\lib\mail. You'll find
spamassassin.pm. It will be
read-only (change this). Open it in Notepad and find

   return (getpwuid($>))[7];

change this to

#  return (getpwuid($>))[7];

PART IX: TESTING

Create a temporary directory called TEST off the root. Copy the
sample-spam.txt and sample-nonspam.txt
files from the SPAMSOURCE directory.

Open a DOS box.

1. Type

spamassassin -P -D -t < sample-nonspam.txt > nospam.txt

This should run fine, and when you look at nospam.txt the report
should be hunky dory.

2. Type

spamassassin -P -D -t < sample-spam.txt > spam.txt

This should run fine and the report should label this as spam.
Note the RBL check should register as spam as well.


Notes for usage:

- You can process any MIME message by typing

spamassassin -P < inputfile > outputfile

- Adding a -e switch will set the ERRORLEVEL to non-zero for spam!

- only free RBL lists are on by default. See the SPAMSOURCE README
for more
details on this.


PART X: AUTOWHITELIST DOESN'T WORK

The Auto-WhiteList is a neat optional piece of SpamAssassin. With the
feature enabled, people who send non-spam
are added to the "whitelist" - meaning they become increasingly less
likely to have their mail falsely flagged
as spam. 

Unfortunately, it doesn't work on Win32. The STATS/LINK/UNLINK
functions of the NFS-Safe Locking in DBAddrList.PM
go down in flames on Win32 (always tries 30 times to get the lock,
finds it stale and then fails). While one
could simply disable it, it would of course only be reliable if only
one instance of SpamAssassin were accessing
the database at one time. An unsafe assumption!

Anyway, this is probably best addressed in the main code branch. Some
possibilties:

- if Win32, use the classic flock routines, which do work
- Try the LockFile::Simple library, which may work. This might be
worth doing anyway to the maintainers;
it's a more modular elegant version of what they use anyway.

Otherwise you'll have to manually add whitelisted addresses to the
configuration files.

RAZOR

Well, this is a bit of a pain, and I doubt it will work reliably. 
Fortunately it is optional

Here  are the considerations

1. To install, begin by installing all of SpamAssassin and all of the
optional modules listed in
Part III.

2. You will also need to install Mail::Internet. Open a DOS box, type

perl -MCPAN -e shell

You will be asked some fairly frightening and confusing questions.
Ignore them, and mindlessly hit
RETURN, until you are asked for some URLS to download stuff from.
Choose some random sites.
Eventually you'll be at the CPAN> prompt again, from which you type
install Mail::Internet, and
all is hopefully well.

3. Download the RAZOR package from razor.sourceforge.net, and ungzip
and untar it (WinZip works
well for this). Place the main package off the root.

4. Build it. Go to the Razor-subdirectory and type these commands in
order:

perl makefile.pl
nmake
nmake test
nmake install

It should all go pretty well.

5. Type razor-check at the DOS prompt. If you are unlucky like me,
you'll get an "alarm
function unimplemented in ping.pm". This isn't such a big deal - we
installed a working
Net::Ping library back in Part III (it's installed at
\perl\site\net\ping.pm). But the
ActivePerl distribution comes with the BAD version of PING as the
default. Let's fix that.
Go to \perl\lib\Net and rename ping.pm to badping.pm 
and all should be well (hopefully this working ping will be
integrated into the core
shortly).

6. Now we come to a bigger problem. The ALARM function is also used
in SpamAssassin's razor
lookup function. While we can disable it (and will), this might be a
bad idea, as it could
lead to "odd" timeouts and hangs if the razor server isn't up. So do
at your own risk!

The problem ALARM functions are located in
\perl\site\lib\mail\spamassassin\dns.pm . There are
two of them and they need to be commented out with a # at the
beginning of the line. If they are not,
SpamAssassin will run fine, but ALWAYS time-out on the RAZOR check.

So I'm  dubious about the safety of using this, but hey, it's up to
you. The maintainers could put more of a classic check the time and
see if 10 seconds has elapsed. Assumedly the ALARM is much more
preemptive and reliable on non-Win32 however.



__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/

_______________________________________________
Spamassassin-talk mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/spamassassin-talk

Reply via email to