Version 1.0.4

* fixed remotely exploited vulnerability that can be used
  for denial-of-service attack and, potentially, arbitrary
  code execution

Version 1.0.3

* properly handle IPv6 source addresses
* check IPv6 addresses with DNSBL/DNSWL
* fixed build with glibc (function name conflict)
* fixed a number of errors found by static and dynamic analysis
* fixed build with --enable-milter option (experimental)
* fixed build with gcc -Werror=return-type
* fixed mistakes in manual pages

Version 1.0.2

* do not check /etc/hosts in dnsbl check
* -u command line option to run grossd with a differnet uid

Issues fixed:
#71: grossd dies under Linux
#72: freebsd port broken
#77: grossd does not call initgroups() prior setgid()

Version 1.0.1

* Two new configuration options: postfix_response_grey and
  postfix_response_block. Now it's possible to configure
  responses grossd sends in reply to Postfix policy delegation
  client.
* Now grossd allows only the configured sync_peer to connect
  to sync server port.
* When grey_threshold = 0 is set grossd defaults to greylisting.
  Now it's possible to combine traditional greylisting with 
  blocking based on check results.

Issues fixed:
#65: Version number to log (RFE)
#66: Compiler warnings on with 1.0.0
#67: Setting grey_threshold = 0 is not intuitive
#68: grossd should accept sync connections only from the configured sync_peer
#69: Implement postfix_response_grey and postfix_response_block (RFE)
#70: Busyloop if no access to configured statefile 

Version 1.0.0

* Prevent grossd from running as root (euid == 0). You may 
  have to modify configuration and state file ownerships
  and/or permissions. Grossd tries to setuid() and setgid()
  to nobody if started by root.
* New match shortcut logic. Now grossd will shortcut after
  a filter match only if no checks are configured (traditional
  greylister) or block_threshold == 0. 
* A lot of Milter related fixes.

- changed filter_bits default back to 24, as stated in the docs.
- added grey_reason configuration file option. See block_reason.

Issues fixed:
#48: Need man pages
#59: grossd 0.9.3 leaks memory
#60: Grossd should do all dns queries as fully qualified
#61: Space Character in Mail From Crashing Gross
#62: Double free() with milter
#63: Apostrophe chokes old gcc
#64: Garbage in logs with milter api

Version 0.9.3

* HELOified all the rest of the code. There are still no checks
  that use helo info, but now grossd logs it and also gclient 
  can send it to the server. Check INSTALL details about 
  configuring SJSMS to send helo string over to grossd.
* New logfile format! An example log line: 

  Thu Apr 17 14:50:05 2008 #8505600: a=greylist d=3 w=5 c=127.0.0.2
  s=sender r=recipient h=utu.fi m=cbl.abuseat.org+1 m=bl.spamcop.net+2
  m=combined.njabl.org+1 m=dnsbl.sorbs.net+1

  where
  a = action
  d = delay
  w = total weight
  c = client ip
  s = sender
  r = recipient
  h = helo/ehlo
  m = matched check with possible weight

- A few important bug fixes to milter server
- behaviour change: grossd now exits after creating the
  statefile when invoked with -C command line option. This
  makes life easier for package maintainers in the future.
- Implemented pidfile creation and checking. New config option
  'pidfile' controls the behaviour. Setting the option will make
  grossd to write the process pid into the file specified by the
  full path. An optional parameter 'check' can be set to keep
  grossd from starting if the pidfile already exists.

  pidfile = /full/path[;check]

  Another way to control this is by command line options -p and -P.
  Both of the options will enable pidfile creation, and -P will
  check the existence of the file.

Issues fixed:
#58: grossd should write a pid file after daemonizing (RFE)

Version 0.9.2

- documented configuration options query_timelimit and
  block_reason. See doc/examples/grossd.conf
- new option: pool_maxthreads, you may need to change this
  if you get more than 100 queries per second and/or have
  slow dns servers
- some log messages got sent with wrong priorities

#56: Grossd skips all the checks if block_threshold not set
#57: sjsms: query_timelimit is one second off

Version 0.9.1

Issues fixed:
#55: --disable-dnsbl broken on 0.9

Version 0.9

* changed the port defaults to be more compatible with
  the community, grossd now defaults to ports 5525 (grossd),
  5524 (sync), and 5522 (status queries)
