The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Mail Toaster Changes</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:matt@sprybook-pro.local" />
</head>

<body style="background-color: white">

<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<!--

<ul>

	<li><a href="#mail_toaster_changes">Mail Toaster Changes</a></li>
	<ul>

		<li><a href="#5_12__oct_17__2008">5.12 - Oct 17, 2008</a></li>
		<li><a href="#5_11__aug_20__2008">5.11 - Aug 20, 2008</a></li>
		<li><a href="#5_10__apr_17__2008">5.10 - Apr 17, 2008</a></li>
		<li><a href="#5_09__nov___2007">5.09 - Nov   , 2007</a></li>
		<li><a href="#5_08__nov_21__2007">5.08 - Nov 21, 2007</a></li>
		<li><a href="#5_07__oct_19__2007">5.07 - Oct 19, 2007</a></li>
		<li><a href="#5_06__sep_19__2007">5.06 - Sep 19, 2007</a></li>
		<li><a href="#5_05__feb_7__2007">5.05 - Feb 7, 2007</a></li>
		<li><a href="#5_04__nov_25__2006">5.04 - Nov 25, 2006</a></li>
		<li><a href="#5_03__nov_8__2006">5.03 - Nov 8, 2006</a></li>
		<li><a href="#5_03rc1__oct_15__2006">5.03rc1 - Oct 15, 2006</a></li>
		<li><a href="#5_02__2006_10_11">5.02 - 2006.10.11</a></li>
		<li><a href="#5_02b__2006_09_28">5.02b - 2006.09.28</a></li>
		<li><a href="#5_01__2006_09_22">5.01 - 2006.09.22</a></li>
		<li><a href="#5_00__2006_09_18">5.00 - 2006.09.18</a></li>
	</ul>

</ul>
-->
<!-- INDEX END -->

<p>
</p>
<h1><a name="mail_toaster_changes">Mail Toaster Changes</a></h1>
<p>
</p>
<h2><a name="5_12__oct_17__2008">5.12 - Oct 17, 2008</a></h2>
<pre>
   ripped out Provision.pm, bin/sysadmin, bin/useradmin, bin/webadmin
   ripped out Build.PL &amp; 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</pre>
<p>
</p>
<h2><a name="5_11__aug_20__2008">5.11 - Aug 20, 2008</a></h2>
<pre>
   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 -&gt;new is called.
   Setup.pm loads in $conf from $toaser-&gt;{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-&gt;mattbundle</pre>
<p>
</p>
<h2><a name="5_10__apr_17__2008">5.10 - Apr 17, 2008</a></h2>
<pre>
   disable apache2_fixups until it can be fixed
   renamed item_installdsacert to item_install_dsa_cert
   update copyrights to 2008
   added the function &quot;get_yesterdays_smtp_log&quot; which provides the same functionality 
     as get_yesterdays_send_log. -- patch from Georg von Itzenplitz
   Mysql.pm - honor $debug setting in DBD &amp; DBD install subs</pre>
<p>
</p>
<h2><a name="5_09__nov___2007">5.09 - Nov   , 2007</a></h2>
<pre>
   playing Kwalitee (<a href="http://cpants.perl.org/highscores/">http://cpants.perl.org/highscores/</a>)
   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</pre>
<p>
</p>
<h2><a name="5_08__nov_21__2007">5.08 - Nov 21, 2007</a></h2>
<pre>
   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 &amp; 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).</pre>
<p>
</p>
<h2><a name="5_07__oct_19__2007">5.07 - Oct 19, 2007</a></h2>
<pre>
   qmail_toaster_patch_version = 3.1
   missing \ in qmail-pop3d/run file caused pop3 not to run
   updated logmonster download URL
   rrdutil 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)</pre>
<p>
</p>
<h2><a name="5_06__sep_19__2007">5.06 - Sep 19, 2007</a></h2>
<pre>
 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 &quot;openssl ciphers&quot; into
   /var/qmail/control/tlsserverciphers. Should resolve some
   openssl issues.</pre>
