<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Installation</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Bugzilla Guide - 2.20.1 
    Release"
HREF="index.html"><LINK
REL="UP"
TITLE="Installing Bugzilla"
HREF="installing-bugzilla.html"><LINK
REL="PREVIOUS"
TITLE="Installing Bugzilla"
HREF="installing-bugzilla.html"><LINK
REL="NEXT"
TITLE="Configuration"
HREF="configuration.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide - 2.20.1 
    Release</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="installing-bugzilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 2. Installing Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="configuration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="installation"
>2.1. Installation</A
></H1
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>If you just want to <EM
>use</EM
> Bugzilla, 
      you do not need to install it. None of this chapter is relevant to
      you. Ask your Bugzilla administrator
      for the URL to access it over the web.
      </P
></TD
></TR
></TABLE
></DIV
><P
>The Bugzilla server software is usually installed on Linux or 
    Solaris. 
    If you are installing on another OS, check <A
HREF="os-specific.html"
>Section 2.4</A
>
    before you start your installation to see if there are any special
    instructions.
    </P
><P
>&#13;      As an alternative to following these instructions, you may wish to
      try Arne Schirmacher's unofficial and unsupported 
      <A
HREF="http://www.softwaretesting.de/article/view/33/1/8/"
TARGET="_top"
>Bugzilla
      Installer</A
>, which installs Bugzilla and all its prerequisites
      on Linux or Solaris systems.
    </P
><P
>This guide assumes that you have administrative access to the
    Bugzilla machine. It not possible to
    install and run Bugzilla itself without administrative access except
    in the very unlikely event that every single prerequisite is
    already installed.
    </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The installation process may make your machine insecure for
      short periods of time. Make sure there is a firewall between you
      and the Internet.
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;    You are strongly recommended to make a backup of your system
    before installing Bugzilla (and at regular intervals thereafter :-).
    </P
><P
>In outline, the installation proceeds as follows:
    </P
><DIV
CLASS="procedure"
><OL
TYPE="1"
><LI
><P
><A
HREF="installation.html#install-perl"
>Install Perl</A
>
        (5.6.1 or above for non-Windows platforms; 5.8.1
        for Windows)
        </P
></LI
><LI
><P
><A
HREF="installation.html#install-database"
>Install a Database Engine</A
>
        </P
></LI
><LI
><P
><A
HREF="installation.html#install-webserver"
>Install a Webserver</A
>
        </P
></LI
><LI
><P
><A
HREF="installation.html#install-bzfiles"
>Install Bugzilla</A
>
        </P
></LI
><LI
><P
><A
HREF="installation.html#install-perlmodules"
>Install Perl modules</A
>
        </P
></LI
><LI
><P
>&#13;          <A
HREF="installation.html#install-MTA"
>Install a Mail Transfer Agent</A
>
          (Sendmail 8.7 or above, or an MTA that is Sendmail-compatible with at least this version)
        </P
></LI
><LI
><P
>Configure all of the above.
        </P
></LI
></OL
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="install-perl"
>2.1.1. Perl</A
></H2
><P
>Installed Version Test: <TT
CLASS="filename"
>perl -v</TT
></P
><P
>Any machine that doesn't have Perl on it is a sad machine indeed.
      If you don't have it and your OS doesn't provide official packages, 
      visit <A
HREF="http://www.perl.com"
TARGET="_top"
>http://www.perl.com</A
>.
      Although Bugzilla runs with Perl 5.6.1,
      it's a good idea to be using the latest stable version.
      </P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="install-database"
>2.1.2. Database Engine</A
></H2
><P
>From Bugzilla 2.20, support is included for using both the MySQL and
      PostgreSQL database servers. You only require one of these systems to make
      use of Bugzilla.</P
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-mysql"
>2.1.2.1. MySQL</A
></H3
><P
>Installed Version Test: <TT
CLASS="filename"
>mysql -V</TT
></P
><P
>&#13;          If you don't have it and your OS doesn't provide official packages, 
          visit <A
HREF="http://www.mysql.com"
TARGET="_top"
>http://www.mysql.com</A
>. You need MySQL version
          3.23.41 or higher.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> Many of the binary
            versions of MySQL store their data files in 
            <TT
CLASS="filename"
>/var</TT
>.
            On some Unix systems, this is part of a smaller root partition,
            and may not have room for your bug database. To change the data
            directory, you have to build MySQL from source yourself, and
            set it as an option to <TT