* preliminary support for MILTER protocol, check config file
* support for definitive checks: it's now possible to write 
  checks that cause grossd to block or pass (whitelisting)
* dnsbl check is now run time configurable
* two new check types: RHSBL and DNSWL - check config file
  for documentation and examples. DNSWL is first definitive
  check. 

- improved thread counting in thread_pool.c
- code cleaning
- default for grey_mask was 0, effectively discarding client_ip
  information from greylisting triplet. Changed it to 24.
- checks for c-ares version: there's an API change between
  1.4.x and 1.5.0

Issues fixed:
#40: new type of check - RHSBL (RFE)
#41: new type of check - DNSWL (RFE)
#46: Make dnsbl checking run time configurable (RFE)
#47: Grossd will not run any checks if configured with --disable-dnsbl
#54: Grossd dies without error msg in non-localhost setup (with linux)

Version 0.8.2

- updating mappings example in INSTALL
- logging less verbose (one line per query)

Issues fixed:
#39: blocker queries cause segmentation fault
#43: Lot's of open udp connections when using grosscheck

Version 0.8.1

A couple of bugs fixed.

Issues fixed:
#35: grossd crashes when starting
#36: synchronization still loses one update message

Version 0.8.0

In short: Important changes from the previous version

* You must configure protocols in config file. This is done via
  'protocol' config file parameter. Either 'protocol = sjsms' or
  'protocol = postfix' or both.
* 'sync_host' and 'peer_host' has been deprecated. Use new
  'sync_listen' and 'sync_peer' options.


The longer list:
- Checks are now done in thread pools, which makes it easier to
  develop new checks, like Sophos blocker or SPF. 
- grossd can log aggregate statistics about query results. Check
  'stat_type' and 'stat_interval' configuration parameters.
- grossd can now serve different query protocols simultaneously.
  This is controlled by the 'protocol' config parameter.
- Preliminary support for Sophos blocker. Not yet production
  quality, needs testing. Check issue #19.
- check also doc/examples/grossd.conf, which make install will
  install as the default config file if there is no existing
  grossd.conf

Issues fixed:
#16: synchronization is confusing to configure
#18: documented and configurable timeouts
#23: Customizable SMTP error messages
#26: connections could come from different IP addresses
#27: configurable greylisting time
#28: Bug in the mapping file example
#29: dnsbl tolerance counters not working on OS X
#31: Get rid of --with-worker configure option
#32: gcc makes grosscheck so dependent on libgcc_s.so.1
#33: Update queue synchronizing


Version 0.7.2

- Configurable log_level and syslog_method.
- Message queue enhancements under the hood
- Status counters for various events implemented
- You can now use host names in the configuration

Issues fixed:
#20: allow host names in configuration
#21: A dry run option for testing needed
#22: configurable logging

Version 0.7.1

A replacement of 0.7.0, there was a bug that prevented grossd
from compiling --with-worker=postfix.

Version 0.7.0

Implemented a thread pool feature. Worker threads are now 
reused, instead of firing up one on each connection. Numerous
bug fixes, most notably byte order related bugs in proto_sjsms.c.
Some configuration file changes: peerhost and synchost has been
replaced by sync_listen and sync_peer.

#Issues fixed:
#15: postfix protocol broken
#17: proto-sjsms breaks between hosts of different endianess

Version 0.6.3

Ported to OS X. Since sem_getvalue() is not implemented on 
OS X, skipping unresponsive dnsbls does not work, yet.

Issues fixed:
#14: processing delay should be included in the logs

Version 0.6.2

Issues fixed:
#1: -lpthread also on Solaris 9.
#2: Logging has been trimmed down.
#7: Libdir is now installed same as other directories.
#8: Removed relays.ordb.org from example config.
#9: SJSMS client library path corrected in INSTALL.
#10: Default config file path is now correct with default prefix.
#11: Implemented -D command line option for enabling debug logging.
#12: grosscheck now sends empty sender address as <> in query to grossd.

- Installs libraries to $prefix/lib/ instead of previous
$prefix/lib/gross/

Version 0.6.1

- You can now create statfile with grossd -C command line option
- Config file defaults to $sysconfdir/grossd.conf
- example config in doc/examples/grossd.conf
