
                               Courier-IMAP FAQ

$Id: FAQ.html,v 1.12 2001/06/25 21:44:46 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.
     * Asking for help on the courier-users mailing list

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:
     * 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.

  Asking for help on the courier-users mailing list

   A:  The  courier-users  mailing list should be the first place to look
   for  assistance  with resolving any issues. You only need to observe a
   few  simple rules in order to increase your chances of getting a quick
   and helpful response:
    1. Subscribe to the mailing list before you ask any questions. If you
       are  not  subscribed,  you  will  not receive any replies that are
       mailed to the list only.
    2. Do  not  send HTML E-mail messages, unless you want many people to
       automatically  delete  them,  unread. If you are using MS-Outlook,
       turn off HTML formatting before sending mail to the list.
    3. Before sending a question, check it to make sure that your message
       does  not  contain  the  words  "doesn't  work."  Saying only that
       something doesn't work is not very useful in trying to analyze the
       problem.  If  something isn't working correctly, merely stating it
       will  not  make  much  progress. Be sure to always include in your
       messages:
          + The contents of any related configuration files.
          + What  happens,  exactly,  that makes you think that something
            isn't working right.
          + The   contents   of   your   system   log  file  (syslog,  or
            /var/log/messages).
          + Be  sure  to  describe  any non-standard modifications to the
            operating  system  you're using, such as a kernel hacked with
            one   of   several   varieties  of  the  OpenWall  patch,  or
            filesystema mounted with a no-suid option. Many problems turn
            out  to  be  unintentional  conflicts with various unexpected
            side-effects  of  these  custom  modifications (but not after
            wasting a great deal of time chasing ghosts).
    4. Do not send large attachments (over 10K bytes is a rule of thumb),
       to  the  list.  Put it somewhere - on the web or on a FTP server -
       and include a link in your message instead.
    5. Always mention what you've already tried to do in order to fix the
       problem.  People  are  more  likely  to help you if they know that
       you've  made some effort to figure it out by yourself, and you are
       only asking for help after running into a dead end.
    6. If  you  do  not  get  an  answer  in  one hour, don't resend your
       message.  If  people open their mailbox and see five copies of the
       same  message, they'll be ignored. Have patience. Either wait some
       more,  or accept it as a fact of life. Try again to figure out the
       answer on your own. You can certainly ask again after you've tried
       to  figure  it out once more, and still didn't get anywhere. Don't
       just  write  again,  and  simply  say  that it still doesn't work.
       Provide  some  additional  information,  showing  what else you've
       tried to do, to no avail.
