Installing Courier-IMAP from RPM 
       With RPMs, it is important to get one that matches the distribution in use. Using 
        an RPM for another distribution may not work correctly, and may also make 
        existing software unstable. 
       To locate an RPM of Courier-IMAP, first check if one is provided by the Linux 
        distributer. If so, then download and use it. If the vendor does not provide 
        a package, then it is possible that another may be provided. To check 
        this, search the web. There is a database of RPMs available at www.rpmfind.net, 
        and by searching for "courier", coupled with the name of the 
        distribution, will locate any suitable packages. It is best to only use 
        a package designed for a particular version of a distribution, for example 
        a package for Mandrake Linux 8.0 should not be used for Mandrake Linux 
        8.1. If in doubt, it is best to install Courier-IMAP from source, as described 
        in the next section. 
       To install Courier-IMAP from RPM, firstly download the RPM, and use a command 
        prompt to change to the directory containing the file. As root, use the 
        rpm command to install the RPM: 
       # rpm -ivh Courier-imap-mandrake-8.1.rpm 
       The RPM command may fail as prerequisite software may be required. In this case, 
        the output will name the software required. The appropriate package can 
        be downloaded and installed using the rpm command as above. Once all prerequisite 
        software has been installed, then courier-imap can be installed using 
        the rpm command shown above. 
       Due to the complexities of managing dependent packages, a graphical interface 
        can be used to install Courier-IMAP. This may only work for Courier-IMAP 
        if the RPM is provided by the distributer, but should be successful in 
        installing prerequisite software. 
       If the rpm command was used to install Courier, then it can be used to uninstall 
        it. The command will be similar to the following: 
       # rpm -e Courier-IMAP 
     
     
       Installing Courier-IMAP from source 
       
        Installing Courier-IMAP from source is not a difficult task on a modern Linux 
        distribution. On older versions of Linux, and on other Unix platforms 
        such as AIX, Solaris, and HP/UX, problems may arise, particularly if the 
        rest of the system software is not up to date. 
       
         Prerequisites 
         The following are required to install Courier-IMAP: 
        
          -  A working C++ compiler. We recommend the Gnu C ++ Compiler, which is part of 
            virtually every Linux distribution and is available free for most 
            platforms. If an RPM or other package of gcc is available (and it 
            almost certainly will) then it should be used in preference to building 
            from source. 
-  A make utility. We recommend the gnu make utility, which will be available for 
            most platforms, or can be downloaded from www.gnu.org/software/gcc/gcc.html 
-  The Gnu linker, available from www.gnu.org/software/binutils/. 
-  Gnu libtool, available from www.gnu.org/software/libtool/. 
-  Either the Berkeley DB library or the GDBM library. These are libraries that 
            allow programs to make databases in files. Again, these should be 
            available in packaged form, but can be downloaded from www.sleepycat.com 
            and http://www.gnu.org/software/gdbm/gdbm.html respectively. One or 
            both of these will almost certainly be installed already. 
