
                               Courier-IMAP FAQ
                                       
$Id: FAQ.html,v 1.7 2000/08/29 02:01:32 mrsam Exp $

Table of contents

     * Configuration script fails on Solaris in the waitlib subdirectory
     * Netscape Messenger displays an error message when new mail arrives
     * I can't create any top-level folders, only subfolders of INBOX
     * I don't know how to build binary RPMs as non-root
     * I have OpenLDAP, or OpenSSL, or MySQL installed, but Courier-IMAP
       does not see it
     * Configuration script reports the following error, and stops:
       "Cannot find either the gdbm or the db library"
     * Configuration script fails in the gdbmobj or bdbobj subdirectory.
       
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 user-interface design 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:
     * A C++ compiler is not installed.
     * The corresponding library is installed in a non-standard location.
       
   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.