<p>
</p>
<h2><a name="5_05__feb_7__2007">5.05 - Feb 7, 2007</a></h2>
<pre>
 Extensive updates for Darwin and Linux platforms
 Support for Yahoo DomainKeys
 Fixed -s allspam target (thanks Georg) 
 Support for dovecot IMAP/POP3 server</pre>
<pre>
 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</pre>
<pre>
 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</pre>
<pre>
 Darwin.pm
   - turned debugging off in syscmd call in port install sub</pre>
<pre>
 FreeBSD.pm
   - port location of portupgrade updated (sysutils-&gt;ports-mgmt)
   - report how old ports tree is</pre>
<pre>
 Mysql.pm
   - instead of looking for the dports dir on Darwin, look for the &quot;port&quot;
     binary to detect if DarwinPorts is configured
   - offer to install the mysql package instead of port (to save time)</pre>
<pre>
 Passwd.pm
   - new user sub, $vals-&gt;{'username'} needed to be $vals-&gt;{'user'}</pre>
<pre>
 Qmail.pm
   - on FreeBSD, be smarter about disabling sendmail and enabling qmail</pre>
<pre>
 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</pre>
<p>
</p>
<h2><a name="5_04__nov_25__2006">5.04 - Nov 25, 2006</a></h2>
<pre>
 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-&gt;port_install to reflect an internal
      API change.</pre>
<p>
</p>
<h2><a name="5_03__nov_8__2006">5.03 - Nov 8, 2006</a></h2>
<pre>
 Logs.pm - comment out a print statement that caused a snmp counting error in maillogs</pre>
<pre>
 Setup.pm - install Params-Validate port on FreeBSD &amp; Darwin</pre>
<pre>
 t/maillogs - return a more specific error message if Date::Parse not installed</pre>
<p>
</p>
<h2><a name="5_03rc1__oct_15__2006">5.03rc1 - Oct 15, 2006</a></h2>
<dl>
<dt><strong><a name="item_packaging_updates">Packaging Updates</a></strong>

<dd>
<p>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).</p>
</dd>
<dd>
<p>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.</p>
</dd>
</li>
<dt><strong><a name="item_freebsd_port_preparations">FreeBSD Port preparations</a></strong>

<dd>
<p>Default htdocs directory is now /usr/local/www/toaster.</p>
</dd>
</li>
<dt><strong><a name="item_cpan_test_tweaks">CPAN test tweaks</a></strong>

<dd>
<p>Don't do passwd test on cygwin. Don't do network tests on Cygwin</p>
</dd>
</li>
</dl>
<pre>
 toaster-watcher.conf
   added install_roundcube option</pre>
<pre>
 Darwin.pm
   updated $utility calls with MT 5 syntax updates
   udpated test file to use Test::More</pre>
<pre>
 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</pre>
<pre>
 Changes
   added file to distribution</pre>
<pre>
 bin/toaster_setup.pl
   added RT URL to bug section for reporting</pre>
<pre>
 bin/sysadmin
   updated for MT 5 syntax</pre>
<pre>
 Passwd.pm 
    mt 5 syntax updates, add in warnings for failures</pre>
<pre>
 Qmail.pm
   formatting cleanups, and added a few missing debug=&gt;0 settings.</pre>
<pre>
 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)</pre>
<pre>
 Utility.pm
   answer sub now returns $default value (instead of 0) if not interactive
   yes_or_no supports q shortcut for question argument</pre>
<p>
</p>
<h2><a name="5_02__2006_10_11">5.02 - 2006.10.11</a></h2>
<dl>
<dt><strong><a name="item_toaster_2dwatcher_2econf">toaster-watcher.conf</a></strong>

<dd>
<p>added options install_ezmlm_mysql, vpopmail_mysql_repl_master_port, vpopmail_mysql_repl_slave_port</p>
</dd>
</li>
<dt><strong><a name="item_t_2ftoaster_2epm">t/Toaster.pm</a></strong>

