left header graphic The Network People
Solutions for Hosting Providers
right header graphic

Utility home : internet : mail : toaster : Changes Mail::Toaster build test procedure

This Changelog is no longer maintained. Look at the Mail Toaster Changelog on the wiki instead.

4.08 - 2005.06.10

"make" will no longer accept DEFINE style variables on the command line when building FreeBSD ports. They must now be DEFINE=X so all such passed variables have been updated.

index.tmpl cleanups for W3C valid parsing of index.cgi - submitted by Ray Lance

  • maillogs
    • • The smtp-auth, webmail, and imap counters no longer worked due to changes made in log formats, mail::toaster itself, and rrdutil. Updated all these counters to detect the new formats and spit out the expected results.
    • • Added the new counters for SMTP rejections other than rbl (chkuser, spf, dns, virus, badmail*)
    • • Reworked the SpamAssassin counters. Now we also calculate and output the avg scores, avg numbers of seconds / message, and avg bytes for ham -vs- spam.
    • •the counters now use pure perl methods of parsing the log files. I previously made system calls to grep, but because I was having to make multiple system calls, parsing it natively is faster.
  • contrib/pkgtools.conf
    • remove SUIDPERL from perl build
  • lib/Mail/Toaster.pm
    • split up email_send into email_send_clean, email_send_spam, email_send_virus, email_send_attach
    • added email_send_clam (clamAV test virus)
  • lib/Mail/Toaster/Apache.pm
    • added BATCH=yes to FreeBSD port installs of php to supress prompts
  • lib/Mail/Toaster/FreeBSD.m
    • ports_update: added gettext install to surpress port prompt
  • lib/Mail/Toaster/Logs.pm
    • only do PurgeLastMonthLogs if logs_archive_purge is set
  • lib/Mail/Toaster/Setup.pm
    • added BATCH=yes to FreeBSD port install of clamav
    • conf: prompt to change if passwords are null in t-w.conf
    • courier-authlib: install sysconftool first since it now requires it
    • nuke any previous (possibly incorrect) port state into if the port is not installed
    • added BATCH=yes to gettext install for prompt supression
    • dependencies: added BATCH=yes to qmail install for prompt supression
    • phpMyAdmin: offer to install X libraries via package since it's required (big time saver)
    • spamassassin: added BATCH=yes to supress prompts
    • spamassassin: create the spamassassin MySQL database if needed and it doesn't exist
    • squirrelmail: added php4-mbstring install with BATCH=yes to supress the prompt
    • ucspi: added BATCH=yes to supress the prompt
  • toaster.conf-dist
    • added logs_archive_purge

4.07 - 2005.05.15

Change Summary:

NicTool: Lots of additional changes to automate the build process. You can almost get it fully installed now.

Darwin support has been extensively upgraded. It now builds quite reliably. The only current known issues on OS X are with OS X 10.4 (Tiger). A new startup plist needs to be written to start up the supervised daemons and other processes. If svscan starts now on 10.4, it maxes out both CPU's while doing nothing. Also on Tiger, the MySQL port from DarwinPorts will not compile without some extra help.

CDB support is now mostly (if not entirely) supported. In all previous versions of Mail::Toaster, MySQL was necessary. I have gone through and built a cdb based Mail::Toaster, adding in all the necessary code tweaks along the way. This may be useful to small mail server operators that don't need MySQL installed, or who can't get it installed.

RBLs are massively updated. All the broken RBLs have been deprecated, all the working RBLs that failed tests (because something changed) have been updated, and a few new RBLs have been added. DNS resolution can also use dig instead of Net::DNS. Net::DNS is currently broken on Mac OS 10.4. Dig also seems to be a bit faster. Can be set with rbl_enable_lookup_using.

The code that generates the supervise/*/run files is now completely rewritten. There are now more sanity checks, default settings, and it will will refuse to create a run file if everything isn't set up correctly. The error messages are more helpful now and better formatted. There is also support for re-writing the */log/run files as well. (previously they were build but never updated).

If you install your qmail somewhere other than /var/qmail, you'll be happy to know that I have removed a dozen more hard links to /var/qmail in the code.

