<?xml version="1.0"?>
-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Courier Authentication Library</title><link rel="stylesheet" href="style.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"/><link rel="start" href="#authlib" title="Courier Authentication Library"/><link rel="next" href="#authpwd" title="The authpwd authentication module"/><link xmlns="" rel="stylesheet" type="text/css" href="manpage.css"/><meta xmlns="" name="MSSmartTagsPreventParsing" content="TRUE"/><link xmlns="" rel="icon" href="icon.gif" type="image/gif"/><!--
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title>Courier Authentication Library</title><link rel="stylesheet" href="style.css" type="text/css"/><meta name="generator" content="DocBook XSL Stylesheets V1.73.2"/><link rel="start" href="#authlib" title="Courier Authentication Library"/><link rel="next" href="#authpwd" title="The authpwd authentication module"/><link xmlns="" rel="stylesheet" type="text/css" href="manpage.css"/><meta xmlns="" name="MSSmartTagsPreventParsing" content="TRUE"/><link xmlns="" rel="icon" href="icon.gif" type="image/gif"/><!--
Copyright 1998 - 2007 Double Precision, Inc. See COPYING for distribution
information.
---></head><body><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="authlib" shape="rect"> </a>Courier Authentication Library</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#authpwd" shape="rect">The <code class="literal">authpwd</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authshadow" shape="rect">The <code class="literal">authshadow</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpam" shape="rect">The <code class="literal">authpam</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipe" shape="rect">The <code class="literal">authpipe</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipeproto" shape="rect">The <code class="literal">authpipe</code> protocol</a></span></dt><dt><span class="sect1"><a href="#authuserdb" shape="rect">The <code class="literal">authuserdb</code> authentication module</a></span></dt><dd><dl><dt><span class="sect2"><a href="#userdbprimer" shape="rect">A brief <code class="literal">userdb</code> primer</a></span></dt><dt><span class="sect2"><a href="#userdbsimple" shape="rect">A simple userdb setup</a></span></dt><dt><span class="sect2"><a href="#userdbcomplex" shape="rect">Large virtual domain farm</a></span></dt><dt><span class="sect2"><a href="#moreuserdb" shape="rect">Beyond <code class="literal">userdb</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="#authvchkpw" shape="rect">The <code class="literal">authvchkpw</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authmysql" shape="rect">The <code class="literal">authmysql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpgsql" shape="rect">The <code class="literal">authpgsql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authldap" shape="rect">The <code class="literal">authldap</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authcustom" shape="rect"><code class="literal">authcustom</code></a></span></dt><dt><span class="sect1"><a href="#options" shape="rect">Account options</a></span></dt><dt><span class="sect1"><a href="#authtest" shape="rect">Running <span><strong class="command">authtest</strong></span></a></span></dt><dd><dl><dt><span class="sect2"><a href="#pwchange" shape="rect">Changing account passwords</a></span></dt></dl></dd><dt><span class="sect1"><a href="#internals" shape="rect">Authentication internals</a></span></dt><dt><span class="sect1"><a href="#files" shape="rect">FILES</a></span></dt><dt><span class="sect1"><a href="#seealso" shape="rect">SEE ALSO</a></span></dt></dl></div><p>
+--></head><body><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="authlib" shape="rect"> </a>Courier Authentication Library</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#authpwd" shape="rect">The <code class="literal">authpwd</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authshadow" shape="rect">The <code class="literal">authshadow</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpam" shape="rect">The <code class="literal">authpam</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipe" shape="rect">The <code class="literal">authpipe</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpipeproto" shape="rect">The <code class="literal">authpipe</code> protocol</a></span></dt><dt><span class="sect1"><a href="#authuserdb" shape="rect">The <code class="literal">authuserdb</code> authentication module</a></span></dt><dd><dl><dt><span class="sect2"><a href="#userdbprimer" shape="rect">A brief <code class="literal">userdb</code> primer</a></span></dt><dt><span class="sect2"><a href="#userdbsimple" shape="rect">A simple userdb setup</a></span></dt><dt><span class="sect2"><a href="#userdbcomplex" shape="rect">Large virtual domain farm</a></span></dt><dt><span class="sect2"><a href="#moreuserdb" shape="rect">Beyond <code class="literal">userdb</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="#authmysql" shape="rect">The <code class="literal">authmysql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authpgsql" shape="rect">The <code class="literal">authpgsql</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authldap" shape="rect">The <code class="literal">authldap</code> authentication module</a></span></dt><dt><span class="sect1"><a href="#authcustom" shape="rect"><code class="literal">authcustom</code></a></span></dt><dt><span class="sect1"><a href="#options" shape="rect">Account options</a></span></dt><dt><span class="sect1"><a href="#authtest" shape="rect">Running <span class="command"><strong>authtest</strong></span></a></span></dt><dd><dl><dt><span class="sect2"><a href="#pwchange" shape="rect">Changing account passwords</a></span></dt></dl></dd><dt><span class="sect1"><a href="#internals" shape="rect">Authentication internals</a></span></dt><dt><span class="sect1"><a href="#files" shape="rect">FILES</a></span></dt><dt><span class="sect1"><a href="#seealso" shape="rect">SEE ALSO</a></span></dt></dl></div><p>
This library is used for two purposes:</p><p>
1. Read the name of a mail account.
Determine the local account's home directory, and system userid and
</p></dd></dl></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authuserdb" shape="rect"> </a>The <code class="literal">authuserdb</code> authentication module</h2></div></div></div><p>
This module
uses a GDBM or a DB-based
-<a href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a> database.
+<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a> database.
This module also incorporates userdb-based challenge-response authentication
implementation that was done by a separate <code class="literal">authcram</code> module
in previous versions of the Courier authentication library.</p><p>
<code class="filename">@sysconfdir@/authlib/userdb</code> may alternatively be a
directory containing plain text files, which are effectively concatenated
together to form the actual list of accounts.
-The <span><strong class="command">makeuserdb</strong></span> script compiles the account information
+The <span class="command"><strong>makeuserdb</strong></span> script compiles the account information
into a GDBM or DB database file, which can be quickly looked up.</p><p>
<code class="filename">@sysconfdir@/authlib/userdb</code> is loosely equivalent in
function to <code class="filename">/etc/passwd</code> and
Instead, a fast database lookup can retrieve the same information from the
database file.
Review the included manual pages, starting with
-<a href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a>, for more information.</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="userdbprimer" shape="rect"> </a>A brief <code class="literal">userdb</code> primer</h3></div></div></div><p>
+<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a>, for more information.</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="userdbprimer" shape="rect"> </a>A brief <code class="literal">userdb</code> primer</h3></div></div></div><p>
<code class="literal">userdb</code> is a way to implement many virtual mailboxes - many
mailboxes that do not have to have a separate system userid allocated for
each one, and there is no system login associated with each mailbox.
maildirs. It should be scalable to thousands of mailboxes. It can also be
used to replace linear searches of <code class="filename">/etc/passwd</code> with a database
lookup, see
-<a href="pw2userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">pw2userdb</span>(8)</span></a>.</p><p>
+<a class="ulink" href="pw2userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">pw2userdb</span>(8)</span></a>.</p><p>
Note - you still MUST use some valid system userid and groupid that is
shared by all virtual mailboxes. Instead of allocating a single userid and
groupid per each mailbox, the same userid and groupid is used for all of
them.</p><p>
This is a rough overview of using userdb. For additional information, read
-<a href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a>
+<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a>
and
-<a href="makeuserdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">makeuserdb</span>(8)</span></a>. All the scripts will
+<a class="ulink" href="makeuserdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">makeuserdb</span>(8)</span></a>. All the scripts will
be installed in <code class="filename">@sbindir@</code>, so look for them there.</p><p>
The best way to describe how <code class="literal">userdb</code> works is to try to create
one virtual mail account. As mentioned before, virtual mailboxes still need
# chmod 700 @userdb@</pre></div><p>
<code class="filename">@userdb@</code> must have 700 permissions,
since it will contain passwords.</p><p>
-Now, run the script <span><strong class="command">pw2userdb</strong></span>, as root.
+Now, run the script <span class="command"><strong>pw2userdb</strong></span>, as root.
This script converts the
contents of <code class="filename">/etc/passwd</code>
to the <code class="filename">@userdb@</code> format
of <code class="filename">/etc/passwd</code>
in order to look up system accounts. However, you probably don't want to
use this feature right now, so what you want to do is take the output
-of <span><strong class="command">pw2userdb</strong></span>, and find the entry for the vmail account
+of <span class="command"><strong>pw2userdb</strong></span>, and find the entry for the vmail account
that you
created earlier. Look for a line that starts with 'vmail' followed by tab,
followed by familiar fields from <code class="filename">/etc/passwd</code>. Save the
output of
-<span><strong class="command">pw2userdb</strong></span> in a temporary file, edit it, and remove
+<span class="command"><strong>pw2userdb</strong></span> in a temporary file, edit it, and remove
everything
except the line containing vmail, and the very next line, which is a special
entry that maps vmail's userid back to the vmail record.</p><p>
Here's what you might find in the output of
-<span><strong class="command">pw2userdb</strong></span>:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
+<span class="command"><strong>pw2userdb</strong></span>:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
vmail uid=1012|gid=1012|home=/home/vmail|systempw=*
1012= vmail</pre></div><p>
The actual numerical values and the home directory location may vary.
$ exit
#
</pre></div><p>
-You may need to specify a full path to your <span><strong class="command">maildirmake</strong></span>
+You may need to specify a full path to your <span class="command"><strong>maildirmake</strong></span>
program. The end result is that you created
<code class="filename">$HOME/john-example</code> in vmail's account, which
can be thought of as a “<span class="quote">virtual home directory</span>” for
mailbox:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
# userdbpw | userdb "john@example.com" set imappw</pre></div><p>
On most modern Linux and BSD distributions, you can specify the -md5
-option to <span><strong class="command">userdbpw</strong></span>, in order to use MD5 password hashes,
+option to <span class="command"><strong>userdbpw</strong></span>, in order to use MD5 password hashes,
instead of crypt. The traditional password function allows passwords only
up to 8 characters long; everything in excess is ignored.
The newer MD5 passwords, now supported by most modern systems, allow
<code class="filename">@userdb@shadow.dat</code> only. The plain text source,
<code class="filename">@userdb@</code> is not read by Courier itself. Changes take
effect
-only when <span><strong class="command">makeuserdb</strong></span> runs.</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="userdbcomplex" shape="rect"> </a>Large virtual domain farm</h3></div></div></div><p>
+only when <span class="command"><strong>makeuserdb</strong></span> runs.</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="userdbcomplex" shape="rect"> </a>Large virtual domain farm</h3></div></div></div><p>
The previous approach used a single flat file, <code class="filename">@userdb@</code>.
This
will work for up to a couple of hundred accounts.
home=/home/vmail/domains/example-com/john \
uid=UUU gid=GGG</pre></div><p>
This creates the file <code class="filename">@userdb@/example-com</code> (the first
-parameter to the <span><strong class="command">userdb</strong></span> command), and appends a record named
+parameter to the <span class="command"><strong>userdb</strong></span> command), and appends a record named
"john@example.com". You will store all <code class="literal">userdb</code> entries for
<code class="literal">@example.com</code> in the file
<code class="filename">@userdb@/example-com</code>. All
<code class="literal">authpgsql</code>.
Since <code class="literal">userdb</code> is maintained as plain text files that
are easily parsed by a script, migrating data from userdb will not be
-difficult.</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authvchkpw" shape="rect"> </a>The <code class="literal">authvchkpw</code> authentication module</h2></div></div></div><p>
-This module uses
-the <code class="literal">vpopmail/vchkpw</code> library for authentication.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authmysql" shape="rect"> </a>The <code class="literal">authmysql</code> authentication module</h2></div></div></div><p>
+difficult.</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authmysql" shape="rect"> </a>The <code class="literal">authmysql</code> authentication module</h2></div></div></div><p>
This module reads
the list of mail accounts and passwords from a table in a
MySQL database.
modules. Individual account options are not supported with
system-based authentication modules (password/shadow files, or PAM).</p><p>
See the
-<a href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>
+<a class="ulink" href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>
for a description of option names used by various Courier packages.
Other applications can make up names for their own settings, and
use them in the same way.</p><p>
Account options are specified via the authentication modules in the
following manner:</p><div class="variablelist"><dl><dt><span class="term"><code class="literal">userdb</code></span></dt><dd><p>
-Use the <span><strong class="command">userdb</strong></span> command to set a field called
+Use the <span class="command"><strong>userdb</strong></span> command to set a field called
"<code class="literal">options</code>". Example:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
userdb user1@example.com set options=disableimap=1,sharedgroup=44
makeuserdb
the expected option string. An example of such an SQL string is
provided in the comments portion of the configuration file.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
When using the alternative custom query option, the option string
- is the last field that the custom SQL query should return.</p></div></dd></dl></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authtest" shape="rect"> </a>Running <span><strong class="command">authtest</strong></span></h2></div></div></div><p>
-The <span><strong class="command">authtest</strong></span> command may be used to verify that the
+ is the last field that the custom SQL query should return.</p></div></dd></dl></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="authtest" shape="rect"> </a>Running <span class="command"><strong>authtest</strong></span></h2></div></div></div><p>
+The <span class="command"><strong>authtest</strong></span> command may be used to verify that the
authentication library is working:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
authtest userid
authtest userid password
authtest userid password newpassword
authenumerate</pre></div><p>
Running
-<span><strong class="command">authtest</strong></span>
+<span class="command"><strong>authtest</strong></span>
with one argument should display the selected account's
home directory, userid, groupid,
and other related data.
The second argument to
-<span><strong class="command">authtest</strong></span>,
+<span class="command"><strong>authtest</strong></span>,
if supplied, specifies the account's password.
The two argument form of
-<span><strong class="command">authtest</strong></span>
+<span class="command"><strong>authtest</strong></span>
validates the password, and displays an indication whether the given
password is valid, or not.
The three argument form of the
-<span><strong class="command">authtest</strong></span>
+<span class="command"><strong>authtest</strong></span>
command attemps to change the account's password.
The second argument is the old password, the third argument is the
new password.</p><p>
-See <a href="README.authdebug.html" target="_top" shape="rect"><code class="filename">README.authdebug.html</code></a> for more information.</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="pwchange" shape="rect"> </a>Changing account passwords</h3></div></div></div><p>For the virtual domain modules (<code class="literal">authldap</code>,
+See <a class="ulink" href="README.authdebug.html" target="_top" shape="rect"><code class="filename">README.authdebug.html</code></a> for more information.</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="pwchange" shape="rect"> </a>Changing account passwords</h3></div></div></div><p>For the virtual domain modules (<code class="literal">authldap</code>,
<code class="literal">authmysql</code>, <code class="literal">authpgsql</code> and friends) changing the
login is a no-brainer. The tricky situation is when SqWebMail uses system
passwords to log in (the <code class="literal">authpwd</code>, <code class="literal">authshadow</code>, or
use a binary database; other systems use NIS. And on some systems the
password file lookup library is a wrapper that goes against an external LDAP
directory, or a database. For maximum compatibility, SqWebMail changes login
-passwords by running the <span><strong class="command">passwd</strong></span> command. This is the traditinal
-*nix command that changes login passwords. <span><strong class="command">passwd</strong></span> is an
+passwords by running the <span class="command"><strong>passwd</strong></span> command. This is the traditinal
+*nix command that changes login passwords. <span class="command"><strong>passwd</strong></span> is an
interactive command. It's normally run from a terminal.
SqWebMail uses an
-<span><strong class="command">expect</strong></span> script - as mentioned in
+<span class="command"><strong>expect</strong></span> script - as mentioned in
the introduction - to answer interactive
-prompts from <span><strong class="command">passwd</strong></span>. The <span><strong class="command">expect</strong></span> script expects to
-get a plain, garden-variety, <span><strong class="command">passwd</strong></span> command, which acts
+prompts from <span class="command"><strong>passwd</strong></span>. The <span class="command"><strong>expect</strong></span> script expects to
+get a plain, garden-variety, <span class="command"><strong>passwd</strong></span> command, which acts
something like this:</p><div class="informalexample"><pre class="programlisting" xml:space="preserve">
# passwd
Changing password for luser
passwd: all authentication tokens updated successfully
#
</pre></div><p>
-Systems that use a <span><strong class="command">passwd</strong></span> command with very different prompts
-may find that the default <span><strong class="command">expect</strong></span> script will fail. In which case
-it will be necessary to tweak the <span><strong class="command">expect</strong></span> script to match the
-prompts from the system's <span><strong class="command">passwd</strong></span> command.</p><p>
-Modern systems use a <span><strong class="command">passwd</strong></span> command that rejects "bad"
+Systems that use a <span class="command"><strong>passwd</strong></span> command with very different prompts
+may find that the default <span class="command"><strong>expect</strong></span> script will fail. In which case
+it will be necessary to tweak the <span class="command"><strong>expect</strong></span> script to match the
+prompts from the system's <span class="command"><strong>passwd</strong></span> command.</p><p>
+Modern systems use a <span class="command"><strong>passwd</strong></span> command that rejects "bad"
passwords - passwords that are based on dictionary words, are too short, or
are obvious for other reasons. When testing the ability to change
system passwords be sure to use randomly-generated gibberish for the test
-passwords. Otherwise, the default <span><strong class="command">expect</strong></span> script will
+passwords. Otherwise, the default <span class="command"><strong>expect</strong></span> script will
actually be
working, but you won't be the wiser. For security reasons, the actual
-messages from <span><strong class="command">passwd</strong></span> will not be shown by.</p><p>
-The <span><strong class="command">expect</strong></span> script is installed as
+messages from <span class="command"><strong>passwd</strong></span> will not be shown by.</p><p>
+The <span class="command"><strong>expect</strong></span> script is installed as
<code class="filename">/usr/local/libexec/courier-authlib/authsystem.passwd</code>
-(assuming default options to the <span><strong class="command">configure</strong></span> script).</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="internals" shape="rect"> </a>Authentication internals</h2></div></div></div><p>
+(assuming default options to the <span class="command"><strong>configure</strong></span> script).</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="internals" shape="rect"> </a>Authentication internals</h2></div></div></div><p>
The following structure describes an authentication module:</p><div class="blockquote"><blockquote class="blockquote"><div class="example"><a id="authstaticinfo" shape="rect"> </a><p class="title"><b>Example 1. struct authstaticinfo</b></p><div class="example-contents"><pre class="programlisting" xml:space="preserve">
struct authstaticinfo {
const char *auth_name;
The first argument is a pointer to the
<span class="structname">authinfo</span> structure, which is described in detail
in the
-<a href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>
+<a class="ulink" href="auth_generic.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">auth_generic</span>(3)</span></a>
manual page.
The authentication module is responsible for allocating this structure.
After the callback function returns this structure can be deallocated.
then returns. If an error is encountered while enumerating the login IDs,
<code class="function">auth_enumerate</code> terminates without invoking
the callback function with a NULL login ID.</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="files" shape="rect"> </a>FILES</h2></div></div></div><p>
-<code class="filename"> @authdaemonrc@</code> - <span><strong class="command">authdaemond</strong></span> configuration file</p><p>
-<code class="filename"> @authldaprc@</code> - <span><strong class="command">authldap</strong></span> configuration file</p><p>
-<code class="filename"> @authmysqlrc@</code> - <span><strong class="command">authmysql</strong></span> configuration file</p><p>
-<code class="filename"> @authpgsqlrc@</code> - <span><strong class="command">authpgsql</strong></span> configuration file</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="seealso" shape="rect"> </a>SEE ALSO</h2></div></div></div><p>
-<a href="courier.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">courier</span>(8)</span></a>,
+<code class="filename"> @authdaemonrc@</code> - <span class="command"><strong>authdaemond</strong></span> configuration file</p><p>
+<code class="filename"> @authldaprc@</code> - <span class="command"><strong>authldap</strong></span> configuration file</p><p>
+<code class="filename"> @authmysqlrc@</code> - <span class="command"><strong>authmysql</strong></span> configuration file</p><p>
+<code class="filename"> @authpgsqlrc@</code> - <span class="command"><strong>authpgsql</strong></span> configuration file</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="seealso" shape="rect"> </a>SEE ALSO</h2></div></div></div><p>
+<a class="ulink" href="courier.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">courier</span>(8)</span></a>,
-<a href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a></p></div></div></body></html>
+<a class="ulink" href="userdb.html" target="_top" shape="rect"><span class="citerefentry"><span class="refentrytitle">userdb</span>(8)</span></a></p></div></div></body></html>