HOME LINKS SAL PUBLIC SOFTWARE SEARCH MADE UP

SAGATOR


2.0.3 (Not released yet!)
  - nothing

2.0.2 (2022-08-19)
  - fix base64.decodestring / decodebytes usage for python3.9+

2.0.1 (2022-07-23)
  - exclude __pycache__ and *.pyc from tar ball
  - allow negative recipient_count in policy_quota table to allow exceptions
  - fix sqback --to parameter processing
  - change to python3 for deb packages
  - update debian packages to python3 (jinja2, pwquality)
  - fix sql logger subject encoding problems
  - fix policy scanner error processing

2.0.0 (2021-08-11)
  - python3 support
  - clamav 0.101+ support
    WARNING: Option constants are not compatible with older versions due
             to changes in clamav option processing.
  - removed long time obsolete mimeparse scanners
  - removed obsolete scanners:
      rcpt_in_sql(), rcpt_in_txt(), rcpt_no_match(),
      dazuko(), nod32dazuko()
  - removed obsolete service: avfilter(), webq() [genshi version only]
  - update sagator.service file's start/stop pre scripts with a "-"
    to prevent stopped service after pre script fail
  - fix moving of /lib* directories to /usr in mkchroot script
  - update fuse service for current pyfuse
  - quarantine moved to /var/spool/sagator/quarantine to avoid conflicts
    with clamav rpm package

1.3.2 (2019-01-19)
  - rpm spec file fixes
  - added /var/spool/quarantine symlink to chroot
  - added sasl username to policy quota reply
  - added policy quota summary to logwatch report
  - logwatch script moved by default from /etc to /usr/share/logwatch/...
  - send filename from decompress() over file2buffer() interscanner
  - mkchroot updates according to changes in new OS versions
  - added trafgrapher support
  - fix systemd startup message about missing sagator's PID file
  - install systemd service file for debian stretch
  - force to utf8 charset for mysql.sh script

1.3.1 (2015-12-14)
  - clamav-0.99 support
  - systemd support
  - policy_quota_auth_limit(): only temporary reject for too fast emails
  - added geoip_country() policy scanner

1.3.0 (2014-07-09)
  - removed support for upstream unsupported clamav<0.95
  - webq() using genshi marked as obsolete (use web_jinja() if possible)
  - added webq_jinja() web quarantine using python-jinja templating
  - pid file existence changed to non-zero file size for debian init script
  - added function core_count(), which can be used to detect number
    of cores on current system
  - chroot update for 64bit linux systems
  - fixed -p parameter for smtptest
  - multiuser configuration for spamassassind to increase performance
  - added run time in miliseconds to smtptest nagios mode
  - selinux policy changes
  - only one instance of libclam() scanner in default configuration
  - sgscan progress indicator output moved to stderr
  - added logwatch build dependency for suse and changed defaults for
    logwatch configuration directory
  - milter() service can add headers
  - added clamav version to string logged after virdb reload
  - email Parser imported from email directly in reporter script
  - added infection percentage to sgscan progressbar and summary
  - replace build date in rpm spec file's changelog
  - added xhdra parsing for mail.addheader function
  - stats: fix very large numbers and sort stats before save
  - added --random-ip parameter for smtptest.py
  - changed EHLO to HELO form smtptest
  - added Sanesecurity.Jurlbl to default DROP pattern
  - greylist ip varchar size increased to allow ipv6 addresses
  - smtpd() - properly handle errors at end of connection
  - added ability to override request_handler for webq_jinja service
  - added taking time for delete log messages
  - policy_quota_auth_limit() scanner to define user quotas for
    sent emails and recipient count
  - disabled smtpd_milters for postfix configuration on port 26
  - added policy_quota_auth_limit() precision parameter
  - fixed mounting of /var/lib/clamav into chroot
  - changed to os._exit to allow faster exit on restarts
  - checkpolicy: added date and time to log
  - added all Sanesecurity to default drop pattern

1.2.3 (2011-05-14)
  - added Sanesecurity.Spam an Sanesecurity.Junk to default DROP pattern