<dd>
<p>get_dir_files tests the file size to see if any domains are added yet (more reliable test)</p>
</dd>
</li>
<dt><strong><a name="item_freebsd_2epm">FreeBSD.pm</a></strong>

<dd>
<pre>
 fixed a recursion bug in ports_update (portsnap)
 install a default portsnap.conf if missing
 FreeBSD version detection wasn't working</pre>
</dd>
<dt><strong><a name="item_apache_2epm">Apache.pm</a></strong>

<dd>
<pre>
 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</pre>
</dd>
<dt><strong><a name="item_setup_2epm">Setup.pm</a></strong>

<dd>
<p>ezmlm mysql support now depends on install_ezmlm_mysql setting instead of install_mysql.</p>
</dd>
<dd>
<p>added support for vpopmail mysql database port number (thanks Erik!)</p>
</dd>
<dd>
<p>vpopmail_mysql_database setting is now honored.</p>
</dd>
<dd>
<p>busted huge vpopmail sub into a dozen smaller ones for easier maintenance.</p>
</dd>
<dd>
<p>heredoc's used in creation of tcp.smtp used  ' and needed ``</p>
</dd>
<dd>
<p>logic for NO_SENDMAIL test was inverted causing it to be added to /etc/make.conf more than once.</p>
</dd>
</li>
</dl>
<p>
</p>
<h2><a name="5_02b__2006_09_28">5.02b - 2006.09.28</a></h2>
<dl>
<dt><strong><a name="item_index_2ecgi">index.cgi</a></strong>

<dd>
<p>defined debug (caused it to not work)</p>
</dd>
</li>
<dt><strong>Apache.pm</strong>

<dd>
<p>test for toaster_apache_vhost</p>
</dd>
<dd>
<p>add alias for rrdutil, v-webmail, and roundcube to apache's vhost config <code>file(mail-toaster.conf)</code></p>
</dd>
</li>
<dt><strong><a name="item_ezmlm_2epm">Ezmlm.pm</a></strong>

<dd>
<pre>
 define any missing cgi params to suppress errors messages
 filled in pod description</pre>
</dd>
<dt><strong><a name="item_freebsd_2epm__2d_detection_of_portsdb_wasn_27t_wor">FreeBSD.pm - detection of portsdb wasn't working</a></strong>

<dd>
<p>supress notification of new toaster-watcher.conf install if its missing</p>
</dd>
</li>
<dt><strong><a name="item_logs_2epm__2d_prettied_up_the_yesterday_report_a_l">Logs.pm - prettied up the yesterday report a little bit.</a></strong>

<dd>
<pre>
 added checks to prevent warnings when logs are empty
 log archiving was failing (invalid test)</pre>
</dd>
<dt><strong><a name="item_perl_2epm">Perl.pm</a></strong>

<dd>
<pre>
 added pod doc for has_module</pre>
</dd>
<dt><strong>Setup.pm</strong>

<dd>
<pre>
 phpmyadmin_install was not passing $conf</pre>
</dd>
<dt><strong><a name="item_utility_2epm">Utility.pm</a></strong>

<dd>
<p>Fixed a bug in mailtoaster sub that prevented it from finding the tw.conf file</p>
</dd>
<dd>
<p>added _progress_??? subs for providing status messages on the CLI</p>
</dd>
<dd>
<p>added pod documentation for several subs that had none</p>
</dd>
</li>
</dl>
<p>
</p>
<h2><a name="5_01__2006_09_22">5.01 - 2006.09.22</a></h2>
<pre>
 added help-&gt;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)</pre>
