doc update
[exim-website.git] / changelogs / ChangeLog-3.10.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3   <head>
4     <title>exim changelogs - Version 3.10</title>
5   </head>
6
7   <body bgcolor="#FFFFFF" text="#00005A" link="#000060" alink="#E8700D" vlink="#003050">
8     <h1>Exim changelog for Version 3.10 - last non-testing release was 3.03</h1>
9
10 <h2>New Features and user visible changes</h2>
11
12 <ol>
13
14 <li>The option log_queue_run_level specifies the log level for the
15 messages "Start queue run" and "End queue run". The default is 0.</li>
16
17 <li>Addition of forbid_lookup, forbid_existstest and forbid_perl to
18 the forwardfile director.</li>
19
20 <li>All directors except smartuser had current_directory and
21 home_directory options, to set values used at transport time. These
22 options have now been made generic, so now apply to all
23 directors.</li>
24
25 <li>If SUPPORT_MOVE_FROZEN_MESSAGES is set at compile time, the new
26 option move_frozen_messages causes frozen messages and their message
27 logs to be moved from the input and msglog directories on the spool to
28 Finput and Fmsglog.  There is currently no support in Exim or the
29 standard utilities for handling such moved messages and they won't
30 show up in lists generated by -bp or eximon.</li>
31
32 <li>If no transport is specified for a smartuser director, the
33 new_address field may now specify a comma-separated list of new
34 addresses, and :blackhole:, :defer: and :fail: can also be used
35 there. In otherwords, new_address is like a line from an alias file
36 (except that :include: is not supported).</li>
37
38 <li>The exigrep utility now automatically zcats any log file whose
39 name ends in COMPRESS_SUFFIX, using ZCAT_COMMAND, as defined in
40 Local/Makefile.</li>
41
42 <li>The expansion condition first_delivery is true for the first
43 delivery attempt on a message; queue_running is true when a delivery
44 attempt is caused by a queue runner.</li>
45
46 <li>When log_refused_recipients is set, each log line now has a reason
47 for refusal such as "(RBL)" or "(sender_reject_recipients)".</li>
48
49 <li>The magic string "+warn_unknown" behaves like "+allow_unknown",
50 but it writes a log line every time it lets through a host whose name
51 can't be looked up.</li>
52
53 <li>If EXIMON_LOG_FILE_PATH is set in the environment when eximon
54 starts up, it overrides the configuration setting. This makes it
55 possible to have eximon tailing log data that is written to syslog,
56 provided that MAIL.INFO messages are routed to a separate file.</li>
57
58 <li>Policy rejections of recipients can now be overridden for certain
59 senders by setting recipients_reject_except_senders.</li>
60
61 <li>When all deferred addresses have the same domain, it is set in
62 $domain during the expansion of delay_warning_condition. For pipes,
63 files, or autoreplies, this is the domain of the parent.</li>
64
65 <li>-Rr (and -Rrf, -Rrff) treat the string as a regular
66 expression.</li>
67
68 <li>Added -S (with all variations), which works like -R except that it
69 checks the message's sender instead of the undelivered recipients. If
70 both -R and -S are given, both conditions must be satisfied.</li>
71
72 <li>The new expansion variable $message_age contains the length of
73 time since the message was received as a number of seconds.</li>
74
75 <li>The syntax of LDAP queries has been extended to allow the passing
76 of more information than is available in the LDAP URL. An LDAP query
77 may now consist of a URL preceded by any number of "name=value"
78 settings, separated by spaces. If a value contains spaces it must be
79 enclosed in double quotes, and when double quotes are used, backslash
80 is interpreted in the usual way inside them. The following names are
81 recognized:
82 <dl>
83 <dt>USER</dt>    <dd>set the DN for authenticating the LDAP bind</dd>
84 <dt>PASS</dt>     <dd>set the password </dd>
85 <dt>SIZE</dt>    <dd>set the limit for the number of entries returned</dd>
86 <dt>TIME</dt>    <dd>set the maximum waiting time for a query</dd>
87 </dl>
88 </li>
89
90 <li>Callers whose gid is Exim's gid are now automatically trusted
91 (only the uid was looked at previously).</li>
92
93 <li>There's a new option called admin_groups. If the current or any of
94 the supplementary groups of the caller is in this list, the caller has
95 admin user privileges.</li>
96
97 <li>There is now support for PAM (Pluggable Authentication Modules), a
98 facility which is available in the latest releases of Solaris and in
99 some GNU/Linux distributions (see
100         <a href="http://ftp.at.kernel.org/pub/linux/libs/pam/">http://ftp.at.kernel.org/pub/linux/libs/pam/</a>).</li>
101
102 <li>The file that the exiwhat mechanism uses for process status
103 information is no longer bundled with the log files. Instead,
104 "exim-process.info" in the spool directory is used.</li>
105
106 <li>Exim can now be configured to log to syslog as well as or instead
107 of to local log files. </li>
108
109 <li>There's a new expansion operator called "mask" which converts an
110 IP address to binary, masks off the least significant bits, and
111 converts the result back to text, with mask appended. For example:
112 ${mask:10.111.131.206/28} returns the string
113 "10.111.131.192/28". </li>
114
115 <li>There exist some rare networking situations (for example, packet
116 radio) where it is helpful to be able to translate IP addresses
117 generated by normal routing mechanisms into other IP addresses, thus
118 performing a kind of manual IP routing. This should be done only if
119 the normal IP routing of the TCP/IP stack is inadequate or
120 broken. Exim now has this capability.</li>
121
122 <li>A new option called retry_data_expire (default 7d) specifies that
123 retry data older than this should be ignored. This means that if, for
124 example, a host hasn't been tried for 7 days, Exim will behave as if
125 it had no knowledge of past failures.</li>
126
127 <li>To help with formulating lookup queries, there is a new expansion
128 operator
129
130 <tt>${quote_<lookup-type>:<string>}</tt>
131
132 which quotes the characters of the string in a lookup-specific way. For 
133 example, the safest way to write a NIS+ query is
134
135 <tt>[name="${quote_nisplus:$local_part}"]</tt>
136 </li>
137
138 <li>The from_hack option in the appendfile and pipe transports has
139 been replaced by two string options, check_string and
140 escape_string. When set, the start of each line is tested for matching
141 check_string, and if it does, those characters are replaced by the
142 contents of escape_string.</li>
143
144 <li>The appendfile transport has a new option called file_format,
145 defaulting unset. If set, it requests the transport to check the
146 format of an existing file before adding to it.</li>
147
148 <li>There is a new expansion condition called crypteq, which is
149 automatically available if Exim is built to support any authentication
150 mechanisms.  Otherwise, it is necessary to define SUPPORT_CRYPTEQ to
151 get it included in the binary. The crypteq condition has two
152 arguments. The first is encrypted and compared against the second,
153 which is already encrypted. Two encryption types are currently
154 supported:
155 <ul>
156           <li>md5 first computes the MD5 digest of the string, and
157           then expresses this as printable characters by means of the
158           base64 encoding.</li>
159
160           <li>crypt calls the crypt() function as used for encrypting
161           login passwords.</li>
162 </li>
163
164 <li>There is now support for the AUTH extension to SMTP (RFC 2554),
165 both as a client and as a server.</li>
166
167 <li>The -bv option now runs interactively, like -bt, if no addresses
168 are given on the command line.</li>
169
170 <li>There is a new option called -be which is for testing string
171 expansion. If no arguments are given it runs interactively. It simply
172 does a string expansion on arguments (or data lines) and outputs the
173 result.</li>
174
175 <li>The GNU/Hurd operating system is now supported.</li>
176
177 <li>If quota is specified on an appendfile transport, then
178 quota_warn_threshold may optionally be specified as a percentage.</li>
179
180 <li>There's an alternative hashing function for expanded strings,
181 called "nhash" for "numeric hash". An item of the form
182 ${nhash_<n>:string} produces a number in the range 0-n, while an item
183 of the form ${nhash_<n>_<m>:string} produces two numbers, separated by
184 a '/', in the ranges 0-n and 0-m respectively, using a div/mod
185 hash.</li>
186
187 <li>The expansion variable $host_lookup_failed contains "1" if there
188 has been an attempt to look up the sending host's name from its IP
189 address, and this has failed to find the name. Otherwise
190 $host_lookup_failed contains "0".</li>
191
192 <li>The exim_dbmbuild utility now warns if it encounters a duplicate
193 key. By default, only the first of a set of duplicates is used - this
194 is a change from the previous state, but it does make it compatible
195 with lsearch lookups.  There is an option -lastdup which causes it to
196 use the last instead, which is compatible with what it did
197 before. There is also an option -nowarn, which stops it listing
198 duplicate keys to stderr. If any duplicates are encountered, the
199 return code is 1. For other errors, where it doesn't actually make a
200 new file, the return code is 2.</li>
201
202 <li>There is a new option called ldap_default_servers which can be
203 used to supply a colon-separated list of replicated LDAP servers. If
204 an LDAP lookup has no server mentioned in the URL, that is, the URL
205 begins "ldap:///...", and ldap_default_servers is set, then the query
206 is passed to each of the listed servers in turn.</li>
207
208 <li>There is now a variant of the dbm lookup type called dbmnz, which
209 does not include a trailing binary zero in the keystring that is
210 looked up.</li>
211
212 <li>Support for MYSQL is now available when LOOKUP_MYSQL is
213 defined.</li>
214
215 <li>In a system filter file (but not in a user filter) a "deliver"
216 command may now be followed by "errors_to <some address>" in order to
217 change the envelope sender (and hence the error reporting) for that
218 delivery.</li>
219
220 <li>The number can now be omitted from host list net searches, in
221 which case the IP address is looked up without masking and without any
222 additional text.  For example, if an item in a host list is
223 net-lsearch;/some/file and the calling host has IP address 10.9.8.7
224 then the key that is used in the lookup is "10.9.8.7".</li>
225
226 <li>When IPv6 addresses are used in net lookups, the separator between
227 the components is "." rather than the conventional ":" because colon
228 is the key terminator in lsearch files. The full, unabbreviated IPv6
229 address is always used.</li>
230
231 <h1>Changelogs</h1>
232
233 <h2>Version 3.10</h2>
234 <pre>
235
236 1. Exim was crashing when lookup_open_max was exceeded if the type of file
237 being closed was different to the type of file being opened.
238
239 2. Some further tidies of the os-type and arch-type scripts.
240
241 3. ENOSPC is not treated in the same way as a quota error for the purposes of
242 retrying.
243
244 4. The revised exigrep (3.091/26) had "gz" and "Z" built in. Change it to check
245 for COMPRESS_SUFFIX.
246
247 5. If a reverse lookup done within a message failed because the name looked up
248 had no matching forward lookup, the error text for this got obliterated at the
249 end of the message, and so if it was needed for a subsequent message on the
250 same SMTP connection, junk got logged.
251
252
253 Version 3.093
254 -------------
255
256 1. The -bP option wasn't recognizing "authenticator xxx". It was recognizing
257 "auths" and "auth_list", but this abbreviation seems unexpected, so changed
258 those to use the full word.
259
260 2. Removed a now (since 2.12/3) useless optimization in the code for checking
261 whether two addresses have the same list of hosts.
262
263 3. After some calls to execv() the failure code wasn't being output.
264
265 4. Increased field widths in eximstats, as the numbers can be quite big on busy
266 systems.
267
268 5. Arrange for X-RBL-Warning: headers to be inserted when recipients are
269 allowed through by an exception list from an RBL domain that is set to reject.
270
271 6. Tidied error messages from -brw. Also, if an SMTP rewrite happens and the
272 source address isn't syntactically valid, just skip the other rewrites. Skip
273 them in any case if there are no rules with non-S flags. If there are no rules
274 at all, say so.
275
276 7. Reworded "no valid sender in message headers" error message, because it has
277 confused people. Tidied some related messages as well.
278
279 8. Added USE_DB=yes to the OpenBSD configuration.
280
281 9. Ignore check_log_space if log_file_path just contains "syslog".
282
283 10. Add closelog() to the function that closes all log files. The important
284 case of this is the call just before the daemon closes all file descriptors,
285 because otherwise it is closing the syslog one behind the system's back.
286
287 11. Two "frozen" messages were getting written to the message log in some
288 circumstances.
289
290 12. Bug in 3.091/23 (fixing an earlier bug) caused a crash if a list of MX
291 records with some identical host names came in a specific order (so it only
292 showed now and again).
293
294 13. In the arch-type script, when uname -p gives something containing spaces,
295 try uname -m. (Previously it did this only for "" or "unknown".)
296
297 14. Recognize i686 in scripts/arch-type.
298
299 15. Re-organize the os-type and arch-type scripts so that $OSTYPE and $ARCHTYPE
300 are now tried after uname rather than before, as many shells set silly values
301 in them. Manual overrides are now provided by EXIM_OSTYPE and EXIM_ARCHTYPE.
302
303
304 Version 3.092
305 -------------
306
307 1. Serious bug caused by 1-character typo: In very long messages, characters
308 could occasionally be lost (e.g. 3 lost in a 1.5M file). This bug was
309 introduced in the changes made for 3.033, so it was never in a main release.
310
311
312 Version 3.091
313 -------------
314
315 1. Exim was not reporting the actual error if there was an I/O error while
316 reading a message or writing the spool file during message reception. Nor was
317 it logging anything.
318
319 2. Some reorganization and tidying up of code for handling errors while writing
320 the spool header file.
321
322 3. When showing log messages for debugging, display the DIE flag when set.
323
324 4. Add logging of SMTP AUTH information to the "message received" log line.
325
326 5. Added forbid_lookup, forbid_existstest, forbid_perl to forwardfile (later
327 changed to better names forbid_filter_lookup etc.).
328
329 6. create_file = belowhome in appendfile could be defeated by the use of /../
330 in the name. Sigh. I'm not devious enough... Symbolic links could also defeat
331 it. These are now checked for by means of realpath(), which all the Unixes I've
332 checked do have. Also, Exim was creating any necessary directories before
333 checking create_file. It now creates directories only if it is permitted to
334 create the file.
335
336 7. Add more code to ldap to remember when a bind was done and with what
337 credentials so that it doesn't repeat the bind for a subsequent lookup with the
338 same credentials.
339
340 8. If create_directory was set on appendfile and the directory creation failed
341 for some reason, the error was not reported, so it appeared as if
342 create_directory had been ignored.
343
344 9. All directors except smartuser had current_directory and home_directory
345 options, to set values used at transport time. These options have now been made
346 generic, so now apply to all directors.
347
348 10. If a local delivery failed and created message longer than 256 characters,
349 it got truncated when logged.
350
351 11. Change "all" to "one or more" in bounce and delay messages.
352
353 12. The convert43t conversion utility didn't work for driver names containing
354 capital letters.
355
356 13. Change autoreply and other generated messages to use "Reply-To" instead of
357 "Reply-to" because that's the "suggested" form in RFC 822.
358
359 14. Pulled some common code out of aliasfile and forwardfile and made it into a
360 separate function which they each call.
361
362 15. The function for writing the -H file tried to create the directory if it
363 didn't exist, but it always will, because the -H file isn't written until the
364 -D file has been successfully written. So we can save a bit of code (which in
365 fact was buggy because it didn't support sub-directories).
366
367 16. Added move_frozen_messages, but only if SUPPORT_MOVE_FROZEN_MESSAGES
368 is defined. There is no current support for handling such messages.
369
370 17. If queue_smtp or queue_remote got set via queue_only_file for an incoming
371 SMTP message received by the daemon, the flag was not being passed on to the
372 delivery process.
373
374 18. An explanation to the long-standing problem of eximon menus not working
375 when num-lock is set has been received, and a workaround implemented.
376
377 19. Address rewrites that happened during delivery (typically on new addresses
378 from forward or filter files) were causing an X-rewrote-address dummy header to
379 be added to the message each time it happened. This could get embarrassing if
380 retrying went on for a long time.
381
382 20. Only write "children all complete" to the msglog file if the address has no
383 parent address with the same original address. Otherwise (e.g. in cases where
384 xxx is aliased to xxx and other things, and the new xxx gets further aliased by
385 another director) it can be confusing.
386
387 21. After successful directing, the debugging line showed the transport field
388 from the original address, which could be misleading if copied address had been
389 queued (e.g. by smartuser). As the general queuing function now outputs this
390 info, remove it at top level.
391
392 22. Smartuser was showing the old rather than the new address in its debugging
393 output.
394
395 23. If a broken MX list contained the same host more than once, Exim was coded
396 to keep only the lowest precedence, but if it saw a lower value after a higher
397 one, and had seen precedences between the two values, it screwed up the
398 sorting.
399
400 24. The revision of RFC 822 increases the encouragement for collapsing source
401 routed addresses from the MAY of RFC 1123 to SHOULD. I have therefore cut out
402 all the source route handling code, with the exception of parsing and
403 collapsing. The option collapse_source_routes now has no effect - they are
404 always collapsed. This has made it possible to make some tidies in various
405 places.
406
407 25. Rewrote the smartuser director - if no transport is specified, the
408 new_address option may now specify a list of addresses, and it may also specify
409 :blackhole:, :defer:, or :fail:.
410
411 26. Upgraded exigrep so that it automatically zcats compressed file.
412
413 27. Added expansion conditions first_delivery and queue_running.
414
415 28. When log_refused_recipients is set, give a reason in each log line.
416
417 29. Implemented +warn_unknown.
418
419 30. Allow EXIMON_LOG_FILE_PATH to override in eximon - useful when syslog is in
420 use.
421
422 31. -Mg was not forcing a thaw of frozen messages (an unwanted side effect of
423 change 17 in version 2.950).
424
425 32. -M and other delivery forcers (e.g. -qf) were not overriding
426 queue_remote_domains and queue_smtp_domains.
427
428 33. Added recipients_reject_except_senders.
429
430 34. When all deferred addresses have the same domain, it is set in $domain
431 during the expansion of delay_warning_condition. For pipes, files, or
432 autoreplies, this is the domain of the parent.
433
434 35. Changed the default configuration file to lock out domain literal support.
435 This is strictly contrary to the RFCs, but people don't understand about it and
436 it has been abused by spammers seeking open relays.
437
438 36. -Rr (and -Rrf, -Rrff) treat the string as a regular expression.
439
440 37. Added -S, which works like -R except that it checks the message's sender.
441
442 38. Added $message_age.
443
444 39. Make Exim ignore -n (no aliasing), and make -oitrue the same as -oi.
445
446 40. Typo in ldap code could cause junk to appear in the error message if a
447 search call failed (which it normally doesn't).
448
449 41. Source tidies to get rid of compiler warnings for possibly uninitialized
450 variables.
451
452
453 Version 3.040
454 -------------
455
456 1. Added additional parameters to LDAP lookups.
457
458
459 Version 3.039
460 -------------
461
462 1. Callers who have exim's gid as the current gid are now trusted.
463
464 2. Added new option admin_groups.
465
466 3. There was a bug in store handling for expansions involving very large
467 strings, e.g. if message_body_size was set large and was the subject of a
468 "match" filter condition. The symptom was a bus error.
469
470 4. Exim wouldn't build if LOG_FILE_PATH was set to any of the new syslog
471 variations.
472
473 5. A couple more compile-time tweaks for netBSD (default USE_DB=yes and look
474 for chown in /usr/sbin).
475
476
477 Version 3.038
478 -------------
479
480 1. Added support for PAM authentication.
481
482
483 Version 3.037
484 -------------
485
486 1. When forwardfile defers because it doesn't like the file's permissions,
487 include the offending bits in the error message.
488
489 2. General tidy of error messages from directors to remove duplicated
490 information. (e.g. director names, because they are also shown in the D= item
491 of log lines).
492
493 3. Pulled some general outgoing SMTP code out of transports/smtp.c and put it
494 in functions in smtp_out.c. This is also used by client authenticator code; the
495 interface is now cleaner.
496
497 4. Added log_queue_run_level.
498
499 5. When a message with very long headers was rejected, and the reflection of
500 the headers to the rejectlog filled up the log buffer, the terminating
501 separator line got lost, and the entry didn't necessarily end with \n. It now
502 always puts in the separator, and adds "*** truncated ***" if something has
503 been chopped off.
504
505 6. Updated eximon to cope with cases when syslog is being used. If only syslog
506 is being used, eximon cannot tail a log - omit that part of its window.
507
508 7. Updated exicyclog to cope with cases when syslog is being used. If only
509 syslog is being used, exicyclog can't cycle anything.
510
511 8. Fixed bug in base64 decoding function that was messing up CRAM-MD5
512 authentication for certain lengths of user name.
513
514
515 Version 3.036
516 -------------
517
518 1. Moved the logging of a message's freezing to just before the -H file is
519 updated, to minimize cases when the logging happens but the file doesn't get
520 updated (an incident was observed when a system was being shut down).
521
522 2. Ignore SIGTERM during the tidying-up phase at the end of a delivery, to
523 minimize the chances of things being half done.
524
525 3. Don't bother doing an RBL lookup if the host has already matched
526 host_reject_recipients.
527
528 4. Added "sort | uniq" into the exiwhat script, to cut out duplicates, which
529 sometimes happen in "ps" output.
530
531 5. Changed the file exiwhat uses to spool/exim-process.info instead of a log
532 file. This is so that it will continue to work when syslog logging is used.
533
534 6. Added support for syslog, configured in log_file_path.
535
536
537 Version 3.035
538 -------------
539
540 1. The debug_print option wasn't working for the smtp transport.
541
542 2. The responses to AUTH commands weren't being copied to debug output.
543
544 3. Changed the condition handling in the plaintext authenticator to allow for
545 forced DEFER returns ("", "0", "no", "false" => FAIL, "1"; "yes", "true" => OK;
546 anything else defers, text is message).
547
548 4. Added ${mask:} expansion operator.
549
550 5. Added translate_ip_address.
551
552
553 Version 3.034
554 -------------
555
556 1. When a header syntax check failed, a humungously long address that was too
557 much for string_sprintf to fit in the error message caused a panic exit. This
558 could happen, for example, if a double quote was omitted in a very long list of
559 addresses in a header. It now reflects just the first 1K of the address. Put a
560 similar limit on sender addresses in verify failed messages.
561
562
563 Version 3.033
564 -------------
565
566 1. Arrange for crypt.h to be included only on those OS that have it (Solaris,
567 IRIX 6, modern Linux), and for -lcrypt to be set up for those OS that need it
568 (FreeBSD, NetBSD, modern Linux).
569
570 2. Made MAXINTERFACES changeable in Local/Makefile.
571
572 3. When sending a delay warning message, quote the top-level original address
573 only, saying "an address generated from" if the actual problem is with a child.
574
575 4. Set a default for delay_warning_condition to skip precedence bulk/list/junk.
576
577 5. Allow for spaces around colons in temp_errors setting in smtp transport.
578
579 6. The "personal" test in filter files now checks for "list" and "junk" as well
580 as "bulk" in the Precedence: header.
581
582 7. Added retry_data_expire.
583
584 8. If a key in a partial match was very long (longer than the buffer for
585 string_sprintf()), Exim couldn't handle it.
586
587 9. Added expansion operator ${quote_xxx:} where xxx is a search type. Each
588 search type has its own (optional) quoting function. Added suitable functions
589 for NIS+, LDAP, and MYSQL.
590
591 10. Internal revision of the way the "From hack" and SMTP dot escaping is done
592 in preparation for extending appendfile. They are now unified, and are
593 therefore mutually exclusive.
594
595 11. The "From hack" was failing if the string "From " happened to be split
596 between two buffers when transporting the message.
597
598 12. If a non-SMTP message that was being read without -oi ended with "\n."
599 (no following NL) then the "." got lost.
600
601 13. Ensure that all non-SMTP messages have a final NL at input time, instead of
602 testing at delivery time. This simplifies the delivery code.
603
604 14. Replaced from_hack in appendfile and pipe by check_string and escape_string.
605
606 15. Added file_format to appendfile.
607
608
609 Version 3.032
610 -------------
611
612 1. If remove_headers contained a "fail" expansion, it caused a crash.
613
614 2. The generic headers_remove option in transports is now expanded. (Seems to
615 have been an oversight.)
616
617 3. Changed $host_authenticated to $sender_host_authenticated (oversight).
618
619 4. Added server_set_id generic option to authenticators and $authenticated_id
620 for accessing it.
621
622
623 Version 3.031
624 -------------
625
626 1. Removed unnecessary #ifdefs from lookups which don't have private header
627 files.
628
629 2. Added crypteq as a new expansion condition.
630
631 3. Make it recognise "netbsd" as equivalent to "NetBSD".
632
633 4. Updated the FSF's address in LICENCE and NOTICE files.
634
635 5. Code tidies for SMTP input to remove repetition of real and debugging
636 output by using a subroutine.
637
638 6. Added support for AUTH.
639
640 7. Source tidies of a lot of unnecessarily complicated calls to
641 string_nextinlist().
642
643 8. Source tidies in lookup handling.
644
645 9. Set XLFLAGS empty for IRIX6 as it doesn't seem to need anything.
646
647 10. Typo in code for decoding quota_<time> fixed; only effect would be to fail
648 to diagnose bad syntax.
649
650 11. -bv now runs interactively like -bt if no addresses are given.
651
652 12. Added -be for string expansion tests with configuration read.
653
654 </pre>
655
656     <hr>
657     <h6>$Id: ChangeLog-3.10.html,v 1.3 1999/11/28 21:00:42 nigel Exp $</h6>
658 <!-- Created: Mon Aug 25 13:12:18 BST 1997 -->
659   </body>
660 </html>