Jim Grishaw 7/1/02 University of Washington IMAP 4rev1 server for Cygwin ----------------------------------------------- This is a port of the UW IMAP Server to the Cygwin platform. Cygwin is a UNIX overlay for Windows 98/NT/2000 (see www.cygwin.com). Installing the Pre-compiled Binaries: ------------------------------------- The pre-compiled binaries were compiled under Cygwin v1.1.8 and gcc version 2.95.3-2, but will probably work under most later versions of Cygwin (v1.1 and above). To install the pre-compiled binaries, cd to / and do: bash$ tar xvzf imap-2000-cygwin-bin.tar.gz Re-compiling from the sources: ------------------------------ To re-compile the binaries from the sources, cd to usr/local/src/imap-2000/imap-2000a and type "make cyg". This will make the 4 daemons targeted for the sbin directory: imapd.exe, ipop2d.exe, ipop3d.exe, and mtest.exe. To compile the imap utilities you must cd to usr/local/src/imap-2000 and do: bash$ (cd chkmail; make) bash$ (cd dmail; make) bash$ (cd icat; make) bash$ (cd ifrom; make) bash$ (cd imapcopy; make) bash$ (cd imapxfer; make) bash$ (cd mbxcopy; make) bash$ (cd mbxcreat; make) bash$ (cd mbxcvt; make) bash$ (cd mlock; make) bash$ (cd tmail; make) IMAPD Installation/Setup Tips: ----------------------------- (1) Make sure the following lines exist in your /etc/passwd file: Everyone:*:0:0:,S-1-1-0:: SYSTEM:*:18:18:,S-1-5-18:: (The important points are that Everyone have uid 0 and SYSTEM must have UID 18.) (2) Note that unlike some other Cygwin daemons (e.g. telnetd), imapd DOES use the password field in /etc/passwd to do its authentication. Use Cygwin's /bin/crypt and ensure that these fields are properly filled out for each active user. (3) If you do NOT want to use md5 authentication (NOT recommended under windows because the passwords are stored in unencrypted format), make sure the file "/etc/cram-md5.pwd" does NOT exist. (4) All directories where you have mail MUST be mounted as "binmode". Otherwise, your mail folders will be corrupted. imapd.exe cannot deal with the extra ^M's that come from text-mounted filesystems. (5) Likewise, do not use "inetlisn.exe" because you will again have trouble with the ^M's at the end of each line. (6) Make sure that your /etc/inetd.conf file contains the following line: imap stream tcp nowait root /usr/local/sbin/imapd Also make sure that the Cygwin inetd daemon is properly running (refer to the Cygwin inetd installation instructions in /usr/doc/Cygwin/inetutils-1.3.2.README). (7) Make sure that the file //C/WINNT/system32/drivers/etc/SERVICES contains the line: imap 143/tcp (8) If you are running Win2K and want to run Netscape on the server to access imapd, you could end up with performance problems. When I tried I ended up having to wait up to 30 seconds just top open a mailbox! The problem is that Netscape utilizes 100% of the CPU while it is waiting for responses from imapd, and unfortunately the way the default process priorities are set up on Win2K, Netscape can starve the imapd daemon so it can't get any CPU resources. This can be fixed by using nice to invoke Netscape with a lower process priority, i.e.: "D:\Cygwin\usr\local\bin\run" nice --adjustment=1 "//D/Program Files/Netscape/Communicator/Program/netscape.exe" (You can get the "run.exe" program from the CygUtils web site.) Again this should only be a problem if you are running Netscape on the same machine that you are running imapd, and this problem was only observed on Windows 2000 (Windows NT seemed to work fine). (9) Folks wanting to implement a complete mail server are encouraged to consider the EXIM "Mail Transfer Agent" (MTA) to handle incoming and outgoing SMTP. For more information see http://www.exim.org, and the EXIM port to Cygwin at: ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/porters/Humblet_Pierre_A/V1.1/ (If this link breaks at some point in the future, go to the Cygwin web site at www.cygwin.com, click on the "more software" link, and look for the list of programs maintained by Michael Hirmke.) The UW IMAP Server will expect new mail to be delivered to the user's inbox at /var/mail/. (10) That's it! Enjoy. Acknowledgements: ----------------- This port to the Cygwin platform is based Adrian Hall's port. Special thanks to Adrian Hall for his original work. Revision log, starting with Adrian Hall's port: ------------------------------------- Aug 24, 2001 (Revision "A0"): (1) Fixed various problems with flock(): (a) Changed to fcntl_flock() instead of flock() since flock() is not POSIX and does not exist in Cygwin. (b) Made changes to compensate for the different behavior of the Cygwin fcntl_flock() vs the standard UNIX fcntl_flock(). (c) Removed flockbsd.c from compilation since Cygwin can't compile it. (2) Since setuid() and setgid() do not work with Cygwin (or at least they don't work with ntsec turned off), patched calling routines so that they would at least return "success" codes. Jan 12 2002 (Revision "A1"): (1) Made changes in env_unix.c so that uid 18 ("SYSTEM" user) is treated as "root", and it is no longer necessary to change the "SYSTEM" user to uid 0 in the /etc/passwd file. Apr 8 2002 (Revision "A2"): (2) Made changes in tz_cyg.c to fix imapd.exe crashes that were occurring at startup on some systems. July 1 2002 (Revision "A3"): (1) Changed CRXTYPE from "nfs" to "std" so that lock files would be properly created on FAT file systems.