1.2.2 (2010-12-10)
  - added support for compilation on clamav-0.96.2
  - fixed cl_init for libclam() multi instances
  - added parameter to change timeout for scanc-scand connection
  - filesys()/scanc() "Not decoded" message moved to loglevel>=4
  - esetpac() scanner now can properly handle if nod32 returns "is OK"
    before real virus name
  - scripts/db moved from documentation to /usr/share/sagator in rpm

1.2.1 (2010-06-08)
  - added support for compilation on clamav-0.96
  - fixed webq() user settings page
  - fixed cracklib error string in webq() service
  - added Suspect. to default DROP pattern (many clamav virus names)

1.2.0 (2010-01-25)
  - python-2.6 compatibility
  - clamav-0.95rc1 compatibility
  - decode_email_alt removed (obsolete in python-2.6 and not used)
  - SIMPLE_SCANNERS configuration removed
  - rpm dependency change: smtpdaemon to server(smtp)
  - added "exit 0" to mkchroot.sh to avoid deb update problems
  - reinicialization of random number generator after fork()
  - log_sql.FORMAT can be easyly extended by other columns:
      log_sql.FORMAT.extend('subject', '%(SUBJECT)s')
  - better spam/virus recognition for logwatch script
  - python-kid replaced by python-genshi. At least genshi>=0.4.0 required.
    RPM package should update dependency automatically, for deb package
    please install python-genshi manually.
  - rrdtool create data source type changed from COUNTER to DERIVE.
    Remove sagator.rrd file to apply this change.
  - logwatch output shows count/bytes percentage, changed ordering
  - ebuild updates
  - deb package split into parts: sagator, sagator-base, sagator-webq, ...
  - mkchroot.sagator from deb postinst moved to init script
  - filter out 250-STARTTLS, sagator can't hadle TLS connections
  - viruses removed from test/ directory and added download_viruses.sh
    shell script
  - default parameters for avgd() changed
  - remount /var/lib/clamav into chroot (do not need to copy or symlink)
  - rbl_check() now using getaddrinfo instead of obsolete gethostbyname
  - updated documentation for spamassassind() and check_level()
  - display warning message when an obsolete clamav limit is used
  - added "/etc/init.d/sagator kill" parameter to kill all sagator processes
  - added CLAMAV_H and LIBDSPAM_OBJECTS_H definitions into Makefile
  - proper symlinks for special datadirs
  - update FascistCheck to support also latest version
  - sa_user configuration option for spamassassind() scanner
  - Broken pipe traceback shown for debug level 3 (temporary additional
    debugging)
  - Greylist checks for IntegrityError
  - configure_postfix scripts adds sagator service to limit number of
    connections
  - new script log/analyzer.py to analyze log files
  - separate database connection for log_sql() (significant speed improvemnt
    for high-load servers with more than 10000 emails/day)
  - filesys() scanner ignores empty output for 5 seconds (avoids
    "Can't decode virname" messages)
  - greylist speed improvements, see default config file for examples,
    how to configure greylist for high load servers
  - update chroot before restart (not inside) to speed up restart process
  - MySQLdb connection defaults to UTF-8 charset
  - smtptest and policytest replaced by new smtptest.py
  - increased max_children for ServiceTCPServer to allow more smtpd_policy
    instances
  - do not remove permanent greylist entries (last_update==-1)
  - load crypt() libraries before chroot to allow webq login

1.1.1 (2009-02-17)
  - clamav 0.94 compatibility updates and better clamav autodetection
  - selinux updates
  - deb package conflict added to automatically remove sagator-libclamav
  - mkchroot update for /tmp/quarantine owner/group
  - sgfilter update for exim, which sends mailbox content to procmail
  - added pyformat style emulation for sqlite (fixed sqlite logging)
  - now() changed to CURRENT_TIMESTAMP, works with current sqlite too
  - updated XFORWARD pattern to match alternate syntax
  - simulate rowcount for DB, which does not support it (sqlite)
  - new rpm package sagator-core (sagator is now only to install
    dependencies)
  - accept connection without HELO with milter()
  - some changes for filetype.py to avoid problems running sagator,
    file_type() scanner has been maked obsolete, use file_magic() instead
  - milter greylist fixes
  - does not break DATA connection, break it before DATA and send QUIT
    when closing connection
  - close all fds before fork, enable autorestart in deb scripts
  - new scanner elisted() - enhanced listed scanner
  - increased timeout for spamd connection
  - symlink /var/tmp -> /tmp fixed in chroot
  - updates for esets-3.0
  - display exact error when unable to rotate log file
  - fix cyclic symlink for non-standard path when creating sagator chroot

