Mail Toaster Changes 5.54 - Feb 16, 2017 added updated subscribeIMAP.sh #10 fix spamassassin install detection #9 test perl 5.22 (on Travis) fix Utility test broken due to README rename 5.53 - Feb 16, 2017 apply utmp.h patch on FreeBSD 11 too 5.52 - Aug 06, 2016 add CGI to deps replace Util::path_parse with File::Basename 5.51 - Mar 28, 2014 removed Apache support removed config settings for qmailadmin install dirs (use default) 5.50 - Sep 17, 2014 added encoding declaration in docs/Changes.pod 5.49 - Sep 11, 2014 updated t/Utility.t to check for perl process (was 'init') 5.48 - Sep 10, 2014 fix POD error in Mail/Toaster/Setup/Test bump version number remove ispell/aspell from port install (renamed in ports) 5.47 - May 20, 2014 fix for qpop3d not having service symlink installed added CHKUSER_MBXQUOTA to tcp.smtp apply utmp patch to FreeBSD 9 & 10 (was only 9) 5.46 - Apr 24, 2014 test fix in t/Apache.t 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 5.43 - Jul NN, 2013 minor improvements to test suite 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 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 5.40 - Apr 26, 2013 updated install_deps.pl pod cleanups updated contrib/swaks training improvements for dspam 5.38 - Apr 23, 2013 removed Proc::ProcessTable (causes test failures) handfuls of Test::More tweaks disabled defunct RBLs in config 5.37 - Apr 18, 2013 added bin/email_restore.pl (thx Alex R.) pkgng support additions (Rob Lensen) some support for running with qpsmtpd 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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). 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) 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. 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 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. 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 5.03rc1 - Oct 15, 2006 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. FreeBSD Port preparations Default htdocs directory is now /usr/local/www/toaster. CPAN test tweaks Don't do passwd test on cygwin. Don't do network tests on Cygwin 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 5.02 - 2006.10.11 toaster-watcher.conf added options install_ezmlm_mysql, vpopmail_mysql_repl_master_port, vpopmail_mysql_repl_slave_port t/Toaster.pm get_dir_files tests the file size to see if any domains are added yet (more reliable test) FreeBSD.pm fixed a recursion bug in ports_update (portsnap) install a default portsnap.conf if missing FreeBSD version detection wasn't working 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 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. 5.02b - 2006.09.28 index.cgi defined debug (caused it to not work) Apache.pm test for toaster_apache_vhost add alias for v-webmail, and roundcube to apache's vhost config file(mail-toaster.conf) Ezmlm.pm define any missing cgi params to suppress errors messages filled in pod description FreeBSD.pm - detection of portsdb wasn't working supress notification of new toaster-watcher.conf install if its missing 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) Perl.pm added pod doc for has_module Setup.pm phpmyadmin_install was not passing $conf 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 5.01 - 2006.09.22 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. 5.00 - 2006.09.18 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. 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. 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 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. 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. See Also 4.x Changes