CLASS="filename"
>configure</TT
>.</P
></TD
></TR
></TABLE
></DIV
><P
>If you install from something other than a packaging/installation
          system, such as .rpm (Redhat Package), .deb (Debian Package), .exe
          (Windows Executable), or .msi (Microsoft Installer), make sure the MySQL
          server is started when the machine boots.
          </P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-pg"
>2.1.2.2. PostgreSQL</A
></H3
><P
>Installed Version Test: <TT
CLASS="filename"
>psql -V</TT
></P
><P
>&#13;          If you don't have it and your OS doesn't provide official packages, 
          visit <A
HREF="http://www.postgresql.org/"
TARGET="_top"
>http://www.postgresql.org/</A
>. You need PostgreSQL
          version 7.3.x or higher.
          </P
><P
>If you install from something other than a packaging/installation
          system, such as .rpm (Redhat Package), .deb (Debian Package), .exe
          (Windows Executable), or .msi (Microsoft Installer), make sure the
          PostgreSQL server is started when the machine boots.
          </P
></DIV
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="install-webserver"
>2.1.3. Web Server</A
></H2
><P
>Installed Version Test: view the default welcome page at
      http://&#60;your-machine&#62;/</P
><P
>You have freedom of choice here, pretty much any web server that
      is capable of running <A
HREF="glossary.html#gloss-cgi"
><I
CLASS="glossterm"
>CGI</I
></A
>
      scripts will work.
       However, we strongly recommend using the Apache web server
       (either 1.3.x or 2.x), and 
       the installation instructions usually assume you are
        using it. If you have got Bugzilla working using another webserver,
        please share your experiences with us by filing a bug in <A
HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&#38;component=Documentation"
TARGET="_top"
>Bugzilla Documentation</A
>.
      </P
><P
>&#13;      If you don't have Apache and your OS doesn't provide official packages, 
      visit <A
HREF="http://httpd.apache.org/"
TARGET="_top"
>http://httpd.apache.org/</A
>.
      </P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="install-bzfiles"
>2.1.4. Bugzilla</A
></H2
><P
>&#13;        Download a Bugzilla tarball (or check it out from CVS) and place
        it in a suitable directory, accessible by the default web server user 
        (probably <SPAN
CLASS="QUOTE"
>"apache"</SPAN
> or <SPAN
CLASS="QUOTE"
>"www"</SPAN
>). 
        Good locations are either directly in the main web space for your
        web server or perhaps in 
        <TT
CLASS="filename"
>/usr/local</TT
>
        with a symbolic link from the web space.
      </P
><DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The default Bugzilla distribution is NOT designed to be placed
        in a <TT
CLASS="filename"
>cgi-bin</TT
> directory. This
        includes any directory which is configured using the
        <VAR
CLASS="option"
>ScriptAlias</VAR
> directive of Apache.
        </P
></TD
></TR
></TABLE
></DIV
><P
>Once all the files are in a web accessible directory, make that
      directory writable by your webserver's user. This is a temporary step
      until you run the 
      <TT
CLASS="filename"
>checksetup.pl</TT
>
      script, which locks down your installation.</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="install-perlmodules"
>2.1.5. Perl Modules</A
></H2
><P
>Bugzilla's installation process is based
      on a script called <TT
CLASS="filename"
>checksetup.pl</TT
>. 
      The first thing it checks is whether you have appropriate 
      versions of all the required
      Perl modules. The aim of this section is to pass this check. 
      When it passes, proceed to <A
HREF="configuration.html"
>Section 2.2</A
>.
      </P
><P
>&#13;      At this point, you need to <TT
CLASS="filename"
>su</TT
> to root. You should
      remain as root until the end of the install. To check you have the
      required modules, run:
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
><SAMP
CLASS="prompt"
>bash#</SAMP
> ./checksetup.pl --check-modules</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;        <TT
CLASS="filename"
>checksetup.pl</TT
> will print out a list of the
        required and optional Perl modules, together with the versions
        (if any) installed on your machine.
        The list of required modules is reasonably long; however, you 
        may already have several of them installed.
      </P
><P
>&#13;        There is a meta-module called Bundle::Bugzilla, 
        which installs all the other 
        modules with a single command. You should use this if you are running
        Perl 5.6.1 or above.
      </P
