
=head1 Mail Toaster Changes

=head2 5.44 - Apr 20, 2014
    speed up dspam training
    added supervise support for qpsmtpd
    added support for unusual (intl) file name characters
    correct detection of pop3 daemon
    updated install_deps.pl
    added simscan debug option in tw.conf
    added qmail-deliverable setting and build support

=head2 5.43 - Jul NN, 2013

    minor improvements to test suite

=head2 5.42 - Jul 07, 2013

    replace bunches of /var/log/mail with get_log_dir
    consolidate tcp.smtp functions to setup->tcp_smtp
    lazy load some modules, so 'make test' runs w/o dependencies
    added supervise/run file creation for qmail-deliverabled and vpopmaild
    moved email_send* tests from Toaster to Setup/Tests.pm
    replaced hard coded vpopmail dir with $vpopmail->get_vpop_dir
    replaced many hard coded '/var/qmail' paths with $qmail->get_qmail_dir
    install tcp.smtp during tests, if missing
    conf: removed vpopmail_enable_netblocks option (barely used, if at all)
    abstracted some code into new control_sql method
    added get_control_dir, get_supervise_dir (reduce duplicated code)
    deleted Qmail::check_control (moved logic into qqtool.pl)
    changed API of service_dir_get (1 positional arg)
    updated port options for sqlite3 & openssl
    fixes for audit & error logging

=head2 5.41 - Jul 04, 2013

    config changes: vpopmaild disabled, roaming users disabled,
        default log method changed from multilog to syslog
    automatic startup for vpopmaild
    removed maillogs postprocessor support (fragile)
    vpopmail port install now honors most config settings

=head2 5.40 - Apr 26, 2013

    updated install_deps.pl
    pod cleanups
    updated contrib/swaks
    training improvements for dspam

=head2 5.38 - Apr 23, 2013

    removed Proc::ProcessTable (causes test failures)
    handfuls of Test::More tweaks
    disabled defunct RBLs in config

=head2 5.37 - Apr 18, 2013

    added bin/email_restore.pl (thx Alex R.)
    pkgng support additions (Rob Lensen)
    some support for running with qpsmtpd

=head2 5.35 - Oct 23, 2012

    api change for get_dir_files, clean_tmp_dir, file_delete
    moved subs from Toaster to Utility: audit, error, dump_audit, dump_errors, has_module, find_config, find_readable, get_std_args, parse_config & parse_line
    replaced non-ASCII • with *
    added IO::Socket::SSL to bin/install_deps
    check just the 'standard' places for httpd.conf instead of using `find $dir`
    apache test failed if no httpd.conf found on test machines, this is quite likely. The lack of finding the file now skips the test.
    more argument unpacking with get_std_args
    toaster-watcher attempts to create missing service dirs
    added 'quiet' to %std_args (was manually passing it around)
    removed qmail_service_* settings

=head2 5.33 - Oct 13, 2012

    updated path to maildir-deliverquota
    updated path to freshclam.log
    added more support for qpsmtpd future
    added vpopmail_daemon setting to tw.conf
    added supervise support for qpsmtpd, vpopmaild, and qmail-deliverable daemons.
    get_maildir_messages now uses File::Find instead of `find …`
    deprecated rfc-ignorant DNSBLs
    replaced split '..' with split /../ syntax

=head2 5.32 - Aug 19, 2012

    fix for spamassassin mysql import on MySQL 5.5+
    added qmail utmpx patch for compat. with FreeBSD 9
    increase RAM for daemons (for 64-bit systems)
    qmail: fixed chkuser build support for vpopmail extensions
    dspam: added to mailfilter
    dspam: only train on error
    improved build support on Darwin (Mac OS X)
    added support for dovecot 2

