<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

    <!-- Inserted as a reminder to do this. The mention of a test suite
         is usually right before the root user installation commands. Please
         delete these 12 (including one blank) lines after you are done.-->

    <!-- Use one of the two mentions below about a test suite,
         delete the line that is not applicable. Of course, if the
         test suite uses syntax other than "make check", revise the
         line to reflect the actual syntax to run the test suite -->

    <!-- <para>This package does not come with a test suite.</para> -->
    <!-- <para>To test the results, issue: <command>make check</command>.</para> -->

  <!ENTITY courier-download-http "&sourceforge-repo;/courier/courier-&courier-version;.tar.bz2">
  <!ENTITY courier-download-ftp " ">
  <!ENTITY courier-md5sum "639bb3b236914e3b86f287ce3f55264e">
  <!ENTITY courier-size "4.3 MB">
  <!ENTITY courier-buildsize "102 MB">
  <!ENTITY courier-time "2.62 SBU">
]>

<sect1 id="courier" xreflabel="Courier-&courier-version;">
  <?dbhtml filename="courier.html"?>

  <sect1info>
    <othername>$LastChangedBy: bdubbs $</othername>
    <date>$Date: 2012-05-12 17:54:09 -0400 (Sat, 12 May 2012) $</date>
  </sect1info>

  <title>Courier-&courier-version;</title>

  <indexterm zone="courier">
    <primary sortas="a-Courier">Courier MTA</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to Courier</title>

    <para>The <application>Courier</application> package contains a Mail
    Transport Agent (MTA). This is useful for sending email to other users
    of your host machine. It can also be configured to be a central mail
    server for your domain or a mail relay agent. The
    <application>Courier</application> packages also includes a web-based
    email interface, IMAP, IMAP-SSL, POP3, and POP3-SSL.</para>

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>Download (HTTP): <ulink url="&courier-download-http;"/></para>
      </listitem>
      <listitem>
        <para>Download (FTP): <ulink url="&courier-download-ftp;"/></para>
      </listitem>
      <listitem>
        <para>Download MD5 sum: &courier-md5sum;</para>
      </listitem>
      <listitem>
        <para>Download size: &courier-size;</para>
      </listitem>
      <listitem>
        <para>Estimated disk space required: &courier-buildsize;</para>
      </listitem>
      <listitem>
        <para>Estimated build time: &courier-time;</para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Courier Dependencies</bridgehead>

    <!-- <bridgehead renderas="sect4">Required</bridgehead>
    <para role="required"><xref linkend="gdbm"/></para> -->

    <bridgehead renderas="sect4">Optional</bridgehead>
    <para role="optional"><xref linkend="mysql"/> or <xref linkend="postgresql"/>,
    <xref linkend="linux-pam"/>,
    <xref linkend="openssl"/>,
    <xref linkend="gamin"/>,
    <xref linkend="openldap"/>,
    <xref linkend="apache"/>,
    <!-- <xref linkend="ispell"/> or <xref linkend="aspell"/>, -->
    <xref linkend="aspell"/>,
    <xref linkend="gnupg"/>,
    <xref linkend="expect"/>,
    <xref linkend="gs"/><!-- or <xref linkend="espgs"/> -->,
    <ulink url="http://netpbm.sourceforge.net/">Netpbm</ulink> and
    <ulink url="http://alpha.greenie.net/mgetty/">Mgetty+Sendfax</ulink></para>

    <para condition="html" role="usernotes">User Notes:
    <ulink url="&blfs-wiki;/courier"/></para>

  </sect2>

  <sect2 role="installation">
    <title>Installation of Courier</title>

    <note>
      <para><application>Courier</application>'s tarball must be extracted
      as an unprivileged user or the <command>configure</command> script will
      fail.</para>
    </note>

    <para>Before you compile the program, you need to create the
    <systemitem class="username">courier</systemitem> user and group
    that is expected to be in place during installation.
    As the <systemitem class="username">root</systemitem> user, add
    the <systemitem class="username">courier</systemitem> user and
    group with the following commands:</para>

<screen role="root"><userinput>groupadd -g 30 courier &amp;&amp;
useradd -c 'Courier Mail Server' -d /dev/null \
        -g courier -s /bin/false -u 30 courier</userinput></screen>

    <para>The install script also expects a <systemitem
    class="username">bin</systemitem> user. If you already have a
    user named <systemitem class="username">bin</systemitem>, this
    step can be safely ignored. If necessary, create the user by
    issuing the following command as the
    <systemitem class="username">root</systemitem> user:</para>