><P
>&#13;        The preferred way of installing Perl modules is via CPAN on Unix, 
        or PPM on Windows (see <A
HREF="os-specific.html#win32-perl-modules"
>Section 2.4.1.2</A
>). These
        instructions assume you are using CPAN; if for some reason you need 
        to install the Perl modules manually, see 
        <A
HREF="install-perlmodules-manual.html"
>Appendix D</A
>.
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
><SAMP
CLASS="prompt"
>bash#</SAMP
> perl -MCPAN -e 'install "&#60;modulename&#62;"'</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;        If you using Bundle::Bugzilla, invoke the magic CPAN command on it.
        Otherwise, you need to work down the 
        list of modules that <TT
CLASS="filename"
>checksetup.pl</TT
> says are
        required, in the order given, invoking the command on each.
      </P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Many people complain that Perl modules will not install for
        them. Most times, the error messages complain that they are missing a
        file in 
        <SPAN
CLASS="QUOTE"
>"@INC"</SPAN
>. 
        Virtually every time, this error is due to permissions being set too
        restrictively for you to compile Perl modules or not having the
        necessary Perl development libraries installed on your system.
        Consult your local UNIX systems administrator for help solving these
        permissions issues; if you 
        <EM
>are</EM
>
        the local UNIX sysadmin, please consult the newsgroup/mailing list
        for further assistance or hire someone to help you out.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>If you are using a package-based system, and attempting to install the
        Perl modules from CPAN, you may need to install the "development" packages for
        MySQL and GD before attempting to install the related Perl modules. The names of
        these packages will vary depending on the specific distribution you are using,
        but are often called <TT
CLASS="filename"
>&#60;packagename&#62;-devel</TT
>.</P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        Here is a complete list of modules and their minimum versions.
        Some modules have special installation notes, which follow.
      </P
><P
>Required Perl modules:
      <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;            AppConfig (1.52)
          </P
></LI
><LI
><P
>&#13;            CGI (2.93)
          </P
></LI
><LI
><P
>&#13;            Data::Dumper (any)
          </P
></LI
><LI
><P
>&#13;            Date::Format (2.21)
          </P
></LI
><LI
><P
>&#13;            DBI (1.38)
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-dbd-mysql"
>DBD::mysql</A
>
            (2.9003) if using MySQL
          </P
></LI
><LI
><P
>&#13;            DBD::Pg (1.31) if using PostgreSQL
          </P
></LI
><LI
><P
>&#13;            File::Spec (0.84)
          </P
></LI
><LI
><P
>&#13;            File::Temp (any)
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-template"
>Template</A
>
            (2.08)
          </P
></LI
><LI
><P
>&#13;            Text::Wrap (2001.0131)
          </P
></LI
><LI
><P
>&#13;            Mail::Mailer (1.65)
          </P
></LI
><LI
><P
>&#13;            Storable (any)
          </P
></LI
></OL
>

      Optional Perl modules:
      <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-gd"
>GD</A
>
            (1.20) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-chart-base"
>Chart::Base</A
>
            (1.0) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-gd-graph"
>GD::Graph</A
>
            (any) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-gd-text-align"
>GD::Text::Align</A
>
            (any) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-xml-parser"
>XML::Parser</A
>
            (any) for the XML interface
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-patchreader"
>PatchReader</A
>
            (0.9.4) for pretty HTML view of patches
          </P
></LI
><LI
><P
>&#13;            <A
HREF="installation.html#install-modules-mime-parser"
>MIME::Parser</A
>
            (any) for the optional email interface
          </P
></LI
></OL
>          
      </P
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-dbd-mysql"
>2.1.5.1. DBD::mysql</A
></H3
><P
>The installation process will ask you a few questions about the
        desired compilation target and your MySQL installation. For most of the
        questions the provided default will be adequate, but when asked if your
        desired target is the MySQL or mSQL packages, you should
        select the MySQL-related ones. Later you will be asked if you wish to
        provide backwards compatibility with the older MySQL packages; you
        should answer YES to this question. The default is NO.</P
><P
>A host of 'localhost' should be fine. A testing user of 'test',
        with a null password, should have sufficient access to run
        tests on the 'test' database which MySQL creates upon installation.
        </P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-template"
