== released 20010805 =========================================================

IMPORTANT BUG FIX: a regular expression was not anchored and the filter
rejected ALL newgroup and rmgroup messages for groups containing the
strings comp|misc|news|rec|soc|sci|humanities|talk.

Addedd support for NNTP-Posting-Host headers with multiple elements.
All space-separated elements are now checked against the bad_hosts file.

== released 20010801 =========================================================

IMPORTANT: the old MD5.pm compatibility interface is not distributed
anymore with the modern Digest::MD5 module. If you installed the very
old MD5 perl module instead of Digest::MD5 you will have to install
Digest::MD5 to use this version of cleanfeed.

Fixed a bug which killed cleanfeed after disabling a rate filter when
do_emp_dump is active.

Default configuration changes: the parameters emp_dump_file, active_file
and statfile do not have a default anymore and the debug_batch_size
default has been changed to 0.

Added the string "window.open(" to the scoring filter.

Removed these config options: phl_moderated_groups do_bot_checks
check_supersedes_path drop_control_with_supersedes.

Updated adult_groups and phl_exempt.

Removed obsolete entries from bad_cancel_paths.

Removed unneeded -w from the perl command line in highwind.pl.

Added a cleanfeed.local.sample-it which Italian sites can use as-is. It's
also good for sites looking for a typical minimal cleanfeed.local.

Minor changes to cleanfeed.local.sample.

== released 20010715 =========================================================

User visible changes
====================

Removed the $SERVER variable, now the user only has to set $MODE.
Actually it's set automatically, so there is no mandatory configuration.

Support for highwind servers moved to highwind.pl.

Removed "reportfile" support.

Merged cleanfeed.conf in cleanfeed.local, removed support for reading a
cleanfeed.conf file.

Splitted $config{block_multi_alt} from $config{block_html}.

Removed these obsolete checks: Happy99 virus, Virus Patrol bot,
"Sexzilla newgroup message", QP bot, "HipCrime" string in From or
Organization header of cancels, "Cabal" or "Meow" strings in some
control messages.
Removed the $bad_sites checks, for which I have no data anyway.

Short uuencoded .exe files are now deleted by default along with the
usual txt, html and url extensions.

Changed some default values from 0 to 1: fuzzy_md5, do_mid_filter, block_html.
Added alt.snuh and alt.fan.natasha to the low_xpost_groups.
Added fido.* and linux.* to bin_allowed.
Added freebsd.csie.nctu.edu.tw to phl_exempt.
Removed from phl_exempt some hosts which do not exist anymore.
Added checks for the following bots: usenet replayer, express news poster,
Smart Post Pro, Message-ID/X-Mailer bot, Path/Newsgroups bot,
Path/From/Message-ID bot (unknown names).

Removed from supersedes_exempt all hosts except penguin-lust.mit.edu,
which appears to be the only one still active.

Removed the exceptions for nl-cancel@*xs4all.nl and lendl@*, which are
not needed anymore. Add nl.internet.misbruik.rapport to spam_report_groups.

Removed net_abuse_groups, which has no apparent use.

Added a check for things like [999/7] in the Subject header.

Added checks for the most simple NewsAgent attacks.

Added code to discard unneeded reposts, inspired by the Barry Bouwsma's
qleanpheed.

Added a scoring rule for embedded LiveScript.

Added a check for unwanted NNTP-Posting-Host sites, read from an external
configuration file ($config_dir/bad_nph).

Added a global list of poisoned path entries ($config_dir/bad_paths) and
one for sex groups ($config_dir/bad_adult_paths). Entries are also matched
against the last Path entry (the pseudo username).

$config{bad_cancel_paths} has been moved to a config file. The entries
are not checked against the NNTP-Posting-Host anymore.

New config options: adult_groups not_adult_groups faq_groups.

Removed the sreason log option.

Big changes in the local_*() functions, check HACKING.

Implementation changes
======================

Reformatted the code to follow perlstyle(1p).

Added slog() function implementing syslogging.

Converted the more complex regular expressions to use the //x modifier.

Removed writeheaders() and writefull() in favour of saveart().

Fixed division by zero error in timer_stats(), added protection against
pathological input to is_binary().

Added a new section of filter_art() with checks common to both control
messages and regular articles.

Added some new functions read_hash(), read_regex() and read_file() to
initialize some variables with the contents of a text file.

Added local_filter_reject().

Munge the body with s/\s+$// instead of s/(\r?\n)\s+$/$1/, which is
(marginally) faster and should be as effective as the old expression.

Add one scoring point to articles with at least one \r.

Added a check for INN::newsgroup in every place the existence
of $config{active_file} was checked.

