4.00 - 2004.11.16
    The changes in 4.0 have been focused on quality assurance. Nearly every
    bit of code has been reviewed and very little has been left untouched.
    The primary areas of change are regarding the methods the internal
    subroutines used to communicate. Now, nearly every method does integrity
    tests on itself, the input it receives, the results it tried to affect,
    and returns a result code indicating success or failure. Instead of
    blindly trying and hoping, actions are tested, and often re-tested to
    verify their results.

    In addition to all the massive internal changes, the test scripts to
    verify the modules and methods have grown significantly. Version 3.47
    had 29 tests, version 4.0 has 84 tests. These tests help assure that
    future code authors don't inadvertantly make changes that break
    functionality.

    All the modules are now object oriented. This really only matters to
    other perl progammers who want to use the modules. Each perl module is a
    package and the interface for that package is an object method. This has
    allowed me to get rid of all the exported functions. This has the
    advantage of making it far, far easier for other authors to read the
    code and find the bits they want to tinker with.

    Simscan support has been added and is the preferred scanner, replacing
    qmail-scanner. I'm sure this will lead to much excitement, joy, and
    pain. I have more than doubled the amount of documentation related to
    mail filtering. Most of it is on the mail filtering page of the web
    site.

    Finally, a battery of about 150 tests has been set up. Run
    toaster_setup.pl -s test and it will run these tests against your mail
    toaster. It's designed to be very extendible so as common problems creep
    up, we can add a test for them and make problem resolution easier. My
    favorite of the tests is testing the mail scanners (simscan &
    qmail-scanner). It delivers 4 messages (clean, attachment, spam, an
    virii) to the email admin using each enabled scanner (qmail-scanner,
    simscan, qscanq, etc) to test the mail scanners configuration.

       - admin.cgi
          - updates due to dependency changes
          - removed SetInstruct, SetHeading, SetLogo
       - Apache.pm
          - updated subs for new object methods
          - Added Apache1 building for Darwin (Mac OS X)
          - Added BSD copyright notice
          - add apache2_enable to /etc/rc.conf on FreeBSD
            (Apache port now requires it)
          - add apache2ssl_enable to /etc/rc.conf on FreeBSD
       - CGI.pm
          - no subs exported, Exporter removed
       - contrib/Mail-Ezmlm.patch
          - patch to untaint data for use with ezmlm.cgi
       - Darwin.pm
          - no subs exported, Exporter removed
       - DNS.pm
          - no subs exported, Exporter removed
       - Ezmlm.pm
          - no subs exported, Exporter removed
          - updated subs for OO methods
          - added documentation for each method
          - process shell logic rearranged so list function works
            on the command line. 
       - FreeBSD.pm
          - added jail_delete
          - jail_start was StartJail 
          - jail_create was CreateJail 
          - ports_update was UpdatePortsTree
          - jail_create - added option to only sync portions of
            ports tree relevant to Mail::Toaster
            - put timers on prompts so that automated installs
              will continue uninterrupted.
          - package_install - try a couple more ftp servers
            before failing.
       - index.cgi
          - updates due to dependency changes
          - removed SetInstruct, SetHeading, SetLogo
       - Logs.pm
          - no subs exported, Exporter removed
       - mailadmin
          - replaced sudo_setup sub with $utility->sudo
          - updated all external call with new methods
       - maillogs
          - updates due to Logs.pm changes
       - Makefile.PL - fixed an install bug that caused install 
           failures on systems where /usr/local/etc didn't exist
         - implicitely define the permissions on index.cgi
         - implicitely define the permissions on *.conf files
       - Mysql.pm
          - no subs exported, Exporter removed
          - total rework of install logic, much easier to control
            what's installed from the .conf file.
       - Passwd.pm
          - added beginning alpha character check to UserSanity
          - added error_code and error_desc to UserSanity result
          - BackupMasterPasswd: fully qualify the system util calls
          - VerifyMasterPasswd: rewrite logic, added results hash
          - users_add was InstallUser
          - user_add - use UserSanity tests, return error codes
            and descriptions instead of dying, added testing to
            verify success before returning.
          - added user_archive
       - Provision.pm
          - new addition
          - added subs: new, import, mail, mail_usage, 
            web, web_check_setup, web_usage, web_get_options, 
            user, user_archive, quota_set, user_usage, user_options, 
            dns, dns_usage, 
            usage, usage_action, check_what_am_i, what_am_i
       - Qmail.pm
          - no subs exported, Exporter removed
          - new subs: new, simscan, 
          - netqmail_virgin was InstallNetQmailVirgin 
          - rebuild_ssl_temp_keys was Rebuild_SSL_temp_keys
          - qmailctl script new rebuilds the following cdbs:
              /var/qmail/users/assign    ** NEW
              /var/qmail/control/morercpthosts  ** NEW
              /var/qmail/control/simcontrol  ** NEW
              ~vpopmail/etc/tcp.smtp
              /etc/tcp.smtp
          - set_supervise_dir was SetSuperviseDir
          - install_qmail_groups_users was InstallQmailGroupsUsers
          - netqmail was InstallNetQmail
          - install_qmail was InstallQmail
          - smtp_memory_explanation was ReturnSmtpMemoryExplanation
          - get_qmailscanner_virus_sender_ips was GetQmailScannerVirusSenderIPs
          - get_list_of_rwls was GetListOfRWLs
          - test_each_rbl was TestEachRBL
          - build_send_run wsa BuildSendRun
          - build_pop3_run was BuildPOP3Run
          - test_smtpd_config_values ws TestSmtpdConfigValues
          - set_service_dir was SetServiceDir 
          - build_smtp_run was BuildSmtpRun
          - build_submit_run was BuildSubmitRun
          - install_qmail_service_run was InstallQmailServiceRun
          - smtpd_restart was RestartQmailSmtpd
          - send_stop was StopQmailSend
          - find_qmail_send_control_dir was FindQmailSendControlDir 
          - send_start was StartQmailSend
          - check_control was CheckQmailControl
          - queue_check was CheckQmailQueue
          - queue_process was ProcessQmailQueue
          - check_rcpthosts was CheckRcpthosts
          - config was ConfigQmail
          - configure_qmail_control was ConfigureQmailControl
          - install_supervise_run was InstallQmailSuperviseRunFiles 
          - install_supervise_log_run was InstallQmailSuperviseLogRunFiles
          - get_domains_from_assign was GetDomainsFromAssign
          - control_write was WriteQmailControl
       - qqtool.pl
          - updates required for new object methods
       - Setup.pm
          - Updated MaildropFilterFile to support SpamAssassin 3.0
          - added spamassassin reporting to mailfilter
          - no subs exported, Exporter removed
          - new subs: new, simscan, 
          - misc code updates for increased readability
          - added apache2_enable to /etc/rc.conf
          - added lots more comment and sample config lines to
            fresh installed ~vpopmail/etc/tcp.smtp file
          - config_courier - no longer has to muck with rc.d files
          - check installed vpopmail version and ask before installing
            the same version again
          - maildrop_filter was InstallMaildropFilterFile
          - vqadmin was InstallVqadmin
          - mysqld was InstallMysqld
          - mattbundle was InstallMATTBundle
          - rrdutil was InstallRRDutil
          - ports was InstallPorts
          - apache was InstallApache
          - vpopmail was InstallVpopmail
          - vpopmail_mysql_privs was SetupVpopMysqlPrivs
          - squirrelmail was InstallSquirrelmail
          - maillogs was InstallMailLogs
          - socklog was InstallSocklog 
          - socklog_qmail_control was InstallSocklogQmailControl
          - filtering was InstallFilter
          - maildrop_files was InstallMaildropFiles
          - config_spamassassin was ConfigSpamAssassin
          - config_qmailscanner was ConfigQmailScanner
          - qmail_scanner was InstallQmailScanner
          - qs_old_array_method was QmailScannerOldScannerArrayMethod 
          - qs_stats was InstallQmailScannerStats
          - clamav was InstallClamAV
          - build_clam_run was BuildClamRun
          - dependencies was InstallToasterDependencies
          - courier was InstallCourier 
          - sqwebmail was InstallSqwebmail
          - qmailadmin was InstallQmailadmin
          - ucspi was InstallUCSPI
          - ezmlm was InstallEzmlm
          - config_courier was ConfigCourier 
          - config_vpopmail_etc was ConfigVpopmailEtc
          - supervise was InstallSupervise 
          - create_service_dir was CreateServiceDir
          - configure_services was ConfigureServices 
          - create_supervise_dirs was CreateSuperviseDirs
       - sysadmin
          - new addition
       - sysadmin.conf
          - new addition
       - toaster_setup.pl
          - creates objects $setup, $qmail, $utility, $freebsd
            and $apache. 
          - Code updates as necessary for object methods
          - added simscan build option
          - added jaildelete option
          - all section does not install MATT::Bundle
       - toaster-watcher.conf
          - added filtering_report_spam_spamassassin option
          - added rbl_combined_njabl.org blacklist
          - install_dcc defaults to "on" now
          - toaster_os_release now defaults to 5-stable 
          - new settings: toaster_version, install_simscan
            supervise_rebuilt_notice, install_apache_suexec
            filtering_method, rwl_qmail.bondedsender.org
            simscan_*, apache_suexec_*
          - install_clamav_user defaults to clamav
          - smtpd_qmail_queue default=/var/qmail/bin/simscan
          - rwl_enable defaults to on
          - pop3_max_memory_per_connection = 3 (was 2)
          - qmail_scanner_scanners=clamdscan,fast_spamassassin
          - install_mysql defaults  to 2 now (was 4)
          - smtpd_qmail_queue defaults to qmail
       - Toaster.pm
          - added docs for new and email_send subs
          - added email_send sub
          - updated docs 
       - toaster-watcher.conf man page
          - added filtering_method notes
          - added filtering_debug & notes
          - added filtering_report* & notes
          - added mysql version build notes
       - toaster-watcher.pl
          - create $utility and $qmail objects
          - updates as necessary for object methods
          - only run quarantine processing if it's enabled
            and install_qmailscanner is enabled
       - TODO - added file
       - Utility.pm
          - no subs exported, Exporter removed
          - new subs: new, graceful_exit
          - updated docs for all subs, documented return values
          - misc code updates for increased readability
          - updated all self referential calls for use with new
            OO invocation methods
          - drives_get_mounted now returns dev and procfs mounts
          - check_pidfile was CheckPidFile
          - file_check_writable was CheckFileWritable
          - install_from_sources_php was InstallFromSourcesPHP
          - file_check_readable was CheckFileReadable
          - install_from_source was InstallFromSources
            - input is a hashref instead of argument list
          - values are passed to install_from_sources as hashref
            instead of a list of arguments
          - install_perl_module was InstallPerlModule
          - is_process_running was IsProcessRunning
          - mailtoaster was InstallMailToaster 
          - get_dir_files was GetDirFiles
          - file_write was WriteFile
          - file_read was ReadFile
          - clean_tmp_dir was CleanTmpDir
          - file_delete was DeleteFile
            - smarter overall, does checks first
            - added sudo rm for non-root deletes
          - file_archive was ArchiveFile
          - file_append was FileAppend
          - get_the_date was GetTheDate
          - logfile_append was LogFileAppend
          - parse_config was ParseConfigFile
          - archive_expand was ExpandArchive
          - drives_get_mounted was GetMountedDrives
          - yes_or_no was YesOrNo
            - added timer option (timeout if no response)
          - syscmd was SysCmd
          - get_file was FetchFile
          - answer was GetAnswer
            - added timeout feature if no response
          - logfile_append was LogFileAppend
          - chdir_source_dir was CdSrcDir
          - source_warning was SourceWarning
          - sudo was SudoSetup
            - will now offer to install sudo for you
          - changed sudo warning message to be more clear
          - check_homedir_ownership was CheckAllHomeDirOwnership
            - fixed so that stat function works
       - t/Apache.t
          - added 1 more test
       - t/CGI.t
          - added 1 more test
       - t/Darwin.t
          - added 1 more test
       - t/DNS.t
          - added 5 more tests
       - t/Ezmlm.t
          - added 5 more tests
       - t/Logs.t
          - added 4 more tests
       - t/Perl.t
          - added 3 more tests
       - t/Provision.t
          - created with 3 tests
       - t/Qmail.t
          - added 5 more test
       - t/Setup.t
          - added 1 more test
       - t/Utility.t
          - added 14 more tests

