* Fix an error in compilation when Alpine is not built with S/MIME
[alpine.git] / imap / docs / RELNOTES
blob80e179676b6213a6115d9243f3d172a633d7a8c8
1 /* ========================================================================
2  * Copyright 2012 Mark Crispin
3  * ========================================================================
4  */
7 Updated: 21 February 2012
9 imap-2010 is Panda IMAP, forked from the University of Washington's
10 final imap-2007b.
12 Update version and copyright information.
14 New compare_string() routine which implements i;octet collation.
16 compare_cstring() now collates "[", "\", "]", and "_" after alphabetics to
17 be consistent with how i;unicode-casemap is defined.
19 i;unicode-casemap collation now uses compare_string() instead of
20 compare_cstring().  The case-mapping of compare_cstring() is unnecessary
21 because the strings have already been titlecased and decomposed via
22 U8T_CANONICAL conversion.  The previous version of compare_cstring()
23 casemapped via conversion to lowercase, which violates of RFC 5051 for
24 characters "[", "\", "]", and "_".
26 Fix tag parsing to avoid HTML/IMAP cross script vulnerability problem.  Tags
27 are now syntax checked and the connection is closed after a bad command when
28 not logged in.
30 Fix address sorting when the address list started with a group and the
31 message had not yet been parsed.  Also, cc sorting did not handle
32 additional cc lines (as opposed to continuation lines) correctly.
34 Fix server terminations when a status request signal is received while in
35 command input wait.
37 Fix crash if SMTP server closes the session right before a QUIT is sent.
39 Fix crash on some systems if IMAP server sends negative value for literal
40 size count.
42 Mailbox compression ("burping") can now occur during IMAP IDLE.
44 Fix root-compromise security bug in tmail, and user-compromise security bug
45 in dmail.
47 Extend mailutil's -u flag to parse arguments in the context of the -u user
48 and disregard any restrictBox settings.
50 Restrict SSL/TLS encryption algorithms to be PCI auditing compliant.
52 Fix possible memory corruption problem in imapd.
54 Fix longstanding problem in parsing lowercase FETCH attributes in IMAP after
55 a literal.
57 Fix memory leak problem burping mix format mailboxes.
59 Fix crash with -I switch in tmail caused by reference to uninitialized
60 variable.
62 Fix reference to freed memory space in mix burping that led to attempts to
63 delete arbitrary file names.
65 Fix crash when string output in RFC822 routines exactly matches the buffer
66 size.
68 Fix crash in IMAP client on Windows in certain circumstances when IMAP
69 server disconnects while reading a response.
71 Fix incorrect legacy INBOX file name creation on black box systems.
73 Fix exploitable buffer overrun problem.
75 Support QNX 6
77 Fix a problem that could cause mix mailbox corruption.
79 Rewrite imapd's signal handling (again) to fix corrupt in traditional UNIX
80 mailbox files.
82 Recognize when the client is BlackBerry Internet Service, and allow mailbox
83 burping even when readonly.
85 Fix a crash in the IMAP client code caused by non-compliant servers.
87 Fix problem in scandir code triggered by ZFS on Solaris.
89 Fix quoted-printable handling in error case.
91 OpenSSL 1.0.0 compatibility (OpenSSL has a STRING type)
93 Fix Shift-JIS decoding.
95 New oxs port for building under Mac OS X Snow Leopard.
97 Fixes to build cleanly in new 64-bit gcc.
99 Prevent crash if session closed unexpectedly during SSL I/O.
101 Fix IMAP namespace handling.
103 Detect corruption when message added with out of order UID.
105 The c-client library is now thread-safe in the IPv6 version of the UNIX and
106 Windows builds.  IPv4 and legacy (e.g., DOS, VMS) builds are NOT thread-safe.
108 Fixed a memory leak that occurs each time a TCP connection is open.
110 Fixed UTF-8 input validation; some valid UTF-8 sequences were rejected and
111 some invalid ones where accepted.
113 Fix incorrect message message deletion in UID EXPUNGE.
115 Fix crash in internal rfc822 parsing routines if external consumer calls
116 with a null defaulthost.
118 Workaround to support iPhone/iPod Touch running iOS4.
120 Fix buffer overflow in IMAP client code.
122 Fix thread safety issues in MD5 authentication and subscription manager.
124 Fix additional buffer overflows in IMAP client code.
126 Fix memory name in IPv6 DNS lookup.
128 Up to three bad commands permitted when not logged in to avoid problems with
129 clients that don't check capabilities.
131 Fix off-by-one error in SASL-IR authentication.
133 Fix memory leak when server sends invalid BODYSTRUCTURE data.
135 Fix threading problem creating TCP socket.
137 Fix loop caused by syntax errors from GMail IMAP server.
139 Fix over-quota problem.
142  * Previous versions of this file were
144  * Copyright 1988-2008 University of Washington
146  * Licensed under the Apache License, Version 2.0 (the "License");
147  * you may not use this file except in compliance with the License.
148  * You may obtain a copy of the License at
150  *     http://www.apache.org/licenses/LICENSE-2.0
151  */
153 Updated: 25 March 2008
155 imap-2007b is a maintenance release, consisting primarily of bugfixes to
156 problems discovered in the release that affected a small number of users.
159 Updated: 2 January 2008
161 imap-2007a is a maintenance release, consisting primarily of bugfixes to
162 problems discovered in the release that affected a small number of users.
165 Updated: 20 December 2007
167 imap-2007 is a release corresponding with the release of Alpine 1.0.
168 The primary focus of the imap-2007 release is bugfixes and reliability
169 improvements.  This includes:
170  . fixes to problems discovered between the Alpine 0.99999 pre-release
171     and Alpine 1.0
172  . fixes to the mix driver to timing race problems uncovered by Timo
173     Sirainen's imaptest suite.  imap-2007 using the mix format is
174     believed to pass imaptest completely.
176 A new function, utf8_csvalidmap(), has been added for the benefit of
177 Alpine to use in examining UTF-8 text and determining efficiently
178 whether it can be downgraded to a legacy charset.  If you develop an
179 MUA, this may be useful for you too, although you'll have to read the
180 source code to see how to use it.  The purpose of the "not-CJK" bit is
181 to prevent messages being downgraded to a CJK charset if all they have
182 in that charset are some special punctuation.
185 Updated: 5 September 2007
187 imap-2006k is a maintenance release, consisting primarily of bugfixes to
188 problems discovered in the release that affected a small number of users.
190 The primary focus of this maintenance release is to correct deadlock
191 issues.  There were two major causes of the deadlocks:
192  . a change in imap-2006i attempted to resolve a glibc mutex-based
193    deadlock in imapd's signal handler, but ended up worsening the problem.
194  . a bug in the mbx driver, introduced as part of the UIDPLUS work in 2006,
195    applied an mbx-style lock briefly on a traditional UNIX format mailbox.
196    If the traditional UNIX format mailbox was already locked by some other
197    process, the result would be a deadlock of both processes.
199 imapd's signal handling logic is rewritten to avoid the mutex issue, and
200 the mbx driver is fixed so that mbx-style locks are only applied to mbx
201 format mailboxes.
203 imapd now supports the WITHIN extension.
206 Updated: 14 June 2007
208 imap-2006j is a maintenance release, consisting primarily of bugfixes to
209 problems discovered in the release that affected a small number of users.
212 Updated: 5 June 2007
214 imap-2006i is a maintenance release, consisting primarily of bugfixes to
215 problems discovered in the release that affected a small number of users.
217 imapd now supports the CHILDREN and ESEARCH extensions.
219 imapd's attempt to return COPYUID/APPENDUID information for a traditional
220 UNIX (and MMDF) format mailbox when the mailbox is open by another process
221 has been declared to be a failure and is now revoked.  It was subject to a
222 timing race, loss of which involved an expensive reset of the mailbox's UID
223 regime.  Any imapd COPY or APPEND to a traditional UNIX or MMDF format that
224 is open by some other process will now no longer return COPYUID/APPEND.
225 Although this is technically in violation of RFC 4315, there is a loophole
226 in that document and the timing race/performance problem is worse.
229 Updated: 4 April 2007
231 imap-2006h is a maintenance release, consisting primarily of bugfixes to
232 problems discovered in the release that affected a small number of users.
235 Updated: 30 March 2007
237 imap-2006g is a maintenance release, consisting primarily of bugfixes to
238 problems discovered in the release that affected a small number of users.
241 Updated: 30 January 2007
243 imap-2006f is a maintenance release, consisting primarily of bugfixes to
244 problems discovered in the release that affected a small number of users.
246 For the benefit of multi-threaded applications, use of strtok() has been
247 abolished in the c-client library.  imapd and ipop3d stuff use it though.
248 The TOPS-20 and VAX/VMS ports still use strtok() since they don't use UNIX
249 threads.
251 This version has been test-built on Linux, Mac OS X, NeXT, Windows XP,
252 TOPS-20, and VAX/VMS.  This will probably be the last test-build on VAX/VMS
253 since the system I use for that purpose is being shut down.  I have no way
254 to test-build on DOS, legacy Mac OS (OS 9 and earlier), OS/2, or Windows CE;
255 and the builds on those systems are probably broken.
258 Updated: 26 January 2007
260 imap-2006e is a maintenance release, consisting primarily of bugfixes to
261 problems discovered in the release that affected a small number of users.
264 Updated: 6 December 2006
266 imap-2006d is a maintenance release, consisting primarily of bugfixes to
267 problems discovered in the release that affected a small number of users.
269 The decomposition mapping, title-case mapping, and character widths tables
270 have been updated to comply with the Unicode 5.0 standard.
272 Prototypes for the utf8aux.c functions have been moved to a new utf8aux.h.
274 The general c-client modules now include c-client.h instead of the individual
275 files.  Use of c-client.h instead of individual include files insulates
276 against future shuffling of include files.
279 Updated: 23 October 2006
281 imap-2006c is a maintenance release, consisting primarily of bugfixes to
282 problems discovered in the release that affected a small number of users.
284 By popular request, if a user has a mix (or other dual-use) format INBOX,
285 it will no longer be listed as \NoInferiors.  It's a bad idea to depend
286 upon this due to the case ambiguity issue, but it's there.
289 Updated: 26 September 2006
291 imap-2006b is a maintenance release, consisting entirely of bugfixes to
292 problems discovered in the release that affected a small number of users.
295 Updated: 15 September 2006
297 imap-2006a is a maintenance release, consisting entirely of bugfixes to
298 problems discovered in the release that affected a small number of users.
300 If it is necessary to build IPv4-only on one of the ports that has IPv6
301 preconfigured (ldb, lfd, lmd, lrh, lsu, osx, oxp), this can be done by
302 using IP6=4.  You can't do IP=4 in the build command directly since these
303 ports set IP themselves; however, now instead of setting IP=6 they now set
304 IP=$(IP6).
307 Updated: 30 August 2006
309 imap-2006 is a major release.  Programs written for imap-2004g should
310 build with this version with minor or no modification.  imap-2005 was not
311 released except as development snapshots.
313 imap-2006 contains major extensions to its Unicode support.  Searching and
314 sorting are now done with strings canonicalized to titlecase and decomposed
315 form.  Among other things, this means that Latin letters with diacriticals
316 will now sort with the basic Latin letter, and case-independent searching of
317 such letters (e.g., German umlauts) now works.  Previously, sorting was done
318 strictly by Unicode codepoint, and case-independence only worked with ASCII.
320 imapd now supports the UIDPLUS extension for mailboxes in unix, mmdf, mbx, mx,
321 and mix formats.  UID EXPUNGE is fully implemented.  Note that UIDPLUS is not
322 supported in the little-used drivers (mh, mtx, tenex) in which meaningful
323 APPENDUID/COPYUID data can not be returned.  Refer to bugs.txt for more
324 details.
326 The new mix format is a dual-use mailbox format designed for performance and
327 reliability with large mailboxes.  mix is documented in file mixfmt.txt.
329 SSL/TLS certificate validation on UNIX now checks the alternative names in the
330 certificate if the CN does not match.
332 The new /tls-sslv23 flag in a mailbox name causes a TLS session to use the
333 (incorrect) SSLv23 client method instead of the TLSv1 client method.  Some
334 broken servers use the SSLv23 server method, and this flag works around that
335 problem.  WARNING: use of this flag will cause TLS negotiation to fail with
336 a server which uses the proper TLSv1 server method.  Additionally, there are
337 known security risks in SSLv2; so users should be suspicious if this switch
338 suddenly becomes necesary.
340 The silly mailbox flag combination /ssl/tls is now rejected as an invalid
341 remote specification.  Previous versions tried to negotiate TLS over an SSL
342 session; even if the server permitted such a thing it couldn't work.
344 The memory management of several drivers has been redesigned to consume less
345 memory and hopefully be faster.
347 The private.data member of the MESSAGECACHE (elt) has been replaced with
348 a union that contains private.spare.data and private.spare.ptr, the latter
349 being a pointer.
351 A new FT_RETURNSTRINGSTRUCT flag has been added for mail_fetch_body() and
352 mail_fetch_text() calls.  If this flag is set, *and* if the function returns
353 NIL, then the requested string data is available on a stringstruct on
354 stream->private.string.  This is a special hack for the IMAP and POP servers
355 and is subject to incompatible change.  The result is a major performance
356 improvement in the servers with the mbx driver, particularly with large
357 messages.
360 Updated: 15 September 2005
362 imap-2004g is a maintenance release, and consists solely of a bugfix to
363 quoted string handling in the mailbox name parsing routine.
366 Updated: 15 August 2005
368 imap-2004f is a maintenance release, and consists solely of a bugfix to
369 the TCP code.
371 Also included is a new version of the UNIX SSL/TLS routines that allows the
372 SSL/TLS certificate validation client code to validate alternative names in
373 server certificates.  This code has not been thoroughly regression-tested but
374 is believed to work.  To use this new code instead of the old support:
375         cd imap-2004f/src/osdep/unix
376         mv ssl_unix.c ssl_unix.old
377         mv ssl_unix.new ssl_unix.c
378 Then rebuild.
381 Updated: 21 June 2005
383 imap-2004e is a maintenance release, consisting entirely of bugfixes.
385 There are no user-visible functional enhancements in this version.
388 Updated: 20 April 2005
390 imap-2004d is a maintenance release, released concurrently with Pine
391 4.63, and consists primarily of bugfixes
393 There is now a workaround for RedHat breaking flock().  However, since
394 RedHat has said that they don't support flock(), there is no guarantee
395 that they won't break it in the future.  So you may want to consider some
396 other Linux distribution or BSD instead.  See:
397         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=123415
398 for the gruesome details.
400 There are no user-visible functional enhancements in this version.
403 Updated: 18 January 2005
405 imap-2004c is a maintenance release, released concurrently with Pine
406 4.62, including fixes to quoted-printable encoding and CRAM-MD5
407 authentication.
409 NNTP proxy in imapd now supports the LIST and LSUB commands.
411 There are no other user-visible functional enhancements in this version.
414 Updated: 29 November 2004
416 imap-2004b is a maintenance release, consisting primarily of bugfixes.
417 Programs written for imap-2004a will build with this version without
418 modifification.
420 There are new ports for Solaris with Blastwave Community Open Source
421 Software (gcs) and Mandrake Linux (lmd).
423 SET_SNARFINTERVAL now controls how frequently local drivers will move new
424 mail from the mail spool as well as from a maildrop.  Maildrops are still
425 tied to a minimum interval of 1 minute, but there is now no minimum for the
426 spool file.
428 Character set conversions now map non-breaking space to space if the
429 destination character set doesn't have nbsp.  JIS Roman yen sign is now
430 mapped to Unicode yen sign.
432 There are no user-visible functional enhancements in this version.
435 Updated: 8 July 2004
437 imap-2004a is a maintenance release, consisting primarily of critical
438 bugfixes.  Programs written for imap-2004 will build with this version
439 without modification.
441 imapd now has a supported NNTP proxy capability.  If the file /etc/imapd.nntp
442 exists, the contents of that file are used as the host name of an NNTP
443 server which will be used whenever a #news. name is used.  For example, if
444 /etc/imapd.nntp contains nntp.example.com, and the IMAP client SELECTs or
445 EXAMINEs the name #news.comp.mail.imap, what will actually be opened in
446 imapd is {nntp.example.com/nntp}comp.mail.imap
448 The OSF/1 port (Digital UNIX, Tru64) now uses flocksim instead of flcksafe.
449 Some cretin decided to delete the winning flock() call and make flock() use
450 the losing fcntl() call instead.
452 The unix[nt] and mmdf drivers now prevent mail_append() from writing Status:,
453 X-Status:, X-UID, X-IMAP[base]:, and X-Keywords: header lines to a
454 traditional UNIX or MMDF format mailbox.  If any such lines are in the
455 text supplied to mail_append(), they will be quoted by prefixing with
456 "X-Original-" (e.g. Status: will become X-Original-Status:).
458 There are no user-visible functional enhancements in this version.
461 Updated: 10 May 2004
463 imap-2004 is a major release.  Programs written for imap-2002e should
464 build with this version with minor modification.  imap-2003 was not
465 released except as development snapshots.
467 mailutil has three new commands: delete, rename, and prune.
469 IPv6 support now exists for UNIX and W2K.  It is the default in W2K builds.
470 On UNIX, add "IP=6" to the make command line.  Windows IPv6 support is
471 only for W2K builds.
473 The NNTP driver now supports NNTP SASL and TLS.
475 The ldb (Debian) and lrh (RedHat) ports now look for mlock on
476 /usr/sbin/mlock instead of /etc/mlock.
478 imapd now supports the LITERAL+ and SASL-IR initial-response extensions.
480 The IMAP driver has some additional checks to reduce the amount of network
481 traffic, including executing "silly searches" (searches of sequence numbers
482 only) locally.
484 The IMAP, POP, SMTP, and NNTP drivers now have diagnostic code to provide
485 better information about servers which violate SASL's empty challenge
486 requirements (e.g. with the PLAIN mechanism).
488 There is a new mail_fetch_overview_sequence() function which is like
489 mail_fetch_overview() but takes a sequence number string as an argument.
490 There should have been a flags argument and FT_UID bit as in all the other
491 mail_fetch_???() functions but compatibility with the past... :-(
493 The overview_t callback (from mail_fetch_overview()) now has a fourth
494 argument which contains the message sequence number (as opposed to the UID
495 which is in the second argument).  It turned out that some applications were
496 calling mail_msgno() (which can be moderately expensive) to get the sequence
497 number, and c-client already knew it.
499 Many declarations which are completely internal to a driver have been removed
500 from the driver .h file, and in those cases where there are no external
501 declarations left the .h file has been eliminated entirely.  As part of this,
502 the mbox driver routines are now incorporated with the unix driver routines
503 as opposed to being a separate file.  The mbox driver still needs to be lunk
504 in order to get the mbox functionality.
507 Updated: 27 August 2003
509 imap-2002e is a minor release, released concurrently with Pine 4.58, and
510 contains primarily bugfixes.  Programs written for imap-2002d will build
511 with this version without modification.
513 The NNTP client code now tries to perform better with legacy NNTP servers
514 which do not comply with the current NNTP protocol specification draft, most
515 notably Netscape Collabra.
517 Delivery notifications now work reliably with SMTP servers that support it.
519 The following changes are primarily of concern to developers and power users:
521 There is a "limited advertise" option in env_unix.c which, if set, will only
522 advertise the user's own namespace and the #shared/ namespace.
524 It is now possible to build the IMAP toolkit with a separate SSL KEY file
525 from the certificate file (SSLKEYS vs. SSLCERTS).
527 A new BODY structure element, sparep, is available for the main program to
528 use as a pointer for its own purposes; as well as a SET_FREEBODYSPAREP
529 function, similar to SET_FREEENVELOPESPAREP, SET_FREEELTSPAREP, etc.
532 Updated: 28 May 2003
534 imap-2002d is a minor release, released concurrently with Pine 4.56, and
535 contains primarily bugfixes.  Programs written for imap-2002 should build
536 with this version without modification, with one exception.  That exception
537 is the ngbogus envelope flag, which stopped being used in imap-2002c and is
538 now gone for good.
540 The NNTP newsgroup listing code now tries to use wildmats on the NNTP server,
541 which should result in better performance especially on slow lines.  It is
542 also once again permitted to log in on NNTP servers when /loser is set.
544 imapd now supports the UNSELECT command.
546 A new envelope flag, imapenvonly, indicates that the envelope in a
547 MESSAGE/RFC822 BODY structure only has the IMAP envelope components and
548 not the additional components from c-client: Newsgroups, Followup-To,
549 and References.
552 Updated: 7 April 2003
554 imap-2002c is a minor release, released concurrently with Pine 4.55, and
555 contains primarily bugfixes.  Programs written for imap-2002 will build
556 with this version without modification.
558 The POP3 driver will, with new servers that support CAPA, use the LIST
559 command to get the elt->rfc822_size and the TOP command to get the message
560 header, instead of fetching the entire message.  Note that it is a bad idea
561 to do this with old servers, since they may misimplement LIST and TOP.  The
562 result is a substantial performance improvement.
564 Subject extraction for comparisons in SORT and THREAD are now done in full
565 compliance with the rules laid out in the specification.  This only makes
566 a difference if "re:" was part of a MIME quoted-word.
568 The new experimental #move namespace allows download-and-delete from a source
569 mailbox to a destination mailbox.  Immediately following #move is a delimiter
570 character which must not appear in the source mailbox name, then the source
571 mailbox name, then the delimiter again, then the destination mailbox name.
572 For example:
573         #move+{pop3.foo.com/pop3}+INBOX
574 will download messages from "pop3.foo.com" into your local INBOX.
576 The NNTP driver now uses the LIST EXTENSIONS command as described in the
577 current NNTP protocol specification draft, and will prefer to use OVER over
578 XOVER, HDR over XHDR, etc.
580 The SET_NNTPRANGE function of mail_parameters() can be used to limit the
581 number of articles recognized by the NNTP driver, resulting in a substantial
582 performance improvement with NNTP servers that may have hundreds of thousands
583 of old articles in the spool.  If set non-zero, then only the last n article
584 numbers will be considered.  If you are on a slow link, you may want to set
585 this to 1000 or less.
587 Besides the normally tested UNIX and 32-bit Microsoft platforms, this release
588 has also been tested and will once build under TOPS-20 and VAX/VMS.  I also
589 fixed a bug which would keep it from building on 16-bit DOS, but I don't know
590 if it will build on that platform or not since I no longer have a system with
591 the old DOS C compiler.  It has not been tested on Macintosh (note however
592 that Mac OS X is a type of UNIX and should build), Amiga, or OS/2, and probably
593 no longer builds on those platforms.
596 Updated: 7 January 2003
598 imap-2002b is a maintenace release, released concurrently with Pine 4.52,
599 and contains only bugfixes.  Programs written for imap-2002 will build with
600 this version without modification.
602 Drivers which do not announce new mail are now indicated by the DR_NONEWMAIL
603 driver flag.  Driver which do not announce new mail when read-only are now
604 indicated by the DR_NONEWMAILRONLY flag.
606 There are no user-visible functional enhancements in this version.
609 Updated: 10 December 2002
611 imap-2002a is a maintenance release, consisting entirely of critical
612 bugfixes.  Programs written for imap-2002 will build with this version
613 without modification.
615 There are no functional enhancements in this version.
618 Updated: 28 October 2002
620 imap-2002 is a major release.  Programs written for imap-2001 will probably
621 build with this version without modification, with one exception.  That
622 exception is if the program uses [GS]ET_DISABLEAUTOMATICSHAREDNAMESPACES,
623 which has been renamed to [GS]ET_DISABLEAUTOSHAREDNS in order to placate
624 some compilers which don't like very long names.
626 SSLTYPE=nopwd is now the default, in accordance with current IESG security
627 requirements.  In order to build the IMAP toolkit without SSL/TLS you must
628 now use SSLTYPE=none.  At initial build time, you will be told if the SSLTYPE
629 setting is in compliance with IESG security requirements, and if it is not
630 you will be asked to confirm to continue the build.
632 ORDEREDSUBJECT threading has been changed in accordance with draft 12 of the
633 IMAP threading specification.  Previously, each non-root message in an
634 ORDEREDSUBJECT thread has been a child of the message immediately preceeding
635 it in the thread.  Draft 12 changes this so that the second message in the
636 thread is the child of the first (root) message, and all subsequent messages
637 are siblings of the first message.  This is significant in MUAs which display
638 the thread structure graphically; the new definition is much saner than the
639 old one since it does not nest endlessly due to parent/child relationships
640 that may not exist.  This also impacts imapd, since imapd's THREAD command
641 will return a thread structure.
643 RFC 1730 server support, which was disabled in imap-2001, is now fully
644 removed from imapd.  imapd still supports IMAP2bis, specifically the FIND
645 command, since there are still a few IMAP2 clients out there.
647 The IMAP client routines in the c-client library continue to support recognize
648 RFC 1730 servers, but do not implement the deprecated features of RFC 1730.
650 The Frequently Asked Questions file is now in HTML format, although a text
651 version (generated from the HTML version with Lynx) is also provided.
653 A new program, mailutil, is now bundled with the IMAP toolkit.  mailutil
654 replaces the old chkmail, imapcopy, imapmove, imapxfer, mbxcopy, mbxcreat,
655 and mbxcvt programs that were distributed in the imap-utils.  In addition,
656 the tmail, dmail, and mlock programs from the imap-utils are now also
657 bundled with the IMAP toolkit.
659 In addition to the usual bugfixes, the following c-client functionalities
660 are new in imap-2002:
662 The SET_DISABLE822TZTEXT parameter allows a client to suppress generation of
663 the "human friendly" time zone text in RFC822 dates.  This placates netnews
664 and some broken SMTP servers which think that long timezone names from Windows
665 are an attempt at a buffer overflow attack.
667 The restrictBox option in env_unix.c sets "restricted box" functionality,
668 which disables access to the root (leading "/"), access to other user's
669 directories (leading "~"), and access to superior directories via "..".
671 Content-Location is now supported by the "location" member of the BODY
672 structure.  Note that there is a bug in the IMAP client code in older
673 versions of the c-client library that causes it to handle BODYSTRUCTURE
674 extension data improperly if that data is a literal.  The new functionality
675 for Content-Location may trigger this bug.  The fix is either to upgrade
676 the IMAP client program to the imap-2002 version of c-client or to remove
677 the Content-Location support from imapd.
679 There are now 8 spare bits for application use in both the elts and the
680 mail streams.
682 mail_search() now returns a value (previously it was void).  If mail_search()
683 returns NIL, then the supplied charset was invalid or the IMAP server
684 returned NO (probably because the supplied charset was invalid).
686 New utf8_charset() routine to look up a charset and return c-client's
687 database about that charset if found.  Among other things, this will give
688 you the scripts supported by that charset and its Unicode conversion table.
690 New FT_NOLOOKAHEAD flag for mail_fetch_structure() disables fetching of
691 any envelopes other than the one specified.  Otherwise, it will try to do
692 anticipatory fetching (up to IMAPLOOKAHEAD).
694 New GET_FETCHLOOKAHEAD allows better control of mail_fetch_structure()
695 lookahead.  Instead of looking IMAPLOOKAHEAD messages forward from the
696 specified message, it will use a supplied SEARCHSET to generate message
697 sequences and ranges.  It will stop at IMAPLOOKAHEAD messages or at the
698 completion of a range which exceeds IMAPLOOKAHEAD.  The search set only
699 applies to the next mail_fetch_structure() on that stream, and is cleared
700 once it is used.  Call with
701   SEARCHSET **set = (SEARCHSET **)
702     mail_parameters (stream,GET_FETCHLOOKAHEAD,(void *) stream);
703   *set = pointer to desired search set
705 New mail_shortdate() routine returns an date in the format expected by
706 SEARCHPGMs.
709 Updated: 2 November 2001
711 imap-2001a is a maintenance release, consisting primarily of bugfixes
712 including some critical bugfixes to crash and denial of service problems.
713 Programs written for imap-2001 will build with this version without
714 modification.
716 The following new facilities have also been added:
718 The new /norsh switch in mailbox names provides a more intuitive way of
719 disabling rsh-IMAP than the existing :143 or setting the rsh-timeout to 0.
721 Passwords are no longer returned in mm_dlog() callbacks unless the
722 application sets the SET_DEBUGSENSITIVE parameter.
724 The SET_NETFSSTATBUG parameter allows an application to force the
725 traditional UNIX mailbox driver to close and reopen the mailbox at ping
726 time.  This is EXTREMELY inefficient, and should only be used to access
727 files stored on AFS and old NFS systems.
729 The ISO 8859 and Windows conversion tables have been updated to comply
730 with Unicode 3.1, and the KOI8-R table has been verified as compliant with
731 Unicode 3.1.
733 The SPECIALS mechanism for passing parameters to the lowest level Makefile
734 has been updated to be more general.  See the next item for why you might
735 care.
737 New lrh port to build on Red Hat Linux 7.2, with pre-set definitions for
738 the places where Red Hat has placed Kerberos and SSL.  It's actually just
739 the lnp port with SPECIALS defined accordingly.  You may want to use it as
740 a model if your system needs such definitions.  Note that SPECIALS is
741 primarily for IMAP toolkit (and Pine) purposes, and that user settings
742 should use EXTRASPECIALS instead.
745 Updated: 22 June 2001
747 imap-2001 is a major release.  Programs written for imap-2000 will probably
748 build with this version without modification.
750 The FAQ document has been significantly expanded.  Be sure to read it for
751 more information.
753 In addition to the usual bugfixes, the following features are new in
754 imap-2001:
756 SSL is now fully integrated into the IMAP toolkit; the old "alt" kludges to
757 be able to produce a "sanitized" version of the IMAP toolkit to comply with
758 late unlamented US export regulations are now completely gone.
760 Full client and server TLS support is also in this release.
762 The server certificate must be signed by a trusted certificate authority and
763 the name in the certificate match the user's entry for the server host name;
764 this means that the user must enter a fully-qualified host name.
766 To build with SSL/TLS on UNIX, you now use "SSLTYPE=unix" instead of the
767 former "SPECIALAUTHENTICATORS=ssl".  To build with SSL/TLS on UNIX and disable
768 the use of plaintext passwords except when under SSL/TLS, use "SSLTYPE=nopwd"
769 instead of "SSLTYPE=unix".
771 RFC 1730 (IMAP4 as opposed to IMAP4rev1) support is turned off by default in
772 imapd.  No clients should still be using RFC 1730 protocol.  Look at the imapd
773 Makefile for how to re-enable RFC 1730 support.  Note that this code may be
774 removed in the future, so if you think you need it you had better let me know.
776 There are some new options (turned off by default) which attempt to work around
777 problems in certain clients.  See the FAQ file for more details.
780 Updated: 24 January 2001
782 imap-2000c is a maintenance release, consisting primarily of bugfixes.
785 Updated: 9 January 2001
787 imap-2000b is a maintenance release, consisting primarily of bugfixes.
790 Updated: 9 November 2000
792 imap-2000a is a maintenance release, consisting primarily of bugfixes.
795 Updated: 19 September 2000
797 imap-2000 is a major release.  There are major internal and external changes
798 from earlier versions (imap-4.x and imap-3.x series).  Programs written for
799 imap-4.x will probably build with this version without modification.  It is
800 extremely unlikely that a program written for imap-3.x or earlier series will
801 build with this version without modifications.  Drivers written for earlier
802 versions will definitely need to be rewritten.
804 In addition to the usual bugfixes, the following features are new in imap-2000:
806 SSL support is now available.  For UNIX, it is necessary to install some
807 version of OpenSSL; see imap-2000/docs/SSLBUILD for more information.  SSL
808 support is now automatic for the NT, NTK, and W2K ports.  SSL use is indicated
809 by the /ssl switch in the mailbox name.
811 With SSL connections, the server certificate is validated by the client code
812 on UNIX, and Windows 2000 unless /novalidate-cert is specified.  Server
813 certificates are currently is not validated on Windows 9x, Windows Millenium,
814 or Windows NT 4; this is an artifact of the operating system and not the port
815 (e.g. client code using the NT port will validate certificates if running on
816 Windows 2000).  On UNIX, the server certificate must be signed by a trusted
817 certificate authority.  On Windows 2000, the certificate must be signed by a
818 trusted certificate authority and match the user's entry for the server host
819 name; this means that the user must enter a fully-qualified host name.
821 Calendar reclama for the benefit of old broken non-Y2K compliant software.
822 Two digit years from 00 to 69 will be interpreted as 2000 through 2069.  In
823 addition, three digit years from 100 to 105 will be interpreted as 2000
824 through 2005.
826 Support for REFERENCES threading (in addition to the previously-existing
827 ORDEREDSUBJECT threading).
829 Support for the IMAP MULTIAPPEND extension.  This allows much faster uploading
830 of multiple messages to an IMAP server.
832 Support for the LOGINDISABLED IMAP capability.  If the IMAP server sends
833 LOGINDISABLED as a capability, the client code will never attempt to send an
834 IMAP LOGIN command.
836 Support for SASL authentication identity vs. authorization identity.  If the
837 authentication method does not support this concept (e.g. AUTH=CRAM-MD5,
838 AUTH=LOGIN, LOGIN command), the "*" character in the user name may be used to
839 indicate a separate authentication identity; for example, "fred*joe" indicates
840 authorization identity "fred", authentication identity "joe".
843 UNIX-specific Changes:
845 Support for SASL authentication identity vs. authorization identity in the
846 IMAP and POP3 servers.  If the user indicated by the authentication identity
847 is in the "mailadm" group, he may specify any authorization identity and get
848 logged in as the authorization identity user.
850 If the IMAP and POP3 servers are build with PASSWDTYPE=nul, it will send
851 LOGINDISABLED as a capability and also disable the AUTH=LOGIN and AUTH=PLAIN
852 SASL authenticators.
854 New MAILSUBDIR build option to change the default mailbox directory from the
855 user's home directory to a subdirectory of the user's home directory.  See
856 imap-2000/Makefile for more information.
858 New CHROOT_SERVER build option for closed server systems only.  If defined, a
859 chroot() call to the user's home directory is done as part of the login
860 process.  See imap-2000/Makefile for more information.
862 New ADVERTISE_THE_WORLD build option which will add an IMAP namespace that
863 points to the root.  Not for the faint of heart.
865 UNIX format mailboxes no longer require the pseudo-message, nor will a
866 pseudo-message be added to a mailbox that does not have one.  A new
867 X-IMAPbase: header will be written in the first message.  This is rather less
868 efficient and robust than the pseudo-message (which remains the encouraged
869 mechanism; UNIX format mailboxes will always be created with it), but perhaps
870 will pacify some people who get upset by the pseudo-message.
872 When building with MIT Kerberos it will try to detect and use libk5crypto.a
873 instead of libcrypto.a.
875 The mbx driver is more aggressive about cleaning up expunged messages that
876 couldn't be purged because of shared access to the mailbox at the time of
877 expunge.  Now, every checkpoint will try to purge such messages; and a
878 checkpoint is attempted at close time.
881 Windows-specific Changes:
883 New W2K port for Windows 2000.  In addition to supporting SSL using the
884 official SSPI interface (the NT and NTK ports invoke SChannel.DLL directly),
885 the W2K port also supports Microsoft Kerberos.  Note that the NT and NTK ports
886 will work on Windows 2000, but the W2K port will not work on NT4, Windows
887 9x, or Windows Millenium.
889 There is now a #user namespace, equivalent to the "~" namespace on UNIX.
893 Changes for Developers:
895 New c-client.h file which acts as a master include.  c-client based
896 applications should now include c-client.h instead of the individual c-client
897 files (mail.h, misc.h, etc.).  It is believed that c-client.h will work in C++
898 applications.
900 New GET_FREEENVELOPESPAREP/SET_FREEENVELOPESPAREP and
901 GET_FREEELTSPAREP/SET_FREEELTSPAREP function callbacks to free the "sparep"
902 member of the envelope and cache elements, respectively.
904 New OP_MULNEWSRC flag to mail_open() to use multiple newsrc files, and new
905 GET_NEWSRCQUERY/SET_NEWSRCQUERY function callbacks to get the name of the
906 newsrc file for news access.
908 New "secret" nntp_article() function to do the NNTP ARTICLE command; this is
909 generally useful only when chasing news URLs.
911 New GET_HIDEDOTFILES/SET_HIDEDOTFILES feature to suppress file names that
912 start with "." in mail_list() results.