* clear out some warnings by gcc 9.3.1.
[alpine.git] / imap / docs / bugs.txt
blobd8daa1a2c99aff0d399ce45c0819d1f50c405d39
1 /* ========================================================================
2  * Copyright 1988-2007 University of Washington
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * 
11  * ========================================================================
12  */
14            KNOWN BUGS/MISFEATURES/DEFICIENCIES IN THE IMAP TOOLKIT
15                         Last Updated: 15 November 2007
17 The following are known problems/deficiencies in the imap-2007 toolkit:
19  . Possible problems for some installations:
20    . In some versions of Redhat Linux, SVR4-style timezone name lookup
21       doesn't work properly due to a bug in glibc.  The workaround is to
22       edit os_lnx.c to include tz_bsd.c instead of tz_sv4.c.  Note that
23       other versions of Linux don't support BSD-style timezone name
24       lookup, so don't make this change unless it's needed on your system.
25    . In some systems, the OpenSSL distribution is installed other than at
26       the standard /usr/local/ssl location.  If this is the case on your
27       system and you want to build with SSL support, you will need to set
28       the SSLDIR variable, either by including a setting of EXTRASPECIALS
29       in the make command line, e.g.
30        build lnp SPECIALAUTHENTICATORS=ssl EXTRASPECIALS="SSLDIR=/usr/ssl"
31       or by editing .../src/osdep/unix/Makefile
32    . /tmp, /usr/tmp or /var/tmp (if present), and the mail spool directory
33       must be protected 1777 (world write with sticky bit); otherwise
34       mailbox locking and updates won't work.  An alternative to 1777 on
35       the mail spool directory is to install the mlock program that is
36       bundled with the IMAP toolkit.
37    . Multiple access protection locking does not work if the mailbox or
38       /tmp are NFS mounted.
39    . Shared access mailbox formats (mbx, mtx, mx, and tenex) do not work
40       well with NFS and such usage is not supported.  mmdf and unix formats
41       are supported for use over NFS; however there won't be any multiple
42       access locking protection.
43    . Server startup delays may occur if a reverse DNS (IP address to name)
44       lookup on the client's IP address does not complete in an expeditious
45       fashion.  This is actually a DNS problem and should be fixed in the
46       DNS and/or the server's host table.  A workaround exists (see the
47       top-level Makefile for details) but is not recommended and can not
48       be used at all with Kerberos.
49    . At the insistence of the security gurus, SSL certification validation
50       is now on by default.  This means that you must now use the new
51       /novalidate-cert switch if establishing an SSL connection to a server
52       with a self-signed certificate; i.e. if "imap.example.com" has a
53       self-signed certificate, you must use a mailbox name such as
54        {imap.example.com/ssl/novalidate-cert}INBOX
55       to get an SSL session instead of just
56        {imap.example.com/ssl}INBOX
57    . GCC 8.x and above on SGI systems does not correctly pass/return
58       structures which are smaller than 16 bytes and are not 8 bytes.  The
59       problem is that structures are padded at the wrong end; e.g. a 4 byte
60       structure is loaded into the lower 4 bytes of the register when it
61       should be loaded into the upper 4 bytes of the register.  This affects
62       IRIX 6 the most because it is a 64-bit system and 4 byte structures are
63       common.  This compiler bug impacts the use of inet_ntoa() in c-client
64       and causes syslog messages to show IP addresses as 255.255.255.255
65       instead of the correct values.  The fix is either to use SGI's C compiler
66       instead of GCC or link with an implementation of inet_ntoa() that was
67       built with GCC instead of the standard SGI C library version.
68    . By default, the UNIX SSL build assumes that RSAREF is not needed, because
69       RSA Security Inc. released the RSA public key encryption algorithm into
70       the public domain on September 6, 2000.  There is no longer any need to
71       use RSAREF, and since RSAREF is slower than OpenSSL's RSA routines
72       there's good reason not to.  If for some reason you still want to use
73       RSAREF, you will need to edit .../src/osdep/unix/Makefile to
74       change SSLRSA to load libRSAglue and librsaref.
75    . By default, the UNIX SSL build assumes that no name conflict exists
76       between OpenSSL and Kerberos 5.  If you are using an older version
77       of Kerberos, you may need to edit .../src/osdep/unix/Makefile
78       to change SSLCRYPTO so that it loads the OpenSSL libcrypto library
79       explicitly as libcrypto.a.
80    . By default, host names are canonicalized via gethostbyname() and
81       gethostbyaddr() for everything except for SSL certificate validation.
82       This can represent a security bug due to DNS spoofing, but is more
83       likely to deliver results that users expect and also may be necessary
84       to get Kerberos to work.  Set variable "trustdns" in mail.c to NIL if
85       you want to disable this.
87  . Bugs:
88    . It doesn't work to have a "}" character as a user name in /user= in a
89       mailbox name, even if the user name is quoted.  In other words,
90        {example.com/user="foo}bar"}zap
91       won't work; foo will be interpreted as an unterminated quoted string
92       and the remote mailbox name will be
93        bar"}zap.
94    . The experimental mx driver has performance problems and shouldn't be used
95    . docs/internal.txt is out of date (again)
97  . UIDPLUS bugs/limitations:
98    . Not supported in all local file formats (see below).
99    . There are two known issues with UIDPLUS in the mmdf and unix formats:
100      (a) If the destination mailbox is currently selected (whether in this
101          or another session), no COPYUID or APPENDUID is returned.  The other
102          choice was to assign a UID based upon the uid_last value and hope
103          that the session selecting the mailbox would pick it up and update
104          uid_last.  The problem was a timing race if another message was
105          copied/appended to that mailbox before the selecting session updated
106          the mailbox.  If the timing race is lost, then all UID in the mailbox
107          would be reassigned by the selecting session, thus making the
108          returned APPENDUID/COPYUID data useless and causing a performance
109          problem.
110           Earlier versions did the "hope for the best" method.  This was
111          revoked in favor of not returning COPYUID/APPENDUID.
112           Although this violates RFC 4315, there is a loophole which, although
113          for other purposes, permits this behavior.
114      (b) There is a known failure if the destination mailbox is currently
115          selected by legacy software (e.g. older versions of the IMAP
116          server, Pine, etc.).  In this case, all UIDs end up being
117          reassigned by the legacy software.
119  . Annoyances:
120    . Friendly host names (e.g. "server" instead of "server.foo.com") can't be
121       used in a mailbox name with SSL certificate validation; you have to enter
122       the fully-qualified domain name.  This is a requirement established by
123       the security gurus.
125  . IMAP client limitations:
126    . No SASL protection mechanisms (SASL authentication mechanisms are
127       supported)
129  . NNTP client limitations:
130    . Non-standard IMAP SCAN extension not supported
132  . POP client limitations:
133    . No SASL protection mechanisms (SASL authentication mechanisms are
134       supported)
135    . No POP3 UID support
136    . Non-standard IMAP SCAN extension not supported
138  . SMTP client limitations:
139    . No SASL protection mechanisms (SASL authentication mechanisms are
140       supported)
141    . No support for use of TURN, ETRN, and pipelining.
142    . No support for enhanced status codes
144  . UNIX limitations:
145    . IPv6 is supported but is not the default on most platforms; you have to
146       use IP=6 in the make command
147    . Supported local file formats: mbx, mh, mmdf, mix, mtx, mx, news, phile,
148       tenex, unix
149    . Supported SASL mechanisms: CRAM-MD5, PLAIN, LOGIN, ANONYMOUS, GSSAPI
150    . Sticky UIDs are not supported in the mh, mtx, and tenex drivers
151    . Creation of keywords is not supported in the mh, mtx, and tenex drivers
152    . Copy and append of keywords only works in the mbx driver.
153    . Flat file formats (mbx, mmdf, mtx, phile, tenex, unix) do not permit
154       mailboxes to have inferior names
155    . SSL temporary key should be seeded better than it is.
156    . UIDPLUS support is limited to the unix, mmdf, mbx, mx, and mix formats.
157    . Non-standard IMAP SCAN extension not support for mh and news formats.
159  . Amiga limitations:
160    . Supported local file formats: mbx, mh, mmdf, mix, mtx, mx, news, phile,
161       tenex, unix
162    . Supported SASL mechanisms: CRAM-MD5, PLAIN, LOGIN, ANONYMOUS
163    . Sticky UIDs are not supported in the mh, mtx, and tenex drivers
164    . Creation of keywords is not supported in the mh, mtx, and tenex drivers
165    . Copy and append of keywords only works in the mbx driver.
166    . Flat file formats (mbx, mmdf, mtx, phile, tenex, unix) do not permit
167       mailboxes to have inferior names
168    . UIDPLUS support is limited to the unix, mmdf, mbx, mx, and mix formats.
169    . Non-standard IMAP SCAN extension not supported for mh and news formats.
171  . Win32 (Win9x/NT/Windows 2000) limitations:
172    . IPv6 is supported in W2K builds but is not the default; you have to use
173       IP=6 in the nmake command
174    . Supported local file formats: mbx, mtx, tenex, unix
175    . Supported SASL mechanisms: CRAM-MD5, PLAIN, LOGIN, ANONYMOUS, GSSAPI
176    . No server SSL or TLS support.
177    . No server authentication for GSSAPI
178    . No server authentication for CRAM-MD5 on NT-based Windows (NT/2K/XP);
179       it does work on DOS-based Windows (9x/Me).
180    . Sticky UIDs are not supported in the mtxnt and tenexnt drivers
181    . Creation of keywords is not supported in the mtxnt and tenexnt drivers
182    . Copy and append of keywords only works in the mbxnt driver.
183    . No support for TCP open timeouts
184    . Flat file formats (mbx, mtx, tenex, unix) do not permit mailboxes to have
185       inferior names
186    . UIDPLUS support is limited to the unix and mbx formats.
188  . Win16 (Win3.1)/DOS limitations:
189    . IPv6 not supported
190    . Supported local file formats: bezerk, mtx
191    . Supported SASL mechanisms: CRAM-MD5, LOGIN, ANONYMOUS
192    . Supported TCPs: B&W, Novell, PC-NFs, PC/TCP, Waterloo, Winsock
193    . Sticky UIDs are not supported on local files
194    . Creation of keywords are not supported on local files
195    . Bezerk driver is read-only and does not handle LF-only newlines well
196    . No support for any TCP timeouts on Waterloo DOS
197    . No support for TCP open timeouts on Winsock and generic DOS
198    . Flat file formats (bezerk, mtx) do not permit mailboxes to have inferior
199       names
200    . Does not work well unless a mailgets routine is armed when fetching
201       texts.
203  . Mac limitations:
204    . IPv6 not supported
205    . No local file drivers
206    . Supported SASL mechanisms: CRAM-MD5, LOGIN, ANONYMOUS
207    . Does not output human-friendly time zone string
209  . TOPS-20 limitations:
210    . IPv6 not supported
211    . No local file drivers
212    . Supported SASL mechanisms: CRAM-MD5, LOGIN, ANONYMOUS
213    . No support for any TCP timeouts
215  . VMS limitations:
216    . IPv6 not supported
217    . No local file drivers
218    . Supported SASL mechanisms: CRAM-MD5, LOGIN, ANONYMOUS
219    . Supported TCPs: Multinet, Netlib
220    . No support for any TCP timeouts on VMS Netlib
221    . No support for TCP open timeouts on VMS Multinet
222    . Time zone must be configured at build time
223    . Does not output human-friendly time zone string
225  . Windows CE limitations:
226    . IPv6 not yet supported
227    . No local file drivers
228    . Supported SASL mechanisms: CRAM-MD5, LOGIN, ANONYMOUS
229    . No support for TCP open timeouts
230    . Not finished, only builds c-client library
232  . OS/2 limitations:
233    . IPv6 not supported
234    . Not finished, does not build