<screen role="root"><userinput>useradd -c 'bin' -d /dev/null -g bin -u 1 bin</userinput></screen>

    <para><application>Courierfilter</application> requires the directory
    <filename class="directory">/var/run/courier</filename> to store
    all the <application>Courier</application> PID and lock files.
    <filename class="directory">/var/lock/subsys</filename> also must exist
    for the master lock file for <application>Courier</application>. Issue
    the following commands as the
    <systemitem class="username">root</systemitem> user to create these
    directories:</para>

<screen role="root"><userinput>install -v -d /var/run/courier -o courier -g courier -m755 &amp;&amp;
install -v -d /var/lock/subsys -o root -g root -m755</userinput></screen>

    <para>Build <application>Courier</application> as an unprivileged user
    with the following commands:</para>

<screen><userinput>./configure --prefix=/usr --libexecdir=/usr/lib/courier \
    --datadir=/usr/share/courier --sysconfdir=/etc/courier \
    --localstatedir=/var/lib/courier --with-piddir=/var/run/courier \
    --with-paranoid-smtpext --disable-autorenamesent \
    --enable-workarounds-for-imap-client-bugs --with-db=gdbm &amp;&amp;
make</userinput></screen>

    <para>Once again, become the <systemitem class="username">root</systemitem>
    user and install <application>Courier</application> with the following
    commands:</para>

