imapext-2007

annotate docs/RELNOTES @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children 2366b362676d
rev   line source
yuuji@0 1 /* ========================================================================
yuuji@0 2 * Copyright 1988-2008 University of Washington
yuuji@0 3 *
yuuji@0 4 * Licensed under the Apache License, Version 2.0 (the "License");
yuuji@0 5 * you may not use this file except in compliance with the License.
yuuji@0 6 * You may obtain a copy of the License at
yuuji@0 7 *
yuuji@0 8 * http://www.apache.org/licenses/LICENSE-2.0
yuuji@0 9 *
yuuji@0 10 *
yuuji@0 11 * ========================================================================
yuuji@0 12 */
yuuji@0 13
yuuji@0 14 Updated: 16 December 2008
yuuji@0 15
yuuji@0 16 imap-2007e is a maintenance release, consisting primarily of bugfixes to
yuuji@0 17 problems discovered in the release that affected a small number of users
yuuji@0 18 plus a security fix for users of the RFC822BUFFER routines.
yuuji@0 19
yuuji@0 20
yuuji@0 21 Updated: 29 October 2008
yuuji@0 22
yuuji@0 23 imap-2007d is a maintenance release, consisting primarily of bugfixes to
yuuji@0 24 problems discovered in the release that affected a small number of users
yuuji@0 25 plus a security fix for users of tmail or dmail.
yuuji@0 26
yuuji@0 27
yuuji@0 28 Updated: 25 March 2008
yuuji@0 29
yuuji@0 30 imap-2007b is a maintenance release, consisting primarily of bugfixes to
yuuji@0 31 problems discovered in the release that affected a small number of users.
yuuji@0 32
yuuji@0 33
yuuji@0 34 Updated: 2 January 2008
yuuji@0 35
yuuji@0 36 imap-2007a is a maintenance release, consisting primarily of bugfixes to
yuuji@0 37 problems discovered in the release that affected a small number of users.
yuuji@0 38
yuuji@0 39
yuuji@0 40 Updated: 20 December 2007
yuuji@0 41
yuuji@0 42 imap-2007 is a release corresponding with the release of Alpine 1.0.
yuuji@0 43 The primary focus of the imap-2007 release is bugfixes and reliability
yuuji@0 44 improvements. This includes:
yuuji@0 45 . fixes to problems discovered between the Alpine 0.99999 pre-release
yuuji@0 46 and Alpine 1.0
yuuji@0 47 . fixes to the mix driver to timing race problems uncovered by Timo
yuuji@0 48 Sirainen's imaptest suite. imap-2007 using the mix format is
yuuji@0 49 believed to pass imaptest completely.
yuuji@0 50
yuuji@0 51 A new function, utf8_csvalidmap(), has been added for the benefit of
yuuji@0 52 Alpine to use in examining UTF-8 text and determining efficiently
yuuji@0 53 whether it can be downgraded to a legacy charset. If you develop an
yuuji@0 54 MUA, this may be useful for you too, although you'll have to read the
yuuji@0 55 source code to see how to use it. The purpose of the "not-CJK" bit is
yuuji@0 56 to prevent messages being downgraded to a CJK charset if all they have
yuuji@0 57 in that charset are some special punctuation.
yuuji@0 58
yuuji@0 59
yuuji@0 60 Updated: 5 September 2007
yuuji@0 61
yuuji@0 62 imap-2006k is a maintenance release, consisting primarily of bugfixes to
yuuji@0 63 problems discovered in the release that affected a small number of users.
yuuji@0 64
yuuji@0 65 The primary focus of this maintenance release is to correct deadlock
yuuji@0 66 issues. There were two major causes of the deadlocks:
yuuji@0 67 . a change in imap-2006i attempted to resolve a glibc mutex-based
yuuji@0 68 deadlock in imapd's signal handler, but ended up worsening the problem.
yuuji@0 69 . a bug in the mbx driver, introduced as part of the UIDPLUS work in 2006,
yuuji@0 70 applied an mbx-style lock briefly on a traditional UNIX format mailbox.
yuuji@0 71 If the traditional UNIX format mailbox was already locked by some other
yuuji@0 72 process, the result would be a deadlock of both processes.
yuuji@0 73
yuuji@0 74 imapd's signal handling logic is rewritten to avoid the mutex issue, and
yuuji@0 75 the mbx driver is fixed so that mbx-style locks are only applied to mbx
yuuji@0 76 format mailboxes.
yuuji@0 77
yuuji@0 78 imapd now supports the WITHIN extension.
yuuji@0 79
yuuji@0 80
yuuji@0 81 Updated: 14 June 2007
yuuji@0 82
yuuji@0 83 imap-2006j is a maintenance release, consisting primarily of bugfixes to
yuuji@0 84 problems discovered in the release that affected a small number of users.
yuuji@0 85
yuuji@0 86
yuuji@0 87 Updated: 5 June 2007
yuuji@0 88
yuuji@0 89 imap-2006i is a maintenance release, consisting primarily of bugfixes to
yuuji@0 90 problems discovered in the release that affected a small number of users.
yuuji@0 91
yuuji@0 92 imapd now supports the CHILDREN and ESEARCH extensions.
yuuji@0 93
yuuji@0 94 imapd's attempt to return COPYUID/APPENDUID information for a traditional
yuuji@0 95 UNIX (and MMDF) format mailbox when the mailbox is open by another process
yuuji@0 96 has been declared to be a failure and is now revoked. It was subject to a
yuuji@0 97 timing race, loss of which involved an expensive reset of the mailbox's UID
yuuji@0 98 regime. Any imapd COPY or APPEND to a traditional UNIX or MMDF format that
yuuji@0 99 is open by some other process will now no longer return COPYUID/APPEND.
yuuji@0 100 Although this is technically in violation of RFC 4315, there is a loophole
yuuji@0 101 in that document and the timing race/performance problem is worse.
yuuji@0 102
yuuji@0 103
yuuji@0 104 Updated: 4 April 2007
yuuji@0 105
yuuji@0 106 imap-2006h is a maintenance release, consisting primarily of bugfixes to
yuuji@0 107 problems discovered in the release that affected a small number of users.
yuuji@0 108
yuuji@0 109
yuuji@0 110 Updated: 30 March 2007
yuuji@0 111
yuuji@0 112 imap-2006g is a maintenance release, consisting primarily of bugfixes to
yuuji@0 113 problems discovered in the release that affected a small number of users.
yuuji@0 114
yuuji@0 115
yuuji@0 116 Updated: 30 January 2007
yuuji@0 117
yuuji@0 118 imap-2006f is a maintenance release, consisting primarily of bugfixes to
yuuji@0 119 problems discovered in the release that affected a small number of users.
yuuji@0 120
yuuji@0 121 For the benefit of multi-threaded applications, use of strtok() has been
yuuji@0 122 abolished in the c-client library. imapd and ipop3d stuff use it though.
yuuji@0 123 The TOPS-20 and VAX/VMS ports still use strtok() since they don't use UNIX
yuuji@0 124 threads.
yuuji@0 125
yuuji@0 126 This version has been test-built on Linux, Mac OS X, NeXT, Windows XP,
yuuji@0 127 TOPS-20, and VAX/VMS. This will probably be the last test-build on VAX/VMS
yuuji@0 128 since the system I use for that purpose is being shut down. I have no way
yuuji@0 129 to test-build on DOS, legacy Mac OS (OS 9 and earlier), OS/2, or Windows CE;
yuuji@0 130 and the builds on those systems are probably broken.
yuuji@0 131
yuuji@0 132
yuuji@0 133 Updated: 26 January 2007
yuuji@0 134
yuuji@0 135 imap-2006e is a maintenance release, consisting primarily of bugfixes to
yuuji@0 136 problems discovered in the release that affected a small number of users.
yuuji@0 137
yuuji@0 138
yuuji@0 139 Updated: 6 December 2006
yuuji@0 140
yuuji@0 141 imap-2006d is a maintenance release, consisting primarily of bugfixes to
yuuji@0 142 problems discovered in the release that affected a small number of users.
yuuji@0 143
yuuji@0 144 The decomposition mapping, title-case mapping, and character widths tables
yuuji@0 145 have been updated to comply with the Unicode 5.0 standard.
yuuji@0 146
yuuji@0 147 Prototypes for the utf8aux.c functions have been moved to a new utf8aux.h.
yuuji@0 148
yuuji@0 149 The general c-client modules now include c-client.h instead of the individual
yuuji@0 150 files. Use of c-client.h instead of individual include files insulates
yuuji@0 151 against future shuffling of include files.
yuuji@0 152
yuuji@0 153
yuuji@0 154 Updated: 23 October 2006
yuuji@0 155
yuuji@0 156 imap-2006c is a maintenance release, consisting primarily of bugfixes to
yuuji@0 157 problems discovered in the release that affected a small number of users.
yuuji@0 158
yuuji@0 159 By popular request, if a user has a mix (or other dual-use) format INBOX,
yuuji@0 160 it will no longer be listed as \NoInferiors. It's a bad idea to depend
yuuji@0 161 upon this due to the case ambiguity issue, but it's there.
yuuji@0 162
yuuji@0 163
yuuji@0 164 Updated: 26 September 2006
yuuji@0 165
yuuji@0 166 imap-2006b is a maintenance release, consisting entirely of bugfixes to
yuuji@0 167 problems discovered in the release that affected a small number of users.
yuuji@0 168
yuuji@0 169
yuuji@0 170 Updated: 15 September 2006
yuuji@0 171
yuuji@0 172 imap-2006a is a maintenance release, consisting entirely of bugfixes to
yuuji@0 173 problems discovered in the release that affected a small number of users.
yuuji@0 174
yuuji@0 175 If it is necessary to build IPv4-only on one of the ports that has IPv6
yuuji@0 176 preconfigured (ldb, lfd, lmd, lrh, lsu, osx, oxp), this can be done by
yuuji@0 177 using IP6=4. You can't do IP=4 in the build command directly since these
yuuji@0 178 ports set IP themselves; however, now instead of setting IP=6 they now set
yuuji@0 179 IP=$(IP6).
yuuji@0 180
yuuji@0 181
yuuji@0 182 Updated: 30 August 2006
yuuji@0 183
yuuji@0 184 imap-2006 is a major release. Programs written for imap-2004g should
yuuji@0 185 build with this version with minor or no modification. imap-2005 was not
yuuji@0 186 released except as development snapshots.
yuuji@0 187
yuuji@0 188 imap-2006 contains major extensions to its Unicode support. Searching and
yuuji@0 189 sorting are now done with strings canonicalized to titlecase and decomposed
yuuji@0 190 form. Among other things, this means that Latin letters with diacriticals
yuuji@0 191 will now sort with the basic Latin letter, and case-independent searching of
yuuji@0 192 such letters (e.g., German umlauts) now works. Previously, sorting was done
yuuji@0 193 strictly by Unicode codepoint, and case-independence only worked with ASCII.
yuuji@0 194
yuuji@0 195 imapd now supports the UIDPLUS extension for mailboxes in unix, mmdf, mbx, mx,
yuuji@0 196 and mix formats. UID EXPUNGE is fully implemented. Note that UIDPLUS is not
yuuji@0 197 supported in the little-used drivers (mh, mtx, tenex) in which meaningful
yuuji@0 198 APPENDUID/COPYUID data can not be returned. Refer to bugs.txt for more
yuuji@0 199 details.
yuuji@0 200
yuuji@0 201 The new mix format is a dual-use mailbox format designed for performance and
yuuji@0 202 reliability with large mailboxes. mix is documented in file mixfmt.txt.
yuuji@0 203
yuuji@0 204 SSL/TLS certificate validation on UNIX now checks the alternative names in the
yuuji@0 205 certificate if the CN does not match.
yuuji@0 206
yuuji@0 207 The new /tls-sslv23 flag in a mailbox name causes a TLS session to use the
yuuji@0 208 (incorrect) SSLv23 client method instead of the TLSv1 client method. Some
yuuji@0 209 broken servers use the SSLv23 server method, and this flag works around that
yuuji@0 210 problem. WARNING: use of this flag will cause TLS negotiation to fail with
yuuji@0 211 a server which uses the proper TLSv1 server method. Additionally, there are
yuuji@0 212 known security risks in SSLv2; so users should be suspicious if this switch
yuuji@0 213 suddenly becomes necesary.
yuuji@0 214
yuuji@0 215 The silly mailbox flag combination /ssl/tls is now rejected as an invalid
yuuji@0 216 remote specification. Previous versions tried to negotiate TLS over an SSL
yuuji@0 217 session; even if the server permitted such a thing it couldn't work.
yuuji@0 218
yuuji@0 219 The memory management of several drivers has been redesigned to consume less
yuuji@0 220 memory and hopefully be faster.
yuuji@0 221
yuuji@0 222 The private.data member of the MESSAGECACHE (elt) has been replaced with
yuuji@0 223 a union that contains private.spare.data and private.spare.ptr, the latter
yuuji@0 224 being a pointer.
yuuji@0 225
yuuji@0 226 A new FT_RETURNSTRINGSTRUCT flag has been added for mail_fetch_body() and
yuuji@0 227 mail_fetch_text() calls. If this flag is set, *and* if the function returns
yuuji@0 228 NIL, then the requested string data is available on a stringstruct on
yuuji@0 229 stream->private.string. This is a special hack for the IMAP and POP servers
yuuji@0 230 and is subject to incompatible change. The result is a major performance
yuuji@0 231 improvement in the servers with the mbx driver, particularly with large
yuuji@0 232 messages.
yuuji@0 233
yuuji@0 234
yuuji@0 235 Updated: 15 September 2005
yuuji@0 236
yuuji@0 237 imap-2004g is a maintenance release, and consists solely of a bugfix to
yuuji@0 238 quoted string handling in the mailbox name parsing routine.
yuuji@0 239
yuuji@0 240
yuuji@0 241 Updated: 15 August 2005
yuuji@0 242
yuuji@0 243 imap-2004f is a maintenance release, and consists solely of a bugfix to
yuuji@0 244 the TCP code.
yuuji@0 245
yuuji@0 246 Also included is a new version of the UNIX SSL/TLS routines that allows the
yuuji@0 247 SSL/TLS certificate validation client code to validate alternative names in
yuuji@0 248 server certificates. This code has not been thoroughly regression-tested but
yuuji@0 249 is believed to work. To use this new code instead of the old support:
yuuji@0 250 cd imap-2004f/src/osdep/unix
yuuji@0 251 mv ssl_unix.c ssl_unix.old
yuuji@0 252 mv ssl_unix.new ssl_unix.c
yuuji@0 253 Then rebuild.
yuuji@0 254
yuuji@0 255
yuuji@0 256 Updated: 21 June 2005
yuuji@0 257
yuuji@0 258 imap-2004e is a maintenance release, consisting entirely of bugfixes.
yuuji@0 259
yuuji@0 260 There are no user-visible functional enhancements in this version.
yuuji@0 261
yuuji@0 262
yuuji@0 263 Updated: 20 April 2005
yuuji@0 264
yuuji@0 265 imap-2004d is a maintenance release, released concurrently with Pine
yuuji@0 266 4.63, and consists primarily of bugfixes
yuuji@0 267
yuuji@0 268 There is now a workaround for RedHat breaking flock(). However, since
yuuji@0 269 RedHat has said that they don't support flock(), there is no guarantee
yuuji@0 270 that they won't break it in the future. So you may want to consider some
yuuji@0 271 other Linux distribution or BSD instead. See:
yuuji@0 272 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=123415
yuuji@0 273 for the gruesome details.
yuuji@0 274
yuuji@0 275 There are no user-visible functional enhancements in this version.
yuuji@0 276
yuuji@0 277
yuuji@0 278 Updated: 18 January 2005
yuuji@0 279
yuuji@0 280 imap-2004c is a maintenance release, released concurrently with Pine
yuuji@0 281 4.62, including fixes to quoted-printable encoding and CRAM-MD5
yuuji@0 282 authentication.
yuuji@0 283
yuuji@0 284 NNTP proxy in imapd now supports the LIST and LSUB commands.
yuuji@0 285
yuuji@0 286 There are no other user-visible functional enhancements in this version.
yuuji@0 287
yuuji@0 288
yuuji@0 289 Updated: 29 November 2004
yuuji@0 290
yuuji@0 291 imap-2004b is a maintenance release, consisting primarily of bugfixes.
yuuji@0 292 Programs written for imap-2004a will build with this version without
yuuji@0 293 modifification.
yuuji@0 294
yuuji@0 295 There are new ports for Solaris with Blastwave Community Open Source
yuuji@0 296 Software (gcs) and Mandrake Linux (lmd).
yuuji@0 297
yuuji@0 298 SET_SNARFINTERVAL now controls how frequently local drivers will move new
yuuji@0 299 mail from the mail spool as well as from a maildrop. Maildrops are still
yuuji@0 300 tied to a minimum interval of 1 minute, but there is now no minimum for the
yuuji@0 301 spool file.
yuuji@0 302
yuuji@0 303 Character set conversions now map non-breaking space to space if the
yuuji@0 304 destination character set doesn't have nbsp. JIS Roman yen sign is now
yuuji@0 305 mapped to Unicode yen sign.
yuuji@0 306
yuuji@0 307 There are no user-visible functional enhancements in this version.
yuuji@0 308
yuuji@0 309
yuuji@0 310 Updated: 8 July 2004
yuuji@0 311
yuuji@0 312 imap-2004a is a maintenance release, consisting primarily of critical
yuuji@0 313 bugfixes. Programs written for imap-2004 will build with this version
yuuji@0 314 without modification.
yuuji@0 315
yuuji@0 316 imapd now has a supported NNTP proxy capability. If the file /etc/imapd.nntp
yuuji@0 317 exists, the contents of that file are used as the host name of an NNTP
yuuji@0 318 server which will be used whenever a #news. name is used. For example, if
yuuji@0 319 /etc/imapd.nntp contains nntp.example.com, and the IMAP client SELECTs or
yuuji@0 320 EXAMINEs the name #news.comp.mail.imap, what will actually be opened in
yuuji@0 321 imapd is {nntp.example.com/nntp}comp.mail.imap
yuuji@0 322
yuuji@0 323 The OSF/1 port (Digital UNIX, Tru64) now uses flocksim instead of flcksafe.
yuuji@0 324 Some cretin decided to delete the winning flock() call and make flock() use
yuuji@0 325 the losing fcntl() call instead.
yuuji@0 326
yuuji@0 327 The unix[nt] and mmdf drivers now prevent mail_append() from writing Status:,
yuuji@0 328 X-Status:, X-UID, X-IMAP[base]:, and X-Keywords: header lines to a
yuuji@0 329 traditional UNIX or MMDF format mailbox. If any such lines are in the
yuuji@0 330 text supplied to mail_append(), they will be quoted by prefixing with
yuuji@0 331 "X-Original-" (e.g. Status: will become X-Original-Status:).
yuuji@0 332
yuuji@0 333 There are no user-visible functional enhancements in this version.
yuuji@0 334
yuuji@0 335
yuuji@0 336 Updated: 10 May 2004
yuuji@0 337
yuuji@0 338 imap-2004 is a major release. Programs written for imap-2002e should
yuuji@0 339 build with this version with minor modification. imap-2003 was not
yuuji@0 340 released except as development snapshots.
yuuji@0 341
yuuji@0 342 mailutil has three new commands: delete, rename, and prune.
yuuji@0 343
yuuji@0 344 IPv6 support now exists for UNIX and W2K. It is the default in W2K builds.
yuuji@0 345 On UNIX, add "IP=6" to the make command line. Windows IPv6 support is
yuuji@0 346 only for W2K builds.
yuuji@0 347
yuuji@0 348 The NNTP driver now supports NNTP SASL and TLS.
yuuji@0 349
yuuji@0 350 The ldb (Debian) and lrh (RedHat) ports now look for mlock on
yuuji@0 351 /usr/sbin/mlock instead of /etc/mlock.
yuuji@0 352
yuuji@0 353 imapd now supports the LITERAL+ and SASL-IR initial-response extensions.
yuuji@0 354
yuuji@0 355 The IMAP driver has some additional checks to reduce the amount of network
yuuji@0 356 traffic, including executing "silly searches" (searches of sequence numbers
yuuji@0 357 only) locally.
yuuji@0 358
yuuji@0 359 The IMAP, POP, SMTP, and NNTP drivers now have diagnostic code to provide
yuuji@0 360 better information about servers which violate SASL's empty challenge
yuuji@0 361 requirements (e.g. with the PLAIN mechanism).
yuuji@0 362
yuuji@0 363 There is a new mail_fetch_overview_sequence() function which is like
yuuji@0 364 mail_fetch_overview() but takes a sequence number string as an argument.
yuuji@0 365 There should have been a flags argument and FT_UID bit as in all the other
yuuji@0 366 mail_fetch_???() functions but compatibility with the past... :-(
yuuji@0 367
yuuji@0 368 The overview_t callback (from mail_fetch_overview()) now has a fourth
yuuji@0 369 argument which contains the message sequence number (as opposed to the UID
yuuji@0 370 which is in the second argument). It turned out that some applications were
yuuji@0 371 calling mail_msgno() (which can be moderately expensive) to get the sequence
yuuji@0 372 number, and c-client already knew it.
yuuji@0 373
yuuji@0 374 Many declarations which are completely internal to a driver have been removed
yuuji@0 375 from the driver .h file, and in those cases where there are no external
yuuji@0 376 declarations left the .h file has been eliminated entirely. As part of this,
yuuji@0 377 the mbox driver routines are now incorporated with the unix driver routines
yuuji@0 378 as opposed to being a separate file. The mbox driver still needs to be lunk
yuuji@0 379 in order to get the mbox functionality.
yuuji@0 380
yuuji@0 381
yuuji@0 382 Updated: 27 August 2003
yuuji@0 383
yuuji@0 384 imap-2002e is a minor release, released concurrently with Pine 4.58, and
yuuji@0 385 contains primarily bugfixes. Programs written for imap-2002d will build
yuuji@0 386 with this version without modification.
yuuji@0 387
yuuji@0 388 The NNTP client code now tries to perform better with legacy NNTP servers
yuuji@0 389 which do not comply with the current NNTP protocol specification draft, most
yuuji@0 390 notably Netscape Collabra.
yuuji@0 391
yuuji@0 392 Delivery notifications now work reliably with SMTP servers that support it.
yuuji@0 393
yuuji@0 394 The following changes are primarily of concern to developers and power users:
yuuji@0 395
yuuji@0 396 There is a "limited advertise" option in env_unix.c which, if set, will only
yuuji@0 397 advertise the user's own namespace and the #shared/ namespace.
yuuji@0 398
yuuji@0 399 It is now possible to build the IMAP toolkit with a separate SSL KEY file
yuuji@0 400 from the certificate file (SSLKEYS vs. SSLCERTS).
yuuji@0 401
yuuji@0 402 A new BODY structure element, sparep, is available for the main program to
yuuji@0 403 use as a pointer for its own purposes; as well as a SET_FREEBODYSPAREP
yuuji@0 404 function, similar to SET_FREEENVELOPESPAREP, SET_FREEELTSPAREP, etc.
yuuji@0 405
yuuji@0 406
yuuji@0 407 Updated: 28 May 2003
yuuji@0 408
yuuji@0 409 imap-2002d is a minor release, released concurrently with Pine 4.56, and
yuuji@0 410 contains primarily bugfixes. Programs written for imap-2002 should build
yuuji@0 411 with this version without modification, with one exception. That exception
yuuji@0 412 is the ngbogus envelope flag, which stopped being used in imap-2002c and is
yuuji@0 413 now gone for good.
yuuji@0 414
yuuji@0 415 The NNTP newsgroup listing code now tries to use wildmats on the NNTP server,
yuuji@0 416 which should result in better performance especially on slow lines. It is
yuuji@0 417 also once again permitted to log in on NNTP servers when /loser is set.
yuuji@0 418
yuuji@0 419 imapd now supports the UNSELECT command.
yuuji@0 420
yuuji@0 421 A new envelope flag, imapenvonly, indicates that the envelope in a
yuuji@0 422 MESSAGE/RFC822 BODY structure only has the IMAP envelope components and
yuuji@0 423 not the additional components from c-client: Newsgroups, Followup-To,
yuuji@0 424 and References.
yuuji@0 425
yuuji@0 426
yuuji@0 427 Updated: 7 April 2003
yuuji@0 428
yuuji@0 429 imap-2002c is a minor release, released concurrently with Pine 4.55, and
yuuji@0 430 contains primarily bugfixes. Programs written for imap-2002 will build
yuuji@0 431 with this version without modification.
yuuji@0 432
yuuji@0 433 The POP3 driver will, with new servers that support CAPA, use the LIST
yuuji@0 434 command to get the elt->rfc822_size and the TOP command to get the message
yuuji@0 435 header, instead of fetching the entire message. Note that it is a bad idea
yuuji@0 436 to do this with old servers, since they may misimplement LIST and TOP. The
yuuji@0 437 result is a substantial performance improvement.
yuuji@0 438
yuuji@0 439 Subject extraction for comparisons in SORT and THREAD are now done in full
yuuji@0 440 compliance with the rules laid out in the specification. This only makes
yuuji@0 441 a difference if "re:" was part of a MIME quoted-word.
yuuji@0 442
yuuji@0 443 The new experimental #move namespace allows download-and-delete from a source
yuuji@0 444 mailbox to a destination mailbox. Immediately following #move is a delimiter
yuuji@0 445 character which must not appear in the source mailbox name, then the source
yuuji@0 446 mailbox name, then the delimiter again, then the destination mailbox name.
yuuji@0 447 For example:
yuuji@0 448 #move+{pop3.foo.com/pop3}+INBOX
yuuji@0 449 will download messages from "pop3.foo.com" into your local INBOX.
yuuji@0 450
yuuji@0 451 The NNTP driver now uses the LIST EXTENSIONS command as described in the
yuuji@0 452 current NNTP protocol specification draft, and will prefer to use OVER over
yuuji@0 453 XOVER, HDR over XHDR, etc.
yuuji@0 454
yuuji@0 455 The SET_NNTPRANGE function of mail_parameters() can be used to limit the
yuuji@0 456 number of articles recognized by the NNTP driver, resulting in a substantial
yuuji@0 457 performance improvement with NNTP servers that may have hundreds of thousands
yuuji@0 458 of old articles in the spool. If set non-zero, then only the last n article
yuuji@0 459 numbers will be considered. If you are on a slow link, you may want to set
yuuji@0 460 this to 1000 or less.
yuuji@0 461
yuuji@0 462 Besides the normally tested UNIX and 32-bit Microsoft platforms, this release
yuuji@0 463 has also been tested and will once build under TOPS-20 and VAX/VMS. I also
yuuji@0 464 fixed a bug which would keep it from building on 16-bit DOS, but I don't know
yuuji@0 465 if it will build on that platform or not since I no longer have a system with
yuuji@0 466 the old DOS C compiler. It has not been tested on Macintosh (note however
yuuji@0 467 that Mac OS X is a type of UNIX and should build), Amiga, or OS/2, and probably
yuuji@0 468 no longer builds on those platforms.
yuuji@0 469
yuuji@0 470
yuuji@0 471 Updated: 7 January 2003
yuuji@0 472
yuuji@0 473 imap-2002b is a maintenace release, released concurrently with Pine 4.52,
yuuji@0 474 and contains only bugfixes. Programs written for imap-2002 will build with
yuuji@0 475 this version without modification.
yuuji@0 476
yuuji@0 477 Drivers which do not announce new mail are now indicated by the DR_NONEWMAIL
yuuji@0 478 driver flag. Driver which do not announce new mail when read-only are now
yuuji@0 479 indicated by the DR_NONEWMAILRONLY flag.
yuuji@0 480
yuuji@0 481 There are no user-visible functional enhancements in this version.
yuuji@0 482
yuuji@0 483
yuuji@0 484 Updated: 10 December 2002
yuuji@0 485
yuuji@0 486 imap-2002a is a maintenance release, consisting entirely of critical
yuuji@0 487 bugfixes. Programs written for imap-2002 will build with this version
yuuji@0 488 without modification.
yuuji@0 489
yuuji@0 490 There are no functional enhancements in this version.
yuuji@0 491
yuuji@0 492
yuuji@0 493 Updated: 28 October 2002
yuuji@0 494
yuuji@0 495 imap-2002 is a major release. Programs written for imap-2001 will probably
yuuji@0 496 build with this version without modification, with one exception. That
yuuji@0 497 exception is if the program uses [GS]ET_DISABLEAUTOMATICSHAREDNAMESPACES,
yuuji@0 498 which has been renamed to [GS]ET_DISABLEAUTOSHAREDNS in order to placate
yuuji@0 499 some compilers which don't like very long names.
yuuji@0 500
yuuji@0 501 SSLTYPE=nopwd is now the default, in accordance with current IESG security
yuuji@0 502 requirements. In order to build the IMAP toolkit without SSL/TLS you must
yuuji@0 503 now use SSLTYPE=none. At initial build time, you will be told if the SSLTYPE
yuuji@0 504 setting is in compliance with IESG security requirements, and if it is not
yuuji@0 505 you will be asked to confirm to continue the build.
yuuji@0 506
yuuji@0 507 ORDEREDSUBJECT threading has been changed in accordance with draft 12 of the
yuuji@0 508 IMAP threading specification. Previously, each non-root message in an
yuuji@0 509 ORDEREDSUBJECT thread has been a child of the message immediately preceeding
yuuji@0 510 it in the thread. Draft 12 changes this so that the second message in the
yuuji@0 511 thread is the child of the first (root) message, and all subsequent messages
yuuji@0 512 are siblings of the first message. This is significant in MUAs which display
yuuji@0 513 the thread structure graphically; the new definition is much saner than the
yuuji@0 514 old one since it does not nest endlessly due to parent/child relationships
yuuji@0 515 that may not exist. This also impacts imapd, since imapd's THREAD command
yuuji@0 516 will return a thread structure.
yuuji@0 517
yuuji@0 518 RFC 1730 server support, which was disabled in imap-2001, is now fully
yuuji@0 519 removed from imapd. imapd still supports IMAP2bis, specifically the FIND
yuuji@0 520 command, since there are still a few IMAP2 clients out there.
yuuji@0 521
yuuji@0 522 The IMAP client routines in the c-client library continue to support recognize
yuuji@0 523 RFC 1730 servers, but do not implement the deprecated features of RFC 1730.
yuuji@0 524
yuuji@0 525 The Frequently Asked Questions file is now in HTML format, although a text
yuuji@0 526 version (generated from the HTML version with Lynx) is also provided.
yuuji@0 527
yuuji@0 528 A new program, mailutil, is now bundled with the IMAP toolkit. mailutil
yuuji@0 529 replaces the old chkmail, imapcopy, imapmove, imapxfer, mbxcopy, mbxcreat,
yuuji@0 530 and mbxcvt programs that were distributed in the imap-utils. In addition,
yuuji@0 531 the tmail, dmail, and mlock programs from the imap-utils are now also
yuuji@0 532 bundled with the IMAP toolkit.
yuuji@0 533
yuuji@0 534 In addition to the usual bugfixes, the following c-client functionalities
yuuji@0 535 are new in imap-2002:
yuuji@0 536
yuuji@0 537 The SET_DISABLE822TZTEXT parameter allows a client to suppress generation of
yuuji@0 538 the "human friendly" time zone text in RFC822 dates. This placates netnews
yuuji@0 539 and some broken SMTP servers which think that long timezone names from Windows
yuuji@0 540 are an attempt at a buffer overflow attack.
yuuji@0 541
yuuji@0 542 The restrictBox option in env_unix.c sets "restricted box" functionality,
yuuji@0 543 which disables access to the root (leading "/"), access to other user's
yuuji@0 544 directories (leading "~"), and access to superior directories via "..".
yuuji@0 545
yuuji@0 546 Content-Location is now supported by the "location" member of the BODY
yuuji@0 547 structure. Note that there is a bug in the IMAP client code in older
yuuji@0 548 versions of the c-client library that causes it to handle BODYSTRUCTURE
yuuji@0 549 extension data improperly if that data is a literal. The new functionality
yuuji@0 550 for Content-Location may trigger this bug. The fix is either to upgrade
yuuji@0 551 the IMAP client program to the imap-2002 version of c-client or to remove
yuuji@0 552 the Content-Location support from imapd.
yuuji@0 553
yuuji@0 554 There are now 8 spare bits for application use in both the elts and the
yuuji@0 555 mail streams.
yuuji@0 556
yuuji@0 557 mail_search() now returns a value (previously it was void). If mail_search()
yuuji@0 558 returns NIL, then the supplied charset was invalid or the IMAP server
yuuji@0 559 returned NO (probably because the supplied charset was invalid).
yuuji@0 560
yuuji@0 561 New utf8_charset() routine to look up a charset and return c-client's
yuuji@0 562 database about that charset if found. Among other things, this will give
yuuji@0 563 you the scripts supported by that charset and its Unicode conversion table.
yuuji@0 564
yuuji@0 565 New FT_NOLOOKAHEAD flag for mail_fetch_structure() disables fetching of
yuuji@0 566 any envelopes other than the one specified. Otherwise, it will try to do
yuuji@0 567 anticipatory fetching (up to IMAPLOOKAHEAD).
yuuji@0 568
yuuji@0 569 New GET_FETCHLOOKAHEAD allows better control of mail_fetch_structure()
yuuji@0 570 lookahead. Instead of looking IMAPLOOKAHEAD messages forward from the
yuuji@0 571 specified message, it will use a supplied SEARCHSET to generate message
yuuji@0 572 sequences and ranges. It will stop at IMAPLOOKAHEAD messages or at the
yuuji@0 573 completion of a range which exceeds IMAPLOOKAHEAD. The search set only
yuuji@0 574 applies to the next mail_fetch_structure() on that stream, and is cleared
yuuji@0 575 once it is used. Call with
yuuji@0 576 SEARCHSET **set = (SEARCHSET **)
yuuji@0 577 mail_parameters (stream,GET_FETCHLOOKAHEAD,(void *) stream);
yuuji@0 578 *set = pointer to desired search set
yuuji@0 579
yuuji@0 580 New mail_shortdate() routine returns an date in the format expected by
yuuji@0 581 SEARCHPGMs.
yuuji@0 582
yuuji@0 583
yuuji@0 584 Updated: 2 November 2001
yuuji@0 585
yuuji@0 586 imap-2001a is a maintenance release, consisting primarily of bugfixes
yuuji@0 587 including some critical bugfixes to crash and denial of service problems.
yuuji@0 588 Programs written for imap-2001 will build with this version without
yuuji@0 589 modification.
yuuji@0 590
yuuji@0 591 The following new facilities have also been added:
yuuji@0 592
yuuji@0 593 The new /norsh switch in mailbox names provides a more intuitive way of
yuuji@0 594 disabling rsh-IMAP than the existing :143 or setting the rsh-timeout to 0.
yuuji@0 595
yuuji@0 596 Passwords are no longer returned in mm_dlog() callbacks unless the
yuuji@0 597 application sets the SET_DEBUGSENSITIVE parameter.
yuuji@0 598
yuuji@0 599 The SET_NETFSSTATBUG parameter allows an application to force the
yuuji@0 600 traditional UNIX mailbox driver to close and reopen the mailbox at ping
yuuji@0 601 time. This is EXTREMELY inefficient, and should only be used to access
yuuji@0 602 files stored on AFS and old NFS systems.
yuuji@0 603
yuuji@0 604 The ISO 8859 and Windows conversion tables have been updated to comply
yuuji@0 605 with Unicode 3.1, and the KOI8-R table has been verified as compliant with
yuuji@0 606 Unicode 3.1.
yuuji@0 607
yuuji@0 608 The SPECIALS mechanism for passing parameters to the lowest level Makefile
yuuji@0 609 has been updated to be more general. See the next item for why you might
yuuji@0 610 care.
yuuji@0 611
yuuji@0 612 New lrh port to build on Red Hat Linux 7.2, with pre-set definitions for
yuuji@0 613 the places where Red Hat has placed Kerberos and SSL. It's actually just
yuuji@0 614 the lnp port with SPECIALS defined accordingly. You may want to use it as
yuuji@0 615 a model if your system needs such definitions. Note that SPECIALS is
yuuji@0 616 primarily for IMAP toolkit (and Pine) purposes, and that user settings
yuuji@0 617 should use EXTRASPECIALS instead.
yuuji@0 618
yuuji@0 619
yuuji@0 620 Updated: 22 June 2001
yuuji@0 621
yuuji@0 622 imap-2001 is a major release. Programs written for imap-2000 will probably
yuuji@0 623 build with this version without modification.
yuuji@0 624
yuuji@0 625 The FAQ document has been significantly expanded. Be sure to read it for
yuuji@0 626 more information.
yuuji@0 627
yuuji@0 628 In addition to the usual bugfixes, the following features are new in
yuuji@0 629 imap-2001:
yuuji@0 630
yuuji@0 631 SSL is now fully integrated into the IMAP toolkit; the old "alt" kludges to
yuuji@0 632 be able to produce a "sanitized" version of the IMAP toolkit to comply with
yuuji@0 633 late unlamented US export regulations are now completely gone.
yuuji@0 634
yuuji@0 635 Full client and server TLS support is also in this release.
yuuji@0 636
yuuji@0 637 The server certificate must be signed by a trusted certificate authority and
yuuji@0 638 the name in the certificate match the user's entry for the server host name;
yuuji@0 639 this means that the user must enter a fully-qualified host name.
yuuji@0 640
yuuji@0 641 To build with SSL/TLS on UNIX, you now use "SSLTYPE=unix" instead of the
yuuji@0 642 former "SPECIALAUTHENTICATORS=ssl". To build with SSL/TLS on UNIX and disable
yuuji@0 643 the use of plaintext passwords except when under SSL/TLS, use "SSLTYPE=nopwd"
yuuji@0 644 instead of "SSLTYPE=unix".
yuuji@0 645
yuuji@0 646 RFC 1730 (IMAP4 as opposed to IMAP4rev1) support is turned off by default in
yuuji@0 647 imapd. No clients should still be using RFC 1730 protocol. Look at the imapd
yuuji@0 648 Makefile for how to re-enable RFC 1730 support. Note that this code may be
yuuji@0 649 removed in the future, so if you think you need it you had better let me know.
yuuji@0 650
yuuji@0 651 There are some new options (turned off by default) which attempt to work around
yuuji@0 652 problems in certain clients. See the FAQ file for more details.
yuuji@0 653
yuuji@0 654
yuuji@0 655 Updated: 24 January 2001
yuuji@0 656
yuuji@0 657 imap-2000c is a maintenance release, consisting primarily of bugfixes.
yuuji@0 658
yuuji@0 659
yuuji@0 660 Updated: 9 January 2001
yuuji@0 661
yuuji@0 662 imap-2000b is a maintenance release, consisting primarily of bugfixes.
yuuji@0 663
yuuji@0 664
yuuji@0 665 Updated: 9 November 2000
yuuji@0 666
yuuji@0 667 imap-2000a is a maintenance release, consisting primarily of bugfixes.
yuuji@0 668
yuuji@0 669
yuuji@0 670 Updated: 19 September 2000
yuuji@0 671
yuuji@0 672 imap-2000 is a major release. There are major internal and external changes
yuuji@0 673 from earlier versions (imap-4.x and imap-3.x series). Programs written for
yuuji@0 674 imap-4.x will probably build with this version without modification. It is
yuuji@0 675 extremely unlikely that a program written for imap-3.x or earlier series will
yuuji@0 676 build with this version without modifications. Drivers written for earlier
yuuji@0 677 versions will definitely need to be rewritten.
yuuji@0 678
yuuji@0 679 In addition to the usual bugfixes, the following features are new in imap-2000:
yuuji@0 680
yuuji@0 681 SSL support is now available. For UNIX, it is necessary to install some
yuuji@0 682 version of OpenSSL; see imap-2000/docs/SSLBUILD for more information. SSL
yuuji@0 683 support is now automatic for the NT, NTK, and W2K ports. SSL use is indicated
yuuji@0 684 by the /ssl switch in the mailbox name.
yuuji@0 685
yuuji@0 686 With SSL connections, the server certificate is validated by the client code
yuuji@0 687 on UNIX, and Windows 2000 unless /novalidate-cert is specified. Server
yuuji@0 688 certificates are currently is not validated on Windows 9x, Windows Millenium,
yuuji@0 689 or Windows NT 4; this is an artifact of the operating system and not the port
yuuji@0 690 (e.g. client code using the NT port will validate certificates if running on
yuuji@0 691 Windows 2000). On UNIX, the server certificate must be signed by a trusted
yuuji@0 692 certificate authority. On Windows 2000, the certificate must be signed by a
yuuji@0 693 trusted certificate authority and match the user's entry for the server host
yuuji@0 694 name; this means that the user must enter a fully-qualified host name.
yuuji@0 695
yuuji@0 696 Calendar reclama for the benefit of old broken non-Y2K compliant software.
yuuji@0 697 Two digit years from 00 to 69 will be interpreted as 2000 through 2069. In
yuuji@0 698 addition, three digit years from 100 to 105 will be interpreted as 2000
yuuji@0 699 through 2005.
yuuji@0 700
yuuji@0 701 Support for REFERENCES threading (in addition to the previously-existing
yuuji@0 702 ORDEREDSUBJECT threading).
yuuji@0 703
yuuji@0 704 Support for the IMAP MULTIAPPEND extension. This allows much faster uploading
yuuji@0 705 of multiple messages to an IMAP server.
yuuji@0 706
yuuji@0 707 Support for the LOGINDISABLED IMAP capability. If the IMAP server sends
yuuji@0 708 LOGINDISABLED as a capability, the client code will never attempt to send an
yuuji@0 709 IMAP LOGIN command.
yuuji@0 710
yuuji@0 711 Support for SASL authentication identity vs. authorization identity. If the
yuuji@0 712 authentication method does not support this concept (e.g. AUTH=CRAM-MD5,
yuuji@0 713 AUTH=LOGIN, LOGIN command), the "*" character in the user name may be used to
yuuji@0 714 indicate a separate authentication identity; for example, "fred*joe" indicates
yuuji@0 715 authorization identity "fred", authentication identity "joe".
yuuji@0 716
yuuji@0 717
yuuji@0 718 UNIX-specific Changes:
yuuji@0 719
yuuji@0 720 Support for SASL authentication identity vs. authorization identity in the
yuuji@0 721 IMAP and POP3 servers. If the user indicated by the authentication identity
yuuji@0 722 is in the "mailadm" group, he may specify any authorization identity and get
yuuji@0 723 logged in as the authorization identity user.
yuuji@0 724
yuuji@0 725 If the IMAP and POP3 servers are build with PASSWDTYPE=nul, it will send
yuuji@0 726 LOGINDISABLED as a capability and also disable the AUTH=LOGIN and AUTH=PLAIN
yuuji@0 727 SASL authenticators.
yuuji@0 728
yuuji@0 729 New MAILSUBDIR build option to change the default mailbox directory from the
yuuji@0 730 user's home directory to a subdirectory of the user's home directory. See
yuuji@0 731 imap-2000/Makefile for more information.
yuuji@0 732
yuuji@0 733 New CHROOT_SERVER build option for closed server systems only. If defined, a
yuuji@0 734 chroot() call to the user's home directory is done as part of the login
yuuji@0 735 process. See imap-2000/Makefile for more information.
yuuji@0 736
yuuji@0 737 New ADVERTISE_THE_WORLD build option which will add an IMAP namespace that
yuuji@0 738 points to the root. Not for the faint of heart.
yuuji@0 739
yuuji@0 740 UNIX format mailboxes no longer require the pseudo-message, nor will a
yuuji@0 741 pseudo-message be added to a mailbox that does not have one. A new
yuuji@0 742 X-IMAPbase: header will be written in the first message. This is rather less
yuuji@0 743 efficient and robust than the pseudo-message (which remains the encouraged
yuuji@0 744 mechanism; UNIX format mailboxes will always be created with it), but perhaps
yuuji@0 745 will pacify some people who get upset by the pseudo-message.
yuuji@0 746
yuuji@0 747 When building with MIT Kerberos it will try to detect and use libk5crypto.a
yuuji@0 748 instead of libcrypto.a.
yuuji@0 749
yuuji@0 750 The mbx driver is more aggressive about cleaning up expunged messages that
yuuji@0 751 couldn't be purged because of shared access to the mailbox at the time of
yuuji@0 752 expunge. Now, every checkpoint will try to purge such messages; and a
yuuji@0 753 checkpoint is attempted at close time.
yuuji@0 754
yuuji@0 755
yuuji@0 756 Windows-specific Changes:
yuuji@0 757
yuuji@0 758 New W2K port for Windows 2000. In addition to supporting SSL using the
yuuji@0 759 official SSPI interface (the NT and NTK ports invoke SChannel.DLL directly),
yuuji@0 760 the W2K port also supports Microsoft Kerberos. Note that the NT and NTK ports
yuuji@0 761 will work on Windows 2000, but the W2K port will not work on NT4, Windows
yuuji@0 762 9x, or Windows Millenium.
yuuji@0 763
yuuji@0 764 There is now a #user namespace, equivalent to the "~" namespace on UNIX.
yuuji@0 765
yuuji@0 766
yuuji@0 767
yuuji@0 768 Changes for Developers:
yuuji@0 769
yuuji@0 770 New c-client.h file which acts as a master include. c-client based
yuuji@0 771 applications should now include c-client.h instead of the individual c-client
yuuji@0 772 files (mail.h, misc.h, etc.). It is believed that c-client.h will work in C++
yuuji@0 773 applications.
yuuji@0 774
yuuji@0 775 New GET_FREEENVELOPESPAREP/SET_FREEENVELOPESPAREP and
yuuji@0 776 GET_FREEELTSPAREP/SET_FREEELTSPAREP function callbacks to free the "sparep"
yuuji@0 777 member of the envelope and cache elements, respectively.
yuuji@0 778
yuuji@0 779 New OP_MULNEWSRC flag to mail_open() to use multiple newsrc files, and new
yuuji@0 780 GET_NEWSRCQUERY/SET_NEWSRCQUERY function callbacks to get the name of the
yuuji@0 781 newsrc file for news access.
yuuji@0 782
yuuji@0 783 New "secret" nntp_article() function to do the NNTP ARTICLE command; this is
yuuji@0 784 generally useful only when chasing news URLs.
yuuji@0 785
yuuji@0 786 New GET_HIDEDOTFILES/SET_HIDEDOTFILES feature to suppress file names that
yuuji@0 787 start with "." in mail_list() results.

UW-IMAP'd extensions by yuuji