1.1.0 (2008-07-10)
  - added a new version of sagator-libclamav (requires python-2.5+
    or python-ctypes)
  - added KID warning to Makefile
  - allow recipient LIKE search for admins
  - added spamassassin, razor and pyzor directories to chroot
  - updated BYE handling for postfix
  - fixed error message when changing password in webq
  - email parser preloaded to run webq in chroot
  - added a new version of sagator-pydspam
  - tmpreaper (not tmpwatch) and mrtg (not rrdtool) cron scripts turned
    off by default
  - sqlite3 fix for qmark parameters
  - added rbl_check() policy scanner
  - updated nsswitch.conf in chroot (fixes host resolution)
  - smtpd_policy() stability updates
  - policy scanner speed improvements
  - pychecker is more silent
  - libclam old syntax removed (affected only clamav<0.90)
  - added CLEANUP dictionary to run clean actions (auto_whitelist or
    log_cleanup) and added log_cleanup() scanner
  - updated email.[Pp]arser chroot loading to be more compatible
  - clamav-0.93 support added
  - message's header Subject added as SUBJECT to report and log scanners
    and reporter template

1.0.0 (2008-01-25)
  - !!! WARNING !!! - removed obsolete scanners and services!
  - configure options can be used with '=' sign (fixes rpmlint errors)
  - SElinux policy fixes for latest SElinux release
  - log_sql() can log also "CLEAN" emails
  - FreeBSD support
  - db_options added to libclam() support sagator-libclamav-1.2.2-0beta3
  - handled greylist auto-whiteslisting exception
  - logwatch script path detection fixes
  - fedora init script updates
  - moved from /usr/lib to /usr/share
  - most of eval functions replaced by getattr
  - slovak translation converted to UTF-8 and updated
  - added webq searching on action/status, by default no SENT messages
    are displayed
  - added reinicialization of scanners
  - rrdtool image updated for rrdtool-1.3
  - added deb distribution parameter for configure script
  - sagator condrestart replaced by try-restart
  - repo file and gpg key removed from spec file
  - rpm posttrans section moved to init script

0.9.1 (2007-09-01)
  - milter statistics fixes
  - removed unwanted postfix deconfiguration in deb packages
  - updated drop.DEFAULT