=head2 5.30 - Sep 26, 2011

   Apache Config Changes
      shortened config file comments
      removed IfModule ssl_module from apache config file
      added vqadmin declaration
      removed deprecated apacheconf build target
      default config password protects ezmlm.cgi, isoqlog, vqadmin, phpmyadmin
      http auth files use Digest authentication, for both lighttpd and apache
      add .cgi handler to apache vhost
      add qmailadmin http alias, so graphics will load if docroot is not default
      automatically add pear include path to php.ini, used by squirrel mail
      added munin declarations in apache config
   updated horde web address, added apache config settings for horde
   added periodic (cron) task for dccd cleanup (if installed)
   build updates for lighttpd
   removed php4 build support
   updates for roundcube webmail support
   added portmaster build target
   added gnupg install to spam assassin build (used by sa-update)
   moved rrdtool install from munin into its own sub
   added maildrop build option for vpopmail build
   added squirrelmail sasql plugin configuration
   isoqlog build did not install config file, fixed
   update ezmlm-idx build for v7
   remove mysql db type, future mysql versions use a different syntax
   added qmailadmin catchall preference, defaults to disabled
   added horde support to lighttpd config
   give smtpd and pop3 processes more RAM (better accomodate 64bit)
   reduce default multilog file size from 1M to 100k
   change user=matt to 'valid-user' in http config


=head2 5.29 - Jun 12, 2011

   updated migrate script for compatibility with 5.26 changes
   updated lighttpd.conf config file location (FreeBSD port change)
   reverted simscan user back to clamav (works more reliably)
   if a perl module is already installed, prompt to reinstall

=head2 5.28 - Jan 03, 2011
 
   detect location of maillogs when configuring /etc/mailer.conf
   allow building qmail with no patches
   explicitly include a few more perl modules required by SpamAssassin
   automatically password protect isoqlog in apache vhost file
   'maillogs yesterday' exits 0, so periodic is content
   t/Utility: test if file exists before testing ability to delete 

=head2 5.27 - Jul 08, 2010

   style updates to Ezmlm.pm and fix test failures in t/Ezmlm.t
   maillogs fails more gracefully when the log files are unreadable
   POD doc cleanups
   fixed inverted regexp match that caused control/me to be set to the system
     hostname instead of toaster-watcher.conf configured value
   added URI to prereq list in Makefile.PL 
   skip rbl tests if client can't resolv bl.spamcop.net properly
   FreeBSD->is_port_installed does a better job of port detection when there
     are multiple ports with similar names (qmail, qmailanalog, etc)
   corrected whitespace related test error in get_list_of_rbls test
   added install_munin to toaster-watcher.conf
   fixed 'maillogs yesterday' report
   other minor cleanups for PBP and cleaner 'make test' results


