<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!--Converted with LaTeX2HTML 99.2beta8 (1.42) original version by: Nikos Drakos, CBLU, University of Leeds * revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan * with significant contributions from: Jens Lippmann, Marek Rouchal, Martin Wilck and others --> <HTML> <HEAD> <TITLE>3. Installing Sympa </TITLE> <META NAME="description" CONTENT="3. Installing Sympa "> <META NAME="keywords" CONTENT="sympa"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <META NAME="Generator" CONTENT="LaTeX2HTML v99.2beta8"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="sympa.css"> <LINK REL="next" HREF="node5.html"> <LINK REL="previous" HREF="node3.html"> <LINK REL="up" HREF="sympa.html"> <LINK REL="next" HREF="node5.html"> </HEAD> <BODY TEXT="#000000" BGCOLOR="#ffffff"> <!--Navigation Panel--> <A NAME="tex2html426" HREF="node5.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html420" HREF="sympa.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html414" HREF="node3.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html422" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <A NAME="tex2html424" HREF="node17.html"> <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> <BR> <B> Next:</B> <A NAME="tex2html427" HREF="node5.html">4. sympa.conf parameters</A> <B> Up:</B> <A NAME="tex2html421" HREF="sympa.html">Sympa Mailing Lists Management Software</A> <B> Previous:</B> <A NAME="tex2html415" HREF="node3.html">2. what does Sympa consist of</A>   <B> <A NAME="tex2html423" HREF="node1.html">Contents</A></B>   <B> <A NAME="tex2html425" HREF="node17.html">Index</A></B> <BR> <BR> <!--End of Navigation Panel--> <!--Table of Child-Links--> <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A> <UL> <LI><A NAME="tex2html428" HREF="node4.html#SECTION00410000000000000000">3.1 Obtaining <I>Sympa</I>, related links</A> <LI><A NAME="tex2html429" HREF="node4.html#SECTION00420000000000000000">3.2 Prerequisites</A> <UL> <LI><A NAME="tex2html430" HREF="node4.html#SECTION00421000000000000000">3.2.1 System requirements</A> <LI><A NAME="tex2html431" HREF="node4.html#SECTION00422000000000000000">3.2.2 Install Berkeley DB (NEWDB)</A> <LI><A NAME="tex2html432" HREF="node4.html#SECTION00423000000000000000">3.2.3 Install PERL and CPAN modules</A> <LI><A NAME="tex2html433" HREF="node4.html#SECTION00424000000000000000">3.2.4 Required CPAN modules</A> <LI><A NAME="tex2html434" HREF="node4.html#SECTION00425000000000000000">3.2.5 Create a UNIX user</A> </UL> <LI><A NAME="tex2html435" HREF="node4.html#SECTION00430000000000000000">3.3 Compilation and installation </A> <UL> <LI><A NAME="tex2html436" HREF="node4.html#SECTION00431000000000000000">3.3.1 Choosing directory locations</A> </UL> <LI><A NAME="tex2html437" HREF="node4.html#SECTION00440000000000000000">3.4 Robot aliases</A> <LI><A NAME="tex2html438" HREF="node4.html#SECTION00450000000000000000">3.5 Logs</A> <LI><A NAME="tex2html439" HREF="node4.html#SECTION00460000000000000000">3.6 sympa.pl</A> </UL> <!--End of Table of Child-Links--> <HR> <H1><A NAME="SECTION00400000000000000000"> 3. Installing <I>Sympa</I> </A> </H1> <P> <I>Sympa</I> is a program written in PERL. It also calls a short program written in C for tasks which it would be unreasonable to perform via an interpreted language. <P> <H1><A NAME="SECTION00410000000000000000"> 3.1 Obtaining <I>Sympa</I>, related links</A> </H1> <P> The <I>Sympa</I> distribution is available from <A NAME="tex2html10" HREF="http://listes.cru.fr/sympa/"><TT>http://listes.cru.fr/sympa/</TT></A>. All important resources are referenced there: <P> <UL> <LI>sources </LI> <LI><A NAME="2885"></A><TT>RELEASE_NOTES</TT> </LI> <LI>.rpm and .deb packages for Linux </LI> <LI>user mailing list (see <A HREF="node2.html#sympa_cru.fr">1.6</A>, page <A HREF="node2.html#sympa_cru.fr"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>) </LI> <LI>contributions </LI> <LI>... </LI> </UL> <P> <H1><A NAME="SECTION00420000000000000000"> 3.2 Prerequisites</A> </H1> <P> <I>Sympa</I> installation and configuration are relatively easy tasks for experienced UNIX users who have already installed PERL packages. <P> Note that most of the installation time will involve putting in place the prerequisites, if they are not already on the system. No more than a handful of ancillary tools are needed, and on recent UNIX systems their installation is normally very straightforward. We strongly advise you to perform installation steps and checks in the order listed below; these steps will be explained in detail in later sections. <P> <UL> <LI>identification of host system characteristics <P> </LI> <LI>installation of DB Berkeley module (already installed on most UNIX systems) <P> </LI> <LI>installation of <A NAME="tex2html11" HREF="http://www.perl.com/CPAN">CPAN (Comprehensive PERL Archive Network)</A> modules <P> </LI> <LI>creation of a UNIX user <P> </LI> </UL> <P> <H2><A NAME="SECTION00421000000000000000"> 3.2.1 System requirements</A> </H2> <P> You should have a UNIX system that is more or less recent in order to be able to use <I>Sympa</I>. In particular, it is necessary that your system have an ANSI C compiler (in other words, your compiler should support prototypes), as well as XPG4-standard <A NAME="2890"></A>NLS (Native Language Support, for languages other than English) extensions. <P> <I>Sympa</I> has been installed and tested on the following systems, therefore you should not have any special problems: <P> <UL> <LI>Linux (various distributions) </LI> <LI>FreeBSD 2.2.x and 3.x </LI> <LI>Digital UNIX 4.x </LI> <LI>Solaris 2.5 and 2.6 </LI> <LI>AIX 4.x </LI> <LI>HP-UX 10.20 </LI> </UL> <P> Anyone willing to port it to NT ? ;-) <P> If your UNIX system has a <A NAME="2892"></A><TT>gencat</TT> command as well as <A NAME="2895"></A><TT>catgets(3)</TT> and <A NAME="2898"></A><TT>catopen(3)</TT> functions, it is likely that it has <A NAME="2901"></A>NLS extensions and that these extensions comply with the XPG4 specifications. <P> Finally, most UNIX systems are now supplied with an ANSI C compiler; if this is not the case, you can install the <A NAME="2902"></A><TT>gcc</TT> compiler, which you will find on the nearest GNU site, for example <A NAME="tex2html12" HREF="ftp://ftp.oleane.net/pub/mirrors/gnu/">in France</A>. <P> To complete the installation, you should make sure that you have a sufficiently recent release of the <A NAME="2905"></A><TT>sendmail</TT> MTA, i.e. release <A NAME="tex2html13" HREF="ftp://ftp.oleane.net/pub/mirrors/sendmail-ucb/">8.9.x</A> or a more recent release. You may also use <A NAME="2908"></A><TT>postfix</TT> or <A NAME="2911"></A><TT>qmail</TT>. <P> <H2><A NAME="SECTION00422000000000000000"> 3.2.2 Install Berkeley DB (NEWDB)</A> </H2> <P> UNIX systems often include a particularly unsophisticated mechanism to manage indexed files. This consists of extensions known as <TT>dbm</TT> and <TT>ndbm</TT>, which are unable to meet the needs of many more recent programs, including <I>Sympa</I>, which uses the <A NAME="2915"></A>DB package initially developed at the University of California in Berkeley, and which is now maintained by the company <A NAME="tex2html14" HREF="http://www.sleepycat.com">Sleepycat software</A>. Many UNIX systems like Linux, FreeBSD or Digital UNIX 4.x have the DB package in the standard version. If not you should install this tool if you have not already done so. <P> You can retrieve DB on the <A NAME="tex2html15" HREF="http://www.sleepycat.com/">Sleepycat site</A>, where you will also find clear installation instructions. <P> <H2><A NAME="SECTION00423000000000000000"> 3.2.3 Install PERL and CPAN modules</A> </H2> <P> To be able to use <I>Sympa</I> you must have release 5.004_03 or later of the PERL language, as well as several CPAN modules. <P> At <TT>make</TT> time, the <A NAME="2917"></A><TT>check_perl_modules.pl</TT> script is run to check for installed versions of required PERL and CPAN modules. If a CPAN module is missing or out of date, this script will install it for you. <P> You can also download and install CPAN modules yourself. You will find a current release of the PERL interpreter in the nearest CPAN archive. If you do not know where to find a nearby site, use the <A NAME="tex2html16" HREF="http://www.perl.com/CPAN/src/latest.tar.gz">CPAN multiplexor</A>; it will find one for you. <P> <H2><A NAME="SECTION00424000000000000000"> 3.2.4 Required CPAN modules</A> </H2> <P> The following CPAN modules required by <I>Sympa</I> are not included in the standard PERL distribution. We try to keep this list up to date ; if you have any doubts run the <A NAME="2921"></A><TT>check_perl_modules.pl</TT> script. <P> <UL> <LI>DB_File (v. 1.50 or later) </LI> <LI>Msgcat </LI> <LI>MD5 </LI> <LI>MailTools (version 1.13 o later) </LI> <LI>MIME-tools (may require IO/Stringy) </LI> <LI>MIME-Base64 </LI> </UL> <P> Since release 2, <I>Sympa</I> requires an RDBMS to work properly. It stores users' subscriptions and preferences in a database. <I>Sympa</I> is also able to extract user data from within an external database. These features require that you install database-related PERL libraries. This includes the generic Database interface (DBI) and a Database Driver for your RDBMS (DBD) : <P> <UL> <LI><B>DBI</B> (DataBase Interface) <P> </LI> <LI><B>DBD</B> (DataBase Driver) related to your RDBMS (e.g. Msql-Mysql-modules for MySQL) <P> </LI> </UL> <P> If you plan to interface <I>Sympa</I> with an LDAP directory to build dynamical mailing lists, you need to install PERL LDAP libraries : <P> <UL> <LI><B>Net::LDAP</B> (perlldap). <P> </LI> </UL> <P> <H2><A NAME="SECTION00425000000000000000"> 3.2.5 Create a UNIX user</A> </H2> <P> The final step prior to installing <I>Sympa</I>: create a UNIX user (and if possible a group) specific to the program. Most of the installation will be carried out with this account. We suggest that you use the name <TT>sympa</TT> for both user and group. Note that UID.GID must be the same as your httpd. If you are running a dedicated httpd server, this can be sympa.sympa, otherwise it is possible either to define a virtual httpd server setting UID.GID, or to run <I>Sympa</I> as nobody.nobody. This second solution is not advisable because the information managed by <I>Sympa</I> will be owned by nobody. <P> Numerous files will be located in the <I>Sympa</I> user's login directory. Throughout the remainder of this documentation we shall refer to this login directory as <A NAME="2931"></A><TT>~sympa/</TT>. <P> <H1><A NAME="SECTION00430000000000000000"> 3.3 Compilation and installation </A> </H1> <P> Before using <I>Sympa</I>, you must customize the sources in order to specify a small number of parameters specific to your installation. <P> First, extract the sources from the archive file, for example from the <A NAME="2937"></A><TT>~sympa/</TT> directory: the archive will create a directory named <A NAME="2942"></A><TT>sympa-2.7/</TT> where all the useful files and directories will be located. In particular, you will have a <A NAME="2945"></A><TT>doc/</TT> directory containing this documentation in various formats; a <A NAME="2948"></A><TT>sample/</TT> directory containing a few examples of configuration files; an <A NAME="2951"></A><TT>nls/</TT> directory where multi-lingual messages are stored; and, of course, the <A NAME="2954"></A><TT>src/</TT> directory for the mail robot and <A NAME="2957"></A><TT>wwsympa</TT> for the web interface. <P> Example: <P> <BLOCKQUOTE> <TT># su - <BR>$ gzip -dc sympa-2.7.tar.gz | tar xf - </TT></BLOCKQUOTE> <P> <A NAME="makefile"></A> <P> Before running <A NAME="2960"></A><TT>make</TT> in the main directory, you should edit and configure <A NAME="2963"></A><TT>Makefile</TT>, the first part of which requires customization. We advise against changing anything located after the STOP line. <P> The <A NAME="2966"></A><TT>Makefile</TT> file contains explanations for the fields, which you may have to change. They main ones are : <UL> <LI>USER and GROUP, the id of daemons. </LI> <LI>CONFIG and WWSCONFIG, the location of robot and cgi configurations </LI> <LI>DIR, the <I>Sympa</I> home dir </LI> <LI>MAILERPROGDIR, the location of queue and bouncequeue programs. If sendmail is configured to use smrsh (check the mailer prog definition in your sendmail.cf), queue and bouncequeue need to be installed in /etc/smrsh. This is probably the case if you are using redhat 6.X. </LI> <LI>SENDMAIL_ALIASES, the sendmail aliases file. This is used by the alias_manager script. </LI> <LI>NEWALIASES, the path to newaliases command. </LI> <LI>INITDIR, the directory to contain a SYSV init script (typically /etc.rc.d/init.d/) </LI> <LI>DESTDIR, can be set in the main Makefile to install sympa in DESTDIR/DIR (instead of DIR). This is useful for building RPM and DEB packages. </LI> <LI>PERL, SH and CC and GENCAT, respectively perl, sh, cc and gencat locations. </LI> <LI>DARK_COLOR, LIGHT_COLOR, TEXT_COLOR, BG_COLOR, ERROR_COLOR to define wwsympa RGB colors </LI> </UL> <P> Once this file has been configured, you need to run the <TT>make;make install</TT> commands. This generates the binary for the <A NAME="2970"></A><TT>queue</TT> program along with the nls, and inserts the <I>Sympa</I> and <A NAME="2974"></A><I>WWSympa</I> programs in their final slot, while having propagated a few parameters into the PERL files, such the access path to the PERL program. The make command includes the checking of CPAN modules. <P> If everything goes smoothly, the <A NAME="2977"></A><TT>~sympa/bin/</TT> directory will contain various PERL programs as well as the <A NAME="2982"></A><TT>queue</TT> binary. You will remark that this binary has the <A NAME="343"></A> <I>set-uid-on-exec</I> bit (owner is the <TT>sympa</TT> user): this is deliberate, and indispensable if <I>Sympa</I> is to run correctly. <P> <H2><A NAME="SECTION00431000000000000000"> 3.3.1 Choosing directory locations</A> </H2> <P> All directories are defined in the <A NAME="2986"></A><TT>/etc/sympa.conf</TT> file, which is read by <I>Sympa</I> at runtime. If no <A NAME="2990"></A><TT>sympa.conf</TT> file was found during installation, a sample one will be created. For the default organization of directories, please refer to <A HREF="node3.html#organization">2.1</A>, page <A HREF="node3.html#organization"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>. <P> It would, of course, be possible to disperse files and directories to a number of different locations. However, we recommend storing all the directories and files in the <TT>sympa</TT> user's login directory. <P> These directories must be created manually now. You can use restrictive authorizations if you like, since only programs running with the <TT>sympa</TT> account will need to access them. <P> <H1><A NAME="SECTION00440000000000000000"></A> <A NAME="354"></A> <A NAME="355"></A> <BR> 3.4 Robot aliases </H1> <P> An electronic list manager such as <I>Sympa</I> is built around two processing steps: <P> <UL> <LI>a message sent to a list or to <I>Sympa</I> itself (for subscribe, unsubscribe, help messages, etc.) is received by the SMTP server (<A NAME="2995"></A><TT>sendmail</TT> or <A NAME="2998"></A><TT>qmail</TT>). The SMTP server, on reception of this message, runs the <A NAME="3001"></A><TT>queue</TT> program (supplied in this package) to store the message in a queue, i.e. in a special directory. <P> </LI> <LI>the <A NAME="3004"></A><TT>sympa.pl</TT> daemon, set in motion at system startup, scans the queue. As soon as it detects a new message, it processes it and performs the requested action (distribution or processing of an administrative request). <P> </LI> </UL> <P> To separate the processing of administrative requests (subscription, unsubscription, help requests, etc.) from the processing of messages destined for mailing lists, a special mail alias is reserved for administrative requests, so that <I>Sympa</I> can be permanently accessible to users. The following lines must therefore be added to the <A NAME="3008"></A><TT>sendmail</TT> alias file (often <A NAME="3011"></A><TT>/etc/aliases</TT>): <P><PRE> sympa: "| /home/sympa/bin/queue sympa" listmaster: "| /home/sympa/bin/queue listmaster" bounce+*: "| /home/sympa/bin/bouncequeue sympa" sympa-request: postmaster sympa-owner: postmaster </PRE> <P> <TT>sympa-request</TT> should be the address of the robot <A NAME="3015"></A>administrator, i.e. a person who looks after <I>Sympa</I> (here <TT>postmaster@cru.fr</TT>). <P> <TT>sympa-owner</TT> is the return address for <I>Sympa</I> error messages. <P> The alias bounce+* is dedicated to collect bounces. It is useful only if at least one list uses <TT> welcome_return_path unique </TT> or <TT> remind_return_path unique</TT>. Don't forget to run <A NAME="3021"></A><TT>newaliases</TT> after any change to the <A NAME="3024"></A><TT>/etc/aliases</TT> file! <P> Note: aliases based on <TT>listserv</TT> (in addition to those based on <TT>sympa</TT>) can be added for the benefit of users accustomed to the <TT>listserv</TT> and <TT>majordomo</TT> names. For example: <P><PRE> listserv: sympa listserv-request: sympa-request majordomo: sympa listserv-owner: sympa-owner </PRE> <P> Note: it will also be necessary to add entries in this alias file when lists are created (see list creation section, <A HREF="node10.html#list-aliases">9.1</A>, page <A HREF="node10.html#list-aliases"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>). <P> <H1><A NAME="SECTION00450000000000000000"> 3.5 Logs</A> </H1> <P> <I>Sympa</I> keeps a trace of each of its procedures in its log file. However, this requires configuration of the <A NAME="3032"></A><TT>syslogd</TT> daemon. By default <I>Sympa</I> wil use the <TT>local1</TT> facility (<A NAME="3036"></A><TT>syslog</TT> parameter in <A NAME="3039"></A><TT>sympa.conf</TT>). WWSympa's logging behaviour is defined by the <A NAME="3042"></A><TT>log_facility</TT> parameter in <A NAME="3045"></A><TT>wwsympa.conf</TT> (by default the same facility as <I>Sympa</I>). <BR> To this end, a line must be added in the <A NAME="3049"></A><TT>syslogd</TT> configuration file (<A NAME="3052"></A><TT>/etc/syslog.conf</TT>). For example: <P><PRE> local1.* /var/log/sympa </PRE> <P> Then reload <A NAME="3055"></A><TT>syslogd</TT>. <P> Depending on your platform, your syslog daemon may use either a UDP or a UNIX socket. <I>Sympa</I>'s default is to use a UNIX socket; you may change this behavior by editing <A NAME="3059"></A><TT>sympa.conf</TT>'s <A NAME="3062"></A><TT>log_socket_type</TT> parameter (<A HREF="node5.html#par-log-socket-type">4.3.2</A>, page <A HREF="node5.html#par-log-socket-type"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A>). <P> <H1><A NAME="SECTION00460000000000000000"></A> <A NAME="sympa.pl"></A> <BR> 3.6 sympa.pl </H1> <P> Once the files are configured, all that remains is to start <I>Sympa</I>. At startup, <A NAME="3066"></A><TT>sympa.pl</TT> will change its UID to sympa (as defined in <A NAME="3069"></A><TT>Makefile</TT>). To do this, add the following sequence or its equivalent in your <A NAME="3072"></A><TT>/etc/rc.local</TT>: <P><PRE> ~sympa/bin/sympa.pl ~sympa/bin/archived.pl ~sympa/bin/bounced.pl </PRE> <P> <A NAME="3075"></A><TT>sympa.pl</TT> recognizes the following command line arguments: <P> <UL> <LI>-debug | -d <P> Sets <I>Sympa</I> in debug mode and keeps it attached to the terminal. Debugging information is output to STDERR, along with standard log information. Each function call is traced. Useful while reporting a bug. <P> </LI> <LI>-config | -f <I>config_file</I> <P> Forces <I>Sympa</I> to use an alternative configuration file. Default behavior is to use the configuration file as defined in the Makefile ($CONFIG). <P> </LI> <LI>-mail | -m <P> <I>Sympa</I> will log calls to sendmail, including recipients. Useful for keeping track of each mail sent (log files may grow faster though). <P> </LI> <LI>-lang | -l <I>catalog</I> <P> Set this option to use a language catalog for <I>Sympa</I>. The corresponding catalog file must be located in <A NAME="3082"></A><TT>~sympa/nls</TT> directory. <P> For example, with the <A NAME="3087"></A><TT>fr.cat</TT> catalog: <P> </LI> <LI>-keepcopy | -k <I>recipient_directory</I> <P> This option tells Sympa to keep a copy of every incoming message, instead of deleting them. <I>recipient_directory</I> is the directory to store messages. <P><PRE> /home/sympa/bin/sympa.pl </PRE> <P> </LI> <LI>-dump <I>listname | ALL</I> <P> Dumps subscribers of a list or all lists. Subscribers are dumped in <A NAME="3090"></A><TT>subscribers.db.dump</TT>. <P> </LI> <LI>-import <I>listname</I> <P> Import subscribers in the <I>listname</I> list. Data are read from STDIN. <P> </LI> <LI>-lowercase <P> Lowercases e-mail addresses in database. <P> </LI> <LI>-help | -h <P> Print usage of sympa.pl. <P> </LI> <LI>-version | -v <P> Print current version of <I>Sympa</I>. <P> </LI> </UL> <P> <HR> <!--Navigation Panel--> <A NAME="tex2html426" HREF="node5.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html420" HREF="sympa.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html414" HREF="node3.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html422" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <A NAME="tex2html424" HREF="node17.html"> <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> <BR> <B> Next:</B> <A NAME="tex2html427" HREF="node5.html">4. sympa.conf parameters</A> <B> Up:</B> <A NAME="tex2html421" HREF="sympa.html">Sympa Mailing Lists Management Software</A> <B> Previous:</B> <A NAME="tex2html415" HREF="node3.html">2. what does Sympa consist of</A>   <B> <A NAME="tex2html423" HREF="node1.html">Contents</A></B>   <B> <A NAME="tex2html425" HREF="node17.html">Index</A></B> <!--End of Navigation Panel--> <ADDRESS> root 2001-06-05 </ADDRESS> </BODY> </HTML>