-  The Courier source code. 
 To successfully install Courier-IMAP, all the prerequisites must be installed 
          first. 
       
       
         Installing Courier-IMAP versions below 4.0 from source 
         In January 2005, Courier-IMAP 4.0 was introduced. Generally, when a major version 
          of an open-source package is released, distributions tend delay implementing 
          it for a period of months or even years. However, the new package always 
          offers major improvements and new features. We recommend that you install 
          the latest version available, wherever possible. Often, only the latest 
          version of a package is actively maintained, and bugs or security errors 
          in a package may only be fixed in the latest version. For an application 
          which listens for connections on an Internet connection, security vulnerabilities 
          can be very serious. 
         However, there are often good reasons for using an older version -documentation 
          is abundant and help is often readily available. An older version often 
          has a "tried and tested" reputation that is appealing. 
         If you wish to install a version of Courier-IMAP below 4.0, then the instructions 
          are similar to below, but there is no need to download and install the 
          Courier Authentication library. Please skip the following section and 
          proceed to "Building Courier-IMAP" 
       
       
         Building the Courier Authentication Library 
         
 
         There are two phases to installing Courier-IMAP. First of all, the Courier authentication 
          library, called Courier-authlib, must be built. Once this is done, Courier-IMAP 
          can be installed. 
         The Courier-authlib source should be downloaded from www.courier-mta.org/authlib/. As with many open-source packages, the Courier 
          Authentication Library uses a configuration script to detect system 
          capabilities, then uses the make command to build and install the software. 
          
         To build the Courier Authentication Library, enter the following commands. You 
          should see responses similar to those below: 
          
 
        
          
 
        
          
 
        
          
 
        
         checking for a BSD-compatible install... /bin/install -c 
         checking whether build environment is sane... yes 
         checking for gawk... gawk 
         ... (lots more output appears) 
         config.status: creating authlib.html 
         config.status: executing depfiles commands 
         config.status: creating README_authlib.html 
         config.status: executing depfiles commands 
          
 
        
          
 
        
         make[1]: Entering directory `/tmp/courier-authlib-0.52-r1/ 
         Making all in libltdl 
         make[2]: Entering directory `/tmp//courier-authlib-0.52/libltdl' 
         make all-am 
         make[3]: Entering directory `/tmp/courier-authlib-0.52/libltdl' 
         ( lots more output) 
         cp imap/pop3d.cnf . 
         cp -f ./maildir/quotawarnmsg quotawarnmsg.example 
         make[2]: Leaving directory `/var/tmp/portage/courier-imap-4.0.1/work/courier
         imap-4.0.1' 
         make[1]: Leaving directory `/var/tmp/portage/courier-imap-4.0.1/work/courier
         imap-4.0.1' 
          
 
        
          
 
        
         Making install in numlib 
         make[1]: Entering directory `/var/tmp/portage/courier-imap-4.0.1/work/courier
         imap-4.0.1/numlib' 
         make[2]: Entering directory `/var/tmp/portage/courier-imap-4.0.1/work/courier
         imap-4.0.1/numlib' 
         ( lots more output) 
         usr/sbin/imaplogin 
         usr/sbin/pop3login 
         usr/sbin/courier-imapd 
         usr/sbin/courier-pop3d 
         usr/lib/courier-imap/makedatprog 
         usr/lib/courier-imap/couriertcpd 
         usr/bin/maildirmake 
         # 
         
          After the commands have executed successfully, the Courier Authentication Library 
          will be installed. Before it can be started, some configuration is required. 
          
       
       
         Configuring the Courier Authentication Library 
         Several decisions need to be made once the authentication library is installed. 
          
         The Courier Authentication Library provides the system administrator with flexibility 
          in how to authenticate users. Authentication is when a user proves their 
          identity, typically by providing a valid username and corresponding 
          password. The following options are available: 
        
           
            | Authentication Method | Description | 
           
            | authshadow | Most Linux distributions hold user passwords in a system file called /etc/shadow 
              by default. Using authshadow for authentication validates passwords 
              against system accounts. This is suitable only when users have system 
              accounts – i.e. they can log onto the machine using telnet or ssh. | 
           
            | authpwd | On older systems, passwords were stored in the /etc/passwd file. The authpwd 
              module allows users to be authenticated against their system password. 
              Again, users must have system accounts. | 
           
            | authuserdb | Unlike authshadow, where each user needs a system account, authuserdb stores 
              user details seperately from the system accounts. This allows a 
              ”virtual mailbox” facility, where users can be defined without having 
              real accounts on the machine. A number of scripts are used to administer 
              the database, which is held in two files. | 
           
            | Authmysql | This is similar to authuserdb, but uses a MySQL database instead of the files 
              used in authuserdb. MySQL is a popular relational database provided 
              by most Linux distributions, and offers both advantages and disadvantages 
              over the | 
           
            | authpam | Authentication is provided by the programmable access method (PAM) library. PAM 
              is a commonly used library, and should be provided by most Linux 
              distributions. Pam is flexible, and can in turn authenticate users 
              from a variety of sources, including the system password database 
              (typically the /etc/passwd file). | 
           
            | authcustom | This allows the system administrator to develop their own, custom authentication 
              method. | 
        
         Choosing an authentication method can be a difficult decision. Here a re some 
          guidelines: 
        
          -  If all users will have system accounts, then authshadow, authpwd or authpam can 
            be used. If PAM is already installed and configured, then it should 
            be used in preference. 
-  If a virtual email system is required, then use either authdb, or authmysql. 
            For small sites, there is little advantage in choosing authmysql over 
            authdb. 
 In this book, only simple authentication with authshadow (or authpwd) is covered, 
          although if PAM is installed and configured, then no additional configuration 
          will be required. Authuserdb and authmysql require further configuration, 
          which is described in the documentation for the authentication library. 
          
         The directory /usr/local/etc/courier/authlib contains the configuration files 
          for the Courier authentication library. For security purposes, it's 
          best to make the whole directory readable only by certain users. The 
          default authdaemonrc file can be copied from the installation directory. 
          
         # mkdir -p /usr/local/etc/courier/authlib# chown mail:mail /usr/local/etc/courier/authlib/# chmod 755 /usr/local/etc/courier/authlib/# cp /tmp/courier-authlib-0.52/authdaemonrc /usr/local/etc/courier/authlib
         To complete the configuration, edit the file /usr/local/etc/courier/authlib/authdaemonrc 
          and alter the following entries as appropriate: 
         authmodulelist="authshadow"daemons=3authdaemonvar=/var/lib/courier/authdaemonDEBUG_LOGIN=0DEFAULTOPTIONS=""
         In the line beginning authmodulelist, enter only the module(s) that you wish 
          to use. 
         The daemons= line lists how many processes should wait to authenticate users. 
          Unless there will be a very high number of users, a value of 3 to 5 
          should suffice. The bigger the number of daemons, the more memory will 
          be used up by the authentication library, and there will be less available 
          for other processes, which may affect overall system performance. 
         The authdaemonvar line lists where the courier authentication library places 
          its run-time files, in particular the socket used to connect to it. 
          The directory listed here (in this example, it is /var/lib/courier/authdaemon) 
          should exist and be only readable by the root user. Use the following 
          commands as root to create the directory: 
         # mkdir -p /var/lib/courier/authdaemon# chmod 750 /var/lib/courier/authdaemon# chown mail:mail /var/lib/courier/authdaemon
         For security purposes, it's best to make the authdaemonrc file readable only 
          by certain users: 
         # chown mail:mail /usr/local/etc/courier/authlib/authdaemonrc 
         The authentication daemon needs to be started when the system boots. Typically, 
          a script is placed in /etc/init.d/ to enable easy starting and stopping 
          of a daemon. A sample script is included with the source of the authentication 
          library, in ./courier-authlib.sysvinit. 
         This file should be placed in /etc/init.d: 
         # cd /tmp/courier-authlib-0.52# cp courier-authlib.sysvinit /etc/init.d/courier-auth
         The service can in future be started and stopped with the commands: 
         # /etc/init.d/courier-auth start# /etc/init.d/courier-auth stop
         
          Initially, we should run the daemon directly from the command line. Any errors 
          will then be displayed. 
         # /usr/local/sbin/authdaemond start /usr/local/sbin/authdaemond: line 16: /usr/local/etc/authlib/authdaemonrc: 
          No such file or directory 
         In the example above, the /usr/local/etc/authlib/authdaemonrc file was missing. 
          
         If the service is started correctly, then it can be stopped by passing it the 
          parameter stop: 
         # /usr/local/sbin/authdaemond stop 
         To get the service to automatically start as Linux boots, consult the documentation 
          for the distribution. On RedHat systems, the service command can be 
          used to configure a service to start automatically: 
         # service courier-auth add default 
         For other distributions, the chkconfig command might be used: 
         # chkconfig -add imapd