0.9.0 (2007-07-31)
  - DB table sagator renamed to log and changed it's structure
    (recipients renamed to recipient and contain only one recipient now,
     sender's IP addrress added)
  - new webq() service for web quarantine access
  - internal configuration directory changed from "config" to "etc"
  - new python variable formats (%(xxxx)s) for all scanners
  - new configure option --apache-root and new apache root detection
  - build scripts updates
  - rcsagator script for suse, sagator.init.suse updates
  - new crontab script in /etc/cron.d/sagator with automatic quarantine
    cleanup and rrd graph updater/creater
  - postfix autoconfiguration moved into documentation
  - display host and port for address already in use error
  - smtptest update for multi-address
  - database connection update for better DB compatibility
  - collector(): don't add clean/filtered for policy scanner
  - log time for policy scanner
  - sgscan - recursive search for Maildirs
  - sgscan - only first 50 MB of each file will be scanned
  - sgscan - exit immediatelly after interrupt from keyboard
  - tmpwatch option --ctime changed to --mtime
  - sagator-test repository renamed to sagator-development
  - new pattern for nod32pac() scanner
  - Default drop pattern defined as drop.DEFAULT constant. Added "phishing"
    string to default DROP pattern.
  - policy scanner dynamic forking (experimental)
  - autoload some standard encoding modules for new MySQLdb engine
  - ebuild patches
  - libclamav() scanner is now file scanner only (buffer scanning removed)
  - automatic import for all libclamav constants
  - added "RECIPIENT" variable to logger scanners (useable only for SQL
    logger)
  - new sql_find() and regexp_find() interscanners as a reimplementation
    of e2i_sql() lmtpd() from older sagator
  - reporter email grouping (can be used to send report only to admin)
    include* and exclude* reporter() parameters are now obsolete.
  - reporter can send URL's directly to webq() review
  - pychecker shows 0 errors and 0 warnings
  - added --kill parameter to kill all processes
  - %(VNAME)s or $VIRNAME variable renamed to %(VIRNAME)s to use same
    syntax on all places
  - mkchroot speedup
  - collector updates (select implementation, completely without signals,
    time based on real user+system usage)
  - selinux policy (initial version)
  - sqback can find files automatically in chroot
  - collector() without host and port parameters can read status from saved
    file (may be useful for high load servers too)
  - fixed LANG and paths for cron script and mrtg.cfg
  - ubuntu (dash shell) updates
  - rrdtool-python used when found
  - new scanner sender_regexp() to check for senders IP address
  - python2.5 updates
  - reporter() message updated to be ignored by vacation and similiar
    programs

0.8.1 (2007-01-12)
  - libclamav update for clamav 0.88.7
  - automatic restart for debian script removed

0.8.0 (2006-08-30)
  - All e2i_??? functions removed, update your configuration manually!
  - lmtpd() service configuration changed, update your configuration manually!
  - Fuse support to scan filesysmtes for viruses/...
  - postfix smtpd_policy service and some useful scanners for policies
  - configure script modified to look as gnu style
  - status() scanner will update data, only if level>=1.0
  - default configuration moved from default.py to __init__.py
  - SPF (Sender Permitted From) and DNS checkers added
  - scanstream renamed to scanbuffer (and all similiar functions)
  - filtered renamed to clean in rrd graphs, remove old .rrd files
  - added autogen.sh script
  - default status file moved to /var/lib/sagator/status
  - nod2pac() scanner rewrite
  - map() changed by generators
  - virus counter for --quiet sgscan fixed
  - report template changed: email header and scanner output swapped
  - parameter --all added to bdc defaults
  - small code cleanup
  - variables for status() scanner
  - bug "postfix always reconfigured" in debian packages fixed
  - duplicit X-Sagator-ID for lmtp() bug fixed
  - sagator's ID expanded by hostname
  - added scanners: rcpt_in_sql(), rcpt_in_txt(), rcpt_no_match()
  - sagator's core simplifications (globals.CHROOT removed)
  - web quarantine updates
  - scanc() scanner added to run any scanner over scand() service
  - usrquota() scanner to check users quota
  - average counter in collector
  - retry() scanner to retry an scanner
  - updates for new coreutils (head, tail and sort fixes)
  - added re.MULTILINE to default regular expression flags
  - ability to use variables (for example $SENDER) in report() scanner
    recipients
  - rrdtool 1.2 is now default (when rrdtool is used), use rrdtool10
    for older versions in your crontab script
  - webq_apache() service marked as obsolete
  - gentoo ebuild and patches
  - added parameters for fprot() scanners

0.7.3 (2006-04-15)
  - fixed wrongly passed alternatives() fails
  - stats.py don't show error message "HTTP/1.1 404 Not Found"
  - pydspam updates for latest version

0.7.2 (2006-01-30)
  - better handling for nod32 error codes

0.7.1 (2006-01-29)
  - better read/write handling for sgscan and sgfilter
  - better timeout processing
  - nod32 fix problems when more than one nod32d is running
  - permission fix for debian package

0.7.0 (2005-12-23)
  - getopt compatibility for python 2.2 and later
  - time_limit() scanner to define maximum number of seconds for a scanner
  - rdel() replaced by shutil.rmtree()
  - ltmpd() service
  - cache() scanner to simplify store()/restore() usage
  - you can use local user settings for spamassassind()
  - nod32 version 1 support (nodold() scanner) removed
  - documentation updates for many of scanners and it's reorganization
  - universal log_sql() logger. All other SQL loggers are obsolete now.
  - rrdtool 1.2 support (use rrdtool12 as stats.py command)
  - stdout closing in debug_class fixed
  - filesys() and nod32pac() scanners to scan with preload antivirus
  - removed starting of external daemons from rc init script
  - sagators main engine rewrite:
    - pid file can be deleted after exit
    - processes are better handled with more services enabled
    - chroot_execvp() service to start external daemons directly from sagator
  - initial SuSE support
  - mkchroot clamav user/group detection
  - temp dir removation on scanner failures fixed
  - quiet update for debian packages
  - sgfilterd()/sgfilter - a service/client to filter emails
  - scripts directory reorganization
  - modify_subject() and modify_header() adds header if it is not exist
  - autodetection for logwatch config directory
  - configure script fixes
  - logwatch script update for wrongly passed logfiles

0.6.0 (2005-10-04)
  - all log scanners requires infection level>=1.0 to log anything
  - DATETIME format for log changed
  - new default parameters --adware and --unsafe for nod2() scanner
  - reporter script help you to send periodically reports
  - reporter() service to configure reporter script
  - rrdtool update fix
  - http_proxy() service updates
  - $VARNAME can be used in reports multiple times
  - temporary resource error on restart properly processed
  - rename() scanner can set a multiplier for it's levels
  - rpm postinstall script fix
  - deliver_to() bugfix
  - Web-qarantine (webq_apache() service)
  - log_pgdb() - python DB API compilant PostgreSQL logger
  - log_psycopg() - another PgSQL module with full Python DBAPI 2.0 support
  - better time computation
  - bogofilter level increased by 1.0 when a SPAM has been found
  - config.py-simple example configuration removed
  - stats.py is now executable
  - command line parameters are parsed by getopt
  - a space ' ' virname is not joined after an operator
  - quiet option for mkchroot
  - automatic restart on update only if it is started and has good config
  - kav 5.5 support and aveserver not in chroot support
  - x86_64 compilation support fixed
  - AVG updates (localized AVG support)
  - fixed permissions for config files and moved into config directory
  - deb postinstall script runs postfix configuration only if it's installed
  - rrdtool data source maximum added as 2**32
  - match_any() returns proper level and virus name for non-infected data,
      also all divided scanners may be affected.If you are using complicated
      configuration, chceck this change.
  - parsemail patch for large badly formatted emails

0.5.9 (2005-03-21)
  - mkchroot fix for clamav directory in /var/clamav
  - fixed problem to communicate with nod32 command line
  - forking core support to bind to an socket
  - stat dependency for deb packages added
  - documentation fixes
  - boolean operators: <, >, <=, >=, ==, !=
  - rename scanner to rename virus/spam name
  - documentation moved into doc directory
  - manual pages for sagator, sgscan and sqback
  - libclamav() scanner fix if sagator-libclamav is not installed
  - dspam() scanner
  - init script moved to priority 82 (after sql and spamassassin startup)
  - clean/infected separation in sgscan (--separe option)
  - progress indicator for sgscan (--progress option)
  - quiet output for sgscan (viruses/spams are not displayed)
  - scanner parameters
  - added /lib/ld-linux.so.2 to chroot (required for Fedora Core 3)
  - error message when loading stats ignored
  - mail class reorganization (email header is not stored separatelly)
  - new variables ($SENTBY_IP, ...) for log and report scanners
  - remove_headers() scanner added
  - filter option for spamassassind() scanner
  - $SENDER is parsed by rfc822.parseaddr
  - log_syslog() scanner
  - filter() scanner to use with antispam filters (like Anomy Sanitizer)
  - attach_name() scanner - a replacement for mime_ext()
  - milter() service rewrite
  - add /etc/localtime into chroot
  - clean instalation of deb package, when no postfix is installed
  - regexp_scan() now use multiline regular expressions, precompiled patterns
    and regular expression flags can be used
  - smtp_comm() now uses precompiled patterns and RE flags can be defined
  - & operator returns nicer virus name if one vname is empty
  - file_magic() scanner to scan over libmagic's functions
  - avfilter() uses only LF (not CRLF) as newline characters
  - initial rrdtool support
  - ability to change resource limits (like ulimit) from config
  - http proxy service (you can use it to scan HTTP connections)
     (This service is in beta stage now)

0.5.4 (2004-11-29)
  - new scanners: log_mysql(), log_pgsql(), log_sqlite()
  - MRTG script fix
  - nod2d() renamed to nod2dazuko()
  - better string replacement for logger and reporter scanners
  - log sender for sgscan
  - documentation update
  - mkchroot now check for device existence
  - debian init script patch to remove pidfile after stop
  - logwatch writes only one day's errors/warnings
  - .cpl files recognized as executables
  - avgd() default options changed
  - avg chroot updated for latest AVG beta
  - libclamav constant updates for clamav 0.80
  - legends for MRTG graphs updated
  - added tmpreaper example into cron script template
  - rpm/deb checksum for precompiled python fixed
  - automatic restart for RPM is done only when RESTART=auto is present
      in /etc/sysconfig/sagator file
  - yum.repos.d autodetection and new .repo scripts
  - parsemail fixes for uuencoded emails
  - message handling of empty body emails
  - a special combination of multiple scanners fixed
  - mkchroot fix for CHROOT set to /

0.5.3 (2004-10-20)
  - stability improvments
  - services (smtpd,collector and milter)
  - avfilter service (you can use sagator as procmail filter)
  - preforking processes for smtpd() - high speed improvments
  - sanitize() scanner - rename some filname extension to safe version
  - automatic configuration updater
  - config option to load alternate config file
  - regexp_scan() and string_scan() works again
  - report().ifscan() added to use report only for some emails
  - ICAP update for latest SAVSE and some ICAP fixes
  - log() scanner updated to show message size
  - SIGHUP signal handler removed, reloading is not possible now
  - SIGUSR1 signal changed to SIGHUP (reopen log)
  - added SIGUSR2 for debuging (show stack trace)
  - better error reporting in sgscan
  - new kavclient() scanner to scan using Kaspersky aveclient
  - kav() scanner optimalizations
  - all service PID's are in sagator.pid file
  - logwatch scripts
  - qurantine() can make dated subdirectories
  - timedel removed, use tmpwatch instead
  - const() scanner can be used to raise an error
  - option --daemon is now default, use --nodaemon if you don't need it
  - collector() fixes
  - automatic restart after upgrade for rpm package
  - spamassassind adds more headers into email
  - spamassassind returns only SPAM as virname
  - avgd() fixes (too many open files bug fixed)
  - mkchroot patches for latest clamav release
  - mkchroot speedup
  - tracebacks are written fewer

0.5.2 (2004-08-05)
  - support for new syntax for new nod2lfs
  - mrtg script automatic creation for RPM (thanks to Doncho N. Gunchev)
  - parsemail StringIO fix and fix for badly formed base64
  - debug class unicode fix
  - handling of unknown error
  - added # of childrens into stats
  - stats.py requires only 3 parameters for mrtg
  - warnings in libclamav solved
  - new log() scanner for advanced logging
  - new add_header() scanner
  - milter fix

0.5.0 (2004-06-21)
  - nod32 ver.2 implementation (only as command line scanner)
  - dazuko support (nod32lfs imlementation)
  - aglib mass rewrite
  - smtptest fixes
  - milter support
  - libclamavmodule rewrite (generated by pyrex! now)
  - directory reorganization
  - added version to sagators logfile and scanned files
  - mkchroot cosmetic fixes
  - new parsemail() scanner - very good MIME parser by Arpi
  - new report_recipients() scanner
  - new nothing() scanner
  - scanner force_send() renamed to deliver()
  - new deliver_to() scanners
  - simple configuration is now available too
  - quarantine() and deliver_to() leaves message in queue on fail
  - initial debian support (deb package)
  - postfix 2.1 before_filter support
  - added triggers to update sagator's chroot when used package is upgraded
  - modify_header and modify_subject interscanners
  - you don't need CHROOT parameters in sysconfig and mkchroot script
  - proper exit, waiting for childrens before exit
  - operators over scanners
  - added ID to an passed email
  - BSD and Solaris fixes
  - mailtest is now RFC compatible
  - python2.3 compatibility (please upgrade immediatly for python>=2.3)
  - sagator is more RFC compatible
  - better restarting (collector properly killed)
  - collector is now a single process without forking
  - websagator - web scanner
  - MAX_PROCS to limit maximum number of sagator processes
  - quarantine file autodetection for sgscan

0.4.3 (2004-03-16)
  - bug when more than one DATA part is present in communication
  - better performance - compiled regular expressions
  - kaspersky scanner added - thanks to Laci Balint
  - bitdefender and kaspersky support in mkchroot

0.4.2 (2004-03-04)
  - sgscan - added --av-only parameter to help
  - error replaced by warning when can't reload config.py

Thu Mar 11 20:37:46 CET 2004
  - decompressor add files to scan when error occured
  - quick restarting of nod32d
  - grp clamav has read-write access to chrooted tmp
  - sgscan now works fine over samba
  - compatibility with python < 2.2.2

Tue Feb 24 09:11:07 CET 2004
  - decompressor fixes
  - filetype pattern fixes
  - mimeparse now has alternate method to decode emails
  - crontab file change if clamav is not installed
  - --to recipient parameter for sqback (can send message to any user)
  - init script now restarts only sagator
  - !!! WARNING !!! - big changes again, config file rewrite
    - report() module
    - quarantine() module
    - drop() and always_send() modules
    - all QUARANTINE,REPORT,DROP,ALWAYS_SEND parameters from
      config are now ignored
    - report TEMPLATE change (%s strings are replaced by $XXX vars)
    - logfile moved into chroot (change your config.py)
  - cleaned logs
  - sagator-master.pid renamed to sagator.pid
  - CONF[] array removed from config.py
  - added logrotation
  - proper restarting (killing of stats collector)
  - sgscan documentation
  - sgscan now can scan with --av-only
  - sgscan fix for some scanners
  - sgscan now removes .clean files, if no virus was found
  - sgscan set permissions and owners on .clean files
  - sgscan filelocking - now you can run it on running system
  - added smtp_comm() scanner to scan SMTP communication
      It also can be used to attach some scanners to defined users/domains.
  - scanners.py - all scanners included here
  - fixed scriptlet fail, when postfix is not running
  - mkchroot support for AVG and NOD
  - smtptest2 and smtptest are now in one file
  - smtptest now ignores mailbox headers
  - libclam - database autloreloading
  - bdc - Bitdefender scanner

Tue Dec 30 11:25:26 CET 2003
  - debug function changes
  - more fixes found by pychecher - very good tool
  - avlib programmers documentation updated
  - sgscan error message when file can't be opened
  - libclamav loads db from chroot always
  - makechroot: clamav.conf is not replaced, if exist
  - makechroot: permission for /dev/* files set
  - smtptest2 change (find real hostname for email)
  - security: if internal decompressor fails, external is used
  - Makefile: netbsd fixes
  - makechroot.sh patch for ldd on kernel 2.6
  - fixed a bug with libclamav() which sometimes puts wrong line into mail
      (stdin/stderr file descriptors are now pointed to logfile)

Tue Nov 25 11:47:18 CET 2003
  - freshclam libs update in /var/lib/clamav (changed in clamav 0.65)
  - decompress now unpacking rar files properly (451 returned previously)
  - some major fixes, please upgrade
  - libclamavmodule - added error message, if module is not loaded
  - added -lbz2 into Makefile for clamav 0.65
  - Makefile cleanup

Mon Nov 10 09:14:48 CET 2003
  - spamassassin (no daemon) typo fix
  - added 2 new antispam systems (qsf and bogofilter)
  - stats.py - more fixes (zombie fix, atexit fix, save, ...)
  - mrtg.cfg and bigtest updates
  - aglib - proper closing of connections
  - added --config parameter for sgscan and sagator
  - some updates for clamav 0.65 (added -lz -lgmp to Makefile)

Fri Oct 31 09:01:46 CET 2003
  - !!! WARNING !!!
    Config file parameters changed. Please update your config.
    - Removed: TEMPFAIL_ON_SCANNER_FAIL=1
        Use recover() interscanner, if you want to set this to 0.
    - SMTP_HOST, SMTP_PORT now in one variable SMTP_SERVER
    - BIND_HOST, BIND_PORT now in one variable BIND_ADDR
    - default bind port changed to 27
    !!! WARNING !!!
  - mimeparse now can skip unknown encodings
  - spamassassind now haldles error messages from spamd
  - sleep 30s for nod32d in init script
  - workaround for 8bit spams, spamd fails with error 76 on it
  - savscan added
  - scket timeout implemented
  - you can collect some statistics and use it in MRTG
     start statistics server and look at its port in www browser
  - python 1.5 compatibility removed
  - SMTP client comunication moved to debug level 5
  - updated makefile to recognize python version correctly
      - Devil linux don't need patches anymore. :-)
  - sagator.config renamed to sagator.conf

Tue Oct 21 12:24:09 CEST 2003
  - added timedel.py script to delete old quarantine files
  - added sgscan.py script to scan files, removed fmag.py
  - antispam messages are now attached in mail headers
  - AVGlinux scanner is now working fine with latest beta
  - added clamd chroot starting
  - added stream2mbox() interscanner (Required for clamscan().)
  - major changes in avlib (better popen function)
  - all scanners now adds X-Sagator- lines (you can use any scanner
      to only mark viruses/spams without deleting)
  - removed real viruses from test directory
  - beeter spam sample with higher spamlevel

Mon Sep 22 07:45:53 CEST 2003
  - added Swen and Gibe to emails which need discard (delete)
  - replaced my email with root@localhost in default config

Thu Sep 18 07:56:00 CEST 2003
  - mimeparse: added some other test for bad emails
  - spamassassin: updated some emails, which fails
  - Makefile: backup for config.py (if already exist)
  - Makefile: new option make CLAMAV=no (without libclamav module)
  - really closing stdin/out/err
  - decompressor patch for unknown file type

Wed Aug 20 09:44:51 CEST 2003
  - added AVGlinux support
  - init script changed, now can start AVGd and NOD32d in chrooted environment
  - added init script installation into README

Wed Aug  6 14:11:22 CEST 2003
  - REPORT_MSG renamed to ADMIN_REPORT_MSG
  - USER_REPORT_MSG added to inform users
  - repaired Makefile for /etc/cron.daily/sagator to kill proper process
  - proper error message, if nod32d is not working
  - readme changes

Mon Jul  7 09:31:00 CEST 2003
  - added simple scanners: file_type and max_file_size
  - size is added for stream_scan and regexp_scan
  - python2 is required now (if you want to use sagator with python 1.5.2
      or 1.6.X, replace #!/usr/bin/python2 with #!/usr/bin/python
  - you can now define max_recursion, max_file_size, max_file_count
      and max_address_space for decompressor

Fri Jul  4 13:47:29 CEST 2003
  - added setrlimit to set maximum size of extracted file
      and ram usage
  - added filetype.py to recongnize file types by content (not extension)
  - internal unzip and ungzip
  - max_recursion and max_file_size check added
  - rdel repaired,moved,renamed
  - zipdir safed
  - ulimit settings added
  - pycompat module added for compatibility with python <2.2
  - scanner name is included in report
  - tempfile include removed from clamav module
  - sophie support added
  - added --debug option
  - files are now passed as full path
  - chroot emulation removed

Wed Jun 25 08:18:54 CEST 2003
  - spamassassind bug - negative spam hit allowed

Thu Jun 19 09:31:21 CEST 2003
  - README changes, added any smtpd support
  - spamassassin module is rewritten, it is more powerfull now

Fri Jun 13 14:10:27 CEST 2003
  - startup logging
  - libclam scanner supports to load libclamav and run its scanner
      (do not run other binaries and don not connect to clamd)
  - spec file updates (automaticaly reconfigures postfix)
  - sagator cron script automaticaly updates clamav database in chroot
  - match_first renamed to alternatives
  - HUP and TERM signal implemented,
     HUP signal forces database reload for libclam()
  - documentation changes
  - some other small changes

Thu Jun 12 14:52:15 CEST 2003
  - time is logged on connect
  - DONT_QUARANTINE and ALWAYS_SENT parameters added