imapext-2007

diff docs/BUILD @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/docs/BUILD	Mon Sep 14 15:17:45 2009 +0900
     1.3 @@ -0,0 +1,491 @@
     1.4 +/* ========================================================================
     1.5 + * Copyright 1988-2007 University of Washington
     1.6 + *
     1.7 + * Licensed under the Apache License, Version 2.0 (the "License");
     1.8 + * you may not use this file except in compliance with the License.
     1.9 + * You may obtain a copy of the License at
    1.10 + *
    1.11 + *     http://www.apache.org/licenses/LICENSE-2.0
    1.12 + *
    1.13 + * 
    1.14 + * ========================================================================
    1.15 + */
    1.16 +
    1.17 +			 BUILD AND INSTALLATION NOTES
    1.18 +			 Last Updated: 15 November 2007
    1.19 +
    1.20 +Table of Contents:
    1.21 +1. UNIX Build Notes
    1.22 +2. UNIX Installation Notes
    1.23 +3. Win32 Build Notes
    1.24 +4. Win32 Installation Notes
    1.25 +5. Inactive Ports (TOPS-20, VMS)
    1.26 +6. Other ports (Macintosh, DOS/Win16, Windows CE, Amiga, OS/2)
    1.27 +
    1.28 +
    1.29 +			       UNIX BUILD NOTES
    1.30 +
    1.31 +     The default build on many systems with IPv4 only.  To build with IPv6,
    1.32 +add "IP=6" to the make command line, e.g.
    1.33 +	make lnp IP=6
    1.34 +
    1.35 +     The default build is to build with SSL and disabling plaintext passwords
    1.36 +unless SSL/TLS encryption is in effect (SSLTYPE=nopwd).  This means that
    1.37 +OpenSSL MUST be installed before building the IMAP toolkit.  Please refer to
    1.38 +the SSLBUILD file for more information.
    1.39 +
    1.40 +     To build without SSL, add "SSLTYPE=none" to the make command line.
    1.41 +Note that doing so will produce an IMAP server which is NON-COMPLIANT with
    1.42 +RFC 3501.
    1.43 +
    1.44 +     You must build through the top-level imap-2007/Makefile, which will run
    1.45 +a "process" step the first time and create the imap-2007/c-client,
    1.46 +imap-2007/ipopd, and imap-2007/imapd directories in which building actually
    1.47 +takes place.
    1.48 +
    1.49 +     Before doing a make on UNIX, you should read imap-2007/Makefile and see
    1.50 +if your system type is known.  The various system types are three-letter codes.
    1.51 +If your system type is known, then use this as the make option.  After the
    1.52 +first time you do a make, this option is remembered in a file called OSTYPE,
    1.53 +so just typing "make" suffices.
    1.54 +
    1.55 +     For example, if you are using a more or less modern Linux system, your
    1.56 +system type is probably one of the specific distribution types (such as lrh for
    1.57 +RedHat).  For more generic builds, try slx (shadow passwords only) or lnp (PAM).
    1.58 +To build for RedHat, do:
    1.59 +	make lrh
    1.60 +
    1.61 +     There are other make options, described in imap-2007/src/osdep/Makefile.
    1.62 +
    1.63 +     It's probably best to see if an existing port will work on your system
    1.64 +before inventing a new port.  Try:
    1.65 +	sv4		generic SVR4, non-ANSI compiler
    1.66 +	a32		modern SVR4
    1.67 +	bsd		basic 4.3 BSD, non-ANSI compiler
    1.68 +	bsf		modern BSD
    1.69 +
    1.70 +     If you must invent a new port, you need to create an entry in
    1.71 +imap-2007/Makefile and imap-2007/src/osdep/Makefile for your new port, as
    1.72 +well as osdep/os_???.h and osdep/os_???.c files with the appropriate
    1.73 +OS-dependent support for that system.  You also need to determine which setup
    1.74 +process to use.  You should use the ua process unless you are sure that your
    1.75 +compiler supports *ALL* aspects of ANSI C prototyping.  Note that some
    1.76 +compilers, such as Ultrix, support some aspects of ANSI C but not others;
    1.77 +c-client really beats on the full prototyping capability of ANSI C so you
    1.78 +have to use the non-ANSI source tree for such systems.
    1.79 +
    1.80 +     If you send a new port back to us, we will make it available for others
    1.81 +who use your particular system type.
    1.82 +
    1.83 +     The mbox driver is now enabled by default.  If the file "mbox" exists on
    1.84 +the user's home directory and is in UNIX mailbox format, then when INBOX is
    1.85 +opened this file will be selected as INBOX instead of the mail spool file.
    1.86 +Messages will be automatically transferred from the mail spool file into the
    1.87 +mbox file.  To disable this behavior, delete "mbox" from the EXTRADRIVERS list
    1.88 +in the top-level Makefile and rebuild.
    1.89 +
    1.90 +     WARNING: The SVR2 (sv2) port is *incomplete*.  SVR2 does not appear to
    1.91 +have any way to do ftruncate(), which is needed by the mbox, mbx, mmdf, mtx,
    1.92 +tenex, and unix drivers.
    1.93 +
    1.94 +			   UNIX INSTALLATION NOTES
    1.95 +
    1.96 +     Binaries from the build are:
    1.97 +	imap-2007/mtest/mtest		c-client testbed program
    1.98 +	imap-2007/ipopd/ipop2d		POP2 daemon
    1.99 +	imap-2007/ipopd/ipop3d		POP3 daemon
   1.100 +	imap-2007/imapd/imapd		IMAP4rev1 daemon
   1.101 +
   1.102 +     mtest is normally not used except by c-client developers.
   1.103 +
   1.104 +STEP 1:	[x]inetd setup
   1.105 +
   1.106 +     The ipop2d, ipop3d, and imapd daemons should be installed in a system
   1.107 +daemon directory and invoked by a listener such as xinetd or inetd.  In the
   1.108 +following examples, /usr/local/etc is used).
   1.109 +
   1.110 +STEP 1(A): xinetd-specific setup
   1.111 +
   1.112 +     If your system uses xinetd, the daemons are invoked by files in your
   1.113 +/etc/xinetd.d directory with names corresponding to the service names (that
   1.114 +is: imap, pop2, pop3).  You will need to consult your local xinetd
   1.115 +documentation to see what should go into these files.  Here is a a sample
   1.116 +/etc/xinetd.d/imap file:
   1.117 +
   1.118 +service imap
   1.119 +{
   1.120 +	disable		= no
   1.121 +	socket_type	= stream
   1.122 +	wait		= no
   1.123 +	user		= root
   1.124 +	server		= /usr/local/etc/imapd
   1.125 +	groups		= yes
   1.126 +	flags		= REUSE IPv6
   1.127 +}
   1.128 +
   1.129 +STEP 1(B): inetd-specific setup
   1.130 +
   1.131 +     If your system still uses inetd, the daemons are invoked by your
   1.132 +/etc/inetd.conf file with lines such as:
   1.133 +
   1.134 +pop	stream	tcp	nowait	root	/usr/local/etc/ipop2d	ipop2d
   1.135 +pop3	stream	tcp	nowait	root	/usr/local/etc/ipop3d	ipop3d
   1.136 +imap	stream	tcp	nowait	root	/usr/local/etc/imapd	imapd
   1.137 +
   1.138 +     Note that different variants of UNIX have different versions of inetd,
   1.139 +so you should verify the precise form of these commands (for example, some
   1.140 +versions of inetd do not require the "nowait").
   1.141 +
   1.142 +     IMPORTANT NOTE: inetd has a limit of how many new connections it will
   1.143 +allow in a certain interval, and when this limit is exceeded, it shuts down
   1.144 +the server.  If you have anything beyond a small-scale server, you are
   1.145 +probably going to run up against this limit.  You'll know when it happens;
   1.146 +your syslog will give the misleading message "imap/tcp server failing
   1.147 +(looping), service terminated" and users will complain that IMAP service is
   1.148 +unavailable for the next 10 minutes.  Similarly with "pop3/tcp server
   1.149 +failing"...
   1.150 +
   1.151 +     It must be emphasized that this is *NOT* a bug in the IMAP or POP
   1.152 +servers, nor is it anything that I can "fix".  It is an inetd problem, and
   1.153 +the only way to fix it is to change inetd's behavior.
   1.154 +
   1.155 +     By default, the parameters of this limit are (from inetd.c source code):
   1.156 +
   1.157 +#define TOOMANY         40              /* don't start more than TOOMANY */
   1.158 +#define CNT_INTVL       60              /* servers in CNT_INTVL sec. */
   1.159 +#define RETRYTIME       (60*10)         /* retry after bind or server fail */
   1.160 +
   1.161 +That is, no more than 40 connections (TOOMANY) in 60 seconds (CNT_INTL), and
   1.162 +if exceeded, shut down the server for 10 minutes (RETRYTIME).  This was a
   1.163 +good setting in the 1980s ARPAnet, but is much too small today.
   1.164 +
   1.165 +     Some versions of inetd allow you to see a higher maximum in the
   1.166 +/etc/inetd.conf file.  Read "man inetd" and see if you see something like
   1.167 +this in the text:
   1.168 +
   1.169 +     The wait/nowait entry is applicable to datagram sockets only [...]
   1.170 +     [...]  The optional ``max'' suffix (separated from
   1.171 +     ``wait'' or ``nowait'' by a dot) specifies the maximum number of server
   1.172 +     instances that may be spawned from inetd within an interval of 60 sec-
   1.173 +     onds. When omitted, ``max'' defaults to 40.
   1.174 +
   1.175 +If you see this, then edit the /etc/inetd.conf entry for imapd to be
   1.176 +something like:
   1.177 +
   1.178 +imap	stream	tcp	nowait.100	root	/usr/local/etc/imapd	imapd
   1.179 + (or, if you use TCP wrappers)
   1.180 +imap	stream	tcp	nowait.100	root	/usr/local/etc/tcpd	imapd
   1.181 +
   1.182 +     Otherwise, you'll need to edit the inetd source code to set TOOMANY to a
   1.183 +higher value, then rebuild inetd.
   1.184 +
   1.185 +
   1.186 +STEP 2:	services setup
   1.187 +
   1.188 +     You may also have to edit your /etc/services (or Yellow Pages,
   1.189 +NetInfo, etc. equivalent) to register these services, such as:
   1.190 +
   1.191 +pop		109/tcp
   1.192 +pop3		110/tcp
   1.193 +imap		143/tcp
   1.194 +
   1.195 +
   1.196 +STEP 3: PAM setup
   1.197 +
   1.198 +     If your system has PAM (Pluggable Authentication Modules -- most
   1.199 +modern systems do) then you need to set up PAM authenticators for imap and
   1.200 +pop.  The correct file names are
   1.201 +	/etc/pam.d/imap
   1.202 +and
   1.203 +	/etc/pam.d/pop
   1.204 +
   1.205 +     It probably works to copy your /etc/pam.d/ftpd file to the above two
   1.206 +names.
   1.207 +
   1.208 +     Many people get these file names wrong, and then spend a lot of time
   1.209 +trying to figure out why it doesn't work.  Common mistakes are:
   1.210 +	/etc/pam.d/imapd
   1.211 +	/etc/pam.d/imap4
   1.212 +	/etc/pam.d/imap4rev1
   1.213 +	/etc/pam.d/ipop3d
   1.214 +	/etc/pam.d/pop3d
   1.215 +	/etc/pam.d/popd
   1.216 +	/etc/pam.d/pop3
   1.217 +
   1.218 +
   1.219 +STEP 4:	optional rimap setup
   1.220 +
   1.221 +     If you want to enable the rimap capability, which allows users with a
   1.222 +suitable client and .rhosts file on the server to access IMAP services
   1.223 +without transmitting her password in the clear over the network, you need
   1.224 +to have /etc/rimapd as a link to the real copy of imapd.  Assuming you have
   1.225 +imapd installed on /usr/local/etc as above:
   1.226 +	% ln -s /usr/local/etc/imapd /etc/rimapd
   1.227 +
   1.228 +     Technical note: rimap works by having the client routine tcp_aopen()
   1.229 +invoke `rsh _host_ exec /etc/rimapd' in an child process, and then returning
   1.230 +pipes to that process' standard I/O instead of a TCP socket.  You can set up
   1.231 +`e-mail only accounts' by making the shell be something which accepts only
   1.232 +that string and not ordinary UNIX shell commands.
   1.233 +
   1.234 +
   1.235 +STEP 4:	notes on privileges
   1.236 +
   1.237 +     Neither user "root", not any other UID 0 account, can log in via IMAP or
   1.238 +POP.  "That's not a bug, it's a feature!"
   1.239 +
   1.240 +     This software is designed to run without privileges.  The mail spool
   1.241 +directory must be protected 1777; that is, with world write and the sticky
   1.242 +bit.  Of course, mail *files* should be protected 600!
   1.243 +
   1.244 +     An alternative to having the mail spool directory protected 1777, at the
   1.245 +cost of some performance, is to use the external "mlock" program, available
   1.246 +as part of the imap-utils package.  With mlock installed as /etc/mlock and
   1.247 +setgid mail, the spool directory can be protected 775 with group mail.
   1.248 +Please disregard this paragraph if you don't understand it COMPLETELY, and
   1.249 +know EXACTLY what to do without question.
   1.250 +
   1.251 +
   1.252 +STEP 5:	SVR4 specific setup
   1.253 +
   1.254 +     There is one "gotcha" on System V Release 4 based systems such as
   1.255 +Solaris.  These systems do not use the standard UNIX mail format, but rather a
   1.256 +variant of that format that depends upon a bogus "Content-Length:" message
   1.257 +header.  This is widely recognized to have been a terrible mistake.  One
   1.258 +symptom of the problem is that under certain circumstances, a message may get
   1.259 +broken up into several messages.  I'm also aware of security bugs caused by
   1.260 +programs that foolishly trust "Content-Length:" headers with evil values.
   1.261 +
   1.262 +    To fix your system, edit your sendmail.cf to change the Mlocal line to
   1.263 +have the -E flag.  A typical entry will lool like:
   1.264 +
   1.265 +Mlocal, P=/usr/lib/mail.local, F=flsSDFMmnPE, S=10, R=20, A=mail.local -d $u
   1.266 +
   1.267 +			      WIN32 BUILD NOTES
   1.268 +
   1.269 +     Visual C++ 6.0 along with the current Microsoft Platform SDK
   1.270 +(specifically the CORE SDK and the Internet Development SDK) is required
   1.271 +to build on Windows 9x/Me/NT/2K/XP.  If you do not have the Platform SDK
   1.272 +installed or in your path properly, you'll get errors when building os_nt.c,
   1.273 +typically in env_nt.c, ssl_nt.c, ssl_w2k.c, or gss_shim.c.  You can download
   1.274 +the Microsoft Platform SDK from Microsoft's web site.
   1.275 +
   1.276 +     There is also considerable debate about how new mail is to be snarfed.
   1.277 +I am currently using something that seems to work with WinSMTP.  Look at
   1.278 +the definition of MAILFILE in imap-2007/src/osdep/nt/mailfile.h and at the
   1.279 +sysinbox() function in imap-2007/src/osdep/nt/env_nt.c to see what's there
   1.280 +now, so you have a clue about how to hack it.
   1.281 +
   1.282 +     To build under Windows 95/98/NT, connect to the imap-2007 directory
   1.283 +and do:
   1.284 +	nmake -f makefile.nt
   1.285 +The resulting binaries will support SSL if either schannel.dll or
   1.286 +security.dll is installed in Windows, using the old, undocumented, SSL
   1.287 +interfaces.  You can also use this to build under Me/2000/XP, but it is
   1.288 +not the preferred build on this platform.
   1.289 +
   1.290 +     To build with MIT Kerberos support, connect to the imap-2007 directory
   1.291 +and do:
   1.292 +	nmake -f makefile.ntk
   1.293 +The resulting binaries will support SSL if either schannel.dll or
   1.294 +security.dll is installed in Windows, using the old, undocumented SSL
   1.295 +interfaces.  They will also support MIT Kerberos.  Note, however, that
   1.296 +these binaries will only run on systems which have the MIT Kerberos DLLs
   1.297 +installed, and will not run otherwise.
   1.298 +
   1.299 +     To build under Windows Me/2000/XP, connect to the imap-2007 directory
   1.300 +and do:
   1.301 +	nmake -f makefile.w2k
   1.302 +The resulting binaries will support SSL and Microsoft Kerberos, using the
   1.303 +official, documented, Microsoft interfaces.  Note, however, that these
   1.304 +binaries will not run under Windows 95, Windows 98, or Windows NT4.
   1.305 +
   1.306 +			   WIN32 INSTALLATION NOTES
   1.307 +
   1.308 +     The resulting binaries will be:
   1.309 +	imap-2007\mtest\mtest.exe	(testbed client)
   1.310 +	imap-2007\ipopd\ipop2d.exe	POP2 server
   1.311 +	imap-2007\ipopd\ipop3d.exe	POP3 server
   1.312 +	imap-2007\imapd\imapd.exe	IMAP4rev1 server
   1.313 +
   1.314 +     These servers are stdio servers.  I wrote a simple network listener
   1.315 +for NT called inetlisn; currently it is available as:
   1.316 +	ftp://ftp.cac.washington.edu/mail/nt/inetlisn.tar
   1.317 +To build this, use "nmake" after connecting to the inetlisn directory.
   1.318 +inetlisn takes two arguments, the first being the port number and the second
   1.319 +being the binary to run to serve a connection on that port, e.g.
   1.320 +	c:\bin\inetlisn 143 c:\mail_daemons\imapd
   1.321 +
   1.322 +     Note that NT imapd must be started as SYSTEM in order to be recognized as
   1.323 +being "not logged in"; otherwise it will preauth as whatever user it is
   1.324 +running as which is probably not what you want.  One way to have it run as
   1.325 +system is to have inetlisn run by an AT command, e.g. if the time now is
   1.326 +2:05PM, try something like:
   1.327 +	AT 14:06 "c:\bin\inetlisn 143 c:\mail_daemons\imapd"
   1.328 +
   1.329 +     A more advanced network listener called wsinetd is available on:
   1.330 +	http://wsinetd.sourceforge.net
   1.331 +It is based on inetlisn, and essentially is a "completed" version of inetlisn.
   1.332 +
   1.333 +     Bottom line: this is not plug-and-play.  If you're not a hacker and/or
   1.334 +are unwilling to invest the time to do some programming, you probably want to
   1.335 +buy a commercial server product.
   1.336 +
   1.337 +				INACTIVE PORTS
   1.338 +
   1.339 +     The TOPS-20 and VMS ports were developed at one time or another, but are
   1.340 +no longer actively developed.  However, from time to time I test build both
   1.341 +of these to make sure that they compile without errors and that mtest runs,
   1.342 +and will continue doing so as long as I have access to systems running these
   1.343 +operating systems.
   1.344 +
   1.345 +
   1.346 +			     TOPS-20 BUILD NOTES
   1.347 +
   1.348 +     I have provided a c-client port for TOPS-20 systems, but you're on your
   1.349 +own in terms of a nice TOPS-20 like main program.  Maybe someday some nice
   1.350 +person will try porting Pine to TOPS-20.  This assumes the use of KCC 6, and
   1.351 +probably will not build with other compilers or older versions of KCC.
   1.352 +
   1.353 +     You do not use imap-2007/Makefile under TOPS-20, nor do you build any
   1.354 +components other than c-client and mtest.  Merge the contents of
   1.355 +imap-2007/src/c-client, imap-2007/src/charset, imap-2007/src/mtest, and
   1.356 +imap-2007/src/osdep/tops-20 onto a single directory on TOPS-20 and build from
   1.357 +that.  The command:
   1.358 +	DO BUILD.CTL
   1.359 +will build the sources.  If you don't have MIC, then SUBMIT BUILD.CTL and let
   1.360 +BATCON execute it.
   1.361 +
   1.362 +
   1.363 +			       VMS BUILD NOTES
   1.364 +
   1.365 +      The VMS port has been tested with imap-2007, but as I am soon going
   1.366 +to lose access to a VMS system I will no longer be able able to test and
   1.367 +this port will be moved to the "other ports" category".
   1.368 +
   1.369 +      You do not use imap-2007/Makefile under VMS, nor do you build any
   1.370 +components other than c-client and mtest.  Merge the contents of
   1.371 +imap-2007/src/c-client, imap-2007/src/charset, imap-2007/src/mtest, and
   1.372 +imap-2007/src/osdep/vms onto a single directory on VMS and build from that.
   1.373 +The command to build it is:
   1.374 +	@BUILD MULTINET
   1.375 +or	@BUILD NETLIB
   1.376 +If you just do @BUILD it will build with dummy TCP code, and since only TCP
   1.377 +based drivers are provided here this isn't too useful.
   1.378 +
   1.379 +     If you aren't on the Pacific coast of the US or Canada, you probably will
   1.380 +need to change the wired-in timezone in the BUILD.COM file.  Apparently, the
   1.381 +wonderful VMS system that DEC loves so much doesn't maintain any concept of
   1.382 +time zone; the VMS C compiler returns a null pointer from gmtime()!
   1.383 +
   1.384 +     Otherwise you're pretty much on your own here.
   1.385 +
   1.386 +				 OTHER PORTS
   1.387 +
   1.388 +     The following ports were developed at one time or another, but are no
   1.389 +longer actively developed or tested.  It is not known if they still work or
   1.390 +not.
   1.391 +
   1.392 +  Port		Status
   1.393 +  ----		------
   1.394 +Macintosh	Obsolete; Mac OS X uses UNIX port
   1.395 +DOS/Win16	Obsolete; modern PCs use Win32 port
   1.396 +Windows CE	Never completed
   1.397 +Amiga		Unknown
   1.398 +OS/2		Unknown
   1.399 +
   1.400 +			     MACINTOSH BUILD NOTES
   1.401 +
   1.402 +     This port is for the old Mac OS system, not Mac OS X.
   1.403 +
   1.404 +     If you are building a Macintosh client, you will need MacTCP installed on
   1.405 +your system as well as the MacTCP C includes and libraries.
   1.406 +
   1.407 +     You do not use imap-2007/Makefile on the Mac, nor do you build any
   1.408 +components other than c-client and mtest.  Merge the contents of
   1.409 +imap-2007/src/c-client, imap-2007/src/charset, imap-2007/src/mtest, and
   1.410 +imap-2007/src/osdep/mac onto a single directory on the Mac and build from
   1.411 +that.  mtext.sit.hqx is a THINK C project file and cute icon for building
   1.412 +mtest, encoded with Binhex and StuffIt.
   1.413 +
   1.414 +     THINK C is a truly wretched product which help make me understand why
   1.415 +Macintosh has lost most of its market share.  Not only does it do cretinous
   1.416 +things such as barf about a cast in front of an lvalue, it also limits the size
   1.417 +of code *or* data in a single file to 32K!  So much for having large character
   1.418 +set tables.  Symantec says that "MacOS requires it, break up your files into
   1.419 +smaller pieces" yet somehow gcc under MachTen contrives to compile C programs
   1.420 +without subjecting the programmer to this idiocy.
   1.421 +
   1.422 +     As a result of this, I found myself obliged to comment out the #includes
   1.423 +of the East Asian character sets in utf8.c in order to get it to build.  It's
   1.424 +also necessary to break up some of the files, at least mail.c and imap4r1.c.
   1.425 +Maybe you don't have to do this in CodeWarrior or whatever the new compiler is
   1.426 +called, but I've pretty much given up on Macintosh.
   1.427 +
   1.428 +     If you use precompiled headers, you may get some compilation errors since
   1.429 +some Apple symbols need to be redefined in order to get it to build under all
   1.430 +versions of MacOS.  Try turning off the precompiled headers (so it will
   1.431 +re-read the .h files) and see if it builds any better.
   1.432 +
   1.433 +     If you use a Mac C compiler with 2-byte ints (such as THINK C's normal
   1.434 +mode) you will need to fix some bugs in the MacTCP C includes and libraries to
   1.435 +prevent it from generating bad code, since those MacTCP files violate Apple's
   1.436 +standards of always using explicit shorts or longs, never ints.  You could
   1.437 +avoid this if you set 4-byte ints in THINK C; however, the ANSI and UNIX
   1.438 +libraries in THINK C use 2-byte ints so you will also need to build 4-byte int
   1.439 +versions of these.  c-client itself is 2-byte int or 4-byte int clean; it can
   1.440 +be used in either mode.
   1.441 +
   1.442 +     The most important bug in the MacTCP files that you need to fix is in the
   1.443 +file AddressXlation.h, you need to change the definition of the rtnCode member
   1.444 +of the hostInfo structure to be long instead of int.  There are several other
   1.445 +changes you need to make if you decide to compile dnr.c under THINK C instead
   1.446 +of using the Apple-supplied object file; see me for details if you decide to
   1.447 +undertake such an effort.  This is fixed in newer versions from Apple.
   1.448 +
   1.449 +
   1.450 +			     DOS/WIN16 BUILD NOTES
   1.451 +
   1.452 +     If you are building a DOS client, you will need a TCP/IP stack installed
   1.453 +on your DOS system along with its development environment.  The currently
   1.454 +supported stacks are Beame & Whiteside, PC-NFS, Novell, PC/IP, Waterloo, and
   1.455 +Winsock.  mtest and a version of Pine called PC Pine run under DOS.
   1.456 +
   1.457 +      You do not use imap-2007/Makefile under DOS, nor do you build any
   1.458 +components other than c-client and mtest.  Merge the contents of
   1.459 +imap-2007/src/c-client, imap-2007/src/charset, imap-2007/src/mtest, and
   1.460 +imap-2007/src/osdep/dos onto a single directory on DOS and build from that.
   1.461 +The MAKE command on DOS takes an argument identifying the TCP/IP stack in use.
   1.462 +For example, do:
   1.463 +	MAKE MAKEFILE OS=WSK   (or MAKE -F MAKEFILE OS=WSK)
   1.464 +to build for Winsock.  
   1.465 +
   1.466 +     If you write a program for DOS/Win16, you will probably have to write a
   1.467 +replacement cache manager (look at mm_cache()) and otherwise disable most of
   1.468 +c-client's caching.  Even so, memory limitations will be an ongoing problem,
   1.469 +particularly with DOS, and you will have some severe performance problems.
   1.470 +It's a bit better on Win16, but in my opinion you are better off writing a
   1.471 +32-bit program and telling your Win16 customers to upgrade to Windows 95 or at
   1.472 +least install Win32s.
   1.473 +
   1.474 +
   1.475 +			    WINDOWS CE BUILD NOTES
   1.476 +
   1.477 +     I build using Visual C++ 6.0 with the WCE extensions.  The current code
   1.478 +has SH3 wired in for the compiler building.
   1.479 +
   1.480 +     To build under NT, connect to the imap-2007 directory and do:
   1.481 +	nmake -f makefile.wce
   1.482 +
   1.483 +     The only binary produced is a cclient.lib file.  I haven't gotten as far
   1.484 +as building mtest on WCE, mainly because I don't have a stdlib library.
   1.485 +
   1.486 +
   1.487 +		      AMIGA BUILD AND INSTALLATION NOTES
   1.488 +
   1.489 +     The Amiga port was contributed.  Maybe the UNIX notes will help.
   1.490 +
   1.491 +
   1.492 +			       OS2 BUILD NOTES
   1.493 +
   1.494 +     The OS2 port was contributed.  Maybe the Win32 Build Notes will help.

UW-IMAP'd extensions by yuuji