Several of the the qmail control files are now automatically re-written by toaster-watcher.pl. Their values are based on settings in toaster-watcher.conf and if you make a change, the update is made and the postmaster is notified.

  • *.pm
    • - Condensed SEE ALSO section.
  • doc/toaster-watcher.conf.pod
    • - added link to the tnpi MySQL web page
    • - removed notes about chk-user
  • Apache.pm
    • - Don't build with WITH_OPENSSL_PORT unless install_openssl_port is set.
  • contrib/httpd.conf.*
    • - added missing /" to phpmyadmin line
  • contrib/pkgtools.conf
    • - changed lang/php4 to lang/php*
    • - changed db/mysql40-server to db/mysql4*
    • - added line for security/courier-authlib
  • Darwin.pm
    • - use the port tool to sync the DarwinPorts (instead of directly using cvs).
  • DNS.pm
    • - added ns testing fixups for *.dnsbl.sorbs.net
    • - removed re-write fixup for korea.services.net (no longer necessary)
    • - added ns testing fixup for spews.blackhole.us
    • - added test + ip defs for cn-kr.blackholes.us, *.rfc-ignorant.org
    • - updated test - ip to 69.39.74.33
    • - prefer dig instead of Net::DNS for dns lookups (more stable API, and it's already installed everywhere).
  • Makefile.PL
    • - use /opt/local/etc on Darwin (instead of /usr/local/etc).
  • Mysql.pm
    • - warn user about installing MySQL 4 on FreeBSD 4 w/o linuxthreads
  • Passwd.pm
    • - added _formatted sub
    • - added * for passwd on autocreated users on Darwin (Mac OS X)
  • Qmail.pm
    • - rewrote the build_*_run subs. They now use the $toaster->supervised_tcpserver sub to generate their tcpserver invocation syntax. This change revealed several typos that were causing default values to be used instead of values from the config files. It also adds lots of new undefined functionality for the toaster-watcher.conf file by simply adding properly formatted fields.
    • - by rewriting the code, I modularized it and and removed over 150 lines of redundant code and accomplished much more.
    • - found several hard coded /var/qmail instances and fixed them.
    • - test tcpserver for MySQL patch before enabling -S (warn and disable if missing)
    • - update /service/*/log/run files when necessary
    • - $qmail->config now updates the following files if they're corresponding values are changed in toaster-watcher.conf: me, concurrencyremote, tarpitcount, tarpitdelay, spfbehavior, mfcheck, sql, .qmail-postmaster, .qmail-root, .qmail-mailer-daemon
    • - control_create does error checking on the subs that it calls. Checks and reports any differences before making updates. Verifies that updates happen and report any errors.
    • - control_write: honors all paths as set in toaster-watcher.conf. Also hard codes the paths to the binaries it references in the qmailctl script. Now it doesn't require adding additional directories to $PATH. Also rebuild spamt cdb and simversions.
    • - sub netqmail: don't do MySQL related stuff if install_mysql = 0, rewrite Makefile and set VPOPMAIL_HOME and -L/path/to/ssl, move duplicated darwin patch stuff to netqmail_darwin_fixups
    • restart & smtpd_restart both use the $toaster->supervise_restart sub (provides status and error reporting).
    • added supervise_dir_get, service_dir_get. Now this logic isn't embedded all over the place.
    • added _set_checkpasswd_bin. This logic was embedded in several subs for generation of smtp/run, pop3/run, submit/run, etc. Consolidated it to one place.
    • supervised_hostname_qmail: builds the lines for the */run files if the daemons reporting hostname is set to qmail.
    • added _formatted sub
    • moved all the new file replacement operations into $utility->install_if_changed sub. That sub handles all the fun stuff like checking to see if the files are different, ownership & permssions, cleaning up, and notifying the admin.
  • qqtool.pl
    • - renamed find_qmail_send_control_dir to service_dir_get due to changes in Qmail.pm
  • Setup.pm
    • - added subs: expat, rsync, djbdns
    • - try installing SOAP::Lite, RPC/XML, Apache::DBI, and libwww on freebsd & darwin
    • - nictool sub now calls the added subs to build it's dependencies. It also installs mysql and apache now as well.
    • - moved the chunks of code that build razor and clamav on Darwin from spamassassin sub to razor and clamav subs, respectively.
    • - added build support for qmail-notify
    • - added support for creating spamassassin/sql.cf
    • - fallback version of ripmime (if not configured) is now 1.4.0.5 (was 1.4.0.1).
    • - fallback version of squirrelmail is now 1.4.4 (was 1.4.3a)
    • - only install pear-DB if squirrelmail_sql is selected.
    • - warn user to edit php.ini and add pear include path
    • - sub test_processses: only check for processes that are enabled in toaster-watcher.conf
    • - sub qmailadmin: only install if install_qmailadmin is enabled
    • - sub ezmlm: only install if install_ezmlm is enabled
    • - check for mysql login params in ~/.my.cnf
    • - clamav supports building a specific version
    • new subs: cronolog,
    • - only install [a|i]spell if chosen
    • - only install MySQL if selected
    • - only build ezmlm with MySQL support if install_mysql is set.
    • - don't try installing Mail::Ezmlm unless specified (off by default)
    • - isoqlog sub much improved for building on Darwin
    • - maillogs sub does the same job but much smarter, only updates when necessary, output is much cleaner, and errors are reported noticably.
    • - configure_services will now fix all the common errors made to service directories
    • - startup_script: new sub that installs a startup script suitable for the OS it's running on.
    • - don't build ucspi-tcp with MySQL patch unless install_mysql is set
    • - only install p5-vpopmail if install_ezmlm_cgi is selected
  • Toaster.pm
    • - nice the sa-learn process so it doesn't monopolize the CPU while it's running. This should help folks with only one CPU in their box.
    • - toaster_check previously did some extremely basic supervised directory checking. Now it does a whole suite of tests to catch every common misconfiguration I could think of. This is all handled in the supervised_dir_test subroutine and is extensible for future supervised processes.
    • - added subs: service_dir_create, service_dir_test, supervise_dirs_create, supervised_dir_test, supervised_do_not_edit_notice, supervised_hostname, supervised_multilog, supervised_log_method, supervise_restart, supervised_tcpserver, _formatted
  • toaster_setup.pl
    • - added new -s spamassassin build target
    • - added -s proctest target (test running processes)
    • - added -s rbltest target (test rbls)
    • - also accept -v for debug flag
    • - added -s config target (updates toaster-watcher.conf)
  • toaster-watcher.pl
    • added $qmail->config (rebuilds any qmail control files that have been altered)
  • toaster-watcher.conf
    • - added install_qmail_notify, install_spamassassin_sql, install_spamassassin_dbuser, install_spamassassin_dbpass, qmail_spf_behavior, rbl_enable_lookup_using, and install_ripmime
    • added ssl config section
    • - manually verified all included rbls, deprecated a few, added a few
    • - install_clamav now supports a version #
    • - added install_aspell, install_ispell
  • t/toaster-watcher.pl
    • new file
    • added 21 new tests to verify toaster-watcher functions

4.06 - 2005.04.08

There were three major changes to Mail::Toaster with this release.

1. The documentation on the web site got a complete overhaul. They have been extracted from the perl .pod files and moved into Tinderbox. The entire toaster site is now generated from there and is much more versatile than pod files.

2. The ham and spam learning is now much, much, much more efficient. If you use that feature, you should upgrade strictly for this reason alone. To see how much more efficient, see this post in the list archives.

3. Process monitoring. Toaster-watcher.pl will now check for running processes and alert you if any of the critical ones are not running (imapd, snmpd, clamd, sqwebmaild, authdaemond, pop3d, mysql, httpd).

The rest of the changes are all little tweaks here and there so the build process continues to work smoothly.

  • all files
    • - added 2005 to copyright notice
  • Apache.pm
    • - added documentation to the vhost_create sub
  • contrib/Mail-Ezmlm-0.5.patch
    • - added for newer Mail::Ezmlm module. Patches sent to author for future inclusion in Mail::Ezmlm
  • FreeBSD.pm
    • - run the /etc/rc.shutdown script when deleting a jail (if it exists)
  • Makefile.PL
    • - removed many of the doc targets for the web site. Those files are now generated externally.
  • Perl.pm
    • - offer to re-fetch sources that already exist for perl modules.
  • Qmail.pm
    • - set QUEUE_EXTRA if qmail_queue_extra set in t-w.conf
    • - use find_qmail_send_control_dir instead of hard coded /var/qmail in check_control sub
  • qqtool.pl
    • - changed hard coded $qcontrol to $qmail-> find_qmail_send_control_dir call.
  • Setup.pm
    • - fixes for sqwebmail 5 & courier 4
    • - fixed logic for sbin/services symlink
    • - add WITHOUT_LDAP to clamav's make call
    • - install ucspi & daemontools when building djbdns
    • - busted about test sub into many smaller subs (auth_test, vpopmail_test, test_processes, test_crons )
    • - created sub for courier-authlib install
    • - install a default authdaemonrc file (the port no longer does this)
    • - moved various port installs from -s pre down into the sub(s) in which they are required. That'll help avoid installing any un-necessary items. It also makes it easier to port Mail::Toaster to other platforms.
    • - busted many parts of the filter sub up into many smaller subs (spamassassin, razor, clamav, simscan). These new subs have targets in toaster_setup.pl so they can be called directly. Again, this makes it more straight forward to port to other platforms.
    • - the vpopmail port now installs a sample etc/tcp.smtp. Detect and overwrite it with our documented version.
    • - append the list of attachment blocks from toaster-watcher.conf to the simcontrol default example.
    • - added a default simscan comment into $vpop/etc/tcp.smtp
  • toaster-watcher.conf-dist
    • - added install_ezmlm_cgi settings
    • - added maildir_learn_interval
    • - removed smtpd_chkusr_patch & submit_chkusr_patch
  • toaster-watcher.pl
    • - added call to learn_mailboxes sub
    • - now -v works for verbose output (instead of using -d)
  • Toaster.pm
    • - rewrote clean_mailboxes, broke each operation out into it's own subroutine. New subs: maildir_learn_ham, maildir_clean_ham, maildir_clean_new, maildir_clean_sent, maildir_clean_trash, maildir_learn_spam, maildir_clean_spam
    • - maildir_learn_ham only learns from the new messages since it's last schedule run.
    • - split clean_mailboxes into clean and learn_mailboxes

4.05 - 2005.02.28

  • Apache.pm
    • - restart using apache2.sh start & stop targets (previously used restart)
    • - use *:80 as default port for new vhosts
    • - try to determine docroot if not passed in
  • FreeBSD.pm
    • - drive_spin_down needed to call $utility instead of $self->
    • - run "make fetchindex" after updating ports
  • Logs.pm
    • - rbl counting broke in 4.0 updates...fixed
    • - updated to recognize new webmail auth logs
  • Setup.pm
    • - install mail programs in src/mail
    • - add full path to svok in autogenerated scripts
    • - rewrite conf-* for qmail based on OS settings
    • - changed InstallApacheSSLCerts to install_ssl_certs
    • - added qmail exit code notes to mailfilter
    • - chmod calls all have 5 digits now (padded front)
    • - chmod on qmail-scanner-queue wrapper works now
  • Utility.pm
    • - install_from_source uses new source_sub_dir

4.04 - 2005.02.10

  • Apache.pm
    • - Apache2 install on Darwin uses DarwinPorts
    • - Apache2 will attempt to install from sources on "other" platforms (ie, not FreeBSD,Darwin)
  • CGI.pm
    • - removed tags (moved into CSS section of index.tmpl
  • Darwin.pm
    • - added ability to pass port build params
  • index.tmpl
    • - added hiliteXX CSS tags to alter color of green text on index.cgi page
  • Qmail.pm
    • - updated to use new Shupp toaster patch (spamthrottle patches are now included)
    • - install qmail-smtpd-reject patch
    • - added qmaill user create (non-FreeBSD installs)
    • - add paths to softlimit & tcpserver in */run files
    • - add paths to svc in services.sh
    • - add paths to setuidgid & multilog in log/*/run
  • qqtool.pl
    • - minor internal code formatting changes
  • Setup.pm
    • - install stunnel for pop3ssl if using qpop3d
    • - build dcc with WITHOUT_SENDMAIL
    • - updated for clamav /var/db/clamav location
    • - added custom-smtp-reject option to simscan
    • - added simscan_regex option to simscan
    • - added spam_passthru option to simscan
    • - qscan_test: also test qmail-scanner c wrapper
    • - install clamav from ports on Darwin
    • - add clamav user and group on Darwin & Linux
    • - better detection of ripmime location in simscan()
    • - find spamassassin in other locations (path was hard coded to /usr/local/bin)
    • - install pcre on FreeBSD if simscan_regex is set
    • - install a custom services on Darwin
    • - install ucspi in /opt/local on Darwin
    • - install DarwinPortsStart port on Darwin
    • - pass cgibindir to sqwebmail build
    • - add required users on Linux builds
  • toaster-watcher.conf
    • - added pop3_ssl_daemon
    • - added qmail_smtp_reject_patch
    • - added simscan_custom_smtp_reject
    • - added simscan_spam_passthru
    • - added simscan_regex_scanner
    • - updated qmailadmin to v1.2.7
  • Utility.pm
    • - added /opt/local/sbin to find_the_bin
  • contrib/pkgtools.conf
    • - also skip xorg* in when using pkg* tools

4.03 - 2004.12.14

  • Apache.pm
    • - added support for apache suexec option
    • - added support for Apache proxy modules
    • - contrib/pkgtools.conf
    • - added lang/php4 build options
    • - added mysql4.1 build options
  • FAQ.pod
    • - added PHP entry
  • FreeBSD.pm - hopefully fixed an error where if your ports tree is missing the port packageit would just silently crash and the script fails. Now it should work.
  • Passwd.pm
    • - user_archive had problems with File::Basename, reverted back to my path_parse
  • Setup.pm
    • - rrdutil_test: updated net_snmp variable test to that test doesn't incorrectly fail.
    • - added mrm and logmonster install subs
    • - vpopmail_relay_clear_minutes wasn't being set
    • - added new options for use with simscan 1.0.8
    • - fixed qmails_cann to qmail_scanner...
    • - added nictool build sub
    • - check rc.d/services.sh and update if necessary
    • - only install rc.d/services.sh on FreeBSD
  • toaster_setup.pl
    • - added mrm and logmonster install targets
    • - added nictool install target (installs deps)
  • toaster-watcher.conf
    • - added simscan_trophie
    • - added simscan_quarantine
    • - added simscan_ripmime
    • - simscan_per_domain now defaults to 0
  • lib/toaster-watcher.conf.pod
    • - updated spamlinks.net URL
    • - added simscan notes

4.02 - 2004.11.27

  • *.pm
    • - reordered subroutines in alpha order so doc page formatting is more orderly.
  • contrib/httpd.conf-2.0.patch
    • - added for isoqlog/images dir
  • Darwin.pm
    • - check for darwin ports to be installed any of /usr/ports, /usr/dports, or /usr/darwinports
  • FreeBSD.pm
    • - added sub drive_spin_down
  • Logs.pm & Qmail.pm
    • - added "use POSIX" back for floor()
  • Mysql.pm
    • - replaced POSIX::uname with $^ o
    • - added sub backup()
    • - imported sub binlog_on from mrm
    • - imported sub status from mrm
  • Perl.pm
    • - module_install works very well now.
  • Qmail.pm
    • - update /var/qmail/bin/qmailctl if the latest version is newer.
    • - updated /usr/local/sbin/qmail to be a link to /var/qmail/bin/qmailctl
    • - replaced several hard coded /var/qmail paths with $qmaildir to honor config settings.
    • - check /opt for ssl includes on Darwin
  • Setup.pm
    • - added testvirus.org note to test sub
    • - oops, two ucspi subs, consolidated to one
    • - honor install_clamav
    • - honor install_maildrop
    • - MATT::Bundle installs using module_install
    • - RRDutil installs using $perl->module_install
    • - updated subs that use install_from_source to use new features.
    • - moved qmail-scanner tests to qmail_scanner_test
    • - added support for building qmail-scanner as a user other than qscand. Default is now "clamav"
    • - install openldap 2.2 (instead of 2.1)
    • - also install cronolog, daemontools, and openldap from ports on Darwin
    • - check /opt/local for MySQL includes on Darwin
    • - added "make snmp" target to rrdutil sub
    • - added rrdutil_test sub
    • - added --with-cachedir=daemon option to sqwebmail if os == darwin
    • - only check or $qmail/configure on FreeBSD
    • - netstat runs as -aS (freebsd) or -an (linux) to speed up network port listening tests
    • - added subs smtp_test_auth, pop3_test_auth, and imap_test_auth
  • toaster_setup.pl
    • - added -s imap, -s pop3, and -s smtp targets
    • - added -s filtertest, -s authtest
    • - updated usage with target section headers
  • toaster-watcher.conf
    • - install_isoqlog defaults to version "port"
    • - added qmail_scanner_suid_wrapper option
    • - added qmail_scanner_user = clamav
  • Utility.pm
    • - added sub fstab_list
    • - sudo sub cleaned up considerably, will now attempt source install on FreeBSD if port install fails.
    • - chdir_source_dir tries harder before giving up
    • - check_pidfile renamed pidfile_check with a backwards compatible sub added.
    • - find_the_bin will accept a complete path
    • - created subs is_hashref, is_arrayref
    • - install_from_source verifies that inputs are hashrefs and gives nice error messages if not
    • - logfile_append verifies that it's second input is indeed an array ref
    • - added bintest option to install_from_source
    • - file_get verifies that a fetch utility (wget, curl, fetch, etc) was found.
    • - Added a warning message so that if a luser edits t-w.conf and changes the toaster_dl_* params, we yield a warning message telling them to fix it.
  • t/Mysql.t
    • - added another test
  • t/Passwd.t
    • - changed test user to nobody from bin so make test runs clean on Darwin and Linux
  • t/Utility.t
    • - added tests for install_from_source, is_hashref, is_arrayref

4.01 - 2004.11.19

Many OS X & Linux (platform neutral) support additions.

  • Ezmlm.pm
    • - changed "use" to "require" for module loads
    • - moved module loads into subs where required so "make test" doesn't whine and freak out newbies
  • Makefile.PL
    • - detect /var/www/data as docroot on linux
  • Qmail.pm
    • - check for skel in /etc (Linux)
    • - don't try stopping qmail-send if it's not running
    • - forgot to auto-replace qmail_service keyword
  • qqtool.pl - updated several $utility-> that were not updated
  • Setup.pm
    • - added subs (linux): djbnds, autorespond, ucspi_tcp, daemontools, ripmime, simscan, razor,
    • - pre section now attempts to install from sources on any platform it doesn't recognize.
    • - test sub needed $toaster->email_send() updated
    • - also install p5-Quota as part of -s pre
    • - added "make logs" target to mailtoaster build
    • - install Ezmlm also installs Mail::Ezmlm
    • - isoqlog_conf was ConfigIsoqlog
    • - make the test descriptions more descriptive
    • - added $qmail->check_rcpthosts to tests
    • - added source install for isoqlog ($setup->isoqlog)
    • - update /var/log/mail/*/????log files if needed (this was a manual step prior)
    • - sqwebmail checks install_sqwebmail before trying to install.
    • - vpopmail.pm is installed w/vpopmail on src install
    • - added check for install_squirrelmail
    • - install squirrelmail works on linux now
    • - will accept a specific version to install
    • - added source install for maildrop linux
    • - install Quota.pm as part of dependencies linux
    • - courier-imap from sources works on linux
    • - sqwebmail from sources now works on linux
    • - install Ezmlm from sources works on linux
    • - courier_conf works on (linux)
    • - expand_archive file test now works on linux
    • - clamav install now works on linux
  • t/Darwin.t - skip tests and print OK on other OS
  • t/FreeBSD.t - skip tests and print OK on other OS
  • toaster_setup.pl
    • - fix so "make test" runs more clean on non-FreeBSD
    • - added targets: djbdns, isoqlog, daemontools, razor,
  • toaster-watcher.conf
    • - isoqlog accepts a version now
    • - courier-imap accepts a version now
    • - squirreilmail accepts a version now
    • - Makefile.PL - added Quota, vpopmail, Email::Valid, and Mail::Ezmlm to PREREQ_PM
  • *.pm
    • - due to relocating lots of code into subs: changed a bunch of die calls to croak and changed a bunch of warn calls to carp

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, and viral) 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
    • - courier_config - 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
    • - courier_config 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

sub-sections
Mail::Toaster build test procedure
3.x Changes
2.x Changes
pre 3.0 Toasters

Last modified on 1/29/07.