3.46 - 2004.09.21
       - toaster-watcher.pl
         - added more debugging output when run with -v
         - added log file writing feature for Justin
       - toaster-watcher.conf
         - added install_php
         - added toaster_watcher_log
       - toaster_setup.pl
         - Skip CheckPerl for sources and ports update
       - Apache.pm
         - added support for php5 to InstallApache2
       - Qmail.pm
         - Warn (was die) if quarantine dir doesn't exist
       - Mysql.pm
         - imported flush_logs, get_hashes, shutdown_mysqld,
           ListDatabases, and VerifyQuery from mrm
         - Updated phpMyAdmin check for new port install dir
       - Setup.pm
         - honor qmailadmin_spam_command option
         - finished support for qmailadmin_spam_option
         - don't install qmail in ToasterDep if it exists
       - Toaster.pm
         - added a space to the salearn invocation
       - Utility.pm
         - fully qualified two calls to LoadModule

3.45 - 2004.08.09
       - Apache.pm
          - fixed libww = libwww typo
       - admin.tmpl
          - added link to Ezmlm CGI
       - Ezmlm.pm
          - added attribution to Sam Mayes
       - FreeBSD.pm
          - fixed a minor problem with UpdatePorts sub
       - index.tmpl
          - fixed javascript for imp login
       - Setup.pm
          - Install OpenSSL port as part of -s pre
          - don't install automake & autoconf (due to port
            maintenance, we now let them get installed as
            dependencies)
       - Utility.pm
          - CheckPidFile: since we have a pid file, we might
            as well (duh) write the process id into it.
            - gracefully deal with it if we can't write to the
              directory chose to store the pid file (use /tmp)
          - file_check_writable: check the file first, and only
            check the enclosing directory permissions if the 
            file doesn't exist
            - be quiet unless $debug is set

