mini-HOWTO install Cyrus IMAP Server
 Kevin Mitchell ([email protected])
 v0.9, 21 January 1998

 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 ([email protected]) and Jorge
 Paramo ([email protected]) 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:
 [1]http://www.imap.org/whatisIMAP.html

 A comparision of IMAP & POP can be found here:
 [2]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.
 [3]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
 [4]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:
 [5]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 PERFORMANCE 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 < @ $=w . >                $: $#local $: $1
 Rbb + $+ < @ $=w . >            $#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 [6]http://andrew2.andrew.cmu.edu/cyrus/imapd/

 �  You can download the latest version from
    [7]ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/

 �  The Tcl home page is [8]http://sunscript.sun.com/

 �  You can download the latest tcl source from
    [9]ftp://ftp.sunlabs.com/pub/tcl/

 �  The Sendmail home page is [10]http://www.sendmail.org/

 �  You can download the latest version from
    [11]ftp://ftp.sendmail.org/ucb/src/sendmail/

References

  1. http://www.imap.org/whatisIMAP.html
  2. http://www.imap.org/imap.vs.pop.brief.html
  3. ftp://ftp.cac.washington.edu/imap/imap.tar.Z
  4. ftp://ftp.sunlabs.com/pub/tcl/
  5. http://andrew2.andrew.cmu.edu/cyrus/imapd/install.html
  6. http://andrew2.andrew.cmu.edu/cyrus/imapd/
  7. ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
  8. http://sunscript.sun.com/
  9. ftp://ftp.sunlabs.com/pub/tcl/
 10. http://www.sendmail.org/
 11. ftp://ftp.sendmail.org/ucb/src/sendmail/