Changes for version 4.00

  • 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

Documentation

How to configure your Mail::Toaster
Configuration file for toaster_setup.pl and toaster-watcher.pl.
Configuration file for Mail::Toaster
A program to manage large mail systems
A log file processer for mail server logs
A tool for viewing and purging messages from a qmail queue
monitors and configure various aspects of a qmail toaster
Everything you need to build a mail toaster except a computer