3.44 - 2004.08.02
       - Apache.pm
           - Honor package_install_method for Apache2
           - added "WITH_OPENSSL_PORT to apache2 build
       - BUILD.pod
           - corrected config/contrib typo in build notes
       - FreeBSD.pm
           - added asking for jail_start params if not provided
       - RRDutil.pm
           - added a bunch of pod documentation
       - support/*.html - updated path to red.gif
            - added support/images/red.gif
       - toaster_setup.pl
           - added jailadd target
           - added jailstart target
       - toaster-watcher.pl
           - now requires Mail::Toaster::Utility 1.38 +
           - -v prints out version #
       - Setup.pm
           - install p5-vpopmail perl module

3.43 - 2004.08.01
       - Ezmlm.pm
          - initial authoring
          - Added contrib/ezmlm.cgi & contrib/ezmlm.tmpl
          - requires Email::Valid, vpopmail, & Mail::Ezmlm
       - Logs.pm
          - Increased reporting for stats email
          - Added option for human readable timestamps in smtplog
       - Qmail.pm
          - UpdateVirusBlocks: rebuild tcp.smtp.cdb file after
            adding new IPs to the block list.
          - more error reporting if failure conditions detected
       - RRDutil.pm
          - migrated massive portions of rrdutil.pl into RRDutil.pm
            and RRDUtil/HTML|Graph|SNMP.pm for easier maintenance
          - many code cleanups and tweaks due to changes
       - Setup.pm
          - InstallMaildropFilter: exception\n{ needed to be 
            exception { (on the same line) for some silly reason
          - Check filtering_spamassassin_method and don't add
            SpamA to qmail-scanner unless it's set to site. Warn
            when it's dropped, and why.
          - InstallVpopmail: ip_alias_domains only got set when
            building from ports. Now it gets set for a source
            install as well.
          - InstallVqadmin:  added new target to toaster_setup.pl
          - InstallPort ucspi-tcp (install via ports)
          - InstallPort openssl
       - Toaster.pm
          - forgot to check svc_dir_submit for qmail_supervise
       - toaster-watcher.conf
          - added install_openssl_port = 1
       - toaster-watcher.pl
          - creates pidfile (/var/run/toaster-watcher.pid) while
            running. Cleans it up upon success exit.
       - Utility.pm
          - added CheckPidFile subroutine
       - Watcher.pm
          - CheckPidFile sub added

3.42 - 2004.06.02
       - Makefile.PL
          - install a toaster specific pkgtools.conf when
            "make newconf" is run. This should help save some
            folks heartache when using portupgrade.
       - watcher.conf
          - vpopmail_domain_quotas defaults to off (0)
          - snmpd version is now 5 again (port is fixed)
       - Watcher.pm
          - Many fixes and additional logging and debugging
            options for the CleanMailboxMessages sub. It 
            actually works now.
          - CheckToaster now tests to make sure:
            - the ~alias files are not empty
            - there aren't log/down files in logging dirs
              (makes upgrading from dinosaur toasters easier)
       - Utility.pm
          - Exported FileAppend sub
          - moved $os detection to main sub (less redundancy)
          - CheckfileReadable, added sub
          - CheckfileWritable, added sub
          - InstallFromSourcesPHP, added sub
          - Prototyped the few subs that weren't already
          - Added $debug to get_dir_files,FetchFile, 
          - InstallPort - added hack for sqwebmail port so
            it runs install-configure. Will fix sqwebmail
            problems until the port gets fixed.
          - ExpandArchive: checks to make sure the file
            contents match the file extension and returns
            exit codes as appropriate.
       - Setup.pm
          - AppendFile needed to be FileAppend
          - typos: enable-dol should have been enable-eol
          - updated InstallClamAV to work with new db files
          - ConfigSquirrelmail now supports adding in a dsn
          - InstallVqadmin: added Darwin and other OS support
          - InstallApache: added Darwin support
          - InstallSquirrlmail: added Darwin support
            - install pear-DB port for squirrelmail mysql
          - Added SetupSquirrelmailMysqlPrivs sub
          - InstallFilter: added Darwin support
          - InstallMaildropFiles: added Darwin support
             - also set RBLSMTPD on local IP blocks
          - InstallToasterDep: added more Darwin support
          - InstallCourier: added Darwin support
          - InstallQmailadmin: added Darwin support
          - InstallUCSPI: added Darwin support
          - InstallEzmlm: added Darwin support
          - InstallVpopmail: don't keep trying to build after
            an ExpandArchive failure.
            - updated default version to 5.4.4
       - Qmail.pm
          - moved OS detection to main (less redundancy)
          - InstallNetQmail: added Darwin support
       - Perl.pm
          - CheckPerl will now call InstallPerl if your
            perl isn't new enough.
          - InstallPerl: added Darwin support and updates
            installed perl modules on FreeBSD
       - Mysql.pm
          - InstallMysql: added Darwin support (via dports)
          - moved OS detection into main()
          - auto-create .my.cnf if it doesn't exist when we
            call ParseDotFile
       - Darwin.pm
          - better detect location of port program
       - Logs.pm
          - Fixed bug in RollPOP3Logs where $conf wasn't
            being passed to ProcessPOP3Logs

3.41 - 2004.05.14
       - CGI.pm, index.cgi, index.tmpl, toaster.conf
         - Added Horde/IMP support to index.cgi
       - Qmail.pm 
         - previously we only created the temp
           SSL certs if the file was more than a day old.
           Now we also generate them if they don't exist.
         - Redirection OpenSSL output to /dev/null when 
           generating temp ssl certs
         - Removed dependencies on MATT::Bundle
       - Setup.pm
         - do $os check globally in the sub
         - chown and chmod the generated mailfilter file
         - honor system_config_dir in more places
         - removed hard coded paths to cgi and web data
           dirs (enhanced platform portability)
         - better detection of installed Apache
         - honor toaster_src_dir in more places
         - honor toaster_dl_site from toaster-watcher.conf
         - removed hard coded user and gid for vpopmail
         - chown defaultdomain to vpopmail user and group
         - more OS detection for enhanced MacOS X support
         - setup razor-agent for /etc/razor instead of the
           default /root/.razor
         - Removed dependencies on MATT::Bundle
         - Removed ApacheConfPatch (relocated to Apache.pm)
       - Utility.pm
         - added InstallFromSources sub
         - added InstallPerlModule sub
         - Removed dependencies on MATT::Bundle
       - FreeBSD.pm
         - honor toaster_dl_site from toaster-watcher.conf
         - imported ruby install section from Setup.pm
       - Apache.pm - imported from MATT::Bundle
         - Use Mail::Toaster::Perl instead of MATT version
       - Darwin.pm - imported from MATT::Bundle
       - Mysql.pm  - imported from MATT::Bundle
       - Passwd.pm - imported from MATT::Bundle
       - t/Darwin.t - imported from MATT::Bundle
       - t/Apache.t - imported from MATT::Bundle
       - t/Mysql.t  - imported from MATT::Bundle
       - t/Passwd.t - imported from MATT::Bundle
       - admin.cgi - added vqadmin

3.40 - 2004.04.23
       - INSTALL & UPGRADE
         - removed cron entry for update_tmprsadh
       - toaster-watcher.pl
         - added support to build the temp SSL pems
       - toaster.conf
         - default log dir was /var/log/qmail
       - Setup.pm
         - Made InstallRRDutil sub Darwin friendly
         - Made UpdatePorts sub Darwin friendly
       - toaster-watcher.conf pod
         - added mail filtering notes regarding firewall
           and initial config steps

3.39 - 2004.04.20
       - David doc updates:
         - toaster-watcher.conf: remove vpopmail doc note
         - toaster.conf and toaster-watcher.conf updates
       - David added the preserve_cgifiles option
       - UPGRADE.pod: added -s courier
       - FAQ.pod
         - added migrate Mail::Toaster entry
         - added upgrade hard drive entry
       - toaster_setup.pl
         - all UpdateSrcTree directly
         - added -s toaster (install Mail::Toaster)
         - added -s maildrop
       - toaster-watcher.conf
         - updated rbl definitions
         - added filtering_spama_discard_score
         - added filtering_maildrop_filter_file
         - qmail_supervise_pop3 = removed d from pop3d
         - added install_clamav_user = qscand
         - added qmail_tarpit_count = 50
         - added qmail_tarpit_delay = 5
       - toaster-watcher.pl
         - only rebuild submit/run if it's enabled in .conf
       - toaster.conf
         - added web_qmailadmin_help_url
       - FreeBSD.pm:
         - Prototyped subroutines
         - Updated UpdateSrcTree and ports_update
            no longer require passed variables and expect
            a single hashref to be passed.
         - More verbose explanation of portsdb -Uu
       - Qmail.pm
         - Added notes to */run and */log/run files denoting
           that they are automatically generated.
         - Only restart qmail-smtpd if the run file changed
         - Detect and prefer a port installed openssl, else
           use the default FreeBSD supplied version.
         - UpdateVirusBlocks: strip .cdb off relay cdb path
         - StopQmailSend: check for supervise not running
         - Check to make sure file exists before copying
         - fully qualified call to files_diff
       - Utility.pm
         - export files_diff sub
       - CGI.pm, index.tmpl
         - added help ? to qmailadmin
       - Setup.pm
         - run razor-admin commands after installing razor
           to set up razor for use
         - chnaged InstallPackage(ruby) to ruby18_static
         - removed InstallSources subroutine
         - added InstallMaildropFilterFile sub
         - better detect installation of ruby 1.8
         - use $vpopdir for vpopmail.mysql file location
           (was hard coded /usr/local/vpopmail path)
       - Makefile.PL
         - install toaster-watcher.conf to html/etc/