=head2 5.26 - Jun 31, 2010

   added php build and post-install config (php.ini) support for freebsd
   replaced inline squirrelmail config with local overrides
   added build and post-install config support for lighttpd
   added sqlite build option for roundcube when install_mysql = 0
   added t/01.syntax (syntax checks for bin/*, lib/*, cgi_files/ezmlm.cgi)
   renamed port_install to install_port (see DEVELOP)
   added munin install support and configuration
   updated t_setup -s mailtoaster target (from $util-> to $toaster->)
   cleaned up more debug and log messages
   changed API for cwd_source_dir, chown, extract_archive, get_url, is_readable,
     is_writable, check_pidfile, install_package
   changed some builtin chown calls to using $util->chown
   renamed util->file_get to util->get_url
   renamed util->file_archive to archive_file
   renamed util->pidfile_check to check_pidfile
   renamed M:T:U:archive_expand to extract_archive
   for objects in classes beneath Mail::Toaster:
     new objects inherit debug and fatal settings from the Mail::Toaster object
     when loading a M:T:Utility, use $toaster->get_util instead of loading 
     when a method is run, it can inherit its parents values for debug and 
       fatal by adding %std_opts to its own parameter validation
     removed hundreds of places where debug settings were explicity passed.
   renamed M:T:F:package_install to install_package
   renamed M:T:F:ports_update to update_ports
   fixed vqadmin install directories (due to change in FreeBSD port)
   util->get_my_ips is done in perl now, instead of using CLI cut & grep
   added config questions for squirrelmail, roundcube, spamassassin, and
     phpMyAdmin database passwords (requested by Carmi)
   updated Ezmlm.pm and ezmlm.cgi 
   t_setup.pl -s webmail will try to find the cgi_files folder before error


=head2 5.25 - Jun 10, 2010

   added M:T:get_util & get_config methods (rathan than having other classes accessing the object data.
   removed $conf from calls to M:T:U:install_from_source
   M:T:Apache::start method is more reliable
   split M:T:Setup::config into config_ methods
   renamed M:T:FreeBSD::rc_dot_conf_check to conf_check, and added file option
     can be used to add entries to other config files, like make.conf now
   first argument to M:T:Utility::find_bin and syscmd are positional
   default vpopmail version is now 'port'
   new M:T objects include a $util object (it's usually loaded anyway)
   pass in $toaster objects when instantiating M:T subclasses
   added log and error methods to $toaster class, used by all subclasses
   removed M:T:Perl, replaced by methods in $util
   added freebsd port options for dovecot and roundcube
   abstracted Qmail::netqmail into several methods
   added qmail_openssl_ciphers option (thanks Craig Green).
   fixed URL to patches directory on www.tnpi.net
   install_portupgrade now defaults to off, install_portmaster added
   subscribeIMAP.sh test was fatal, now installs if missing
   M:T:DNS and t/DNS.t upgraded with better error handling and status reporting
   removed M:T:Passwd, replaced with simpler methods in M:T:Qmail
   removed qmail_(users) from toaster-watcher.conf (still honored if set)
   in t/Qmail.t, service_dir_get tests are non-fatal now
   changed IP used in RBL tests (my mail server got whitelisted?!)
   changed API for file_read, file_write, file_archive, is_port_installed,
     install_port (first arg is filename)
   dovecot.conf altered using search/replace function instead of patch
   after installing spamassassin, run 'sa-update' to initialize
   create a single SSL cert and use it for qmail, dovecot, courier, apache
   courier imap startup scripts that broke due to FreeBSD changes are detected
     and fixed. rc.conf values are automatically updated by toaster_setup.pl
   default cgi-bin location changed to www/cgi-bin.toaster (statically defined
     will avoid problems when ports opt to install cgi-bin, or cgi-bin.default,
     or cgi-bin-default, or whatever comes next)
   qmail_openssl_ciphers renamed openssl_ciphers. Used with Apache as well.
   reworked and updated the tests for better reporting and less code
   added config for roundcube: creates mysql db, user, and updates configs
   added negative smtp-auth test, make sure only valid auth works
   reworked bin/toaster-watcher.pl, greatly simplified structure.
   many changes in Mail::Toaster.pm, focused on brevity and legibility (-500 l)
   improved debug/status event reporting. Now mostly silent (unless -v) until
     something errs, then it reports the audit and error logs
   consolidated Qmail restart functions into one 'restart' method (-200 l)
   moved log rotation, compression, and cleanup from maillogs to toaster-watcher
   refinements to logging and setup of supervised services (-300 l)
   moved sqwebmail cleancache invocation to toaster-watcher
   deprecated toaster_os_release from tw.conf
   updated sourceforge URL
   added support for lighttpd

=head2 5.15 - Sep 21, 2009

   added missing valias to vpopmai port install
   replaced a couple vpopmail_qmail_extensions calls with vpopmail_qmail_ext
   remove some debugging info from toaster_setup -s toaster

=head2 5.14 - Apr 12, 2009

   remove blank entries from ordered rbl blacklists where ordering was
     not strictly sequential.
   ucspi mysql support is based on vpopmail_mysql instead of install_mysql
   update vpopmail version to 5.4.27
   use vpopmail from /usr/ports/disfiles if available (instead of d/l)
   updated Utility.pm to latest from P:U, main feature is better error handling
   install Mail::SPF instead of Mail::SPF::Query
   added install_mysqld config setting, can install mysql client w/o server
   renamed config vpopmail_qmail_extensions to vpopmail_qmail_ext (match --config)
   deleted jail_create, delete, get_hostname, start functions (deprecated)
   removed base from install_port calls, deprecated
   removed qmailscanner support
   removed rrdutil support
   removed legacy CGI applications
   deprecated cvsup based functions. Use portsnap and freebsd-update instead.
   api for ask and yes_or_no changed, slightly
   updated bin/install_deps 
   updated bin/install_deps.pl
   removed InstallMysqlTool, and with_linuxthreads from MySQL.pm
   perl seems to default to installing scripts in bin now instead of sbin, add 
       checks to detect where scripts are installed.
   updates to make courier, sqwebmail, and simscan install from ports correctly
   vpopmail.mysql gets updated when -s vpopmysql target is run
   added munin support to M::T Webmail
   default simscan user is now simscan (was clamav). clamav user is a member of
     qmail group now, which is the group owner of the simscan dir.
   updated list of RBLs


=head2 5.13 - Oct 19, 2008

 packaging updates: 
   removed 'use lib "inc"'
   changed #!/usr/bin/perl to #!perl (for portability)
   commented out warnings pragma in tests

=head2 5.12 - Oct 17, 2008

   tweaks to t/Utility.t so tests pass on systems w/o sudo installed
   ripped out Provision.pm, bin/sysadmin, bin/useradmin, bin/webadmin
   ripped out Build.PL & inc/*
   bumped toaster_os_release to 7.1 in t-w.conf
   updated META.yml
   Makefile.PL, removed Mail::Toaster dependency
   removed portsdb from portsnap sub and 'all' target 
   install_deps.pl installs a few more dependencies
   removed openssl stable bits from -s pre target
   perl modules have #!perl instead of a full path to perl (portability)
   moved $VERSION to top of modules, help remind me to update it
   removed contrib/netqmail-* patches (installer fetches them from 
     mail-toaster.org/patches), so can anyone else
   License in bin/migrate.pl was perl artistic, made BSD for consistency
   removed contrib/mailfilter (it's autogenerated) and contrib/pkgtools.conf


=head2 5.11 - Aug 20, 2008

   use current (instead of stable) openssl port
   added test for permissions on toaster.conf
   added =head1 VERSION to modules
   rewrote bin/install_deps.pl in perl (was sh)
   Toaster.pm loads in $conf when ->new is called.
   Setup.pm loads in $conf from $toaser->{conf}
   renamed pop3_ip_address_listen_on to pop3_listen_on_address
    in toaster-watcher.conf
   created _set_config accessors in Qmail.pm and Setup.pm
   renamed $utility to $util globally
   bumped (c) year to 2008
   install_sqwebmail defaults to 0 now
   net_snmpd defaults to v5 now
   updated dovecot.conf patch to v1.1.3
   deleted Setup->mattbundle


=head2 5.10 - Apr 17, 2008

   disable apache2_fixups until it can be fixed
   renamed item_installdsacert to item_install_dsa_cert
   update copyrights to 2008
   added the function "get_yesterdays_smtp_log" which provides the same functionality 
     as get_yesterdays_send_log. -- patch from Georg von Itzenplitz
   Mysql.pm - honor $debug setting in DBD & DBD install subs


=head2 5.09 - Nov   , 2007

   playing Kwalitee (http://cpants.perl.org/highscores/)
   added 'use warnings' pragma to several modules
   updated Copyright dates to 2007
   Build.PL - added several modules to build_requires
   t/DNS.t - added suffixes to tests to more easily identify exactly which test failed.
   updated inc/Module/Install to 0.68
   CGI.pm - renamed only sub to _only
   Mysql.pm - package install logic was forcing package install
   Setup.pm - updated dovecot patch so it applies cleanly to 1.0.7
            - don't pass mysql args to FreeBSD port install, no loger
              necessary and doing so causes port build to fail
   Utility.pm - added missing pod doc for file_mode
  

=head2 5.08 - Nov 21, 2007

   tw.conf: added rbl psbl.surriel.com
   tw.conf: added rwl list.dnswl.org
   DNS.pm - adjust the RBL positive tests to accommodate pattern used by dnswl.org 
   Qmail.pm - smtp_set_rbls invoked get_list_of_rwls incorrectly (Bugz #3)
   t/qqtool.t & toaster_setup.t - run the script using the same version of
     perl as the test is being run as. - (for CPAN testers)
   t/Logs.t - see if syslog's mail.log exists before testing against it
   t/Utility.t - only run network tests on darwin and FreeBSD (for now).


=head2 5.07 - Oct 19, 2007

   qmail_toaster_patch_version = 3.1
   missing \ in qmail-pop3d/run file caused pop3 not to run
   updated logmonster download URL
   rrdtool port moved from net to databases
   snmpd rc.d file can be named snmpd or snmpd.sh
   ucspi-tcp source install, updated patch format
   only pass vpopmail mysql defines if selected (port now checks this)


=head2 5.06 - Sep 19, 2007

 Added bin/swaks
 Added bin/audit.pl
 Added bin/install_deps.sh
 Changed several default values in tw.conf:
   toaster_os_release to RELENG_6_2
   simscan_received = 0
   qmail_toaster_patch_version = 3.2
   install_vpopmail = 5.4.17
   install_php = 5
   install_dovecot = 1.0.2 (Linux only)
 Install OpenSSL stable port by default
 Updated dovecot.conf patch
 Added ./configure to dovecot source install
 rewrote install_squirrelmail sub
 only test submit service if its selected.
 format the service/run files for easier legibility
 Check permissions on toaster-watcher.conf file
 Don't ask about mysql package if package install selected
 Always run portsnap fetch update when ports_update is called
 Source installs for dovecot, ripmime, ucspi-tcp, and 
   rrdtool were passing an invalid patches value.
 Altered netstat invocation on Linux so it works reliably
 Only test snmp if it is enabled
 Put the contents of "openssl ciphers" into
   /var/qmail/control/tlsserverciphers. Should resolve some
   openssl issues.
 

=head2 5.05 - Feb 7, 2007

 Extensive updates for Darwin and Linux platforms
 Support for Yahoo DomainKeys
 Fixed -s allspam target (thanks Georg) 
 Support for dovecot IMAP/POP3 server

 toaster-watcher.conf
   - added install_gnupg option
   - added install_dovecot option (alternative to courier-imap)
   - added qmail_domainkeys option
   - added smtpd_verbose, pop3_verbose, submit_verbose options (adds -v flag
      to tcpserver in */run files)
   - replaced sbl_xbl.spamhaus.org with zen.spamhaus.org

 Apache.pm
   - added DirectoryIndex index.php declaration to PHP webmail apps in
     apache/Includes/mail-toaster.conf
   - added v-webmail Alias and Directory declarations
   - enable v-webmail Alias by default in apache include

 Darwin.pm
   - turned debugging off in syscmd call in port install sub

 FreeBSD.pm
   - port location of portupgrade updated (sysutils->ports-mgmt)
   - report how old ports tree is

 Mysql.pm
   - instead of looking for the dports dir on Darwin, look for the "port"
     binary to detect if DarwinPorts is configured
   - offer to install the mysql package instead of port (to save time)

 Passwd.pm
   - new user sub, $vals->{'username'} needed to be $vals->{'user'}

 Qmail.pm
   - on FreeBSD, be smarter about disabling sendmail and enabling qmail

 Setup.pm - 
   - Georg von Itzenplitz - allspam target created an empty .qmail with
     invalid ownership, sent patch.
   - fix for installing phpMyAdmin with php5
   - the squirrelmail sub does a better job of setting up squirrelmail with
     mysql prefs (no guarantees yet).
   - added sub for installing roundcube, domainkeys, and dovecot
   - RRDutil was not fetching dist properly
   - autorespond failed to build on darwin due to quoting error
   - if $config_dir ($prefix/etc)  is missing, create it
   - added vpopmail_valias to Darwin config tweaks
   - added an entire section of Linux config tweaks
   - search for gmake is no longer fatal (on Linux, gmake is installed as make)
   - isoqlog source build now works again (patches needed to be an arrayref)
   - added port_ options for Apache2-SOAP perl module
   - added download addresses for NicTool installs
   - added WITH_DATABASE to squirrelmail installs (so pear-DB will be installed)
   - suppress build time prompt if vpopmail_learn_passwords is disabled
   - updated vpopmail creategroup syntax, it now creates user/groups on
     Linux/Darwin again.
   - only check for service/pop3 symlink if pop3_daemon = qpop3d



