Courier-IMAP FAQ

$Id: FAQ.html,v 1.8 2001/01/19 06:07:32 mrsam Exp $

Table of contents

Configuration script fails on Solaris in the waitlib subdirectory

This is a self-test check failing. A script tests the semantics of the wait() system call, and fails. Apparently something in Solaris's wait() logic is not working the way I expect it to work. This may or may not be a problem. I don't know yet. You can use the --with-waitfunc=wait3 option to the configure script to bypass this test, but you're own your own.

UPDATE: 5/3/2000, there's a Solaris bug ID that is fixed by a recent kernel update:

      4220394 wait3  library function fails after 248 days

Try installing this update to see if it fixes the problem. Some people reported that this kernel update fixes the configuration failure, but some people reported that the problem still exists.

Netscape Messenger displays an error message when new mail arrives

Use --enable-workarounds-for-imap-client-bugs option to the configure script.

I can't create any top-level folders, only subfolders of INBOX

This is a configuration issue with your mail client. IMAP servers are free to use any folder namespace arrangement that's technically convenient for them. Courier-IMAP uses "INBOX." as the namespace for private folders, and "shared." as the namespace for public, shared, folders. The IMAP NAMESPACE extension (see http://www.rfc-editor.org/rfc/rfc2342.txt) allows IMAP clients to automatically discover where the server creates folders, and your IMAP client should implement it.

This should be completely transparent to you, if your IMAP client properly uses the NAMESPACE extension. If your IMAP client were to automatically take advantage of self-configuration features offered by RFC 2060 and RFC 2342, it would automatically discover, without any additional configuration from the user, that:

  1. The folder namespace hierarchy separator is the . character

  2. Private folders are stored underneath the "INBOX." hierarchy

  3. Public folders are stored underneath the "shared." hierarchy

If you have to explicitly create folders that are subfolders of INBOX, or if you explicitly have to name that "INBOX.foldername", this is due to your IMAP client not being able to configure itself accordingly.

I don't know how to build binary RPMs as non-root

If you're going to build stuff with RPM, then you should really go out and get a copy of the "Maximum RPM" book. It's very out of date, but if you learn the basics, you'll be able to figure the rest out by yourself. The following instructions are applicable to RPM 3.0.4, or higher.

First, you need to create a mirror image of the main RPM directory in your account:

    mkdir $HOME/rpm
    mkdir $HOME/rpm/SOURCES
    mkdir $HOME/rpm/SPECS
    mkdir $HOME/rpm/BUILD
    mkdir $HOME/rpm/SRPMS
    mkdir $HOME/rpm/RPMS
    mkdir $HOME/rpm/RPMS/i386

Use sparc, or alpha, or whatever's appropriate. Finally:

    echo "%_topdir    $HOME/rpm" >> $HOME/.rpmmacros

That's it, now you can build your RPMs:

    rpm -ta courier-imap-0.34.tar.gz

I have OpenLDAP, or OpenSSL, or MySQL installed, but Courier-IMAP does not see it

Courier-IMAP has optional features that use external libraries and products, such as OpenLDAP, MySQL, or OpenSSL. If available, Courier-IMAP can authenticate against an accounts database stored in a MySQL database or an LDAP directory. If OpenSSL is available Courier-IMAP can provide secure IMAP access.

Normally, if the configuration scripts detects that any one of these external libraries is installed, the appropriate code will be automatically compiled and installed. However, for an external library to be detected, it must be installed wherever the C or the C++ compiler looks for libraries.

Courier-IMAP relies on the C or the C++ compiler to detect the availability of a particular library. If, for example, OpenSSL is installed in the directory /usr/local/ssl chances are that the C or the C++ compiler does not usually search this directory for libraries or include files. Most C and C++ search only the directories /lib, /usr/lib, and /usr/include (for include files).

All C and C++ compiler allow you to specify any additional directories to search, beside the default ones. The configuration script uses the environment variables CPPFLAGS, CFLAGS, and LDFLAGS to pass extra options to the compiler's preprocessor, the compiler itself, and the linker.

For example, if OpenSSL's include files are installed in the directory /usr/local/ssl/include, and OpenSSL libraries are installed in /usr/local/ssl/lib, the gcc compiler needs to have the -I/usr/local/ssl/include option for the preprocessor, and the -L/usr/local/ssl/lib option for the linker. So, to have the configuration script detect OpenSSL, use the following commands:

CPPFLAGS="-I/usr/local/ssl/include"
LDFLAGS="-L/usr/local/ssl/lib"
export CPPFLAGS
export LDFLAGS
./configure [ options ]


The same applies for OpenLDAP, MySQL, and any other library. The configuration script does not maintain a list of all the non-standard locations where various libraries get installed by default, because that's subject to change at any time. The configuration script will expect that either the optional libraries (runtime and development) are installed in the default locations that are searched by the compiler, or that additional flags are explicitly specified by the installer.

Configuration script reports the following error, and stops: "Cannot find either the gdbm or the db library"

Courier-IMAP requires either the GDBM library or the Berkeley DB library to be installed. If you have the library installed, it is possible that it is installed in a non-standard location. See the "I have OpenLDAP, or OpenSSL, or MySQL installed" question for how to resolve this situation.

Configuration script fails in the gdbmobj or bdbobj subdirectory.

There are two possible causes of this error:

Although Courier-IMAP is written in C, some self-test scripts are written in C++. It is necessary to have a working C++ compiler and libraries installed in order to compile Courier-IMAP

Another reason for this error is that the GDBM or the Berkeley DB library is not installed in a directory that is searched by the C and C++ compilers, by default. See the "I have OpenLDAP, or OpenSSL, or MySQL installed" question for how to resolve this situation.