3.38 - 3.19.2004
       - Setup.pm
         - Install RRDutil: fixed a typo that caused an
           existing snmpd.conf file to get overwritten.
         - Fixed InstallPort detection of ruby 1.8
         - InstallQmailadmin: help files weren't being
             installed in the right place. Also, download
             the souces in the src dir so that it only has
             to be downloaded once.
           - added help version (in case updates come out)
           - make the source install put stuff in the same
             location(s) as the ports install (consistency)
           - Replaced hard coded sf.net urls with .conf var
         - Added a splattering of extra debugging output
         - prototyped a few of the subs
         - Now you aren't forced to exit if you skip an 
           install section.
       - Do a better job detecting database connect failure
         (affects upgrades)
       - toaster-watcher.conf: 
         - smtpd_max_memory_per_connection = 35 (was 25)
         - smtpd_max_memory = 356 (was 256)
         - removed filtering_qmailscanner_(debug, clamav, 
           spamas, logging) - redundant (qmail_scanner_*)
         - removed install_qmailscanner_version (redundant)
         - added qmail_scanner_scanners and removed the
           individual scanner options - makes it easier for
           end users to control qmail-scanner build
         - added install_sf_mirror for sourceforge mirror
         - updated Courier-IMAP to 3.0.2
       - toaster-watcher.pl
         - added -d (debug) option
         - get run file location from set_supervise_dir
           (more portability, compatability with LWQ)
       - toaster_setup.pl
         - added -s vpopmysql option
       - admin.cgi & admin.tmpl: creation
      - FreeBSD.pm
        - When using jail_create, make sure IP exists
      - Qmail.pm
        - BuildSmtpRun: if smtpd_qmail_queue isn't set up,
          fall back to standard qmail-queue if available
          and warn loudly.
        - David updated the smtp memory warning message
          it now returns a more useful error
        - Added set_supervise_dir sub
        - Prototyped subroutines
      - INSTALL.pod
        - added ports -vs- packages note
        - updated Apache PHP notes
        - added the skip -s filter note
      - UPGRADE.pod
        - removed extra ' from perl pkgtools note
        - added chmod 600 mailfilter command
      - BUILD.pod
        - created build notes for myself - others will
          likely find it useful