=head2 5.04 - Nov 25, 2006

 Setup.pm - mailfilter generation code generated an invalid filter
      file if filtering_spamassassin_method was not = site.
    - installing phpmyadmin attempted to install php4-gd
      despite install_php = 5.
 *.pm - updated calls to darwin->install_port to reflect an internal
      API change. 


=head2 5.03 - Nov 8, 2006

 Logs.pm - comment out a print statement that caused a snmp counting error in maillogs

 Setup.pm - install Params-Validate port on FreeBSD & Darwin

 t/maillogs - return a more specific error message if Date::Parse not installed

=head2 5.03rc1 - Oct 15, 2006

=over

=item Packaging Updates

Moved Params::Validate into inc directory (prevent CPAN from presuming I provide it), moved Changes back into doc/Changes.pod, added include lib "inc" into all test files (forgot that with 5.02 release). 

Better pod descriptions for FreeBSD.pm, Mysql.pm, Apache.pm, Ezmlm.pm, Darwin.pm, DNS.pm, Provision.pm, Setup.pm, Passwd.pm, Perl.pm, and Toaster.pm. Updated META.yml to include license.

=item FreeBSD Port preparations

Default htdocs directory is now /usr/local/www/toaster.

=item CPAN test tweaks

Don't do passwd test on cygwin. Don't do network tests on Cygwin