>2.1.5.2. Template Toolkit (2.08)</A
></H3
><P
>When you install Template Toolkit, you'll get asked various
        questions about features to enable. The defaults are fine, except
        that it is recommended you use the high speed XS Stash of the Template
        Toolkit, in order to achieve best performance.
        </P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-gd"
>2.1.5.3. GD (1.20)</A
></H3
><P
>The GD module is only required if you want graphical reports.
        </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The Perl GD module requires some other libraries that may or
          may not be installed on your system, including 
          <CODE
CLASS="classname"
>libpng</CODE
>
          and 
          <CODE
CLASS="classname"
>libgd</CODE
>. 
          The full requirements are listed in the Perl GD module README.
          If compiling GD fails, it's probably because you're
          missing a required library.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The version of the GD module you need is very closely tied
          to the <CODE
CLASS="classname"
>libgd</CODE
> version installed on your system.
          If you have a version 1.x of <CODE
CLASS="classname"
>libgd</CODE
> the 2.x
          versions of the GD module won't work for you.
         </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-chart-base"
>2.1.5.4. Chart::Base (1.0)</A
></H3
><P
>The Chart::Base module is only required if you want graphical 
        reports. 
        Note that earlier versions that 0.99c used GIFs, which are no longer
        supported by the latest versions of GD.</P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-gd-graph"
>2.1.5.5. GD::Graph (any)</A
></H3
><P
>The GD::Graph module is only required if you want graphical 
        reports.
        </P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-gd-text-align"
>2.1.5.6. GD::Text::Align (any)</A
></H3
><P
>The GD::Text::Align module is only required if you want graphical 
        reports.
        </P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-xml-parser"
>2.1.5.7. XML::Parser (any)</A
></H3
><P
>The XML::Parser module is only required if you want to import
        XML bugs using the <TT
CLASS="filename"
>importxml.pl</TT
>
        script. This is required to use Bugzilla's "move bugs" feature;
        you may also want to use it for migrating from another bug database.
        XML::Parser requires that the
        <CODE
CLASS="classname"
>expat</CODE
> library is already installed on your machine.
        </P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-mime-parser"
>2.1.5.8. MIME::Parser (any)</A
></H3
><P
>The MIME::Parser module is only required if you want to use the 
        email interface
        located in the <TT
CLASS="filename"
>contrib</TT
> directory.
        </P
></DIV
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="install-modules-patchreader"
>2.1.5.9. PatchReader (0.9.4)</A
></H3
><P
>The PatchReader module is only required if you want to use 
        Patch Viewer, a
        Bugzilla feature to show code patches in your web browser in a more
        readable form. 
        </P
></DIV
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="install-MTA"
>2.1.6. Mail Transfer Agent (MTA)</A
></H2
><P
>&#13;        Bugzilla is dependent on the availability of an e-mail system for its 
        user authentication and for other tasks.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          This is not entirely true.  It is possible to completely disable 
          email sending, or to have Bugzilla store email messages in a 
          file instead of sending them.  However, this is mainly intended 
          for testing, as disabling or diverting email on a production 
          machine would mean that users could miss important events (such 
          as bug changes or the creation of new accouts).
        </P
><P
>&#13;          For more information, see the "maildeliverymethod" parameter in 
          <A
HREF="parameters.html"
>Section 3.1</A
>.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        On Linux, any Sendmail-compatible MTA (Mail Transfer Agent) will 
        suffice.  Sendmail, Postfix, qmail and Exim are examples of common 
        MTAs. Sendmail is the original Unix MTA, but the others are easier to 
        configure, and therefore many people replace Sendmail with Postfix or 
        Exim. They are drop-in replacements, so Bugzilla will not 
        distinguish between them.
      </P
><P
>&#13;        If you are using Sendmail, version 8.7 or higher is required.
        If you are using a Sendmail-compatible MTA, it must be congruent with 
        at least version 8.7 of Sendmail.
      </P
><P
>&#13;        Consult the manual for the specific MTA you choose for detailed 
        installation instructions. Each of these programs will have their own 
        configuration files where you must configure certain parameters to 
        ensure that the mail is delivered properly. They are implemented 
        as services, and you should ensure that the MTA is in the auto-start 
        list of services for the machine.
      </P
><P
>&#13;        If a simple mail sent with the command-line 'mail' program 
        succeeds, then Bugzilla should also be fine.
      </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="installing-bugzilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="configuration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Installing Bugzilla</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="installing-bugzilla.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuration</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>