Changes - razor-agents

2.85 (July 21, 2008)

  • Relicense under Artistic License 2.0. See LICENSE for details.

2.84 (May 10, 2007)

  • Update discovery hostname.

2.83 (May 8, 2007)

  • Remove all uses of $' from code. This removes a global regex engine slowdown. [ #5312]

  • Comment out or replace shell commands with Perl equivalents. This removes the prerequisites of uname(1) and GNU mkdir(1).

2.82 (May 26, 2006)

  • Always disconnect from discovery server after performing discovery. This fixes a long standing bug wherein razor-report and razor-check would attempt to report to or check against the discovery servers.

2.81 (Mar 16, 2006)

  • Update service policy.

2.80 (Feb 27, 2006)

  • Untaint filenames loaded from the config file. [Bug #1395719]

2.79 (Feb 16, 2006)

  • Change C++ comments to C comments. [Patch #1431589]

2.78 (Oct 01, 2005)

  • When registering with a username and password, accept existing credentials if they authenticate successfully.

  • When autoregistering, attempt to write a test identity before attempting to register credentials.

  • Always remove the existing identity symlink before overwriting, as -e $fn can return false for a symlink that still exists.

  • Added several error checks to the register process.

  • Disconnect from the register server before returning when errors occur.

  • Ensure that checks and reports are sent to the appropriate servers. [Bug #1267559]

2.77 (Aug 17, 2005)

  • Fixed corrupted distribution.

2.76 (Aug 15, 2005)

  • When no reporter identity is found, attempt to register automatically.

  • When -home is specified on the command line, default global_razorhome to the provided value. [Gentoo #101070]

2.75 (July 6, 2005)

  • Removed two debugging statements accidentally checked into 2.74.

  • Applied syslog patch from Debian bug #295727 to reintroduce support for 'sys-syslog' and 'syslog' log targets. [Feature #1229433]

  • Modified Makefile.PL to honor DESTDIR when installing section 5 man pages. [Bug #1227167]

  • Fixed failure for razor-agents to exit with error when unknown parameters were specified. [Bug #1229450]

  • Fixed bug for when razor-agents was invoked without ``-f'' but reading from STDIN, causing the shell to be unusable until the forked background process was killed off. [Bug #1229887]

2.74 (June 28, 2005)

  • Fixed handling of configuration options; under certain circumstances, neither the defaults nor the configuration file would set necessary variables such as listfile_discovery.

  • Fixed handling of -home option; when provided, it will be accepted without further checks.

  • Fixed installation of man(5) pages by non-root users to local man directories. [Patch #1227162]

  • Reverted a patch that was intended to add support for overriding razorhome under certain circumstances. The patch introduced new issues with external program integration (eg. Amavis). [Bug #1074391]

  • Corrected a spelling error in a debug message.

  • Added several defined checks to avoid unnecessary warnings when manipulating server lists.

  • Corrected the preprocessing fix shipped with 2.70 and updated the test suite to match. [Bug #1001417]

  • Updated preproc implementation (deHTMLxs) to match other clients.

2.72 (June 16, 2005)

  • razor-client no longer creates symlinks to itself upon installation; four new scripts have been added to the distribution to replace this functionality (razor-admin, razor-check, razor-report, razor-revoke).

2.71 (June 15, 2005)

  • A fix to Makefile.PL script to correctly invoke razor-client after installation. Thanks to Liam Quinn for the patch.

2.70 (June 10, 2005)

  • Fixed preprocessing of unusual HTML messages. This resolves the segfault issue in razor-agents. [Bug #1001417]

  • Fixed handling of certain malformed headers.

  • Explicitly specify the record separator as \n when reading files, to ensure that someone else hasn't set it to undef. [Patch #537813]

  • razorzone is no longer supported and has been removed from the documentation.

  • Allow the config file to set razorhome. [Bug #1074391]

  • Razor Agents no longer go into an infinite loop when discovery fails. [Bug #1016039]

  • Properly creates razor-* symlinks after installation. [Bug #874468]

  • Default to PERLPREFIX instead of PREFIX when installing man5 pages. [Bug #1001320]

  • Removed a call to $sha1->reset() which was breaking SHA1 calculation. [Bug #1004858]

  • use_engines is no longer supported and has been removed from the documentation. [Bug #1120311]

  • Shuffle the discovery, catalogue, and nomination server lists after loading them from disk; this prevents razor-agents from always starting with the same catalogue server.

  • Replace the complex DNS lookup logic for discovery servers with a single DNS round robin. [Bug #604679]

  • Remove the ICMP ping logic for finding the "fastest" catalogue server; the configuration option for this logic is now ignored. [Support #739464]

  • Removed stale engine code for various signature types that are no longer used.

2.67 (December 03, 2004)

  • This is a patch release that fixes a bug in the Whiplash signature scheme. The bug was in the new code added to support canonicalization of domains. It caused the signature algorithm to generate no signatures on valid content.

2.66 (December 02, 2004)

  • Introduced support for country domain canonicalization in the Whiplash signature scheme. This means domains like would be extracted correctly by Whiplash. This change affords a considerable improvement in accuracy.

  • Modified the revocation logic to do signature-only communications with the server. All versions of razor-agents prior to this sent the entire message on razor-revoke, and even though the backend would drop the messages after computing signatures, this entailed a privacy risk. From this version on razor-agents will _never_ send the contents of a revoked message to the backend servers.

  • Fixed a bug in se (supported engines) computation, which was broken when the se mask was larger than 8 bits. This would sometimes disable the use of engine 4 (ehash). This fix would also afford an increase in accuracy due to ehash being used everytime.

  • Fixed a bug in report by message. Version 2.61 would drop MIME headers on certain spam messages which would cause the backend to ignore these messages as malformed.

2.61 (July 06, 2004)

  • Introduced the Whiplash signature scheme. Whiplash signatures are based on canonical domain names present in URLs embedded in spam messages. A Whiplash signature is also a function of the length of the spam message. It's important to note that not all whiplashes are used as classifiers. The Whiplash engine is augmented by sophesticated logic on the Razor2 backend to select the Whiplashes that are used to filter spam.

  • Fixed a bug in MIME parser whereby some broken MIME mails were invisible to the system. [Bug #788723]

  • We override the use_engines parameter in the config file because this version supports different engines but leaves the config file untouched. [Bug #984374]

  • Engine 1 support completely removed. Engine 1 was a signature scheme compatible with the old razor v1 signatures, which is no longer supported on the backend. [Bug #975490]

2.40 (Dec 07, 2003)

  • Applied patch from Michael (lemkemch) to make Razor Agents work on VMS. (SF patch #797003).

  • Applied another Makefile.PL patch from Michael Schwern to correctly install manpages in part 5 of the manual set in various versions of perl.

  • Applied patch from Mark Martinec and Vivek Khera of Amavid to untaint various file targets obtained from user input. This is the same patch pointed to by the SpamAssassin FAQ []

  • Support for HTTP 1.1 tunneling [SF patch #821324] by Jon Schewe.

  • Applied Anne Bennett's patch to to introduce a new log target, "syslog-sys", that talks to Syslog over a Unix socket rather than a TCP socket.

  • Applied Anne Bennett's patch to deHTML.xs to get rid of the type mismatch warning.

  • Removed computation of signatures that are no longer supported by the backend -- engines 1, 2 and 3. Digest::Nilsimsa no longer required by Razor Agents.

2.36 (Aug 05, 2003)

  • Removed some experimental code.

2.35 (Aug 05, 2003)

  • Applied a patch to Makefile.PL by Michael Schwern. This patch makes Makefile.PL compatible with new MakeMaker and behave better in general.

  • C++ style comments in deHTML code replaced with C comments so the code compiles with C compilers other than GCC.

  • Applied patch [SF patch #766292] by Suren A. Chilingaryan to detect and skip body parts that only contain MIME headers.

2.34 (May 16, 2003)

  • Fixed a bug where razor-check would terminate prematurely on messages for which it could not compute a signature. Thanks to Bela Lubkin for tracking this and several other bugs down! [vipul]

  • We don't do server sorting by distance anymore. Most servers are closeby, so we use the order the discovery server gives us. [vipul]

  • Introduced SOCKS support. Net::SOCKS is required in order to use SOCKS. Specify socks_server in the config file. [vipul]

  • Fixed a bug in String::split_mime(); the MIME boundry was being spuriously set in certain cases. [SF bug #707850 by Jams H Thompson]. [vipul]

  • Razor agents use getpwuid() instead of getlogin() to determine the user's home directory. [SF bug #650410 by Jochen Erwied]. [vipul]

  • A bug in the selection of zone prefixes in bootstrap discovery was fixed. [SF bug #604679 by Bill Sobel] [vipul]

  • Razorhome is gleaned from the config file passed to razor-agents, if all else fails. "razor-report -conf=/etc/razor/razor.conf spam" will use /etc/razor as its home if no other home is found (eg in $HOME/.razor). To force a particular Razorhome value, use the -home=path option. [vipul]

  • Rewrote many error messages to be descriptive and helpful. [vipul]

  • auth=ai provides client name and version. [vipul]

  • discover() will force bootstrap discovery when all discovery servers are unavailable. This fixes a bug where by razor-agents would try to connect to the old Razor2 discovery server found in servers.discovery.lst. [vipul]

  • reportit() in background mode will return faster. [vipul]

  • checkit(), reportit(), parse_mbox(), etc take an ARRAY hash as an argument when provided against the `aref' key. [vipul]

2.22 (Nov 21 2002)

  • Turned off verbose logging in ehash that was left on by mistake. [vipul]

  • Some user contributed additions to the FAQ.

2.21 (Nov 19 2002)

  • Ephemeral Hash reverts to the entire content when both sections are composed of whitespace. This makes a certain type of false positives go away. [vipul]

  • Razor2::Client::Core skips whitespace only message parts. [vipul]

  • DebugLevel 15 prints out the content after preprocessing, just before the signatures are computed. [vipul]

2.20 (Oct 15, 2002) (First Stable Version)

  • If log file isn't writable for whatever reason, we write logs to /dev/null. [vipul]

  • We look for stray \r's in the split_mime function. Thanks to Jim <> for pointing this out. [vipul]

  • Added a significantly faster XS version of deHTML code. [vipul]

  • Made ::Agent taint friendly. [vipul]

  • Added support for passing an already open filehandle to ::Agent::checkit() and ::Agent::parse_mbox() [vipul]

  • Made logic_method 4 the default. [vipul]

  • Added Razor2::Syslog to the package. [vipul]

2.14 (July 24, 2002)

  • General release of 2.126 [chad]

2.126 (July 24, 2002)

  • Improved logic again for detecting spam. [chad, vipul]

  • Run-time warnings are disabled unless in debug mode. [chad]

2.125 (July 18, 2002)

  • Improved logic for detecting spam, now we only look at visible and/or significant mime parts. [chad, vipul]

  • Mime parts cleaned to only whitespace are now ignored on the client side, that is, they are not checked against server [chad]

  • Fixed bug in report (err 202) [chad]

  • Quieted more warnings [chad]

2.123 (July 17, 2002)

  • Fixed bug in revoke/report [chad]

  • Whitelist now looks at all 'Received:' headers for matching [chad]

  • Added debuglevel, whitelist cmd-line options [chad]

  • Quieted more warnings [chad]

2.122 (July 15, 2002)

  • Renamed razor-register razor-admin. To register, you must 'razor-admin -register' [chad]

  • Cleanded up how we store mail parts. Each mail object now has a part object that stores info relevant to that part. [chad]

  • Fixed parse_mbox (reading mbox and rfc822 mails) [chad]

  • Backup any existing identity files before writing over them (with new identity) [chad]

  • Added lock file support, so only one process writes to servers.*.lst at a time [chad]

  • Added rediscover_wait_dns [chad]

  • Fixed a bug when we rediscover, we save info to list correctly but when using it we skip the first server [chad]

  • Fixed whitelist so rule 'from xx' only matches 'From: .*xx' not 'From .*xx' (Note the ':') [chad]

  • Made exit codes cleaner [chad] 0 or 1 => no error 2 or greater => error

  • Fixed error msg/exit code after disconnect [chad]

  • Added -w to razor binaries [chad]

  • If authen fails 'cuz unknown user (213), attempt re-register [chad]

  • Quieted a bunch of warnings [chad]

2.12 (June 28, 2002)

  • Man pages install correctly. [chad]

  • Updated 'razor-register -create' so it creates home, conf, and forces discovery creating all .lst files. [chad]

  • added -discover switch to force discovery [chad]

  • Everytime server bumps srl, force discovery. [chad]

  • Fixed bug in preprocessor for engine 1, might have caused false postivies. [chad]

  • Whitelist fixed. [chad]

  • Default logging is much more quiet, debuglevel changed from 5 to 3. [chad]

  • Debug mode (-d) default debuglevel changed from 5 to 9 [chad]

  • Fixed lots of logging foo. [chad]

2.10 (June 22, 2002)

  • Significantly improved runtime by not loading all packages until they are needed. These include: Time::HiRes Net::Ping Net::DNS. [chad]

  • Non-mbox support added, thanx to Aaron Hopkins <>. Now you can do:

     razor-check mail1 mbox mail2 ...
  • -M mbox option has been removed, Razor Agents will figure out if file is mbox or not. [chad]

  • Fixed a couple bugs relating to incorrect logs. [chad]

  • Fixed a bug relating to first-time caching of a new server. [chad]

  • Added ep4 to default server cache. [chad]

2.09 (June 20, 2002)

  • Added a BUGS file to distribution [chad]

  • Added an overview manpage, razor-agents(1), updated the rest. [chad]

  • Overhauled how razorhome, config files, identity files, and -create work. Support the case where there is not and never will be a razor home dir. New options:

     -home=razorhome  (all Razor Agents)
     -ident=identity  (report, revoke, and register)
  • Should not check/report if length of cleaned body part is 0. [chad]

  • razor-register -sys switch removed [chad]

  • Fixed various bugs relating to engine 1 and razor 1 compatibility [chad]

  • Fixed bugs relating to sending/receiving queries to/from server. [chad]

2.08 (June 16, 2002)

  • Removed the debug statements from Razor2::Signature::Ephemeral. [vipul]

2.07 (June 15, 2002)

  • Added to the tarball. It was missing from 2.06. [vipul]

2.06 (June 15, 2002)

  • Added a deNewline preprocessor that removes trailing \ns. Reflected the change in the server code as well. The reason for this is that MUAs (like mutt) strip trailing \n's so there's no way to get to the original message. This change necessitates upgrade from old 2.x agents. [vipul]

  • Fixed a bug in to use EUID instead of UID to discover user's Razor config directory. Thanks to Theo Van Dinter <> for the patch. [vipul]

  • Fixed a bug in sort in Razor2::String. [vipul]

2.05 (June 15, 2002)

  • Fixed port bug with bootstrap_discovery (initial register fails) -chad

2.04 (June 13, 2002)

  • Added 'use_engines' to razor-agent.conf(5) [chad]

  • Fixed a bug in reading port from server:port. Thanks to Theo Van Dinter <>. [chad]

  • Client behaves properly by sending a=q when done with server. [chad]

  • Client now turns off VR2 by default. [chad]

  • Logs to stdout if -d (debuggin) cmd-line option is used. [chad]

  • Register string now Razor-Agents v2.xx. [chad]

2.03 (June 13, 2002)

  • Fixed a bug in deHTML that was causing razor-check to hang on certain type of content.

  • Fixed a bug in regexes in the MIME decoding function.