=back

 toaster-watcher.conf
   added install_roundcube option

 Darwin.pm
   updated $utility calls with MT 5 syntax updates
   udpated test file to use Test::More

 t/Utility.t
    only attempt to chown_system if we are root, don't run get_my_ips on 
    netbsd (until I figure out why it doesn't work

 Changes
   added file to distribution

 bin/toaster_setup.pl
   added RT URL to bug section for reporting

 bin/sysadmin
   updated for MT 5 syntax

 Passwd.pm 
    mt 5 syntax updates, add in warnings for failures

 Qmail.pm
   formatting cleanups, and added a few missing debug=>0 settings.

 Provision.pm
    mt 5 updates and rewrite. If values are missing and we are interactive,
       prompt for the missing values.
    pass debug and $conf variables in the $provision object (accomplish 
       the same result with less code)

 Utility.pm
   ask sub now returns $default value (instead of 0) if not interactive
   yes_or_no supports q shortcut for question argument


=head2 5.02 - 2006.10.11

=over

=item toaster-watcher.conf

added options install_ezmlm_mysql, vpopmail_mysql_repl_master_port, vpopmail_mysql_repl_slave_port

=item t/Toaster.pm 

get_dir_files tests the file size to see if any domains are added yet (more reliable test)

=item FreeBSD.pm

 fixed a recursion bug in ports_update (portsnap)
 install a default portsnap.conf if missing
 FreeBSD version detection wasn't working

=item Apache.pm

 added security options to mail-toaster.conf to harden Apache
 added PHP AddType declarations
 added directory block for phpmyadmin
 only add phpmyadmin block if selected in toaster-watcher.conf

=item Setup.pm

ezmlm mysql support now depends on install_ezmlm_mysql setting instead of install_mysql.

added support for vpopmail mysql database port number (thanks Erik!)

vpopmail_mysql_database setting is now honored.

busted huge vpopmail sub into a dozen smaller ones for easier maintenance.

heredoc's used in creation of tcp.smtp used  ' and needed "

logic for NO_SENDMAIL test was inverted causing it to be added to /etc/make.conf more than once.

=back

=head2 5.02b - 2006.09.28

=over

=item index.cgi 

defined debug (caused it to not work)

=item Apache.pm

test for toaster_apache_vhost

add alias for v-webmail, and roundcube to apache's vhost config file(mail-toaster.conf)

=item Ezmlm.pm

 define any missing cgi params to suppress errors messages
 filled in pod description

=item FreeBSD.pm - detection of portsdb wasn't working

supress notification of new toaster-watcher.conf install if its missing

=item Logs.pm - prettied up the yesterday report a little bit.

 added checks to prevent warnings when logs are empty
 log archiving was failing (invalid test)

=item Perl.pm

 added pod doc for has_module

=item Setup.pm

 phpmyadmin_install was not passing $conf 

=item Utility.pm

Fixed a bug in mailtoaster sub that prevented it from finding the tw.conf file

added _progress_??? subs for providing status messages on the CLI

added pod documentation for several subs that had none

=back


=head2 5.01 - 2006.09.22

=over

 added help->vpopmail option to web interface
 added setup -s allspam option (enabled mail filtering for all users)
 default ports update mechanism is now portsnap
 removed dependency on Net::DNS (using dig)

commented out v-webmail, roundcube, vqadmin, and ezmlm menu options. Those items are not installed by Mail::Toaster (yet). 

added code in -s all target to refresh the $conf hashref after -s config target is run

moved $conf into the Setup.pm object. Significantly reduced the amount of passing $conf around from sub to sub.

added options and explicit port install options for gnupg and Archive::Tar to surpress dialog boxes.

timer was not working in yes_or_no due to typo in param validation block

disabled ezmlm and vqadmin in webmail. Activate them by removing the comments in mt-top.html

default cvsup_supfile_sources settings is now cvsup-sources (was cvsup-stable)

tweaks so "make test" runs with fewer warnings

toaster_setup -s sources now auto-builds cvsup-sources if missing. The location for it is /usr/local/etc now.

=back

=head2 5.00 - 2006.09.18

=over

=item CODE QUALITY

* Parameter validation for nearly all subroutines using Params::Validate. Backwards compatability is now destroyed, but that should not affect anyone as all published software that uses these functions is included with the distribution. Params::Validate is included in MT distribution.

* Tests. Hundreds of new tests. In version 4, I added a plethora of tests, basically just making sure each sub and function would execute. Now most subs and functions have tests that verify inputs and results. 

* Switched to Test::More for tests. Provides more and better options for writing tests, comparing results, and figuring out where the tests failed. 

* Maillogs - a number of optimizations to make processing logs faster (shorter regexps, optimized ternaries to match common stuff first, removed POSIX requirement (lighten memory requirements),  updated several of the counter functions to complain about unknown errors and values, more sanity checking in functions so they give up on errors instead of blithely charging ahead.

* instead of eval's strewn all over to test for certain modules, added $perl->has_module

* all objects are created with Class->new intead of new Class. 

* all errors raise exceptions by default. This requires callers to take specific action to change.

* run tests early in subroutines, reduces giant if nests and makes it easier to read the code.


=item MISC

* Added Build.PL for use with Module::Build fans.

* Greatly simplified Makefile.PL by moving "make cgi" and "make conf" logic into Setup.pm. Those functions are now accessed by toaster_setup targets. 

* OpenSSL config files are now updated automatically. Auto-generated certs now have the accurate information in them. Courier-IMAP certs are also updated automatically.


=item DOCUMENTATION

* Added three new test modules that test for: pod documentation for subs, pod formatting, and  automatic checking of code to test for best practices. 

* moved POD documentation from being strewn about the files to the end of each file.

* wrote and re-wrote significant portions of the documentation, as well as cleaned up formatting. Documentation is now easier to find as well.

 changed all tnpi.biz urls to tnpi.net
 shortened most tnpi.net urls to mail-toaster.org
 updated copyright notices to 2006
 moved usage() subs into pod docs and use pod2usage

=item CODE FORMATTING & READABILITY

* Used perltidy to format most of the source code.

* Used perlcritic to identify and correct (almost) all instances where my code was not using best practices, as identified in Perl Best Practices. 

* All subroutines now take named arguments, making it easier to read the code and understand what is being sent and returned.

* added "use English" pragma and replaced all the arcane $^ and $[ perl variables with their english name equivalents.


=item WEB INTERFACE/CGI

* Completely new webmail/logon interface. Written entirely in HTML, CSS, and JavaScript.

* The format of toaster-watcher.conf is altered slightly. It is more consistent in the internal layout so that my programs can alter it reliably. 

* removed httpd.conf patches in favor of installing a mail-toaster.conf file with all the requisite apache directives.

* Organized all the cgi related docs into cgi_files directory. They are now installed via the -s webmail target to toaster_setup. 

=back

See Also 4.x Changes L<http://mail-toaster.org/changes/4.x-changes.html>

