
#
# $Id: UPGRADE.pod,v 4.0 2004/11/16 20:57:31 matt Exp $
#

=head1 Test the process!

Before upgrading a production server, test on a development server. If you don't have a development server, consider settings up a FreeBSD jailed test environment.

http://www.tnpi.biz/computing/perl/MATT-Bundle/freebsd.shtml#createjail

=head1 Step 1: Upgrade Perl.

Certain features (like spam filtering) require perl 5.6.1 or higher to function fully. If perl -v reflects anything smaller than 5.6.1, it is recommended that you upgrade to 5.8.x. You can use toaster_setup.pl -s perl to do this for you.

Disable any cron jobs that run perl scripts *before* upgrading perl. When you upgrade perl, the installed modules get left behind and need to be re-installed. After upgrading perl and all the installed modules, test the cron jobs by running them on the command line before enabling them.

If you  don't want to use toaster_setup.pl to upgrade perl, you can do it manually as follows:

  cd /usr/ports/lang/perl5.8;
  make -DENABLE_SUIDPERL install clean;
  rehash; use.perl port;

You need Perl's CPAN working for installing perl modules so make sure it's configured. If the following command doesn't give you a prompt, then you'll be prompted to configure.

  perl -MCPAN -e shell
  exit

If you choose to install Perl 5.8, make sure you enable suidperl. You do this by adding -DENABLE_SUIDPERL as shown above or if using pkg* and friends, add the following line to the MAKE_ARGS of /usr/local/etc/pkgtools.conf:

 'lang/perl5.8'   => 'ENABLE_SUIDPERL=yes',

After upgrading Perl, your installed Perl modules will not work with the new version of Perl. You'll want to update them. I find the easiest approach is something like this:

  portupgrade -f `pkg_info | grep p5- | cut -d" " -f1`
  portupgrade -f `pkg_info | grep rrdtool- | cut -d" " -f1`


=head1 Step 2: Upgrade Mail::Toaster

   perl -e 'use MATT::Utility; InstallMailToaster';

If that doesn't work, try toaster_setup.pl -s toaster. If neither works, your toaster is pre-historic and you'll have to manually install Mail::Toaster.

Documentation for the modules being called by toaster_setup.pl, toaster_watcher.pl, maillogs, and index.cgi are all installed in Perl's pod format (perldoc Mail::Toaster, perldoc Mail::Toaster::CGI, etc) as well as being available online at http://www.tnpi.biz/internet/mail/toaster/docs/.


=head1 Step 3: Upgrade FreeBSD.

Follow the docs at http://www.freebsd.org/handbook/  A few things to help you along are:

  toaster_setup.pl -s sources
  toaster_setup.pl -s ports

That'll update your FreeBSD sources and ports tree with the latest versions. Then you'll want to upgrade your FreeBSD. I do it this way:

  cd /usr/src
  make buildworld
  make kernel
  reboot
  cd /usr/src
  make installworld
  mergemaster
  reboot

The process will vary based on the version of FreeBSD you are upgrading from and to. The above assumes that I've also configured /etc/make.conf. It's ALWAYS best to read the docs first, including /usr/src/UPDATING. Failure to do so can be quite difficult to recover from. If you are upgrading from FreeBSD 4.x to 5.x, be sure to read all the documentation and follow it carefully.

After upgrading the OS, you'll want to run portupgrade and upgrade all the ports with the latest version. I do so like this:

  pkgdb -F
  portupgrade -ai

Some folks like running portupgrade -a. This almost always breaks their toaster. See the FAQ for reasons why. Do NOT upgrade ports that are manually installed by the toaster, such as qmail, ucspi, etc. You have been warned. If you let portupgrade reinstall qmail and your settings get wiped out, you have yourself to blame.


=head1 Step 4: Update Toaster config files

   cd /usr/local/etc
   sdiff -o tmp toaster-watcher.conf toaster-watcher.conf-dist
   mv tmp toaster-watcher.conf
   sdiff -o tmp toaster.conf toaster.conf-dist
   mv tmp toaster.conf

Make your .conf files resemble the -dist files, with your local customizations. If the CVS id string at the top of the file(s) has changed, that's a good indication that new settings have been added and it's time to update your file. Use sdiff to merge the differences and create a new file.

Use 'perldoc toaster.conf' or 'perldoc toaster-watcher.conf' to read the man pages with extensive documentation describing what all them settings are for.


=head1 Step 5: Start updating the toaster!

   toaster_setup.pl -s pre
   toaster_setup.pl -s ucspi
   toaster_setup.pl -s vpopmail
   toaster_setup.pl -s qmailadmin
   toaster_setup.pl -s courier
   toaster_setup.pl -s apache (optional)

If toaster_setup.pl has any problems running, fix what it complains about and then run it again with the same parameter. It will resume and finish that section. 

Don't forget to add the following two lines to ~vpopmail/etc/tcp.smtp if you haven't yet. (If you don't, toaster-watcher will remind you, frequently.) 

  ### BEGIN QMAIL SCANNER VIRUS ENTRIES ###
  ### END QMAIL SCANNER VIRUS ENTRIES ###


=head1 Step 6: Upgrade Qmail

   toaster_setup.pl -s qmail

patch info: http://www.tnpi.biz/internet/mail/toaster/patches/


=head1 Step 7: Set up mail filtering and logging

   toaster_setup.pl -s filter
   toaster_setup.pl -s qss     (optional)
   toaster_setup.pl -s supervise
   toaster_setup.pl -s maillogs
   toaster_setup.pl -s rrdutil (optional)



=head1 Step 8: Verify cron entries

Run all these commands from the command line and verify their proper functionality (no complaints or errors) BEFORE adding to cron.

 crontab -u root -e 

   9-59/10 * * * * /usr/local/vpopmail/bin/clearopensmtp
   40  * * * *  /usr/local/share/sqwebmail/cleancache.pl
   */5 * * * * /usr/local/sbin/toaster-watcher.pl
   */5 * * * * /usr/local/www/cgi-bin/rrdutil.cgi -a update


=head1 Step 9: Watch the log files

A good way to test is simply watching the logs in a second session while running the test script or sending some messages.

  tail -F /var/log/maillog &
  tail -F /var/log/mail/send/current &
  tail -F /var/log/mail/smtp/current &
  tail -F /var/log/mail/maildrop.log

Note that unless filtering_debug is enabled in toaster-watcher.conf, nothing will be written to maildrop.log. It is enabled by default, and changes only take effect after running "toaster_setup.pl -s maildrop". 

=head1 Step 10: Test the Upgrade

  toaster_setup.pl -s test

That will send some test messages. Also, test other aspects of your mail system including:

 Mail::CGI
 Squirrelmail
 Sqwebmail
 Qmailadmin
 POP3
 IMAP
 SMTP
 SMTP-Submit


=cut