<screen role="root"><userinput>make install &amp;&amp;
make install-configure</userinput></screen>

  </sect2>

  <sect2 role="commands">
    <title>Command Explanations</title>

    <para><parameter>--libexecdir=/usr/lib/courier</parameter>: Specifies
    the directory which contains programs and libraries that should not be
    directly executed from the command-line.</para>

    <para><parameter>--datadir=/usr/share/courier</parameter>: Specifies the
    directory where miscellaneous shell scripts,
    <application>Perl</application> scripts, and data files will be
    installed.</para>

    <para><parameter>--localstatedir=/var/spool/courier</parameter>:
    Specifies the directory that will hold the mail queue, and other
    temporary data.</para>

    <para><parameter>--with-piddir=/var/run/courier</parameter>: Specifies
    the directory where <application>Courier</application>'s
    PID files are stored when
    <application>Courier</application> is active.</para>

    <para><parameter>--with-paranoid-smtpext</parameter>: Be paranoid when
    negotiating Courier-specific ESMTP extensions with remote servers.
    The <application>Courier</application> mail server defines and implements
    certain experimental ESMTP extensions: XVERP and XEXDATA. Problems may
    result in the event that someone else uses the same name to implement
    some other extension. If this option is specified,
    <application>Courier</application>'s ESMTP server will also advertise a
    dummy ESMTP capability called XCOURIEREXTENSIONS, and will not recognize
    any Courier-specific extensions unless the remote mail server also
    advertises this dummy ESMTP capability.</para>

    <para><parameter>--disable-autorenamesent</parameter>: Do not rename the
    Sent folder every month. This option can also be controlled by the
    <envar>SQWEBMAIL_AUTORENAMESENT</envar> environment variable.</para>

    <para><parameter>--enable-workarounds-for-imap-client-bugs</parameter>:
    There are several confirmed bugs in some IMAP clients that do not properly
    implement the IMAP4rev1 protocol. This option enables some workarounds for
    those buggy IMAP clients. NOTE: <command>make check</command> will fail if
    this option is used. You should first configure without this option, and
    if all post-configuration tests succeed, rerun <command>configure</command>
    with this option and recompile.</para>

    <para><parameter>--with-db=gdbm</parameter>:
    <application>Courier</application> requires either the
    <application>GDBM</application> or the <application>DB</application>
    database library. <application>GDBM</application> is used if both are
    present. This option forces the selection of
    <application>GDBM</application> as <application>Courier</application>
    is currently broken when used with <application>DB</application>.</para>

    <!-- # Note - Courier will build fine with <xref linkend="db"/>, but all
    the database files will not be created correctly -->

    <para><option>--with-ispell=/usr/bin/aspell</option>:
    <application>Courier</application>'s webmail server can use spell
    checking, if <command>configure</command> finds
    <application>ispell</application> or if you explicitly set the location
    of <application>Aspell</application>.</para>

    <para><option>--enable-mimetypes=<replaceable>&lt;location of mime.types
    file&gt;</replaceable></option>: Use this switch if you receive an error
    saying that the <filename>mime.types</filename> file could not be
    found.</para>

  </sect2>

  <sect2 role="configuration">
    <title>Configuring Courier</title>

    <sect3 id="courier-config">
      <title>Configuration Files</title>

      <para><filename>/etc/courier/*</filename></para>

      <indexterm zone="courier courier-config">
        <primary sortas="e-etc-courier-star">/etc/courier/*</primary>
      </indexterm>

    </sect3>

    <sect3>
      <title>Configuration Information</title>

      <para>While still as <systemitem class="username">root</systemitem>,
      you will need to create the following files with the contents
      specified.</para>

      <para><filename>/etc/courier/defaultdomain</filename></para>

<screen role="root"><userinput>cat &gt; /etc/courier/defaultdomain &lt;&lt; "EOF"
<literal><replaceable>&lt;yourdomain&gt;</replaceable></literal>
EOF</userinput></screen>

      <para><filename>/etc/courier/me</filename></para>

<screen role="root"><userinput>cat &gt; /etc/courier/me &lt;&lt; "EOF"
<literal><replaceable>&lt;servername.yourdomain&gt;</replaceable></literal>
EOF</userinput></screen>

      <para><filename>/etc/courier/locals</filename></para>

<screen role="root"><userinput>cat &gt; /etc/courier/locals &lt;&lt; "EOF"
<literal>localhost
<replaceable>&lt;yourdomain&gt;</replaceable></literal>
EOF</userinput></screen>

      <para><filename>/etc/courier/esmtpacceptmailfor.dir/system</filename></para>

<screen role="root"><userinput>cat &gt; /etc/courier/esmtpacceptmailfor.dir/system &lt;&lt; "EOF"
<literal>localhost
<replaceable>&lt;yourdomain&gt;</replaceable></literal>
EOF</userinput></screen>

      <para>You will also need to edit the
      <filename>/etc/courier/aliases/system</filename> file and change the
      following entry.</para>

<screen><literal>postmaster: <replaceable>&lt;your administrator email&gt;</replaceable></literal></screen>

      <para>If you want to deny access from some hosts from sending mail,
      you will need to edit the
      <filename>/etc/courier/smtpaccess/default</filename> file.</para>

      <para>If you wish to host mail for non-local domains including virtual
      domains, you must add them to
      <filename>/etc/courier/hosteddomains</filename>. This file should exist
      whether you need a hosted domain list or not:</para>

<screen role="root"><userinput>touch /etc/courier/hosteddomains</userinput></screen>

      <para>After the above steps are completed you will need to run the
      following commands:</para>

<screen role="root"><userinput>makesmtpaccess &amp;&amp;
makehosteddomains &amp;&amp;
makealiases</userinput></screen>

      <para>For each user, you will need to create a
      <filename class="directory">Maildir</filename> directory:</para>

<screen role="root"><userinput>cd /home/<replaceable>&lt;username&gt;</replaceable> &amp;&amp;
maildirmake Maildir &amp;&amp;
chown <replaceable>&lt;username&gt;</replaceable>.<replaceable>&lt;username&gt;</replaceable> Maildir -R</userinput></screen>

      <para>If you wish to use SSL with <application>Courier</application>,
      you should obtain certificates and store them in
      <filename class='directory'>/usr/share/courier</filename>.  You can
      optionally create self-signed, test certificates with the following
      commands:</para>

<screen role="root"><userinput>mkesmtpdcert &amp;&amp;
mkimapdcert &amp;&amp;
mkpop3dcert</userinput></screen>

      <para>All of <application>Courier</application>'s configuration files reside
      in the directory <filename class="directory">/etc/courier/</filename>. For
      each service SMTP, POP3 and IMAP, you will have a standard config file, and
      an SSL config file. For each service that you wish to utilize, you will
      need to edit the configuration file, and change the
      <replaceable>&lt;DAEMON&gt;</replaceable>START variable from 'NO' to 'YES'. For
      example, to use SMTP with SSL, you'll need to edit
      <filename>/etc/courier/esmtpd-ssl</filename> and change the value of
      'ESMTPDSSLSTART' to 'YES'.  Make the same change for each service
      configuration that you wish to use with
      <application>Courier</application>.</para>

      <para>If you wish to use LDAP, an LDAP configuration file should be
      created:</para>

<screen role="root"><userinput>echo "LDAPALIASDSTART=YES" > /etc/courier/ldapaliasd</userinput></screen>

      <para>Similarly, if you wish to use webmail, you should create the webmail
      configuration file:</para>

<screen role="root"><userinput>echo "WEBMAILDSTART=YES" > /etc/courier/webmaild</userinput></screen>

      <para>You will also need to copy the <filename>webmail</filename> file
      from <filename>/usr/lib/courier/courier/webmail</filename> to the
      <filename class='directory'>cgi-bin</filename> directory of your
      <application>Apache</application> server.</para>

<screen role="root"><userinput>cp -v -a /usr/lib/courier/courier/webmail/webmail /srv/www/cgi-bin</userinput></screen>

      <para>You will then need to copy the images to a directory under your
      <filename class='directory'>htdocs</filename> directory of your
      <application>Apache</application> server. The directory needs to be named
      <filename class='directory'>webmail</filename> or you need to specify it
      during the configure phase with
      <option>--enable-imageurl=<replaceable>&lt;URL&gt;</replaceable></option>.</para>

<screen role="root"><userinput>cp -v -a /usr/share/courier/sqwebmail/images /srv/www/htdocs/webmail</userinput></screen>

      <para>If you wish to utilize the webadmin utility, you will need to copy
      the <filename>webadmin</filename> file from
      <filename class="directory">/usr/lib/courier/courier/webmail</filename>
      to your <filename class="directory">cgi-bin</filename> directory of your
      <application>Apache</application> server.</para>

<screen role="root"><userinput>cp -v -a /usr/lib/courier/courier/webmail/webadmin /srv/www/cgi-bin</userinput></screen>

      <para>You also need to put the password into the file
      <filename>/etc/courier/webadmin/password</filename>:</para>

<screen role="root"><userinput>cat &gt; /etc/courier/webadmin/password &lt;&lt; "EOF"
<literal><replaceable>&lt;password&gt;</replaceable></literal>
EOF</userinput></screen>

      <para>If you are not using SSL on your <application>Apache</application>
      server, you will also need to add
      <filename>/etc/courier/webadmin/unsecureok</filename>, so you will be
      able to use your web based administration tool.</para>

<screen role="root"><userinput>touch /etc/courier/webadmin/unsecureok</userinput></screen>

      <para>If you use <application>Linux-PAM</application> on your system,
      you will need to create the PAM configuration files:</para>

<screen role="root"><userinput>cat &gt; /etc/pam.d/esmtp &lt;&lt; "EOF"
<literal># Begin /etc/pam.d/esmtp

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/esmtp</literal>
EOF
<literal>cat &gt; /etc/pam.d/pop3 &lt;&lt; "EOF"
# Begin /etc/pam.d/pop3

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/pop3</literal>
EOF
cat &gt; /etc/pam.d/imap &lt;&lt; "EOF"
<literal># Begin /etc/pam.d/imap

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/imap</literal>
EOF
cat &gt; /etc/pam.d/webmail &lt;&lt; "EOF"
<literal># Begin /etc/pam.d/webmail

auth            required                pam_unix.so try_first_pass
account         required                pam_unix.so
session         required                pam_unix.so

# End /etc/pam.d/webmail</literal>
EOF</userinput></screen>

    </sect3>

    <sect3  id="courier-init">
      <title>Boot Script</title>

      <para>Finally, if you wish to start the
      <application>Courier</application> server at boot, install the
      <filename>/etc/rc.d/init.d/courier</filename> bootscript included
      in the <xref linkend="bootscripts"/> package.</para>

      <indexterm zone="courier courier-init">
        <primary sortas="f-courier-init">courier</primary>
      </indexterm>

<screen role="root"><userinput>make install-courier</userinput></screen>

    </sect3>

<!-- Begin virtual user setup * To be removed once added to the hint. -->

    <sect3>
      <title>Configuring for Virtual Users</title>

      <para>These instructions will configure <application>Courier</application>
      to lookup virtual users in a <application>MySQL</application> database.
      Begin by making the following changes to
      <filename>/etc/courier/authmysqlrc</filename>:</para>

<screen><literal>MYSQL_SERVER            localhost
MYSQL_USERNAME          courier
MYSQL_PASSWORD          <replaceable>&lt;your choice&gt;</replaceable>
MYSQL_SOCKET            /var/run/mysql/mysql.sock
MYSQL_PORT              3306
MYSQL_DATABASE          courier_mail
MYSQL_USER_TABLE        users
MYSQL_CLEAR_PWFIELD     clear
DEFAULT DOMAIN          <replaceable>&lt;your domain&gt;</replaceable>
MYSQL_QUOTA_FIELD       quota</literal></screen>

      <para>Connect to <application>MySQL</application>:</para>

<screen role="root"><userinput>mysql -p</userinput></screen>

      <para>Create the <filename>courier_mail</filename> database and setup
      the users table:</para>

<screen role="root"><userinput>CREATE DATABASE courier_mail;
USE courier_mail
CREATE TABLE users (
id                    char(128) DEFAULT '' NOT NULL,
crypt                 char(128) DEFAULT '' NOT NULL,
clear                 char(128) DEFAULT '' NOT NULL,
name                  char(128) DEFAULT '' NOT NULL,
uid                   int(10) unsigned DEFAULT '65534' NOT NULL,
gid                   int(10) unsigned DEFAULT '65534' NOT NULL,
home                  char(255) DEFAULT '' NOT NULL,
quota                 char(255) DEFAULT '' NOT NULL,
KEY id (id(128))
);</userinput></screen>

      <para>Grant all privileges to the <systemitem
      class="username">courier</systemitem> user created earlier:</para>

<screen role="root"><userinput>GRANT ALL PRIVILEGES ON *.* TO courier@localhost \
    IDENTIFIED BY '<replaceable>&lt;password&gt;</replaceable>' WITH GRANT OPTION;
QUIT</userinput></screen>

      <para>Create a virtual mailman user and group:</para>

<screen role="root"><userinput>groupadd -g 35 vmailman &amp;&amp;
useradd -c 'Virtual Mailman' -g vmailman -m -k /dev/null -u 35 vmailman</userinput></screen>

      <para>Create a mail directory for a new virtual user:</para>

<screen role="root"><userinput>cd /home/vmailman &amp;&amp;
mkdir -v <replaceable>&lt;virtual_user&gt;</replaceable> &amp;&amp;
cd <replaceable>&lt;virtual_user&gt;</replaceable> &amp;&amp;
maildirmake Maildir &amp;&amp;
chown -v vmailman.vmailman Maildir -R</userinput></screen>

      <para>Now, connect to the <application>MySQL</application> database as
      the <systemitem class="username">courier</systemitem> user:</para>

<screen role="root"><userinput>mysql -u courier -p</userinput></screen>

      <para>To add the virtual user you need to enter at least one version of the
      password; either clear text or encrypted.</para>

      <para>Add the first virtual user with the following commands:</para>

<screen><userinput>USE courier_mail
INSERT INTO users VALUES (
'<replaceable>&lt;virtual_users&gt;</replaceable>@<replaceable>&lt;domain.com&gt;</replaceable>,
'<replaceable>&lt;encrypted password or blank&gt;</replaceable>',
'<replaceable>&lt;clear text password or blank&gt;</replaceable>',
'<replaceable>&lt;User's Name&gt;</replaceable>',
9000,
9000,
'<replaceable>&lt;location of Maildir&gt;</replaceable>',
'<replaceable>&lt;Quota in Bytes'&gt;</replaceable>
);
QUIT</userinput></screen>

      <para>For example:</para>

<screen><userinput>INSERT INTO users VALUES (
'blfsuser@&lfs-domainname;',
'',
'password',
'BLFS User',
9000,
9000,
'/home/vmailman/blfsuser',
''
);</userinput></screen>

    </sect3>

<!-- End of Virtual user setup  -->

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Libraries</segtitle>
      <segtitle>Installed Directories</segtitle>

      <seglistitem>
        <seg>addcr, authenumerate, cancelmsg, courier, courier-config,
        courieresmtpd, courierfilter, courierlogger, couriermlm, couriertcpd,
        couriertls, deliverquota, dotforward, esmtpd, esmtpd-msa, esmtpd-ssl,
        filterctl, imapd, imapd-ssl, lockmail, mailbot, maildiracl, maildirkw,
        maildirmake, maildrop, mailq, makeacceptmailfor, makealiases, makedat,
        makehosteddomains, makemime, makepercentrelay, makesmtpaccess,
        makesmtpaccess-msa, makeuserdb, makeuucpneighbors, mimegpg,
        mkesmtpdcert, mkimapdcert, mkpop3dcert, pop3d, pop3d-ssl, preline,
        pw2userdb, reformail, reformime, rmail, sendmail, sharedindexinstall,
        sharedindexsplit, showconfig, showmodules, testmxlookup, userdb,
        userdbpw, vchkpw2userdb, webgpg, and webmaild</seg>
        <seg>None</seg>
        <seg>/etc/courier, /usr/lib/courier, /usr/share/courier, /var/lib/courier,
        /var/lock/subsys, /var/run/courier, and /var/spool/courier</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="cancelmsg">
        <term><command>cancelmsg</command></term>
        <listitem>
          <para>removes a message from the mail queue.</para>
          <indexterm zone="courier cancelmsg">
            <primary sortas="b-cancelmsg">cancelmsg</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courier-prog">
        <term><command>courier</command></term>
        <listitem>
          <para>is an administrative command used to control the
          <application>Courier</application> scheduling engine.</para>
          <indexterm zone="courier courier-prog">
            <primary sortas="b-courier">courier</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courierfax">
        <term><command>courierfax</command></term>
        <listitem>
          <para>sends email messages by fax.</para>
          <indexterm zone="courier courierfax">
            <primary sortas="b-courierfax">courierfax</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courierfilter">
        <term><command>courierfilter</command></term>
        <listitem>
          <para>starts and stops all mail filters installed by
          <command>filterctl</command>.</para>
          <indexterm zone="courier courierfilter">
            <primary sortas="b-courierfilter">courierfilter</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courierldapaliasd">
        <term><command>courierldapaliasd</command></term>
        <listitem>
          <para>supports mail address aliasing using an LDAP directory.</para>
          <indexterm zone="courier courierldapaliasd">
            <primary sortas="b-courierldapaliasd">courierldapaliasd</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courierlogger">
        <term><command>courierlogger</command></term>
        <listitem>
          <para>captures error messages from other
          <application>Courier</application> applications and forwards them
          to the system logger.</para>
          <indexterm zone="courier courierlogger">
            <primary sortas="b-courierlogger">courierlogger</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="couriermlm">
        <term><command>couriermlm</command></term>
        <listitem>
          <para>sets up, maintains, and manages mailing lists.</para>
          <indexterm zone="courier couriermlm">
            <primary sortas="b-couriermlm">couriermlm</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courierperlfilter">
        <term><command>courierperlfilter</command></term>
        <listitem>
          <para>is a sample filter written in
          <application>Perl</application>.</para>
          <indexterm zone="courier courierperlfilter">
            <primary sortas="b-courierperlfilter">courierperlfilter</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courierpop3d">
        <term><command>courierpop3d</command></term>
        <listitem>
          <para>is a <application>Courier</application>
          POP3 server.</para>
          <indexterm zone="courier courierpop3d">
            <primary sortas="b-courierpop3d">courierpop3d</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="courierpop3login">
        <term><command>courierpop3login</command></term>
        <listitem>
          <para>reads the POP3 userid and password and
          passes them to the authentication modules.</para>
          <indexterm zone="courier courierpop3login">
            <primary sortas="b-courierpop3login">courierpop3login</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="couriertcpd">
        <term><command>couriertcpd</command></term>
        <listitem>
          <para>accepts incoming network connections, and runs other
          <application>Courier</application> programs after establishing each
          network connection.</para>
          <indexterm zone="courier couriertcpd">
            <primary sortas="b-couriertcpd">couriertcpd</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="couriertls">
        <term><command>couriertls</command></term>
        <listitem>
          <para>is used by applications to encrypt a network connection
          using SSL/TLS.</para>
          <indexterm zone="courier couriertls">
            <primary sortas="b-couriertls">couriertls</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="dotforward">
        <term><command>dotforward</command></term>
        <listitem>
          <para>is a compatibility module that reads forwarding
          instructions in <filename>$HOME/.forward</filename>.</para>
          <indexterm zone="courier dotforward">
            <primary sortas="b-dotforward">dotforward</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="dupfilter">
        <term><command>dupfilter</command></term>
        <listitem>
          <para>is a threaded filter that tries to block junk E-mail by
          attempting to detect multiple copies of the same message, which
          are rejected.</para>
          <indexterm zone="courier dupfilter">
            <primary sortas="b-dupfilter">dupfilter</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="esmtpd">
        <term><command>esmtpd</command></term>
        <listitem>
          <para>is a control script for courieresmtpd.</para>
          <indexterm zone="courier esmtpd">
            <primary sortas="b-esmtpd">esmtpd</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="esmtpd-msa">
        <term><command>esmtpd-msa</command></term>
        <listitem>
          <para>is a control script for courieresmtpd, but adds message
          submission port 587 for the MSA protocol.</para>
          <indexterm zone="courier esmtpd-msa">
            <primary sortas="b-esmtpd-msa">esmtpd-msa</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="filterctl">
        <term><command>filterctl</command></term>
        <listitem>
          <para>installs or uninstalls global mail filters.</para>
          <indexterm zone="courier filterctl">
            <primary sortas="b-filterctl">filterctl</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="imapd">
        <term><command>imapd</command></term>
        <listitem>
          <para>is the <application>Courier</application>-IMAP server.</para>
          <indexterm zone="courier imapd">
            <primary sortas="b-imapd">imapd</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="lockmail">
        <term><command>lockmail</command></term>
        <listitem>
          <para>is a helper utility for locking  mailbox files.</para>
          <indexterm zone="courier lockmail">
            <primary sortas="b-lockmail">lockmail</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mailbot">
        <term><command>mailbot</command></term>
        <listitem>
          <para>is a MIME-aware autoresponder utility.</para>
          <indexterm zone="courier mailbot">
            <primary sortas="b-mailbot">mailbot</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="maildiracl">
        <term><command>maildiracl</command></term>
        <listitem>
          <para>manages access control lists.</para>
          <indexterm zone="courier maildiracl">
            <primary sortas="b-maildiracl">maildiracl</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="maildirkw">
        <term><command>maildirkw</command></term>
        <listitem>
          <para>modifies <application>Courier</application>-IMAP compatible
          maildir message keywords.</para>
          <indexterm zone="courier maildirkw">
            <primary sortas="b-maildirkw">maildirkw</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="maildirmake">
        <term><command>maildirmake</command></term>
        <listitem>
          <para>creates maildirs, and maildir folders.</para>
          <indexterm zone="courier maildirmake">
            <primary sortas="b-maildirmake">maildirmake</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="maildrop">
        <term><command>maildrop</command></term>
        <listitem>
          <para>is a replacement local mail delivery agent that includes a
          mail filtering language.</para>
          <indexterm zone="courier maildrop">
            <primary sortas="b-maildrop">maildrop</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mailq-courier">
        <term><command>mailq</command></term>
        <listitem>
          <para>displays a list of all messages that have not been
          delivered yet.</para>
          <indexterm zone="courier mailq-courier">
            <primary sortas="b-mailq">mailq</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makeacceptmailfor">
        <term><command>makeacceptmailfor</command></term>
        <listitem>
          <para>builds a list of domains to accept mail for, from the
          <filename class="directory">/etc/courier/esmtpacceptmailfor.dir</filename>
          directory.</para>
          <indexterm zone="courier makeacceptmailfor">
            <primary sortas="b-makeacceptmailfor">makeacceptmailfor</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makealiases">
        <term><command>makealiases</command></term>
        <listitem>
          <para>builds an alias database from one or more plain text
          source files.</para>
          <indexterm zone="courier makealiases">
            <primary sortas="b-makealiases">makealiases</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makedat">
        <term><command>makedat</command></term>
        <listitem>
          <para>is a utility to create <application>GDBM</application> or
          <application>DB</application> files from plain text files.</para>
          <indexterm zone="courier makedat">
            <primary sortas="b-makedat">makedat</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makehosteddomains">
        <term><command>makehosteddomains</command></term>
        <listitem>
          <para>rebuilds the contents of the hosteddomains database from the
          contents of <filename>/etc/courier/hosteddomains</filename>.</para>
          <indexterm zone="courier makehosteddomains">
            <primary sortas="b-makehosteddomains">makehosteddomains</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makemime">
        <term><command>makemime</command></term>
        <listitem>
          <para>creates MIME-formatted messages from one
          or more files.</para>
          <indexterm zone="courier makemime">
            <primary sortas="b-makemime">makemime</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makepercentrelay">
        <term><command>makepercentrelay</command></term>
        <listitem>
          <para>builds a list of %-relayed domains from the
          <filename class="directory">percentrelay.dir</filename> directory.</para>
          <indexterm zone="courier makepercentrelay">
            <primary sortas="b-makepercentrelay">makepercentrelay</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makesmtpaccess">
        <term><command>makesmtpaccess</command></term>
        <listitem>
          <para>builds ESMTP server access files from the
          <filename class="directory">/etc/courier/smtpaccess</filename>
          directory.</para>
          <indexterm zone="courier makesmtpaccess">
            <primary sortas="b-makesmtpaccess">makesmtpaccess</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makesmtpaccess-msa">
        <term><command>makesmtpaccess-msa</command></term>
        <listitem>
          <para>builds ESMTP server access files from the
          <filename class="directory">/etc/courier/smtpaccess</filename>
          directory. This esmtp list is for the MSA protocol.</para>
          <indexterm zone="courier makesmtpaccess-msa">
            <primary sortas="b-makesmtpaccess-msa">makesmtpaccess-msa</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="makeuserdb">
        <term><command>makeuserdb</command></term>
        <listitem>
          <para>builds a user/password db from the contents of <filename
          class="directory">/etc/courier/userdb</filename>.</para>
          <indexterm zone="courier makeuserdb">
            <primary sortas="b-makeuserdb">makeuserdb</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mimegpg">
        <term><command>mimegpg</command></term>
        <listitem>
          <para>signs, encrypts, or decrypts MIME-formatted
          email messages using <application>GnuPG</application>.</para>
          <indexterm zone="courier mimegpg">
            <primary sortas="b-mimegpg">mimegpg</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mkesmtpdcert">
        <term><command>mkesmtpdcert</command></term>
        <listitem>
          <para>creates a secure SMTP test certificate.</para>
          <indexterm zone="courier mkesmtpdcert">
            <primary sortas="b-mkesmtpdcert">mkesmtpdcert</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mkimapdcert">
        <term><command>mkimapdcert</command></term>
        <listitem>
          <para>creates a secure IMAP test certificate.</para>
          <indexterm zone="courier mkimapdcert">
            <primary sortas="b-mkimapdcert">mkimapdcert</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="mkpop3dcert">
        <term><command>mkpop3dcert</command></term>
        <listitem>
          <para>creates a secure POP3 test certificate.</para>
          <indexterm zone="courier mkpop3dcert">
            <primary sortas="b-mkpop3dcert">mkpop3dcert</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="pop3d">
        <term><command>pop3d</command></term>
        <listitem>
          <para>is a wrapper script for <command>couriertcpd</command> to
          start and stop the POP3 service.</para>
          <indexterm zone="courier pop3d">
            <primary sortas="b-pop3d">pop3d</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="pop3d-ssl">
        <term><command>pop3d-ssl</command></term>
        <listitem>
          <para>is a wrapper script for <command>couriertcpd</command> to
          start and stop the POP3 over SSL service.</para>
          <indexterm zone="courier pop3d-ssl">
            <primary sortas="b-pop3d-ssl">pop3d-ssl</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="preline">
        <term><command>preline</command></term>
        <listitem>
          <para>prepends legacy <filename>mbox</filename> headers to mail
          messages.</para>
          <indexterm zone="courier preline">
            <primary sortas="b-preline">preline</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="reformail">
        <term><command>reformail</command></term>
        <listitem>
          <para>reads a message on standard input, reformats it in some
          way, and writes the message to standard output.</para>
          <indexterm zone="courier reformail">
            <primary sortas="b-reformail">reformail</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="reformime">
        <term><command>reformime</command></term>
        <listitem>
          <para>is a utility for reformatting MIME messages.</para>
          <indexterm zone="courier reformime">
            <primary sortas="b-reformime">reformime</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="sendmail-courier">
        <term><command>sendmail</command></term>
        <listitem>
          <para>reads an email message and delivers the message to its
          recipients.</para>
          <indexterm zone="courier sendmail-courier">
            <primary sortas="b-sendmail">sendmail</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="submit">
        <term><command>submit</command></term>
        <listitem>
          <para>submits messages to <application>Courier</application> for
          processing.</para>
          <indexterm zone="courier submit">
            <primary sortas="b-submit">submit</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="testmxlookup">
        <term><command>testmxlookup</command></term>
        <listitem>
          <para>lists the names and IP addresses of mail
          relays that receive mail for the domain.</para>
          <indexterm zone="courier testmxlookup">
            <primary sortas="b-testmxlookup">testmxlookup</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="userdb">
        <term><command>userdb</command></term>
        <listitem>
          <para>is a script to individually manipulate entries in
          <filename>/etc/courier/userdb.</filename></para>
          <indexterm zone="courier userdb">
            <primary sortas="b-userdb">userdb</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="userdbpw">
        <term><command>userdbpw</command></term>
        <listitem>
          <para>reads a single line of text on standard input, encrypts
          it, and prints the encrypted result to standard output.</para>
          <indexterm zone="courier userdbpw">
            <primary sortas="b-userdbpw">userdbpw</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