<p>commented out v-webmail, roundcube, vqadmin, and ezmlm menu options. Those items are not installed by Mail::Toaster (yet).</p>
<p>added code in -s all target to refresh the $conf hashref after -s config target is run</p>
<p>moved $conf into the Setup.pm object. Significantly reduced the amount of passing $conf around from sub to sub.</p>
<p>added options and explicit port install options for gnupg and Archive::Tar to surpress dialog boxes.</p>
<p>timer was not working in yes_or_no due to typo in param validation block</p>
<p>disabled ezmlm and vqadmin in webmail. Activate them by removing the comments in mt-top.html</p>
<p>default cvsup_supfile_sources settings is now cvsup-sources (was cvsup-stable)</p>
<p>tweaks so ``make test'' runs with fewer warnings</p>
<p>toaster_setup -s sources now auto-builds cvsup-sources if missing. The location for it is /usr/local/etc now.</p>
<p>
</p>
<h2><a name="5_00__2006_09_18">5.00 - 2006.09.18</a></h2>
<dl>
<dt><strong><a name="item_code_quality">CODE QUALITY</a></strong>

<dd>
<p>* 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.</p>
</dd>
<dd>
<p>* 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.</p>
</dd>
<dd>
<p>* Switched to Test::More for tests. Provides more and better options for writing tests, comparing results, and figuring out where the tests failed.</p>
</dd>
<dd>
<p>* 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.</p>
</dd>
<dd>
<p>* instead of eval's strewn all over to test for certain modules, added $perl-&gt;has_module</p>
</dd>
<dd>
<p>* all objects are created with Class-&gt;new intead of new Class.</p>
</dd>
<dd>
<p>* all errors raise exceptions by default. This requires callers to take specific action to change.</p>
</dd>
<dd>
<p>* run tests early in subroutines, reduces giant if nests and makes it easier to read the code.</p>
</dd>
</li>
<dt><strong><a name="item_misc">MISC</a></strong>

<dd>
<p>* Added Build.PL for use with Module::Build fans.</p>
</dd>
<dd>
<p>* Greatly simplified Makefile.PL by moving ``make cgi'' and ``make conf'' logic into Setup.pm. Those functions are now accessed by toaster_setup targets.</p>
</dd>
<dd>
<p>* OpenSSL config files are now updated automatically. Auto-generated certs now have the accurate information in them. Courier-IMAP certs are also updated automatically.</p>
</dd>
</li>
<dt><strong><a name="item_documentation">DOCUMENTATION</a></strong>

<dd>
<p>* Added three new test modules that test for: pod documentation for subs, pod formatting, and  automatic checking of code to test for best practices.</p>
</dd>
<dd>
<p>* moved POD documentation from being strewn about the files to the end of each file.</p>
</dd>
<dd>
<p>* wrote and re-wrote significant portions of the documentation, as well as cleaned up formatting. Documentation is now easier to find as well.</p>
</dd>
<dd>
<pre>
 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</pre>
</dd>
</li>
<dt><strong><a name="item_code_formatting__26_readability">CODE FORMATTING &amp; READABILITY</a></strong>

<dd>
<p>* Used perltidy to format most of the source code.</p>
</dd>
<dd>
<p>* Used perlcritic to identify and correct (almost) all instances where my code was not using best practices, as identified in Perl Best Practices.</p>
</dd>
<dd>
<p>* All subroutines now take named arguments, making it easier to read the code and understand what is being sent and returned.</p>
</dd>
<dd>
<p>* added ``use English'' pragma and replaced all the arcane $^ and $[ perl variables with their english name equivalents.</p>
</dd>
</li>
<dt><strong><a name="item_web_interface_2fcgi">WEB INTERFACE/CGI</a></strong>

<dd>
<p>* Completely new webmail/logon interface. Written entirely in HTML, CSS, and JavaScript.</p>
</dd>
<dd>
<p>* 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.</p>
</dd>
<dd>
<p>* removed httpd.conf patches in favor of installing a mail-toaster.conf file with all the requisite apache directives.</p>
</dd>
<dd>
<p>* Organized all the cgi related docs into cgi_files directory. They are now installed via the -s webmail target to toaster_setup.</p>
</dd>
</li>
</dl>
<p>See Also 4.x Changes <a href="http://mail-toaster.org/changes/4.x-changes.html">http://mail-toaster.org/changes/4.x-changes.html</a></p>

</body>

</html>