
  mini-HOWTO install Cyrus IMAP Server
  Kevin Mitchell (kevin@iserv.net)
  v0.9 21.01.98

  This documentation is to offer some help in installing the Cyrus
  IMAP Server on a Linux machine.

  1.  Introduction

  I would like to thank Bob Anderson (boba@iserv.net) and Jorge
  Paramo (jorge@iserv.net) for helping me in my various Linux
  adventures.

  What is IMAP and why should I use it?

  IMAP (Internet Message Access Protocol) is a method of accessing
  electronic mail or bulletin board messages that are kept on a mail
  server.  IMAP is seen by many as a replacement for POP (Post Office
  Protocol) mail.  IMAP allows users to access their e-mail from
  different computers without having to download it.  This method of
  mail access is more secure and offers many benefits to the end user.

  A more indepth answer can be found at:
  http://www.imap.org/whatisIMAP.html

  A comparision of IMAP & POP can be found here:
  http://www.imap.org/imap.vs.pop.brief.html

  Why use the Cyrus server?

  Cyrus is designed to be run on a server where normal users are not
  permitted to log in.  Cyrus also seems to be among the two most
  popular IMAP servers for Unix.  The University of Washington IMAP
  Server is the other.
  ftp://ftp.cac.washington.edu/imap/imap.tar.Z

  2.  My System Details

  I have successfully installed Cyrus on both 486DX66 and Pentium
  machines running Linux Kernel 2.1.79 and 2.0.33 respectively.  These
  machines were originally based upon Slackware 3.4.

  3.  Tcl Installation

  Make sure that you have Tcl installed on your machine before
  attempting to install Cyrus - otherwise you will not be able to use
  the Cyrus Admin Tool (cyradm).

  You can find the latest tcl source at
  ftp://ftp.sunlabs.com/pub/tcl/

  After installation, make sure that the file libtcl.a is found in the
  /usr/local/lib/ directory.  Tcl 8.0 makes a file called libtcl8.0.a
  to which you should create a soft link using the following command:

        # ln -s libtcl8.0.a libtcl.a

  4.  makedepend Installation

  Check your system for the makedepend command.  If you don't have it,
  don't worry - it comes with the Cyrus source.  (I didn't have it on
  my installations of Slackware 3.4)

  To install makedepend, extract the Cyrus distribution, change to the
  makedepend directory, and enter the following sequence of commands:

        ./configure
        make
        cp ./makedepend /usr/local/bin/makedepend

  5.  Cyrus Installation

  Follow the instructions that come with the Cyrus distribution
  carefully.  You can find a copy of them online at:
  http://andrew2.andrew.cmu.edu/cyrus/imapd/install.html

  Some tips for some of the steps:

  If you are running Slackware 3.4 (with Shadow Passwords), make sure
  that you configure in this way:

        ./configure --with-login=unix_pwcheck

  make is pretty straight forward:

        make depend
        make all CFLAGS=-O

  Step 1:  When adding the user cyrus, I locked down the account to
  help minimize any security holes.

  Step 3:  I edited the /etc/syslog.conf file rather than copy theirs.

  Step 9:  With Linux, make sure to start up pwcheck in this way
  otherwise the server will not work right:

        umask 0;/usr/cyrus/bin/pwcheck &
        umask 022

  Then add it to a startup script like this:

        if [ -f /usr/cyrus/bin/pwcheck ]; then
        echo -n "Starting pwcheck for imap"
        umask 0;/usr/cyrus/bin/pwcheck &
        umask 022
        fi

  I put mine in /etc/rc.d/rc.local and it works well.

  Step 12:  When editing the /etc/inetd.conf, make sure to include
  the TCP Wrappers in your line like this:

  imap    stream  tcp     nowait  cyrus   /usr/sbin/tcpd  /usr/cyrus/bin/imapd
imap

  And don't forget to kill -HUP inetd after you are done making your
  addition:

        # ps ax | grep inetd
           61  ?  S    0:00 /usr/sbin/inetd
        # kill -HUP 61

  6.  Sendmail Configuration

  Download the sendmail source if you don't already have it.  Besides
  running IMAP, you can do fun things like setting up anti-spam measures.

  Here is my mc file.  It will deliver mail to the IMAP location unless
  there is an entry of that username in the /etc/sendmail.cN file.  This
  allows system accounts like root to keep their mail in a spool;
  however, user accounts use IMAP by default.  Do not simply copy & paste
  this code because sendmail will compain about spaces being used rather
  than tabs:

  divert(-1)
  #
  #       (C) Copyright 1995 by Carnegie Mellon University
  #
  #                      All Rights Reserved
  #
  # Permission to use, copy, modify, and distribute this software and its
  # documentation for any purpose and without fee is hereby granted,
  # provided that the above copyright notice appear in all copies and that
  # both that copyright notice and this permission notice appear in
  # supporting documentation, and that the name of CMU not be
  # used in advertising or publicity pertaining to distribution of the
  # software without specific, written prior permission.
  #
  # CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  # CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  # ARISING OUT OF OR IN CONNECTION WITH THE USE OR P ERFORMANCE OF THIS
  # SOFTWARE.
  #
  #       Contributed to Berkeley by John Gardiner Myers .
  #
  #       This sample mc file is for a site that uses the Cyrus IMAP server
  #       exclusively for local mail.
  #

  divert(0)dnl
  VERSIONID(`@(#)cyrusproto.mc    8.3 (Carnegie Mellon) @(#)cyrusproto.mc 8.3')
  OSTYPE(linux)
  define(`confBIND_OPTS',`-DNSRCH -DEFNAMES')
  FEATURE(nouucp)
  FEATURE(nocanonify)
  FEATURE(always_add_domain)
  MAILER(smtp)
  MAILER(local)
  MAILER(cyrus)

  define(`confLOCAL_MAILER',`cyrus')

  LOCAL_RULE_0
  R$=N                            $: $#local $: $1
  R$=N                 $: $#local $: $1
  Rbb + $+             $#cyrusbb $: $1

  LOCAL_CONFIG
  FN /etc/sendmail.cN

  # end of mc file

  After making the /etc/sendmail.cf file, create a file called
  /etc/sendmail.cN and put in the username of accounts that do not
  wish to use the IMAP delivery method:

        root
        majordom
        stan
        mothra

  After installing Sendmail 8.8.8 I also installed mail.local as
  my local delivery program for these other accounts.  There is
  a trick to making mail.local.  Change to the mail.local directory
  in the sendmail source and do the following:

        cp Makefile Makefile.orig
        cp Makefile.dist Makefile
        make
        cp mail.local /bin/mail.local
        chmod 4555 /bin/mail.local

  After all of this is done, go ahead and restart sendmail.

  Don't forget to finish the Cyrus installation instructions.

  7.  Setting up mailboxes

  Make sure to follow the tests for the IMAP server. If everything
  looks acceptable, go ahead and set up some mailboxes.

  8.  Disclaimers

  No guarantees, no money back, use at your own risk.

  9.  Sources

  Required Packages

  ·  The Cyrus home page is http://andrew2.andrew.cmu.edu/cyrus/imapd/

  ·  You can download the latest version from
     ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/

  ·  The Tcl home page is http://sunscript.sun.com/

  ·  You can download the latest tcl source from
     ftp://ftp.sunlabs.com/pub/tcl/

  ·  The Sendmail home page is http://www.sendmail.org/

  ·  You can download the latest version from
     ftp://ftp.sendmail.org/ucb/src/sendmail/