3.37 - 03.13.2004
       - Makefile.PL: make htdocs detection smarter
       - QmailScanner:  update to 1.21, resolve issue
         with ClamAV usage and other bug fixes.
        - cleaned up scanner selection logic
        - smarter postmaster detection
        - updates for qmail-scanner 1.21
        - added install_qmailscanner_stats option
        - added qmail_scanner_notify       
        - added qmail_scanner_localdomains  
        - added qmail_scanner_block_pass_zips
      - Setup.pm: QSS - rewrite some of the php that
          doesn't work with register_globals off
        - updates to support new qmailscanner options
        - Sqweb: honor toaster_http_docs setting
          - Added port install option
          - set CGIBINSUBDIR for port install
        - Added ConfigSquirrelmail sub
        - QmailAdmin: honor toaster_cgi-bin and docroot
          - install dir defaults in w.conf default to 0
          - detect alternate install dirs better
        - InstallRRDutil: honor port setting for snmpd
          - ability to install snmp v4 or 5
        - SourceWarning errors are now non-fatal (makes
         the 'toaster_setup.pl -s all' much yummier.
        - Added checks for pre-installed ucd-snmp 4
      - watcher.conf:  make it easy for toaster_setup
          to update the system with your preferences
          - added cvsup_supfile_ports
          - added cvsup_supfile_sources
          - added install_net_snmpd (4|5)
          - vpopmail_enable_netblocks = 0
          - package_method now defaults to ports
          - qmail_scanner_postmaster defaults to 0
            (uses toaster_admin_email)
          - install_vpopmail defaults to v5.4.2
      - Logs.pm
         - cleaned up usage message
         - added yesterday option to maillogs
      - toaster.conf
         - added qmailanalog_bin setting
         - use tnpi logo by default
      - docs/pods/LIFE.pod: beginning of Life With
        Mail Toaster document
      - FreeBSD.pm
         - added $debug to InstallPort & InstallPackage
           (decrease verbosity unless desired)

3.36 - 03.09.2004
     - cvsup-ports: added net-mgmt tree
     - updated lots of docs on the web site
     - Consolidated docs to a new docs URL:
       http://www.tnpi.biz/internet/mail/toaster/docs/
     - Updated Makefile.PL to generate more docs pages
       and more html pages for the web site.
       - add sample w.conf & toaster.conf to web site
     - added docs/README-qqtool, docs/README-maillogs
     - watcher.pl: added more pod documentation
     - watcher.conf: smtpd_max_connections = 10
       - added install_apache2_modperl option
       - install_dcc is off by default (it often has
         build problems)
       - install_pyzor is off by default (it takes a
         long time to install)
     - Qmail.pm: add ReturnSmtpMemoryExplanation sub
        returns a more detailed max_memory error
       - Added the ability to set concurrencyremote to
         a value other than 255 at build time.
       - Moved install_qmail and install_netqmail into
         Qmail.pm from Setup.pm
       - InstallSockLog: honor qmail_dir setting
       - If qmail is running, stop it before installing
       - Added find_qmail_send_control_dir sub
       - honor qmail_service_send from w.conf
       - Added additional debugging to InsQmSupervRun
       - honor the *_log_maxsize_bytes from w.conf
       - moved InstallQmailGroupsUsers into Qmail.pm
     - Setup.pm - make cert needed gmake
       - InstallClamAV was missing the call to 
         LoadModule(MATT::Passwd)
       - InstToasDep: don't install MySQL if selected
         (previously assumed a MySQL 4 install)
       - Added "make cgi" target to RRDutil install
       - Added clamuko to QmailScanner config options
       - QmailScanner: cleaned up scanner selection logic
        - smarter postmaster detection
        - updates for qmail-scanner 1.21
       - InstallApache: fixed the call that was supposed
         to start up apache after installing.
       - InstallMaildropFiles: honor qmail_log_base
       - Start up Courier daemons after installing
       - Start up services after running -s supervise
       - if ports/net-mgmt doesn't exist, use port/net
       - change the $tar calls to ExpandArchive. The method
         used is less FreeBSD specific and will work with
         systems where tar doesn't support decompression
       - removed SourceWarning, duplicated in Utility.pm
       - InstallUCSPI: change db.c and replace unistd.h
         with sys/unistd.h. Compat issue w/MySQL 4
       - Install a symlink in perl/mach subdir to fix the 
         stupid broken port depenencies in Net::DNS
       - Do the MySQL configuration queries if MySQL server
         can be connected to. Otherwise print the query
         info to the console.
       - QSS: fixed up the getGraph?.php files per FAQ
     - qqtool.pl - renamed StopQmail & StartQmail to
         StartQmailSend and StopQmailSend
     - FreeBSD.pm: doc and debugging updates
     - Utility.pm: added ExpandArchive sub
     - toaster_setup.pl:  added -s test and -s all. 
       - the -s all feature will make a few people very
         excited, when they discover it's existence. :)
       - pass the debug flag down to many subroutines
       - print out a list of options if no -s is passed

3.35 - 03.07.2004
     - w.conf: added install_netqmail = 1.05
       - added qmail_user_* and qmail_group
     - index.cgi, CGI.pm: Added support for v-webmail
     - Added David's mighty fine documentation
       - lib/toaster-watcher.conf.pod added (perl docs for
         toaster-watcher.conf file.
       - lib/toaster.conf.pod added (perl docs for
         toaster.conf file.
       - Mail::Toaster::Conf.pod added.
     - Toaster.pm: CleanMailboxMessages now honors 
       qmail_log_base setting
     - Utility.pm: Added GetMountedDrives sub
     - FreeBSD.pm: Added jail_start sub
       - Added reverse DNS to jail_start. Detects hostname
         and starts jail. Mounts proc and devfs if not.
       - Added hostname detection to jail_create
     - Logs.pm: Isoqlog didn't honor 0 setting. Fixed.
       - don't try to chown $logbase if we don't have perm
       - SetSyslog: added lots of debugging output
     - Qmail.pm:
       - ?????_log_method logic was flawed. Fixed.
       - Added support for stats & disabled to log_method
       - create qmailctl as symlink to qmail script for
         LWQ compatability.
       - added logic to support smtpd_max_memory option
       - enforces smtpd_max_memory setting now.
       - don't insert hostname for smtp-auth unless
         we're using the .31 version of the patch
       - print out what we're doing along the way when
         configuring qmail
       - enable mfcheck if set in w.conf
       - insert postmaster@dom.com into ~alias files
     - Setup.pm:
       - Added InstallQmailGroupsUsers sub
       - Added InstallNetQmail sub
       - reordered -s filter section so import stuff gets
         installed first.
       - package_install_method = ports wasn't working
       - snmp stuff moved from net to net-mgmt in ports
       - Added support to qmailscanner for uvscan
       - Don't install clamav.sh run script
       - Add clamav_freshclam_enable="YES" to rc.conf
       - InstallMaillogs: check for isoqlog bin before
         trying to install it
     - toaster_setup.pl: added netqmail target
     - INSTALL.pod: added update_tmprsadh call

3.34 - 02.29.2004
     - Setup.pm: Fix the error where if /usr/local/src 
       creation test failed.
     - Setup.pm: Added support for --disable-many-domains
       in vpopmail build
     - Qmail.pm: don't die on vpopmail dir check if user
       has disabled vpopmail install in w.conf
     - w.conf: added vpopmail_disable_many_domains
     - Updated install instructions moving MATT::Bundle
       installation down a few levels.
     - toaster-watcher.pl - updated pod docs for cleaner
       parsing
     - Copied MATT::FreeBSD & MATT::Perl into this
       package. Removed many MATT::Bundle dependencies
     - merged qqtool (1.2) into Mail::Toaster package
     - Copied MATT::Utility into this package as 
       Mail::Toaster::Utility. Removed many MATT::Utility 
       dependencies
     - removed MATT::DNS dependency
     - Lots of cosmetic changes to web site
     - Added doc/pod/QUOTES.pod 
     - CGI.pm: removed POST from isoqlog call. Didn't work
       with Apache 1.x
     - Qmail.pm: install_qmail_service_run, instead of moving
       the old */run file, we copy it, and then move the
       new one over it atomically. Will prevent end users
       from ever seeing a non-harmful error message.
     - Setup.pm: Added additional build support for 
       Darwin (MacOS X)
     - Qmail.pm: check for QMS lines with regexp
       instead of == comparison operator
     - t.conf: added reference to web forum docs
     - w.conf: added reference to web forum docs
     - maillogs: documentation updates for accuracy
     - Setup.pm: Generate subscribeIMAP instead of 
       fetching it off the tnpi web site.
     - Setup.pm: InstallVPopmail - changed InstallPort
       subdir from "port" to "mail".
     - Added BSD license to source files
     - Added LICENSE file
     - Update CGI.pm & index.* per David Chaplin-Loebell
       request: easier to customize, consistent number of
       TD's in results returned from CGI.pm.

3.33 - 02.14.2004
     - Setup.pm - InstallMailLogs - create the 
       /var/log/mail/submit directory
     - CGI.pm - moved lots of logic from index.cgi
       into CGI.pm for easier maintenance.
     - Added many new config options to toaster.conf
       to make customizing Toaster::CGI very easy.
     - Added toaster_hostname to watcher.conf
     - qmail_service_smtps needed to be 
         qmail_service_submit in watcher.conf
     - index.cgi & index.tmpl - added logo info to 
       toaster.conf file for easier site customization.
     - Setup.pm - reworked several subs to allow version
       information to be stored in w.conf for courier, 
       sqwebmail, vpopmail, qmailadmin, qmail
     - t_setup.pl - updated to match new watcher.conf
       settings
     - Setup.pm - Added InstallQmailScannerStats sub
     - Updated vpopmail to 5.4.0 (-stable)
     - Updated qmailadmin to 1.2.0 (-stable)
     - Added toaster_debug to watcher.conf file. Now 
       watcher script will spit out lots of messages
       when it runs.  That will prove helpful to some 
       people as many errors can be get reported.
     - Added additional debug calls to watcher.pl
     - Added ability to clean up mail messages based
       on settings in toaster-watcher.conf. Cleans up
       old messages based on admin configurable number
       of days. Optionally feed spam and ham messages
       through sa-learn.
       Added CleanMailboxMessasges call to watcher.pl
       Added CleanMailboxMessasges to Toaster.pm
       Added maildir_clean_* options to watcher.conf
     - Added qs_quarantine_verbose option to w.conf
     - Eliminated duplicate virus IP blocks

3.32 - 02.04.2004
     - Setup.pm & toaster-watcher.conf - added more 
       options so fewer questions are asked during
       install. Added f-prot virus scanner support.
     - CGI.pm - Added Qmail Scanner Statistics option
       see https://mail.cadillac.net/
     - FAQ.pod - Added 5 new FAQ entries. 
     - Setup.pm & Qmail.pm - Added smtp-submit. Adds a
       smtp listener on port 587 per the SMTP-submission
       RFC. (Added for client)
     - Setup.pm - scripts now adds snmpd_enable="YES" to 
       /etc/rc.conf instead of giving you a notice. Also
       (re)starts the snmpd daemon.
     - Setup.pm - Fixed the regexp that fixes the Ezmlm
       Makefile to use MySQL 4.
     - Logs.pm  - make sure logs_base (var/log/mail) is 
       owned by qmaill:qnofiles.
     - Setup.pm - added  package_install_method to w.conf
       Now InstallPackage calls can be replaced with
       InstallPort based on user prefs.
     - Logs.pm  - added defaults for all $conf->{} settings
       Now, if a user doesn't update their .conf file and
       has missing settings, the toaster will behave 
       reasonably.
     - Setup.pm - qmailscanner wasn't fetching the sources
       into the right directory.
     - Added support directory to the distribution (Mail::
       Toaster::CGI support html files)
     - Setup.pm - adjusted regexp for ezmlm
     - Setup.pm - Added Mail::Audit to InstallFilter SA
     - Setup.pm - Added DCC, razor, pyzor, and bogofilter
       to InstallFilter section
     - added code to support smtps server build

3.31 - 01.19.2004
     - Qmail.pm - Don't insert rblsmtpd options in smtp/run
       unless rbls are being used.
     - Setup.pm - Only install rc.d/pop3.sh if courier
       is selected as the pop3 server.
     - Added more documentation to address relay questions
       posed on the mailing list

3.30 - 12.17.2003
     - Setup.pm - Honor install_apache from watcher
       .conf file.
     - Setup.pm - Added install_qmailscanner_version
     - Qmail.pm - Honor rblsmtpd options from watcher
       .conf file.
     - Logs.pm - Many changes, see seperate file
       Changes-MailLogs for details.
     - Setup.pm - InstallFilters now starts spamd after
       install SpamAssassin.
     - Start clamd after install ClamAV
     - Setup.pm - InstallVpopmail now honors the
       vpopmail_roaming_users setting in .conf
     - Setup.pm - InstallSocklog - you can now pass 
       along the user the logs should be owned by.
     - Setup.pm - InstallSocklog: chmod 755 the run file
     - Setup.pm - InstallSocklog - added some print
       lines so you could tell what it was doing. Added
       the $ip argument in case your logging server isn't
       on the same IP as mine. ;)
     - Setup.pm - FetchFile calls weren't being tested
       to determine if they had succeeded. Updated every
       call to FetchFile and added code to verify that
       the files were downloaded.
     - Added more pod documentation and published pod
       docs on Mail::Toaster web pages.

3.29 - 12.02.2003
     - Mail::Toaster::Logs & maillogs - see  seperate
       Changes-MailLogs
     - Many little aestetic (ie, what output the user
       sees when running) changes.
     - Moved the MATT::Apache dependency from setup.pl
       which caused ApacheCreateSSLCerts to fail. Moved
       that call into Mail::Toaster::Setup::InstallApache
     - InstallPhpMyAdmin moved into Setup.pm from setup.
       updated to remove MATT::Apache dependency.
     - Removed the MATT::Mysql dependency  from setup.pl
       to Setup::InstallMysql. Now you don't get prompted
       to install DBI and DBD::mysql when doing clean
       installs. This will make it less daunting for
       newbies. (No more chicken-egg dependencies)
     - InstallClamAV - was trying to chown the ClamAV 
       databases before they were created.

3.28 - 11.26.2003
     - Setup.pm - InstallVpopmail - Added "port" install
       option.
     - Setup.pm - Added InstallVqadmin
     - Setup.pm - InstallQmailadmin - added port install
       option (install from FreeBSD port)
     - Setup.pm - InstallCourier - added options to port
       build to toasterize it.
     - Updated toaster patch to 2.7 (2.6 + chk-usr)
     - added t/maillogs.t, t/toaster_setup.t, and index.t
     - added doc/pods/Changes-MailLogs.pod
     - maillogs - misc updates
     - Logs.pm - misc updates due to movement of subs from
       maillogs to Logs.pm
     - added cvsup_server_country (pass to cvsup_fastest)
     - chmod 640 for qmail/control/sql and SSL certs
     - Setup.pm - Added option for portupgrade install and
       added to toaster-watcher.conf-dist
     - Setup.pm - InstallPorts - use default toaster URL if
       none supplied
     - Setup.pm - InstallToasterDeps - install Net::DNS
       DBI, and DBD::mysql, mysql-client(3.23)
     - Setup.pm - Added InstallSources
     - Setup.pm - install_qmail - configure $qmaildir, $vpopdir
       and $mysql (lib include dir) based on .conf settings.
     - toaster-setup.pl - do not pass $toaster to InstallPorts
     - toaster-setup.pl - added sources target (update FreeBSD)

3.27 - 11.25.2003
     - modify the ezmlm-idx file to use Mysql 4 lib if
       chosen (default) in toaster-watcher.conf
     - Create qmail/control/locals if exist non-existant
     - Setup.pm - InstallMaildropFiles now has a default
       toaster URL if one isn't passed.
     - toaster_setup.pl - reverted back to qmailadmin 
       1.0.27 (from 1.0.30) due to build problems.

3.26 - 11.24.2003
     - toaster_setup.pl - added -s phpmyadmin
     - Qmail.pm - added pod documentation for each sub
     - Setup.pm - added pod documentation for subs
     - updated qmailadmin to 1.0.29
     - updated vpopmail to 5.3.30

3.25 - 11.22.2003
     - Fixed call in InstallPort for cvsup_fastest
     - InstallRRDutil will delete sources from previous
       builds before installing
     - InstallMATTBundle will delete sources from previous
       builds before installing
     - Significant updates to toaster-watcher.pl. It now
       also generates smtp and pop3 run files for qmail.
       See it's Changes-Watcher for details.
     - InstallRRDutil now tests for snmpd_conf in rc.conf
       starts snmpd if it's there, warns otherwise
     - Added apacheconf target to toasterize httpd.conf
     - Added rrdutil target to Setup.pm (RRDutil)
     - Added apachessl target to Setup.pm
     - Added mattbundle target to Setup.pm (MATT::Bundle)
     - Added maillogs as Mail::Toaster::Logs (still needs
       a fair amount of work)
     - Got the rest of the variables out of toaster_setup
       and into the config file where they belong.
     - BuildSMTPRun will now create it's supervise dir if
       it doesn't already exist.

3.23 - 11.21.2003
     - Merged several programs into the Mail::Toaster 
       package. Including is toaster-watcher, 
       toaster_setup, and index.cgi. I expect to bring 
       qqtool, maillogs and a few other apps into this 
       module as well.
     - Added Mail/Toaster/Qmail.pm (from MATT::Bundle).
     - Added Mail/Toaster/DNS.pm (from MATT::Bundle).
     - Major, major reworking of the -s supervise and 
       -s maillogs install portions. They now honor oodles
       of your preferences from toaster-watcher.conf. The
       .conf file also has a bucketful of new options as
       well. You'll want to merge in the new changes.
     - removed a lot of the die calls and made them
       warnings instead.
     - Removed a lot of assumptions that the code made. Now
       that I have config settings, in know how things 
       should be and can act accordingly.
     - Whether or not service/pop3 exists will now depend
       on the pop3_daemon preference
     - Moved toaster_setup subs to Mail::Toaster::Setup.pm
     - Lots and lots of code changes due to seperation
     - Fixed a bug in ConfigVmysql where db auth settings
       weren't being set in the vmysql.h file
     - Now writes out the vpopmail.mysql file for db auth
       in vpopmail 5.3.2? and higher
     - Now writes out supervise/pop3d/run based on settings
       in toaster-watcher.conf (instead of defaults)
     - Now writes out supervise/smtp/run based on settings
       in toaster-watcher.conf (instead of defaults)
     - InstallSqwebmail - expect and deal properly with bz2
     - InstallCourier - expect and deal properly with bz2
     - deleted InstallMysql (it's in MATT::Utility::Mysql)
     - Updated qmail to use new version 2.6 patch (based on
       Bill Shupp's toaster patch

3.22 - 11.07.2003
     - Added SSL pem creation to the ConfigCourier sub
     - Updated the toaster installation page.

3.21 - 11.06.2003
     - Fixed the InstallVpopmail routine so that mysql
       values get used when pulled from watcher.conf
     - InstallFilter creates /var/log/mail/maildrop.log
       and sets ownership on it to vpopmail
     - Moved ports_update to MATT::FreeBSD
     - Added fastest_cvsup feature to ports_update
     - Added more settings toaster-watcher.conf to override
       default values supplied in toaster-setup.pl

3.20 - 10.31.2003
     - Now reads the toaster-watcher.conf file and pulls
       config values from there. Don't be surprised when
       it doesn't ask you a slew of questions any longer. :)
     - Added CVS id tag to toaster_setup.pl
     - Added perl module files and released as Perl module.
     - Updated to support qmail-scanner 1.20
     - Added MATT::Qmail dependencie (moving more code into
       MATT::Bundle for increased platform portability.

3.1.1
     - updated dl_site to use tnpi.biz
     - added is_newer sub
     - updates to maillogs subs for increased reliability
     - mysql_install is now MUCH smarter. Should make
       things smoother for newbies
     - remove osirusoft from list of RBLs
     - removed FetchFile (get from MATT::Utility)
     - removed CdSrcDir (get from MATT::Utility)

3.0.2 07.13.2003
     - Added additional POD documentation
     - Moved InstallApache* into MATT::Apache
     - Added creating of /var/log/apache to InstallApache2
     - Additional notes for QMAILQUEUE usage for qmail-scanner
     - Moved InstallMysqlTool to MATT::Mysql
     - Moved InstallGroup and InstallUser to MATT::Passwd
     - Moved InstallPackage, ports_check_age, and
       InstallPort to MATT::FreeBSD
     - Moved YesOrNo, FindTheBin, SysCmd, ReadFile,
       WriteFile to MATT::Utility

3.0.1 07.10.2003
     - Fixed a permissions error with $prot/log/run files
     - Added MATT::Utility dependency, removed subs answer,
            ReadFile, WriteFile, SysCmd, FindTheBin, YesOrNo

3.0.0 06.16.2003
     - Added --enable-rebuild-tcpserver-file=n to InstallVpopmail
     - Updated vpopmail to version 5.3.20 (devel)
     - Updated qmailadmin to 1.0.21
     - Enable spam options in qmailadmin per filtering recipe
     - Added filtering page for assistance in setting up filtering

2.7.8 05.22.2003
     - Updated maillogs sub to run create_supervise_dirs
     - Commented out adding service/*/log/down files
       (Beginning to trend back towards using multilog)

05.21.2003
     - Removed mysqltool from setup page

2.7.6 05.12.2003
     - Update ucspi-tcp MySQL patch with query change submitted
       by Flavio Curti (curti@cyberlink.ch). Allows you to put
       entries for subnets in the MySQL relay table with a NULL
       timestamp and remove the necessity of putting your relay
       netblocks in a tcp.smtp.cdb file.

2.7.5 05.02.2003
     - Added InstallQmailScanner subroutine

2.7.2 04.23.03
     - Fixed InstallQmailAdmin so that help files get
       installed properly on new installs
     - Updated so courier files get chmod to 755
     - InstallVpopmail now asks about qmail-extensions
     - InstallVpopmail - added =y to --enable-valias
     - InstallFilter - added clamav port install

2.7.1 04.15.03
     - Fixed install_qmail so sources get removed before rebuild.
     - Qmail-smtpd is now chowned to vpopmail if you
       are using chk-usr functions.

2.7 - 04.09.2003
     - Misc updates for FreeBSD 4.8
     - Added Apache2 install section
     - Apache2 also installs mod_php4 and mod_perl2
     - Install cvsup-without-gui instead of cvsup
     - Install perl5 from ports (5.6.1)

2.6.7 03.28.03
     - ports_check_age - fixed URL for cvsup-ports file retrieval
     - Ask if password learning should be enabled
     - Ask what type of vpopmail logging is desired.
     - Ask user if domains are owned by users other than
       vpopmail. If so, run the qmail-smtpd daemon as root.
     - Updated mod_ssl to 2.8.14
     - Added domain quota question to Vpopmail interview
     - copy vlimits.h file to ~vpopmail/include/
     - fixed typo (s/answer/ans) in InstallVpopmail

2.6.6 03.26.03
     - Updated vpopmail version to 5.3.19
     - Updated qmailadmin to 1.0.15

2.6.5 03.19.03
     - Updated qmail-smtpd run file with ideas from LWQ
     - Changed URL for mysqltool.index.txt file

2.6.4 03.13.03
     - $supervise/send/log/run how gets a working config file
     - Apache build goes a little farther, after getting input
     - Check for src earlier in qmail install

2.6.3 03.11.03
      - Updated to use qmail-toaster patch 2.4
        (added qmail-smtpd-chkusr patch)

2.6.2 03.08.03
     - Added interview for $service files so they don't need to
            be hand edited after install
     - Added interview for netblocks (tcp.smtp) list that you
            need to relay for.
     - Build $qmaildir/service files (smtp/run, pop3/run)
            based on user input instead of my defaults.
     - Bugfix in RemoveOldApacheSources
     - Lots of reporting added to install_supervise and it's
            new list of subs
     - Don't bother re-installing qmailadmin help files if they
            are already present.

2.6.1 03.06.03
     - Updated qmailadmin to 1.0.12
     - Moved ChangeLog to web page

2.6 - 03.06.2003
      Updated qmailadmin to 1.0.12
      Complete code review and updates to toaster_setup.pl (2.6).
      Lots of overall code updates to nearly every sub (audit)
        More build time interview questions.
      Code is now more portable (for a future on other platforms)
      Ironically, there was enough duplication that despite adding
      a bunch of fresh code, the resulting script is now smaller
      Wrapped shell commands in a SysCmd sub with error checking
      FetchFile calls are clean enough now to use any fetching
        tool (instead of just fetch). (portability)
      InstallPackage & InstallPort report better
      Install(User|Group) use get_*_nam functions
      ConfigQmail asks for SQL password instead of writing
        default value to $qmail/control/sql
      InstallEzmlm doesn't overwrite preinstalled config files
      Install stuff into $httpdir/data/mail if it exists
      Moved lots of redundant code from subs into SourceWarning
      Moved Personal Preferences to the top of the script
                
2.5 - 02.07.2003
      Updated qmailadmin to 1.0.9
      Updated vpopmail to 5.3.16
      Updated toaster_setup.pl script to 1.7
      Dynamically configure qmailadmin based on answers to
        a series of questions. Now you're not necessarily
        stuck with my choices. :)
      Added install_vpopmail subroutine with lots of
        questions for user customizability
      Added read_file and write_file subs
      Made sure apache doesn't compile using old sources
      Added squirrelmail install
      Added cvsup (auto install, configure, and run).
      Added yes_or_no subroutine
      Added find_the_bin subroutine to make script more
        self configuring and more portable.
      Updated a bunch of system calls (rm, mv, and ln)
        to use perl functions for increased portability.
      Added socklog install function
      Added filtering section
      Made install section cleaner and prettier
      Added Apache install section
      Added defines: $toaster, $httpdir, $confdir
      Added Mysqltool install section
      Added qmailadmin install section
      Added sqwebmail install section
      Added courier imap build section
      Added check for stale ports tree
      Disable the $local/rc.d/qmail.sh file that is installed
      Fixed permission of $qmailcontrol/bin/servercert.pem
      Moved all $fetch calls into sub fetch_files
      Made the supervise directory creation much more robust
      Added more error checking and feedback to install_qmail
      Added install of ucspi-tcp to script
      Added better checks for user and group entries

      Updated qmailadmin with MySQL replication and quota fixes
      updated sqwebmail instructions, version to 3.3.7
      Updated qmail patch (2.3) to use newer smtp-auth 0.31
      Removed badmailfrom and badrcptto patches from qmail
      Updated toaster_setup.pl script to v1.4

      Made the qmail binary install honor the $qmaildir
      Updated to smtp_run-1.1 (qmail-smtpd uid is now vpopmail)
      Owner of /var/qmail/control/sql needs to be vpopmail

2.2 - Updated qmail, vpopmail, qmailadmin.
      cgi-bin dir changed to more normal location of cgi-bin.
      qmailadmin 1.0.6 - with quota support which I hacked in
      Vpopmail 5.3.5 - smth-auth works. :-) .
      patch - added qmailqueue & qpop3d maildir++ quota patches
      qmailqueue - Added qmailqueue support to my toaster patch
      toaster_setup.pl - moved a bunch more of the config
        and install steps into the script

2.1 - Updated autoresponder, Vpopmail, qmailadmin, and courier-imap.
    Autoresponder is now installed from ports instead of as a package. As of
    2/21/02 if you update your ports tree and install, you'll get version
    2.02.

    Vpopmail is updated from 5.0 to 5.2. You can simply install 5.2 right
    over top of 5.0 with no consequence.

    Qmailadmin is updated from 1.0 to 1.02. Just install right over the old
    one.

    Courier-IMAP is updated from 1.3.12 to 1.4.2. Adds quota support. Note
    the additional configuration steps in the courier install section of the
    toaster recipe.

2.0 - Latest versions of all programs, everything works, fun changes.
      Added TLS support to qmail-smtpd
      Updated smtp control file accordingly.
      Vpopmail updated to version 5.0
      Courier-IMAP updated to 1.3.12
      Sqwebmail updated to 3.2
      Updated ucspi-tcp patch to include rss patch to rblsmtpd

    Updated my qmail-toaster patch to use SMTP-AUTH 0.30 from
    http://members.elysium.pl/brush/qmail-smtpd-auth/

    Changed Apache build to statically include mod_ssl, mod_php, & mod_perl.
    Mod perl fails when loaded dynamically and after toiling for many hours,
    I gave up and compiled it statically. I learned many others before me
    had gone down that road and failed as well.

1.7
    MySQL authentication, SMTP tarpitting, & SMTP-AUTH support.

1.6
    SMTP relay table is entirely contained in a MySQL table. Previously the
    tcp.smtp.cdb file was still generated based upon the contents of a MySQL
    table. We have modified the tcpserver application to check a MySQL table
    (instead of a flat file) for each SMTP session to determine if a user's
    IP can relay or not. If the database connection fails, we allow the SMTP
    session anyway but don't allow relaying. Invoke tcpserver with the -S
    flag to utilize the new feature.

