Commit | Line | Data |
---|---|---|
5dc43717 | 1 | $Cambridge: exim/doc/doc-txt/ChangeLog,v 1.632 2010/06/12 15:21:25 jetmore Exp $ |
495ae4b0 PH |
2 | |
3 | Change log file for Exim from version 4.21 | |
4 | ------------------------------------------- | |
5 | ||
10906672 PP |
6 | Exim version 4.76 |
7 | ----------------- | |
8 | ||
9 | PP/01 The new ldap_require_cert option would segfault if used. Fixed. | |
10 | ||
754a0503 PP |
11 | PP/02 Harmonised TLS library version reporting; only show if debugging. |
12 | Layout now matches that introduced for other libraries in 4.74 PP/03. | |
13 | ||
10906672 | 14 | |
aa097c4c NM |
15 | Exim version 4.75 |
16 | ----------------- | |
17 | ||
4c9ef03a | 18 | NM/01 Workround for PCRE version dependency in version reporting |
aa097c4c NM |
19 | Bugzilla 1073 |
20 | ||
7f3d9eff TF |
21 | TF/01 Update valgrind.h and memcheck.h to copies from valgrind-3.6.0. |
22 | This fixes portability to compilers other than gcc, notably | |
23 | Solaris CC and HP-UX CC. Fixes Bugzilla 1050. | |
24 | ||
159f52d2 TF |
25 | TF/02 Bugzilla 139: Avoid using the += operator in the modular lookup |
26 | makefiles for portability to HP-UX and POSIX correctness. | |
27 | ||
0cc9542a PP |
28 | PP/01 Permit LOOKUP_foo enabling on the make command-line. |
29 | Also via indented variable definition in the Makefile. | |
30 | (Debugging by Oliver Heesakkers). | |
31 | ||
f7274286 PP |
32 | PP/02 Restore caching of spamd results with expanded spamd_address. |
33 | Patch from author of expandable spamd_address patch, Wolfgang Breyha. | |
34 | ||
7b797365 PP |
35 | PP/03 Build issue: lookups-Makefile now exports LC_ALL=C |
36 | Improves build reliability. Fix from: Frank Elsner | |
37 | ||
caacae52 NM |
38 | NM/02 Fix wide character breakage in the rfc2047 coding |
39 | Fixes bug 1064. Patch from Andrey N. Oktyabrski | |
40 | ||
09dcaba9 NM |
41 | NM/03 Allow underscore in dnslist lookups |
42 | Fixes bug 1026. Patch from Graeme Fowler | |
43 | ||
bc19a55b PP |
44 | PP/04 Bugzilla 230: Support TLS-enabled LDAP (in addition to ldaps). |
45 | Code patches from Adam Ciarcinski of NetBSD. | |
caacae52 | 46 | |
bd4c9759 NM |
47 | NM/04 Fixed exiqgrep to cope with mailq missing size issue |
48 | Fixes bug 943. | |
49 | ||
b72aab72 PP |
50 | PP/05 Bugzilla 1083: when lookup expansion defers, escape the output which |
51 | is logged, to avoid truncation. Patch from John Horne. | |
52 | ||
2fe76745 PP |
53 | PP/06 Bugzilla 1042: implement freeze_signal on pipe transports. |
54 | Patch from Jakob Hirsch. | |
55 | ||
76aa570c PP |
56 | PP/07 Bugzilla 1061: restrict error messages sent over SMTP to not reveal |
57 | SQL string expansion failure details. | |
58 | Patch from Andrey Oktyabrski. | |
59 | ||
f1e5fef5 PP |
60 | PP/08 Bugzilla 486: implement %M datestamping in log filenames. |
61 | Patch from Simon Arlott. | |
62 | ||
4d805ee9 PP |
63 | PP/09 New lookups functionality failed to compile on old gcc which rejects |
64 | extern declarations in function scope. | |
65 | Patch from Oliver Fleischmann | |
66 | ||
cd59ab18 PP |
67 | PP/10 Use sig_atomic_t for flags set from signal handlers. |
68 | Check getgroups() return and improve debugging. | |
69 | Fixed developed for diagnosis in bug 927 (which turned out to be | |
70 | a kernel bug). | |
71 | ||
332f5cf3 PP |
72 | PP/11 Bugzilla 1055: Update $message_linecount for maildir_tag. |
73 | Patch from Mark Zealey. | |
74 | ||
29cfeb94 PP |
75 | PP/12 Bugzilla 1056: Improved spamd server selection. |
76 | Patch from Mark Zealey. | |
77 | ||
660242ad PP |
78 | PP/13 Bugzilla 1086: Deal with maildir quota file races. |
79 | Based on patch from Heiko Schlittermann. | |
80 | ||
bc4bc4c5 PP |
81 | PP/14 Bugzilla 1019: DKIM multiple signature generation fix. |
82 | Patch from Uwe Doering, sign-off by Michael Haardt. | |
83 | ||
2e64baa9 NM |
84 | NM/05 Fix to spam.c to accommodate older gcc versions which dislike |
85 | variable declaration deep within a block. Bug and patch from | |
86 | Dennis Davis. | |
87 | ||
bddd7526 PP |
88 | PP/15 lookups-Makefile IRIX compatibilty coercion. |
89 | ||
6bac1a9a PP |
90 | PP/16 Make DISABLE_DKIM build knob functional. |
91 | ||
552193f0 NM |
92 | NM/06 Bugzilla 968: child_open_uid: restore default SIGPIPE handler |
93 | Patch by Simon Arlott | |
baeee2c1 | 94 | |
1b587e48 TF |
95 | TF/03 Fix valgrind.h portability to C89 compilers that do not support |
96 | variable argument macros. Our copy now differs from upstream. | |
97 | ||
aa097c4c | 98 | |
8c07b69f TF |
99 | Exim version 4.74 |
100 | ----------------- | |
101 | ||
102 | TF/01 Failure to get a lock on a hints database can have serious | |
103 | consequences so log it to the panic log. | |
104 | ||
c0ea85ab TF |
105 | TF/02 Log LMTP confirmation messages in the same way as SMTP, |
106 | controlled using the smtp_confirmation log selector. | |
107 | ||
0761d44e TF |
108 | TF/03 Include the error message when we fail to unlink a spool file. |
109 | ||
0a349494 PP |
110 | DW/01 Bugzilla 139: Support dynamically loaded lookups as modules. |
111 | With thanks to Steve Haslam, Johannes Berg & Serge Demonchaux | |
112 | for maintaining out-of-tree patches for some time. | |
113 | ||
114 | PP/01 Bugzilla 139: Documentation and portability issues. | |
115 | Avoid GNU Makefile-isms, let Exim continue to build on BSD. | |
116 | Handle per-OS dynamic-module compilation flags. | |
117 | ||
fea24b2e PP |
118 | PP/02 Let /dev/null have normal permissions. |
119 | The 4.73 fixes were a little too stringent and complained about the | |
120 | permissions on /dev/null. Exempt it from some checks. | |
121 | Reported by Andreas M. Kirchwitz. | |
122 | ||
6545de78 PP |
123 | PP/03 Report version information for many libraries, including |
124 | Exim version information for dynamically loaded libraries. Created | |
125 | version.h, now support a version extension string for distributors | |
126 | who patch heavily. Dynamic module ABI change. | |
127 | ||
1670ef10 PP |
128 | PP/04 CVE-2011-0017 - check return value of setuid/setgid. This is a |
129 | privilege escalation vulnerability whereby the Exim run-time user | |
130 | can cause root to append content of the attacker's choosing to | |
131 | arbitrary files. | |
132 | ||
c0886197 PP |
133 | PP/05 Bugzilla 1041: merged DCC maintainer's fixes for return code. |
134 | (Wolfgang Breyha) | |
135 | ||
b7487bce PP |
136 | PP/06 Bugzilla 1071: fix delivery logging with untrusted macros. |
137 | If dropping privileges for untrusted macros, we disabled normal logging | |
138 | on the basis that it would fail; for the Exim run-time user, this is not | |
139 | the case, and it resulted in successful deliveries going unlogged. | |
140 | Fixed. Reported by Andreas Metzler. | |
141 | ||
8c07b69f | 142 | |
97fd1e48 | 143 | Exim version 4.73 |
ed7f7860 | 144 | ----------------- |
97fd1e48 PP |
145 | |
146 | PP/01 Date: & Message-Id: revert to normally being appended to a message, | |
147 | only prepend for the Resent-* case. Fixes regression introduced in | |
148 | Exim 4.70 by NM/22 for Bugzilla 607. | |
149 | ||
6901c596 PP |
150 | PP/02 Include check_rfc2047_length in configure.default because we're seeing |
151 | increasing numbers of administrators be bitten by this. | |
152 | ||
a8c8d6b5 JJ |
153 | JJ/01 Added DISABLE_DKIM and comment to src/EDITME |
154 | ||
77bb000f PP |
155 | PP/03 Bugzilla 994: added openssl_options main configuration option. |
156 | ||
a29e5231 PP |
157 | PP/04 Bugzilla 995: provide better SSL diagnostics on failed reads. |
158 | ||
ec5a0394 | 159 | PP/05 Bugzilla 834: provide a permit_coredump option for pipe transports. |
a29e5231 | 160 | |
55c75993 PP |
161 | PP/06 Adjust NTLM authentication to handle SASL Initial Response. |
162 | ||
453a6645 | 163 | PP/07 If TLS negotiated an anonymous cipher, we could end up with SSL but |
ec5a0394 PP |
164 | without a peer certificate, leading to a segfault because of an |
165 | assumption that peers always have certificates. Be a little more | |
453a6645 PP |
166 | paranoid. Problem reported by Martin Tscholak. |
167 | ||
8544e77a PP |
168 | PP/08 Bugzilla 926: switch ClamAV to use the new zINSTREAM API for content |
169 | filtering; old API available if built with WITH_OLD_CLAMAV_STREAM=yes | |
170 | NB: ClamAV planning to remove STREAM in "middle of 2010". | |
3346ab01 PP |
171 | CL also introduces -bmalware, various -d+acl logging additions and |
172 | more caution in buffer sizes. | |
8544e77a | 173 | |
83e029d5 PP |
174 | PP/09 Implemented reverse_ip expansion operator. |
175 | ||
ed7f7860 PP |
176 | PP/10 Bugzilla 937: provide a "debug" ACL control. |
177 | ||
7d9f747b PP |
178 | PP/11 Bugzilla 922: Documentation dusting, patch provided by John Horne. |
179 | ||
4b2241d2 PP |
180 | PP/12 Bugzilla 973: Implement --version. |
181 | ||
10385c15 PP |
182 | PP/13 Bugzilla 752: Refuse to build/run if Exim user is root/0. |
183 | ||
dbc4b90d PP |
184 | PP/14 Build without WITH_CONTENT_SCAN. Path from Andreas Metzler. |
185 | ||
532be449 PP |
186 | PP/15 Bugzilla 816: support multiple condition rules on Routers. |
187 | ||
6a8de854 | 188 | PP/16 Add bool_lax{} expansion operator and use that for combining multiple |
71265ae9 PP |
189 | condition rules, instead of bool{}. Make both bool{} and bool_lax{} |
190 | ignore trailing whitespace. | |
6a8de854 | 191 | |
5dc43717 JJ |
192 | JJ/02 prevent non-panic DKIM error from being sent to paniclog |
193 | ||
194 | JJ/03 added tcp_wrappers_daemon_name to allow host entries other than | |
195 | "exim" to be used | |
55c75993 | 196 | |
3346ab01 PP |
197 | PP/17 Fix malware regression for cmdline scanner introduced in PP/08. |
198 | Notification from Dr Andrew Aitchison. | |
199 | ||
491fab4c PP |
200 | PP/18 Change ClamAV response parsing to be more robust and to handle ClamAV's |
201 | ExtendedDetectionInfo response format. | |
202 | Notification from John Horne. | |
203 | ||
13eb9497 PP |
204 | PP/19 OpenSSL 1.0.0a compatibility const-ness change, should be backwards |
205 | compatible. | |
206 | ||
207 | PP/20 Added a CONTRIBUTING file. Fixed the documentation build to use http: | |
208 | XSL and documented dependency on system catalogs, with examples of how | |
209 | it normally works. | |
210 | ||
7f36d675 DW |
211 | DW/21 Added Valgrind hooks in store.c to help it capture out-of-bounds store |
212 | access. | |
213 | ||
c1d94452 DW |
214 | DW/22 Bugzilla 1044: CVE-2010-4345 - partial fix: restrict default behaviour |
215 | of CONFIGURE_OWNER and CONFIGURE_GROUP options to no longer allow a | |
216 | configuration file which is writeable by the Exim user or group. | |
217 | ||
e2f5dc15 DW |
218 | DW/23 Bugzilla 1044: CVE-2010-4345 - part two: extend checks for writeability |
219 | of configuration files to cover files specified with the -C option if | |
220 | they are going to be used with root privileges, not just the default | |
221 | configuration file. | |
222 | ||
cd25e41d DW |
223 | DW/24 Bugzilla 1044: CVE-2010-4345 - part three: remove ALT_CONFIG_ROOT_ONLY |
224 | option (effectively making it always true). | |
225 | ||
261dc43e DW |
226 | DW/25 Add TRUSTED_CONFIG_PREFIX_FILE option to allow alternative configuration |
227 | files to be used while preserving root privileges. | |
228 | ||
fa32850b DW |
229 | DW/26 Set FD_CLOEXEC on SMTP sockets after forking in the daemon, to ensure |
230 | that rogue child processes cannot use them. | |
231 | ||
79d4bc3d PP |
232 | PP/27 Bugzilla 1047: change the default for system_filter_user to be the Exim |
233 | run-time user, instead of root. | |
234 | ||
2cfd3221 PP |
235 | PP/28 Add WHITELIST_D_MACROS option to let some macros be overriden by the |
236 | Exim run-time user without dropping privileges. | |
237 | ||
fb08281f DW |
238 | DW/29 Remove use of va_copy() which breaks pre-C99 systems. Duplicate the |
239 | result string, instead of calling string_vformat() twice with the same | |
240 | arguments. | |
3346ab01 | 241 | |
74935b98 DW |
242 | DW/30 Allow TRUSTED_CONFIG_PREFIX_FILE only for Exim or CONFIGURE_OWNER, not |
243 | for other users. Others should always drop root privileges if they use | |
244 | -C on the command line, even for a whitelisted configure file. | |
245 | ||
90b6341f DW |
246 | DW/31 Turn TRUSTED_CONFIG_PREFIX_FILE into TRUSTED_CONFIG_FILE. No prefixes. |
247 | ||
57730b52 ML |
248 | NM/01 Fixed bug #1002 - Message loss when using multiple deliveries |
249 | ||
66581d1e | 250 | |
465e92cf JJ |
251 | Exim version 4.72 |
252 | ----------------- | |
253 | ||
453a6645 PP |
254 | JJ/01 installed exipick 20100104.1, adding $max_received_linelength, |
255 | $data_path, and $header_path variables; fixed documentation bugs and | |
256 | typos | |
465e92cf | 257 | |
453a6645 PP |
258 | JJ/02 installed exipick 20100222.0, added --input-dir and --finput to allow |
259 | exipick to access non-standard spools, including the "frozen" queue | |
260 | (Finput) | |
edae0343 | 261 | |
9bd3e22c NM |
262 | NM/01 Bugzilla 965: Support mysql stored procedures. |
263 | Patch from Alain Williams | |
264 | ||
bb576ff7 NM |
265 | NM/02 Bugzilla 961: Spacing fix (syntax error) on Makefile directives for NetBSD |
266 | ||
5a1a5845 NM |
267 | NM/03 Bugzilla 955: Documentation fix for max_rcpts. |
268 | Patch from Andreas Metzler | |
269 | ||
981a9fad NM |
270 | NM/04 Bugzilla 954: Fix for unknown responses from Dovecot authenticator. |
271 | Patch from Kirill Miazine | |
272 | ||
7fc497ee NM |
273 | NM/05 Bugzilla 671: Added umask to procmail example. |
274 | ||
1a41defa JJ |
275 | JJ/03 installed exipick 20100323.0, fixing doc bug |
276 | ||
a466095c | 277 | NM/06 Bugzilla 988: CVE-2010-2023 - prevent hardlink attack on sticky mail |
b26eacf1 | 278 | directory. Notification and patch from Dan Rosenberg. |
a466095c | 279 | |
94a6bd0b NM |
280 | TK/01 PDKIM: Upgrade PolarSSL files to upstream version 0.12.1. |
281 | ||
282 | TK/02 Improve log output when DKIM signing operation fails. | |
283 | ||
284 | MH/01 Treat the transport option dkim_domain as a colon separated | |
285 | list, not as a single string, and sign the message with each element, | |
286 | omitting multiple occurences of the same signer. | |
287 | ||
c1b141a8 NM |
288 | NM/07 Null terminate DKIM strings, Null initialise DKIM variable |
289 | Bugzilla 985, 986. Patch by Simon Arlott | |
94a6bd0b | 290 | |
b26eacf1 | 291 | NM/08 Bugzilla 967. dnsdb DNS TXT record bug fix (DKIM-related) |
0d0c6357 NM |
292 | Patch by Simon Arlott |
293 | ||
179c5980 | 294 | PP/01 Bugzilla 989: CVE-2010-2024 - work round race condition on |
b26eacf1 | 295 | MBX locking. Notification from Dan Rosenberg. |
179c5980 | 296 | |
9bd3e22c | 297 | |
7c6d71af NM |
298 | Exim version 4.71 |
299 | ----------------- | |
300 | ||
7d9f747b | 301 | TK/01 Bugzilla 912: Fix DKIM segfault on empty headers/body. |
7c6d71af | 302 | |
f013fb92 NM |
303 | NM/01 Bugzilla 913: Documentation fix for gnutls_* options. |
304 | ||
0eb8eedd NM |
305 | NM/02 Bugzilla 722: Documentation for randint. Better randomness defaults. |
306 | ||
663ee6d9 NM |
307 | NM/03 Bugzilla 847: Enable DNSDB lookup by default. |
308 | ||
177ebd9b NM |
309 | NM/04 Bugzilla 915: Flag broken perl installation during build. |
310 | ||
7c6d71af | 311 | |
210f147e NM |
312 | Exim version 4.70 |
313 | ----------------- | |
314 | ||
cdd3bb85 | 315 | TK/01 Added patch by Johannes Berg that expands the main option |
e739e3d9 | 316 | "spamd_address" if it starts with a dollar sign. |
cdd3bb85 TK |
317 | |
318 | TK/02 Write list of recipients to X-Envelope-Sender header when building | |
319 | the mbox-format spool file for content scanning (suggested by Jakob | |
7d9f747b | 320 | Hirsch). |
cdd3bb85 TK |
321 | |
322 | TK/03 Added patch by Wolfgang Breyha that adds experimental DCC | |
323 | (http://www.dcc-servers.net/) support via dccifd. Activated by | |
e739e3d9 | 324 | setting EXPERIMENTAL_DCC=yes in Local/Makefile. |
cdd3bb85 TK |
325 | |
326 | TK/04 Bugzilla 673: Add f-protd malware scanner support. Patch submitted | |
327 | by Mark Daniel Reidel <mr@df.eu>. | |
328 | ||
210f147e NM |
329 | NM/01 Bugzilla 657: Embedded PCRE removed from the exim source tree. |
330 | When building exim an external PCRE library is now needed - | |
331 | PCRE is a system library on the majority of modern systems. | |
332 | See entry on PCRE_LIBS in EDITME file. | |
333 | ||
deafd5b3 NM |
334 | NM/02 Bugzilla 646: Removed unwanted C/R in Dovecot authenticator |
335 | conversation. Added nologin parameter to request. | |
7d9f747b | 336 | Patch contributed by Kirill Miazine. |
deafd5b3 | 337 | |
089793a4 TF |
338 | TF/01 Do not log submission mode rewrites if they do not change the address. |
339 | ||
5f16ca82 TF |
340 | TF/02 Bugzilla 662: Fix stack corruption before exec() in daemon.c. |
341 | ||
dae9d94e | 342 | NM/03 Bugzilla 602: exicyclog now handles panic log, and creates empty |
7d9f747b | 343 | log files in place. Contributed by Roberto Lima. |
dae9d94e | 344 | |
7d9f747b | 345 | NM/04 Bugzilla 667: Close socket used by dovecot authenticator. |
3f0da4d0 | 346 | |
06864c44 TF |
347 | TF/03 Bugzilla 615: When checking the local_parts router precondition |
348 | after a local_part_suffix or local_part_prefix option, Exim now | |
349 | does not use the address's named list lookup cache, since this | |
350 | contains cached lookups for the whole local part. | |
351 | ||
65a7d8c3 | 352 | NM/05 Bugzilla 521: Integrated SPF Best Guess support contributed by |
7d9f747b | 353 | Robert Millan. Documentation is in experimental-spec.txt. |
65a7d8c3 | 354 | |
23510047 | 355 | TF/04 Bugzilla 668: Fix parallel build (make -j). |
65a7d8c3 | 356 | |
7d9f747b | 357 | NM/05.2 Bugzilla 437: Prevent Maildir aux files being created with mode 000. |
5f28a6e8 | 358 | |
7d8eec3a | 359 | NM/05.3 Bugzilla 598: Improvement to Dovecot authenticator handling. |
7d9f747b | 360 | Patch provided by Jan Srzednicki. |
6c588e74 | 361 | |
89dec7b6 TF |
362 | TF/05 Leading white space used to be stripped from $spam_report which |
363 | wrecked the formatting. Now it is preserved. | |
5f28a6e8 | 364 | |
a99de90c TF |
365 | TF/06 Save $spam_score, $spam_bar, and $spam_report in spool files, so |
366 | that they are available at delivery time. | |
367 | ||
e2803e40 TF |
368 | TF/07 Fix the way ${extract is skipped in the untaken branch of a conditional. |
369 | ||
7199e1ee TF |
370 | TF/08 TLS error reporting now respects the incoming_interface and |
371 | incoming_port log selectors. | |
372 | ||
e276e04b TF |
373 | TF/09 Produce a more useful error message if an SMTP transport's hosts |
374 | setting expands to an empty string. | |
375 | ||
ce552449 | 376 | NM/06 Bugzilla 744: EXPN did not work under TLS. |
7d9f747b | 377 | Patch provided by Phil Pennock. |
ce552449 | 378 | |
e765a0f1 | 379 | NM/07 Bugzilla 769: Extraneous comma in usage fprintf |
7d9f747b | 380 | Patch provided by Richard Godbee. |
e765a0f1 | 381 | |
4f054c63 | 382 | NM/08 Fixed erroneous documentation references to smtp_notquit_acl to be |
447de4b0 | 383 | acl_smtp_notquit, added index entry. |
4f054c63 | 384 | |
7d9f747b PP |
385 | NM/09 Bugzilla 787: Potential buffer overflow in string_format. |
386 | Patch provided by Eugene Bujak. | |
24c929a2 | 387 | |
7d9f747b PP |
388 | NM/10 Bugzilla 770: Problem on some platforms modifying the len parameter to |
389 | accept(). Patch provided by Maxim Dounin. | |
cf73943b | 390 | |
b52bc06e | 391 | NM/11 Bugzilla 749: Preserve old behaviour of blanks comparing equal to zero. |
7d9f747b | 392 | Patch provided by Phil Pennock. |
b52bc06e | 393 | |
447de4b0 NM |
394 | NM/12 Bugzilla 497: Correct behaviour of exiwhat when no config exists. |
395 | ||
4c69d561 | 396 | NM/13 Bugzilla 590: Correct handling of Resent-Date headers. |
7d9f747b | 397 | Patch provided by Brad "anomie" Jorsch. |
4c69d561 | 398 | |
d5c39246 | 399 | NM/14 Bugzilla 622: Added timeout setting to transport filter. |
7d9f747b | 400 | Patch provided by Dean Brooks. |
9b989985 | 401 | |
0b23848a TK |
402 | TK/05 Add native DKIM support (does not depend on external libraries). |
403 | ||
8f3414a1 | 404 | NM/15 Bugzilla 854: Removed code that symlinks to pcre as its no longer useful. |
7d9f747b | 405 | Patch provided by Graeme Fowler. |
e2aacdfd | 406 | |
fb6f955d NM |
407 | NM/16 Bugzilla 851: Documentation example syntax fix. |
408 | ||
409 | NM/17 Changed NOTICE file to remove references to embedded PCRE. | |
8f3414a1 | 410 | |
7d9f747b PP |
411 | NM/18 Bugzilla 894: Fix issue with very long lines including comments in |
412 | lsearch. | |
dbb0bf41 | 413 | |
7d9f747b PP |
414 | NM/19 Bugzilla 745: TLS version reporting. |
415 | Patch provided by Phil Pennock. | |
f3766eb5 | 416 | |
7d9f747b PP |
417 | NM/20 Bugzilla 167: bool: condition support. |
418 | Patch provided by Phil Pennock. | |
36f12725 | 419 | |
7d9f747b PP |
420 | NM/21 Bugzilla 665: gnutls_compat_mode to allow compatibility with broken |
421 | clients. Patch provided by Phil Pennock. | |
e6060e2c | 422 | |
7d9f747b PP |
423 | NM/22 Bugzilla 607: prepend (not append) Resent-Message-ID and Resent-Date. |
424 | Patch provided by Brad "anomie" Jorsch. | |
5eb690a1 | 425 | |
7d9f747b PP |
426 | NM/23 Bugzilla 687: Fix misparses in eximstats. |
427 | Patch provided by Heiko Schlittermann. | |
d5c13d66 | 428 | |
7d9f747b PP |
429 | NM/24 Bugzilla 688: Fix exiwhat to handle log_selector = +pid. |
430 | Patch provided by Heiko Schlittermann. | |
b2335c0b | 431 | |
7d9f747b | 432 | NM/25 Bugzilla 727: Use transport mode as default mode for maildirsize file. |
1da77999 | 433 | plus update to original patch. |
f4cd9433 | 434 | |
7d9f747b | 435 | NM/26 Bugzilla 799: Documentation correction for ratelimit. |
dc988b7e | 436 | |
7d9f747b PP |
437 | NM/27 Bugzilla 802: Improvements to local interface IP addr detection. |
438 | Patch provided by David Brownlee. | |
8dc71ab3 | 439 | |
7d9f747b | 440 | NM/28 Bugzilla 807: Improvements to LMTP delivery logging. |
400eda43 | 441 | |
7d9f747b | 442 | NM/29 Bugzilla 862, 866, 875: Documentation bugfixes. |
ec5a421b | 443 | |
7d9f747b | 444 | NM/30 Bugzilla 888: TLS documentation bugfixes. |
07af267e | 445 | |
7d9f747b | 446 | NM/31 Bugzilla 896: Dovecot buffer overrun fix. |
51473862 | 447 | |
17792b53 | 448 | NM/32 Bugzilla 889: Change all instances of "expr" in shell scripts to "expr --" |
7d9f747b | 449 | Unlike the original bugzilla I have changed all shell scripts in src tree. |
17792b53 | 450 | |
7d9f747b PP |
451 | NM/33 Bugzilla 898: Transport filter timeout fix. |
452 | Patch by Todd Rinaldo. | |
52383f8f | 453 | |
7d9f747b PP |
454 | NM/34 Bugzilla 901: Fix sign/unsigned and UTF mistmatches. |
455 | Patch by Serge Demonchaux. | |
5ca6d115 | 456 | |
7d9f747b PP |
457 | NM/35 Bugzilla 39: Base64 decode bug fixes. |
458 | Patch by Jakob Hirsch. | |
baee9eee | 459 | |
7d9f747b | 460 | NM/36 Bugzilla 909: Correct connect() call in dcc code. |
e93a964c | 461 | |
7d9f747b | 462 | NM/37 Bugzilla 910: Correct issue with relaxed/simple handling. |
9bf3d68f | 463 | |
7d9f747b | 464 | NM/38 Bugzilla 908: Removed NetBSD3 support as no longer needed. |
96535b98 | 465 | |
7d9f747b | 466 | NM/39 Bugzilla 911: Fixed MakeLinks build script. |
30339e0f | 467 | |
deafd5b3 | 468 | |
47db1125 NM |
469 | Exim version 4.69 |
470 | ----------------- | |
471 | ||
4b3504d0 TK |
472 | TK/01 Add preliminary DKIM support. Currently requires a forked version of |
473 | ALT-N's libdkim that I have put here: | |
474 | http://duncanthrax.net/exim-experimental/ | |
475 | ||
476 | Note to Michael Haardt: I had to rename some vars in sieve.c. They | |
477 | were called 'true' and it seems that C99 defines that as a reserved | |
478 | keyword to be used with 'bool' variable types. That means you could | |
479 | not include C99-style headers which use bools without triggering | |
480 | build errors in sieve.c. | |
481 | ||
81ea09ca NM |
482 | NM/01 Bugzilla 592: --help option is handled incorrectly if exim is invoked |
483 | as mailq or other aliases. Changed the --help handling significantly | |
484 | to do whats expected. exim_usage() emits usage/help information. | |
485 | ||
f13cddcb SC |
486 | SC/01 Added the -bylocaldomain option to eximstats. |
487 | ||
7d9f747b | 488 | NM/02 Bugzilla 619: Defended against bad data coming back from gethostbyaddr. |
8ad076b2 | 489 | |
7d9f747b | 490 | NM/03 Bugzilla 613: Documentation fix for acl_not_smtp. |
a843aaa6 | 491 | |
7d9f747b | 492 | NM/04 Bugzilla 628: PCRE update to 7.4 (work done by John Hall). |
47db1125 NM |
493 | |
494 | ||
eb4c0de6 PH |
495 | Exim version 4.68 |
496 | ----------------- | |
497 | ||
498 | PH/01 Another patch from the Sieve maintainer. | |
499 | ||
6a3bceb1 PH |
500 | PH/02 When an IPv6 address is converted to a string for single-key lookup |
501 | in an address list (e.g. for an item such as "net24-dbm;/net/works"), | |
502 | dots are used instead of colons so that keys in lsearch files need not | |
503 | contain colons. This was done some time before quoting was made available | |
504 | in lsearch files. However, iplsearch files do require colons in IPv6 keys | |
505 | (notated using the quote facility) so as to distinguish them from IPv4 | |
506 | keys. This meant that lookups for IP addresses in host lists did not work | |
507 | for iplsearch lookups. | |
508 | ||
509 | This has been fixed by arranging for IPv6 addresses to be expressed with | |
510 | colons if the lookup type is iplsearch. This is not incompatible, because | |
511 | previously such lookups could never work. | |
512 | ||
513 | The situation is now rather anomolous, since one *can* have colons in | |
514 | ordinary lsearch keys. However, making the change in all cases is | |
515 | incompatible and would probably break a number of configurations. | |
516 | ||
2e30fa9d TK |
517 | TK/01 Change PRVS address formatting scheme to reflect latests BATV draft |
518 | version. | |
519 | ||
0806a9c5 MH |
520 | MH/01 The "spam" ACL condition code contained a sscanf() call with a %s |
521 | conversion specification without a maximum field width, thereby enabling | |
522 | a rogue spamd server to cause a buffer overflow. While nobody in their | |
523 | right mind would setup Exim to query an untrusted spamd server, an | |
524 | attacker that gains access to a server running spamd could potentially | |
525 | exploit this vulnerability to run arbitrary code as the Exim user. | |
526 | ||
ae276964 TK |
527 | TK/02 Bugzilla 502: Apply patch to make the SPF-Received: header use |
528 | $primary_hostname instead of what libspf2 thinks the hosts name is. | |
529 | ||
0f2cbd1b MH |
530 | MH/02 The dsearch lookup now uses lstat(2) instead of stat(2) to look for |
531 | a directory entry by the name of the lookup key. Previously, if a | |
532 | symlink pointed to a non-existing file or a file in a directory that | |
533 | Exim lacked permissions to read, a lookup for a key matching that | |
534 | symlink would fail. Now it is enough that a matching directory entry | |
535 | exists, symlink or not. (Bugzilla 503.) | |
536 | ||
2b85bce7 PH |
537 | PH/03 The body_linecount and body_zerocount variables are now exported in the |
538 | local_scan API. | |
539 | ||
93655c46 PH |
540 | PH/04 Added the $dnslist_matched variable. |
541 | ||
6c512171 PH |
542 | PH/05 Unset $tls_cipher and $tls_peerdn before making a connection as a client. |
543 | This means they are set thereafter only if the connection becomes | |
544 | encrypted. | |
545 | ||
546 | PH/06 Added the client_condition to authenticators so that some can be skipped | |
547 | by clients under certain conditions. | |
548 | ||
aa6dc513 PH |
549 | PH/07 The error message for a badly-placed control=no_multiline_responses left |
550 | "_responses" off the end of the name. | |
551 | ||
a96603a0 PH |
552 | PH/08 Added -Mvc to output a copy of a message in RFC 2822 format. |
553 | ||
8f240103 PH |
554 | PH/09 Tidied the code for creating ratelimiting keys, creating them explicitly |
555 | (without spaces) instead of just copying the configuration text. | |
556 | ||
557 | PH/10 Added the /noupdate option to the ratelimit ACL condition. | |
558 | ||
d677b2f2 PH |
559 | PH/11 Added $max_received_linelength. |
560 | ||
d52120f2 PH |
561 | PH/12 Added +ignore_defer and +include_defer to host lists. |
562 | ||
64f2600a PH |
563 | PH/13 Installed PCRE version 7.2. This needed some changes because of the new |
564 | way in which PCRE > 7.0 is built. | |
565 | ||
8669f003 PH |
566 | PH/14 Implemented queue_only_load_latch. |
567 | ||
a4dc33a8 PH |
568 | PH/15 Removed an incorrect (int) cast when reading the value of SIZE in a |
569 | MAIL command. The effect was to mangle the value on 64-bit systems. | |
570 | ||
d6a60c0f PH |
571 | PH/16 Another patch from the Sieve maintainer. |
572 | ||
8f128379 PH |
573 | PH/17 Added the NOTQUIT ACL, based on a patch from Ted Cooper. |
574 | ||
8932dffe PH |
575 | PH/18 If a system quota error occurred while trying to create the file for |
576 | a maildir delivery, the message "Mailbox is full" was not appended to the | |
577 | bounce if the delivery eventually timed out. Change 4.67/27 below applied | |
578 | only to a quota excession during the actual writing of the file. | |
d6a60c0f | 579 | |
ddea74fa | 580 | PH/19 It seems that peer DN values may contain newlines (and other non-printing |
48ed62d9 PH |
581 | characters?) which causes problems in log lines. The DN values are now |
582 | passed through string_printing() before being added to log lines. | |
583 | ||
ddea74fa | 584 | PH/20 Added the "servers=" facility to MySQL and PostgreSQL lookups. (Oracle |
b7670459 PH |
585 | and InterBase are left for another time.) |
586 | ||
ddea74fa PH |
587 | PH/21 Added message_body_newlines option. |
588 | ||
ce9f225c PH |
589 | PH/22 Guard against possible overflow in moan_check_errorcopy(). |
590 | ||
19897d52 PH |
591 | PH/23 POSIX allows open() to be a macro; guard against that. |
592 | ||
bc64a74d PH |
593 | PH/24 If the recipient of an error message contained an @ in the local part |
594 | (suitably quoted, of course), incorrect values were put in $domain and | |
595 | $local_part during the evaluation of errors_copy. | |
596 | ||
eb4c0de6 | 597 | |
b4ed4da0 PH |
598 | Exim version 4.67 |
599 | ----------------- | |
600 | ||
22ad45c9 MH |
601 | MH/01 Fix for bug #448, segfault in Dovecot authenticator when interface_address |
602 | is unset (happens when testing with -bh and -oMi isn't used). Thanks to | |
603 | Jan Srzednicki. | |
604 | ||
b4ed4da0 PH |
605 | PH/01 Added a new log selector smtp_no_mail, to log SMTP sessions that do not |
606 | issue a MAIL command. | |
607 | ||
431b7361 PH |
608 | PH/02 In an ACL statement such as |
609 | ||
610 | deny dnslists = X!=127.0.0.2 : X=127.0.0.2 | |
611 | ||
612 | if a client was not listed at all, or was listed with a value other than | |
613 | 127.0.0.2, in the X list, but was listed with 127.0.0.2 in the Y list, | |
614 | the condition was not true (as it should be), so access was not denied. | |
615 | The bug was that the ! inversion was incorrectly passed on to the second | |
616 | item. This has been fixed. | |
617 | ||
618 | PH/03 Added additional dnslists conditions == and =& which are different from | |
619 | = and & when the dns lookup returns more than one IP address. | |
620 | ||
83da1223 PH |
621 | PH/04 Added gnutls_require_{kx,mac,protocols} to give more control over the |
622 | cipher suites used by GnuTLS. These options are ignored by OpenSSL. | |
623 | ||
54fc8428 PH |
624 | PH/05 After discussion on the list, added a compile time option ENABLE_DISABLE_ |
625 | FSYNC, which compiles an option called disable_fsync that allows for | |
626 | bypassing fsync(). The documentation is heavily laced with warnings. | |
627 | ||
34c5e8dd SC |
628 | SC/01 Updated eximstats to collate all SpamAssassin rejects into one bucket. |
629 | ||
bbe15da8 PH |
630 | PH/06 Some tidies to the infrastructure of the Test Suite that is concerned |
631 | with the auxiliary C programs that it uses: (1) Arrange for BIND_8_COMPAT | |
632 | to be defined when compiling on OSX (Darwin); (2) Tidies to the Makefile, | |
633 | including adding "make clean"; (3) Added -fPIC when compiling the test | |
634 | dynamically loaded module, to get rid of a warning. | |
635 | ||
0e8a9471 MH |
636 | MH/02 Fix for bug #451, causing paniclog entries to be written if a bounce |
637 | message fails, move_frozen_messages = true and ignore_bounce_errors_after | |
638 | = 0s. The bug is otherwise harmless. | |
639 | ||
f0872424 PH |
640 | PH/07 There was a bug in the dovecot authenticator such that the value of |
641 | $auth1 could be overwritten, and so not correctly preserved, after a | |
642 | successful authentication. This usually meant that the value preserved by | |
643 | the server_setid option was incorrect. | |
644 | ||
b01dd148 PH |
645 | PH/08 Added $smtp_count_at_connection_start, deliberately with a long name. |
646 | ||
6bf342e1 PH |
647 | PH/09 Installed PCRE release 7.0. |
648 | ||
273f34d0 PH |
649 | PH/10 The acl_not_smtp_start ACL was, contrary to the documentation, not being |
650 | run for batched SMTP input. It is now run at the start of every message | |
651 | in the batch. While fixing this I discovered that the process information | |
652 | (output by running exiwhat) was not always getting set for -bs and -bS | |
653 | input. This is fixed, and it now also says "batched" for BSMTP. | |
654 | ||
cf8b11a5 PH |
655 | PH/11 Added control=no_pipelining. |
656 | ||
41c7c167 PH |
657 | PH/12 Added $sending_ip_address and $sending_port (mostly Magnus Holmgren's |
658 | patch, slightly modified), and move the expansion of helo_data till after | |
659 | the connection is made in the smtp transport (so it can use these | |
660 | values). | |
661 | ||
9c57cbc0 PH |
662 | PH/13 Added ${rfc2047d: to decoded RFC 2047 strings. |
663 | ||
f3f065bb PH |
664 | PH/14 Added log_selector = +pid. |
665 | ||
047bdd8c PH |
666 | PH/15 Flush SMTP output before delaying, unless control=no_delay_flush is set. |
667 | ||
0ce9abe6 PH |
668 | PH/16 Add ${if forany and ${if forall. |
669 | ||
0e22dfd1 PH |
670 | PH/17 Added dsn_from option to vary the From: line in DSNs. |
671 | ||
4c590bd1 PH |
672 | PH/18 Flush SMTP output before performing a callout, unless control = |
673 | no_callout_flush is set. | |
674 | ||
09945f1e PH |
675 | PH/19 Change 4.64/PH/36 introduced a bug: when address_retry_include_sender |
676 | was true (the default) a successful delivery failed to delete the retry | |
677 | item, thus causing premature timeout of the address. The bug is now | |
678 | fixed. | |
679 | ||
c51b8e75 PH |
680 | PH/20 Added hosts_avoid_pipelining to the smtp transport. |
681 | ||
e28326d8 PH |
682 | PH/21 Long custom messages for fakedefer and fakereject are now split up |
683 | into multiline reponses in the same way that messages for "deny" and | |
684 | other ACL rejections are. | |
685 | ||
75b1493f PH |
686 | PH/22 Applied Jori Hamalainen's speed-up changes and typo fixes to exigrep, |
687 | with slight modification. | |
688 | ||
7c5214ec PH |
689 | PH/23 Applied sieve patches from the maintainer "tracking the latest notify |
690 | draft, changing the syntax and factoring some duplicate code". | |
691 | ||
4311097e PH |
692 | PH/24 When the log selector "outgoing_port" was set, the port was shown as -1 |
693 | for deliveries of the second and subsequent messages over the same SMTP | |
694 | connection. | |
695 | ||
29f89cad PH |
696 | PH/25 Applied Magnus Holmgren's patch for ${addresses, ${map, ${filter, and |
697 | ${reduce, with only minor "tidies". | |
698 | ||
5e687460 SC |
699 | SC/02 Applied Daniel Tiefnig's patch to improve the '($parent) =' pattern match. |
700 | ||
c3611384 PH |
701 | PH/26 Added a "continue" ACL modifier that does nothing, for the benefit of its |
702 | expansion side effects. | |
703 | ||
5a11a7b4 PH |
704 | PH/27 When a message times out after an over-quota error from an Exim-imposed |
705 | quota, the bounce message says "mailbox is full". This message was not | |
706 | being given when it was a system quota that was exceeded. It now should | |
707 | be the same. | |
708 | ||
0e20aff9 MH |
709 | MH/03 Made $recipients available in local_scan(). local_scan() already has |
710 | better access to the recipient list through recipients_list[], but | |
711 | $recipients can be useful in postmaster-provided expansion strings. | |
712 | ||
ca86f471 PH |
713 | PH/28 The $smtp_command and $smtp_command_argument variables were not correct |
714 | in the case of a MAIL command with additional options following the | |
715 | address, for example: MAIL FROM:<foo@bar> SIZE=1234. The option settings | |
716 | were accidentally chopped off. | |
717 | ||
a14e5636 PH |
718 | PH/29 SMTP synchronization checks are implemented when a command is read - |
719 | there is a check that no more input is waiting when there shouldn't be | |
720 | any. However, for some commands, a delay in an ACL can mean that it is | |
721 | some time before the response is written. In this time, more input might | |
722 | arrive, invalidly. So now there are extra checks after an ACL has run for | |
723 | HELO/EHLO and after the predata ACL, and likewise for MAIL and RCPT when | |
724 | pipelining has not been advertised. | |
725 | ||
ec95d1a6 PH |
726 | PH/30 MH's patch to allow iscntrl() characters to be list separators. |
727 | ||
42855d71 PH |
728 | PH/31 Unlike :fail:, a custom message specified with :defer: was not being |
729 | returned in the SMTP response when smtp_return_error_details was false. | |
730 | This has been fixed. | |
731 | ||
57c2c631 PH |
732 | PH/32 Change the Dovecot authenticator to use read() and write() on the socket |
733 | instead of the C I/O that was originally supplied, because problems were | |
734 | reported on Solaris. | |
735 | ||
58c01c94 PH |
736 | PH/33 Compile failed with OpenSSL 0.9.8e. This was due to a coding error in |
737 | Exim which did not show up earlier: it was assuming that a call to | |
738 | SSL_CTX_set_info_callback() might give an error value. In fact, there is | |
739 | no error. In previous releases of OpenSSL, SSL_CTX_set_info_callback() | |
740 | was a macro that became an assignment, so it seemed to work. This has | |
741 | changed to a proper function call with a void return, hence the compile | |
742 | error. Exim's code has been fixed. | |
743 | ||
dee5a20a PH |
744 | PH/34 Change HDA_SIZE in oracle.c from 256 to 512. This is needed for 64-bit |
745 | cpus. | |
746 | ||
d2ee6114 PH |
747 | PH/35 Applied a patch from the Sieve maintainer which fixes a bug in "notify". |
748 | ||
b2d5182b PH |
749 | PH/36 Applied John Jetmore's patch to add -v functionality to exigrep. |
750 | ||
79749a79 PH |
751 | PH/37 If a message is not accepted after it has had an id assigned (e.g. |
752 | because it turns out to be too big or there is a timeout) there is no | |
3ce62588 PH |
753 | "Completed" line in the log. When some messages of this type were |
754 | selected by exigrep, they were listed as "not completed". Others were | |
755 | picked up by some special patterns. I have improved the selection | |
756 | criteria to be more general. | |
79749a79 | 757 | |
c456d9bb PH |
758 | PH/38 The host_find_failed option in the manualroute router can now be set |
759 | to "ignore", to completely ignore a host whose IP address cannot be | |
760 | found. If all hosts are ignored, the behaviour is controlled by the new | |
761 | host_all_ignored option. | |
762 | ||
cd9868ec PH |
763 | PH/39 In a list of hosts for manualroute, if one item (either because of multi- |
764 | homing or because of multiple MX records with /mx) generated more than | |
765 | one IP address, and the following item turned out to be the local host, | |
766 | all the secondary addresses of the first item were incorrectly removed | |
767 | from the list, along with the local host and any following hosts (which | |
768 | is what is supposed to happen). | |
769 | ||
ebeaf996 PH |
770 | PH/40 When Exim receives a message, it writes the login name, uid, and gid of |
771 | whoever called Exim into the -H file. In the case of the daemon it was | |
772 | behaving confusingly. When first started, it used values for whoever | |
773 | started the daemon, but after a SIGHUP it used the Exim user (because it | |
774 | calls itself on a restart). I have changed the code so that it now always | |
775 | uses the Exim user. | |
776 | ||
2679d413 PH |
777 | PH/41 (Following a suggestion from Tony Finch) If all the RCPT commands in a |
778 | message are rejected with the same error (e.g. no authentication or bad | |
779 | sender address), and a DATA command is nevertheless sent (as can happen | |
780 | with PIPELINING or a stupid MUA), the error message that was given to the | |
781 | RCPT commands is included in the rejection of the DATA command. This is | |
782 | intended to be helpful for MUAs that show only the final error to their | |
783 | users. | |
784 | ||
84024b72 PH |
785 | PH/42 Another patch from the Sieve maintainer. |
786 | ||
8005d38e SC |
787 | SC/02 Eximstats - Differentiate between permanent and temporary rejects. |
788 | Eximstats - Fixed some broken HTML links and added missing column headers | |
789 | (Jez Hancock). | |
790 | Eximstats - Fixed Grand Total Summary Domains, Edomains, and Email | |
791 | columns for Rejects, Temp Rejects, Ham, and Spam rows. | |
792 | ||
3298c6c6 SC |
793 | SC/03 Eximstats - V1.58 Fix to get <> and blackhole to show in edomain tables. |
794 | ||
a43a27c5 PH |
795 | PH/43 Yet another patch from the Sieve maintainer. |
796 | ||
58eb016e | 797 | PH/44 I found a way to check for a TCP/IP connection going away before sending |
563b63fa PH |
798 | the response to the final '.' that terminates a message, but only in the |
799 | case where the client has not sent further data following the '.' | |
800 | (unfortunately, this is allowed). However, in many cases there won't be | |
801 | any further data because there won't be any more messages to send. A call | |
802 | to select() can be used: if it shows that the input is "ready", there is | |
803 | either input waiting, or the socket has been closed. An attempt to read | |
804 | the next input character can distinguish the two cases. Previously, Exim | |
58eb016e | 805 | would have sent an OK response which the client would never have see. |
563b63fa PH |
806 | This could lead to message repetition. This fix should cure that, at |
807 | least in a lot of common cases. | |
58eb016e | 808 | |
b43a74ea PH |
809 | PH/45 Do not advertise STARTTLS in response to HELP unless it would be |
810 | advertised in response to EHLO. | |
811 | ||
b4ed4da0 | 812 | |
5dd1517f PH |
813 | Exim version 4.66 |
814 | ----------------- | |
815 | ||
816 | PH/01 Two more bugs that were introduced by 4.64/PH/07, in addition to the one | |
817 | fixed by 4.65/MH/01 (is this a record?) are fixed: | |
818 | ||
819 | (i) An empty string was always treated as zero by the numeric comparison | |
820 | operators. This behaviour has been restored. | |
821 | ||
822 | (ii) It is documented that the numeric comparison operators always treat | |
823 | their arguments as decimal numbers. This was broken in that numbers | |
824 | starting with 0 were being interpreted as octal. | |
825 | ||
826 | While fixing these problems I realized that there was another issue that | |
827 | hadn't been noticed. Values of message_size_limit (both the global option | |
828 | and the transport option) were treated as octal if they started with 0. | |
829 | The documentation was vague. These values are now always treated as | |
830 | decimal, and I will make that clear in the documentation. | |
831 | ||
832 | ||
93cfa765 TK |
833 | Exim version 4.65 |
834 | ----------------- | |
835 | ||
836 | TK/01 Disable default definition of HAVE_LINUX_SENDFILE. Clashes with | |
837 | Linux large file support (_FILE_OFFSET_BITS=64) on older glibc | |
838 | versions. (#438) | |
839 | ||
d6066548 MH |
840 | MH/01 Don't check that the operands of numeric comparison operators are |
841 | integers when their expansion is in "skipping" mode (fixes bug | |
842 | introduced by 4.64-PH/07). | |
843 | ||
4362ff0d PH |
844 | PH/01 If a system filter or a router generates more than SHRT_MAX (32767) |
845 | child addresses, Exim now panics and dies. Previously, because the count | |
846 | is held in a short int, deliveries were likely to be lost. As such a | |
847 | large number of recipients for a single message is ridiculous | |
848 | (performance will be very, very poor), I have chosen to impose a limit | |
849 | rather than extend the field. | |
850 | ||
93cfa765 | 851 | |
944e9e9c TF |
852 | Exim version 4.64 |
853 | ----------------- | |
aa41d2de | 854 | |
21d74bd9 TK |
855 | TK/01 Bugzilla #401. Fix DK spooling code so that it can overwrite a |
856 | leftover -K file (the existence of which was triggered by #402). | |
857 | While we were at it, introduced process PID as part of the -K | |
858 | filename. This should rule out race conditions when creating | |
859 | these files. | |
860 | ||
861 | TK/02 Bugzilla #402. Apply patch from Simon Arlott, speeding up DK signing | |
862 | processing considerably. Previous code took too long for large mails, | |
863 | triggering a timeout which in turn triggers #401. | |
864 | ||
865 | TK/03 Introduced HAVE_LINUX_SENDFILE to os.h-Linux. Currently only used | |
866 | in the DK code in transports.c. sendfile() is not really portable, | |
867 | hence the _LINUX specificness. | |
944e9e9c TF |
868 | |
869 | TF/01 In the add_headers option to the mail command in an Exim filter, | |
870 | there was a bug that Exim would claim a syntax error in any | |
871 | header after the first one which had an odd number of characters | |
872 | in the field name. | |
873 | ||
2b1c6e3a PH |
874 | PH/01 If a server that rejects MAIL FROM:<> was the target of a sender |
875 | callout verification, Exim cached a "reject" for the entire domain. This | |
876 | is correct for most verifications, but it is not correct for a recipient | |
877 | verification with use_sender or use_postmaster set, because in that case | |
878 | the callout does not use MAIL FROM:<>. Exim now distinguishes the special | |
879 | case of MAIL FROM:<> rejection from other early rejections (e.g. | |
880 | rejection of HELO). When verifying a recipient using a non-null MAIL | |
881 | address, the cache is ignored if it shows MAIL FROM:<> rejection. | |
882 | Whatever the result of the callout, the value of the domain cache is | |
883 | left unchanged (for any other kind of callout, getting as far as trying | |
884 | RCPT means that the domain itself is ok). | |
885 | ||
1f872c80 PH |
886 | PH/02 Tidied a number of unused variable and signed/unsigned warnings that |
887 | gcc 4.1.1 threw up. | |
888 | ||
889 | PH/03 On Solaris, an unexpectedly close socket (dropped connection) can | |
890 | manifest itself as EPIPE rather than ECONNECT. When tidying away a | |
891 | session, the daemon ignores ECONNECT errors and logs others; it now | |
892 | ignores EPIPE as well. | |
893 | ||
d203e649 PH |
894 | PH/04 Applied Nico Erfurth's refactoring patch to tidy up mime.c |
895 | (quoted-printable decoding). | |
896 | ||
cc2ed8f7 | 897 | PH/05 Applied Nico Erfurth's refactoring patch to tidy up spool_mbox.c, and |
21a04aa3 | 898 | later the small subsequent patch to fix an introduced bug. |
f951fd57 | 899 | |
ddfcd446 PH |
900 | PH/06 Installed the latest Cygwin Makefile from the Cygwin maintainer. |
901 | ||
d45b1de8 PH |
902 | PH/07 There was no check for overflow in expansions such as ${if >{1}{4096M}}. |
903 | ||
904 | PH/08 An error is now given if message_size_limit is specified negative. | |
905 | ||
38a0a95f | 906 | PH/09 Applied and tidied up Jakob Hirsch's patch for allowing ACL variables |
641cb756 | 907 | to be given (somewhat) arbitrary names. |
38a0a95f | 908 | |
a2405d83 JJ |
909 | JJ/01 exipick 20060919.0, allow for arbitrary acl_ variables introduced |
910 | in 4.64-PH/09. | |
911 | ||
912 | JJ/02 exipick 20060919.0, --show-vars args can now be regular expressions, | |
913 | miscellaneous code fixes | |
914 | ||
6ea85e9a PH |
915 | PH/10 Added the log_reject_target ACL modifier to specify where to log |
916 | rejections. | |
917 | ||
26da7e20 PH |
918 | PH/11 Callouts were setting the name used for EHLO/HELO from $smtp_active_ |
919 | hostname. This is wrong, because it relates to the incoming message (and | |
920 | probably the interface on which it is arriving) and not to the outgoing | |
921 | callout (which could be using a different interface). This has been | |
922 | changed to use the value of the helo_data option from the smtp transport | |
923 | instead - this is what is used when a message is actually being sent. If | |
924 | there is no remote transport (possible with a router that sets up host | |
925 | addresses), $smtp_active_hostname is used. | |
6ea85e9a | 926 | |
14aa5a05 | 927 | PH/12 Installed Andrey Panin's patch to add a dovecot authenticator. Various |
7befa435 | 928 | tweaks were necessary in order to get it to work (see also 21 below): |
14aa5a05 PH |
929 | (a) The code assumed that strncpy() returns a negative number on buffer |
930 | overflow, which isn't the case. Replaced with Exim's string_format() | |
931 | function. | |
932 | (b) There were several signed/unsigned issues. I just did the minimum | |
933 | hacking in of casts. There is scope for a larger refactoring. | |
934 | (c) The code used strcasecmp() which is not a standard C function. | |
935 | Replaced with Exim's strcmpic() function. | |
936 | (d) The code set only $1; it now sets $auth1 as well. | |
937 | (e) A simple test gave the error "authentication client didn't specify | |
938 | service in request". It would seem that Dovecot has changed its | |
939 | interface. Fortunately there's a specification; I followed it and | |
940 | changed what the client sends and it appears to be working now. | |
941 | ||
ff75a1f7 PH |
942 | PH/13 Added $message_headers_raw to provide the headers without RFC 2047 |
943 | decoding. | |
944 | ||
e6f6568e PH |
945 | PH/14 Corrected misleading output from -bv when -v was also used. Suppose the |
946 | address A is aliased to B and C, where B exists and C does not. Without | |
947 | -v the output is "A verified" because verification stops after a | |
948 | successful redirection if more than one address is generated. However, | |
949 | with -v the child addresses are also verified. Exim was outputting "A | |
950 | failed to verify" and then showing the successful verification for C, | |
951 | with its parentage. It now outputs "B failed to verify", showing B's | |
952 | parentage before showing the successful verification of C. | |
953 | ||
d6f6e0dc PH |
954 | PH/15 Applied Michael Deutschmann's patch to allow DNS black list processing to |
955 | look up a TXT record in a specific list after matching in a combined | |
956 | list. | |
957 | ||
322050c2 PH |
958 | PH/16 It seems that the options setting for the resolver (RES_DEFNAMES and |
959 | RES_DNSRCH) can affect the behaviour of gethostbyname() and friends when | |
960 | they consult the DNS. I had assumed they would set it the way they | |
961 | wanted; and indeed my experiments on Linux seem to show that in some | |
962 | cases they do (I could influence IPv6 lookups but not IPv4 lookups). | |
963 | To be on the safe side, however, I have now made the interface to | |
964 | host_find_byname() similar to host_find_bydns(), with an argument | |
965 | containing the DNS resolver options. The host_find_byname() function now | |
966 | sets these options at its start, just as host_find_bydns() does. The smtp | |
967 | transport options dns_qualify_single and dns_search_parents are passed to | |
968 | host_find_byname() when gethostbyname=TRUE in this transport. Other uses | |
969 | of host_find_byname() use the default settings of RES_DEFNAMES | |
970 | (qualify_single) but not RES_DNSRCH (search_parents). | |
971 | ||
08955dd3 PH |
972 | PH/17 Applied (a modified version of) Nico Erfurth's patch to make |
973 | spool_read_header() do less string testing, by means of a preliminary | |
974 | switch on the second character of optional "-foo" lines. (This is | |
975 | overdue, caused by the large number of possibilities that now exist. | |
976 | Originally there were few.) While I was there, I also converted the | |
977 | str(n)cmp tests so they don't re-test the leading "-" and the first | |
978 | character, in the hope this might squeeze out yet more improvement. | |
979 | ||
1eccaa59 PH |
980 | PH/18 Two problems with "group" syntax in header lines when verifying: (1) The |
981 | flag allowing group syntax was set by the header_syntax check but not | |
982 | turned off, possible causing trouble later; (2) The flag was not being | |
983 | set at all for the header_verify test, causing "group"-style headers to | |
984 | be rejected. I have now set it in this case, and also caused header_ | |
985 | verify to ignore an empty address taken from a group. While doing this, I | |
986 | came across some other cases where the code for allowing group syntax | |
987 | while scanning a header line wasn't quite right (mostly, not resetting | |
988 | the flag correctly in the right place). These bugs could have caused | |
989 | trouble for malformed header lines. I hope it is now all correct. | |
990 | ||
602e59e5 PH |
991 | PH/19 The functions {pwcheck,saslauthd}_verify_password() are always called |
992 | with the "reply" argument non-NULL. The code, however (which originally | |
993 | came from elsewhere) had *some* tests for NULL when it wrote to *reply, | |
994 | but it didn't always do it. This confused somebody who was copying the | |
995 | code for some other use. I have removed all the tests. | |
996 | ||
411ef850 PH |
997 | PH/20 It was discovered that the GnuTLS code had support for RSA_EXPORT, a |
998 | feature that was used to support insecure browsers during the U.S. crypto | |
999 | embargo. It requires special client support, and Exim is probably the | |
1000 | only MTA that supported it -- and would never use it because real RSA is | |
1001 | always available. This code has been removed, because it had the bad | |
1002 | effect of slowing Exim down by computing (never used) parameters for the | |
1003 | RSA_EXPORT functionality. | |
1004 | ||
7befa435 PH |
1005 | PH/21 On the advice of Timo Sirainen, added a check to the dovecot |
1006 | authenticator to fail if there's a tab character in the incoming data | |
1007 | (there should never be unless someone is messing about, as it's supposed | |
1008 | to be base64-encoded). Also added, on Timo's advice, the "secured" option | |
1009 | if the connection is using TLS or if the remote IP is the same as the | |
1010 | local IP, and the "valid-client-cert option" if a client certificate has | |
1011 | been verified. | |
1012 | ||
48da4259 | 1013 | PH/22 As suggested by Dennis Davis, added a server_condition option to *all* |
16ff981e PH |
1014 | authenticators. This can be used for authorization after authentication |
1015 | succeeds. (In the case of plaintext, it servers for both authentication | |
1016 | and authorization.) | |
1017 | ||
48da4259 PH |
1018 | PH/23 Testing for tls_required and lost_connection in a retry rule didn't work |
1019 | if any retry times were supplied. | |
1020 | ||
d1d5595c PH |
1021 | PH/24 Exim crashed if verify=helo was activated during an incoming -bs |
1022 | connection, where there is no client IP address to check. In this | |
1023 | situation, the verify now always succeeds. | |
1024 | ||
0ef732d9 PH |
1025 | PH/25 Applied John Jetmore's -Mset patch. |
1026 | ||
328895cc PH |
1027 | PH/26 Added -bem to be like -Mset, but loading a message from a file. |
1028 | ||
fd700877 PH |
1029 | PH/27 In a string expansion for a processed (not raw) header when multiple |
1030 | headers of the same name were present, leading whitespace was being | |
1031 | removed from all of them, but trailing whitespace was being removed only | |
1032 | from the last one. Now trailing whitespace is removed from each header | |
f6c332bd PH |
1033 | before concatenation. Completely empty headers in a concatenation (as |
1034 | before) are ignored. | |
fd700877 | 1035 | |
8dce1a6f PH |
1036 | PH/28 Fixed bug in backwards-compatibility feature of PH/09 (thanks to John |
1037 | Jetmore). It would have mis-read ACL variables from pre-4.61 spool files. | |
1038 | ||
17af4a17 PH |
1039 | PH/29 [Removed. This was a change that I later backed out, and forgot to |
1040 | correct the ChangeLog entry (that I had efficiently created) before | |
1041 | committing the later change.] | |
f6c332bd PH |
1042 | |
1043 | PH/30 Exim was sometimes attempting to deliver messages that had suffered | |
1044 | address errors (4xx response to RCPT) over the same connection as other | |
1045 | messages routed to the same hosts. Such deliveries are always "forced", | |
1046 | so retry times are not inspected. This resulted in far too many retries | |
1047 | for the affected addresses. The effect occurred only when there were more | |
1048 | hosts than the hosts_max_try setting in the smtp transport when it had | |
1049 | the 4xx errors. Those hosts that it had tried were not added to the list | |
1050 | of hosts for which the message was waiting, so if all were tried, there | |
1051 | was no problem. Two fixes have been applied: | |
1052 | ||
1053 | (i) If there are any address or message errors in an SMTP delivery, none | |
1054 | of the hosts (tried or untried) are now added to the list of hosts | |
1055 | for which the message is waiting, so the message should not be a | |
1056 | candidate for sending over the same connection that was used for a | |
1057 | successful delivery of some other message. This seems entirely | |
1058 | reasonable: after all the message is NOT "waiting for some host". | |
1059 | This is so "obvious" that I'm not sure why it wasn't done | |
1060 | previously. Hope I haven't missed anything, but it can't do any | |
1061 | harm, as the worst effect is to miss an optimization. | |
1062 | ||
1063 | (ii) If, despite (i), such a delivery is accidentally attempted, the | |
1064 | routing retry time is respected, so at least it doesn't keep | |
1065 | hammering the server. | |
1066 | ||
c1114884 PH |
1067 | PH/31 Installed Andrew Findlay's patch to close the writing end of the socket |
1068 | in ${readsocket because some servers need this prod. | |
1069 | ||
7a0743eb PH |
1070 | PH/32 Added some extra debug output when updating a wait-xxx database. |
1071 | ||
0d85fa3f PH |
1072 | PH/33 The hint "could be header name not terminated by colon", which has been |
1073 | given for certain expansion errors for a long time, was not being given | |
1074 | for the ${if def:h_colon_omitted{... case. | |
1075 | ||
1bf43b78 PH |
1076 | PH/34 The spec says: "With one important exception, whenever a domain list is |
1077 | being scanned, $domain contains the subject domain." There was at least | |
1078 | one case where this was not true. | |
1079 | ||
520de300 PH |
1080 | PH/35 The error "getsockname() failed: connection reset by peer" was being |
1081 | written to the panic log as well as the main log, but it isn't really | |
1082 | panic-worthy as it just means the connection died rather early on. I have | |
1083 | removed the panic log writing for the ECONNRESET error when getsockname() | |
1084 | fails. | |
1085 | ||
48c7f9e2 PH |
1086 | PH/36 After a 4xx response to a RCPT error, that address was delayed (in queue |
1087 | runs only) independently of the message's sender address. This meant | |
1088 | that, if the 4xx error was in fact related to the sender, a different | |
1089 | message to the same recipient with a different sender could confuse | |
1090 | things. In particualar, this can happen when sending to a greylisting | |
1091 | server, but other circumstances could also provoke similar problems. | |
1092 | I have changed the default so that the retry time for these errors is now | |
1093 | based a combination of the sender and recipient addresses. This change | |
1094 | can be overridden by setting address_retry_include_sender=false in the | |
1095 | smtp transport. | |
1096 | ||
99ea1c86 PH |
1097 | PH/37 For LMTP over TCP/IP (the smtp transport), error responses from the |
1098 | remote server are returned as part of bounce messages. This was not | |
1099 | happening for LMTP over a pipe (the lmtp transport), but now it is the | |
1100 | same for both kinds of LMTP. | |
1101 | ||
a2042e78 PH |
1102 | PH/38 Despite being documented as not happening, Exim was rewriting addresses |
1103 | in header lines that were in fact CNAMEs. This is no longer the case. | |
1104 | ||
4fbcfc2e PH |
1105 | PH/39 If -R or -S was given with -q<time>, the effect of -R or -S was ignored, |
1106 | and queue runs started by the daemon processed all messages. This has | |
1107 | been fixed so that -R and -S can now usefully be given with -q<time>. | |
1108 | ||
aa41d2de PH |
1109 | PH/40 Import PCRE release 6.7 (fixes some bugs). |
1110 | ||
af561417 PH |
1111 | PH/41 Add bitwise logical operations to eval (courtesy Brad Jorsch). |
1112 | ||
3cc66b45 PH |
1113 | PH/42 Give an error if -q is specified more than once. |
1114 | ||
194cc0e4 PH |
1115 | PH/43 Renamed the variables $interface_address and $interface_port as |
1116 | $received_ip_address and $received_port, to make it clear that these | |
1117 | values apply to message reception, and not to the outgoing interface when | |
1118 | a message is delivered. (The old names remain recognized, of course.) | |
1119 | ||
a401ddaa PH |
1120 | PH/44 There was no timeout on the connect() call when using a Unix domain |
1121 | socket in the ${readsocket expansion. There now is. | |
1122 | ||
4e88a19f PH |
1123 | PH/45 Applied a modified version of Brad Jorsch's patch to allow "message" to |
1124 | be meaningful with "accept". | |
1125 | ||
d7d7b289 SC |
1126 | SC/01 Eximstats V1.43 |
1127 | Bug fix for V1.42 with -h0 specified. Spotted by Chris Lear. | |
1128 | ||
1129 | SC/02 Eximstats V1.44 | |
1130 | Use a glob alias rather than an array ref in the generated | |
1131 | parser. This improves both readability and performance. | |
1132 | ||
1133 | SC/03 Eximstats V1.45 (Marco Gaiarin / Steve Campbell) | |
1134 | Collect SpamAssassin and rejection statistics. | |
1135 | Don't display local sender or destination tables unless | |
1136 | there is data to show. | |
1137 | Added average volumes into the top table text output. | |
1138 | ||
1139 | SC/04 Eximstats V1.46 | |
1140 | Collect data on the number of addresses (recipients) | |
1141 | as well as the number of messages. | |
1142 | ||
1143 | SC/05 Eximstats V1.47 | |
1144 | Added 'Message too big' to the list of mail rejection | |
1145 | reasons (thanks to Marco Gaiarin). | |
1146 | ||
1147 | SC/06 Eximstats V1.48 | |
1148 | Mainlog lines which have GMT offsets and are too short to | |
1149 | have a flag are now skipped. | |
1150 | ||
1151 | SC/07 Eximstats V1.49 (Alain Williams) | |
1152 | Added the -emptyok flag. | |
1153 | ||
1154 | SC/08 Eximstats V1.50 | |
1155 | Fixes for obtaining the IP address from reject messages. | |
1156 | ||
0ea2a468 JJ |
1157 | JJ/03 exipick.20061117.2, made header handling as similar to exim as possible |
1158 | (added [br]h_ prefixes, implemented RFC2047 decoding. Fixed | |
1159 | whitesspace changes from 4.64-PH/27 | |
1160 | ||
1161 | JJ/04 exipick.20061117.2, fixed format and added $message_headers_raw to | |
1162 | match 4.64-PH/13 | |
1163 | ||
1164 | JJ/05 exipick.20061117.2, bug fixes (error out sooner when invalid criteria | |
1165 | are found, allow negative numbers in numeric criteria) | |
1166 | ||
1167 | JJ/06 exipick.20061117.2, added new $message_body_missing variable | |
1168 | ||
1169 | JJ/07 exipick.20061117.2, added $received_ip_address and $received_port | |
1170 | to match changes made in 4.64-PH/43 | |
1171 | ||
8a10f5a4 PH |
1172 | PH/46 Applied Jori Hamalainen's patch to add features to exiqsumm. |
1173 | ||
30e18802 PH |
1174 | PH/47 Put in an explicit test for a DNS lookup of an address record where the |
1175 | "domain" is actually an IP address, and force a failure. This locks out | |
1176 | those revolvers/nameservers that support "A-for-A" lookups, in | |
1177 | contravention of the specifications. | |
1178 | ||
55728a4f PH |
1179 | PH/48 When a host name was looked up from an IP address, and the subsequent |
1180 | forward lookup of the name timed out, the host name was left in | |
1181 | $sender_host_name, contrary to the specification. | |
d7d7b289 | 1182 | |
d7837193 PH |
1183 | PH/49 Although default lookup types such as lsearch* or cdb*@ have always been |
1184 | restricted to single-key lookups, Exim was not diagnosing an error if | |
1185 | * or *@ was used with a query-style lookup. | |
1186 | ||
87054a31 PH |
1187 | PH/50 Increased the value of DH_BITS in tls-gnu.c from 768 to 1024. |
1188 | ||
ea2c01d2 MH |
1189 | MH/01 local_scan ABI version incremented to 1.1. It should have been updated |
1190 | long ago, but noone interested enough thought of it. Let's just say that | |
1191 | the "1.1" means that there are some new functions that weren't there at | |
1192 | some point in the past. | |
1193 | ||
e4fa6968 PH |
1194 | PH/51 Error processing for expansion failure of helo_data from an smtp |
1195 | transport during callout processing was broken. | |
1196 | ||
56f5d9bd PH |
1197 | PH/52 Applied John Jetmore's patch to allow tls-on-connect and STARTTLS to be |
1198 | tested/used via the -bh/-bhc/-bs options. | |
1199 | ||
922e1c28 PH |
1200 | PH/53 Added missing "#include <time.h>" to pcre/pcretest.c (this was a PCRE |
1201 | bug, fixed in subsequent PCRE releases). | |
1202 | ||
21eb6e72 PH |
1203 | PH/54 Applied Robert Bannocks' patch to avoid a problem with references that |
1204 | arises when using the Solaris LDAP libraries (but not with OpenLDAP). | |
1205 | ||
a0540757 PH |
1206 | PH/55 Check for a ridiculously long file name in exim_dbmbuild. |
1207 | ||
944e9e9c | 1208 | |
478be7b0 SC |
1209 | Exim version 4.63 |
1210 | ----------------- | |
1211 | ||
1212 | SC/01 Use a glob alias rather than an array ref in eximstats generated | |
1213 | parser. This improves both readability and performance. | |
1214 | ||
1215 | SC/02 Collect SpamAssassin and rejection statistics in eximstats. | |
1216 | Don't display local sender or destination tables in eximstats unless | |
1217 | there is data to show. | |
1218 | Added average volumes into the eximstats top table text output. | |
1219 | ||
1220 | SC/03 Collect data on the number of addresses (recipients) as well | |
1221 | as the number of messages in eximstats. | |
1222 | ||
2b965a65 TF |
1223 | TF/01 Correct an error in the documentation for the redirect router. Exim |
1224 | does (usually) call initgroups() when daemonizing. | |
478be7b0 | 1225 | |
45b91596 PH |
1226 | TF/02 Call initgroups() when dropping privilege in exim.c, so that Exim runs |
1227 | with consistent privilege compared to when running as a daemon. | |
478be7b0 | 1228 | |
c59f5781 TF |
1229 | TF/03 Note in the spec that $authenticated_id is not set for local |
1230 | submissions from trusted users. | |
1231 | ||
90fc3069 TF |
1232 | TF/04 The ratelimit per_rcpt option now works correctly in acl_not_smtp. |
1233 | Thanks to Dean Brooks <dean@iglou.com> for the patch. | |
1234 | ||
6083aca0 TF |
1235 | TF/05 Make it easier to get SMTP authentication and TLS/SSL support working |
1236 | by adding some example configuration directives to the default | |
1237 | configuration file. A little bit of work is required to uncomment the | |
1238 | directives and define how usernames and passwords are checked, but | |
1239 | there is now a framework to start from. | |
1240 | ||
765b530f PH |
1241 | PH/01 Added #define LDAP_DEPRECATED 1 to ldap.c because some of the "old" |
1242 | functions that Exim currently uses aren't defined in ldap.h for OpenLDAP | |
1243 | without this. I don't know how relevant this is to other LDAP libraries. | |
1244 | ||
4e167a8c PH |
1245 | PH/02 Add the verb name to the "unknown ACL verb" error. |
1246 | ||
4608d683 PH |
1247 | PH/03 Magnus Holmgren's patch for filter_prepend_home. |
1248 | ||
b8dc3e4a PH |
1249 | PH/03 Fixed Bugzilla #101: macro definition between ACLs doesn't work. |
1250 | ||
5418e93b PH |
1251 | PH/04 Applied Magnus Holmgren's patch to fix Bugzilla #98: transport's home |
1252 | directory not expanded when it should be if an expanded home directory | |
1253 | was set for the address (which is overridden by the transport). | |
1254 | ||
b4a9bda2 PH |
1255 | PH/05 Applied Alex Kiernan's patch to fix Bugzilla #99: a problem with |
1256 | libradius. | |
1257 | ||
45b91596 PH |
1258 | PH/06 Added acl_not_smtp_start, based on Johannes Berg's patch, and set the |
1259 | bit to forbid control=suppress_local_fixups in the acl_not_smtp ACL, | |
1260 | because it is too late at that time, and has no effect. | |
1261 | ||
5547e2c5 PH |
1262 | PH/07 Changed ${quote_pgsql to quote ' as '' instead of \' because of a |
1263 | security issue with \' (bugzilla #107). I could not use the | |
1264 | PQescapeStringConn() function, because it needs a PGconn value as one of | |
1265 | its arguments. | |
1266 | ||
dbcef0ea PH |
1267 | PH/08 When testing addresses using -bt, indicate those final addresses that |
1268 | are duplicates that would not cause an additional delivery. At least one | |
1269 | person was confused, thinking that -bt output corresponded to deliveries. | |
1270 | (Suppressing duplicates isn't a good idea as you lose the information | |
1271 | about possibly different redirections that led to the duplicates.) | |
1272 | ||
25257489 PH |
1273 | PH/09 Applied patch from Erik to use select() instead of poll() in spam.c on |
1274 | systems where poll() doesn't work, in particular OS X. | |
1275 | ||
c816d124 PH |
1276 | PH/10 Added more information to debugging output for retry time not reached. |
1277 | ||
a9ccd69a PH |
1278 | PH/11 Applied patch from Arkadiusz Miskiewicz to apply a timeout to read |
1279 | operations in malware.c. | |
1280 | ||
75fa1910 PH |
1281 | PH/12 Applied patch from Magnus Holmgren to include the "h" tag in Domain Keys |
1282 | signatures. | |
1283 | ||
a7d7aa58 PH |
1284 | PH/13 If write_rejectlog was set false when logging was sent to syslog with |
1285 | syslog_duplication set false, log lines that would normally be written | |
1286 | both the the main log and to the reject log were not written to syslog at | |
1287 | all. | |
1288 | ||
42119b09 PH |
1289 | PH/14 In the default configuration, change the use of "message" in ACL warn |
1290 | statements to "add_header". | |
1291 | ||
41609df5 PH |
1292 | PH/15 Diagnose a filter syntax error for "seen", "unseen", or "noerror" if not |
1293 | not followed by a command (e.g. "seen endif"). | |
1294 | ||
a5bd321b PH |
1295 | PH/16 Recognize SMTP codes at the start of "message" in ACLs and after :fail: |
1296 | and :defer: in a redirect router. Add forbid_smtp_code to suppress the | |
1297 | latter. | |
1298 | ||
e85a7ad5 | 1299 | PH/17 Added extra conditions to the default value of delay_warning_condition |
5dff5817 PH |
1300 | so that it is now: |
1301 | ||
e85a7ad5 PH |
1302 | ${if or { \ |
1303 | { !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} } \ | |
1304 | { match{$h_precedence:}{(?i)bulk|list|junk} } \ | |
1305 | { match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} } \ | |
5dff5817 PH |
1306 | }{no}{yes}} |
1307 | ||
e85a7ad5 PH |
1308 | The Auto-Submitted: and various List- headers are standardised, whereas I |
1309 | don't think Precedence: ever was. | |
5dff5817 | 1310 | |
d8fe1c03 PH |
1311 | PH/18 Refactored debugging code in route_finduser() to show more information, |
1312 | in particular, the error code if getpwnam() issues one. | |
1313 | ||
16282d2b PH |
1314 | PH/19 Added PQsetClientEncoding(conn, "SQL_ASCII") to the pgsql code module. |
1315 | This is apparently needed in addition to the PH/07 change above to avoid | |
1316 | any possible encoding problems. | |
1317 | ||
35d40a98 PH |
1318 | PH/20 Perl can change the locale. Exim was resetting it after a ${perl call, |
1319 | but not after initializing Perl. | |
1320 | ||
034d99ab PH |
1321 | PH/21 Added a call to PQsetNoticeProcessor() to catch pgsql "notices" and |
1322 | output them only if debugging. By default they are written stderr, | |
1323 | apparently, which is not desirable. | |
1324 | ||
6ec97b1b PH |
1325 | PH/22 Added Alain Williams' LDAP patch to support setting REFERRALS=off on |
1326 | queries. | |
1327 | ||
e22ca4ac JJ |
1328 | JJ/01 exipick: added --reverse (and -R synonym), --random, --size, --sort and |
1329 | --not options | |
1330 | ||
1331 | JJ/02 exipick: rewrote --help documentation to hopefully make more clear. | |
1332 | ||
33d73e3b PH |
1333 | PH/23 Made -oMaa and -oMt work with -bh and -bs to pretend the connection is |
1334 | authenticated or an ident call has been made. Suppress the default | |
1335 | values for $authenticated_id and $authenticated_sender (but permit -oMai | |
1336 | and -oMas) when testing with -bh. | |
1337 | ||
9ecb03f3 PH |
1338 | PH/24 Re-jigged the order of the tests in the default configuration so that the |
1339 | tests for valid domains and recipients precede the DNS black list and CSA | |
1340 | tests, on the grounds that those ones are more expensive. | |
1341 | ||
084efe8d PH |
1342 | PH/25 Exim was not testing for a space following SMTP commands such as EHLO |
1343 | that require one. Thus, EHLORHUBARB was interpreted as a valid command. | |
1344 | This bug exists in every version of Exim that I still have, right back to | |
1345 | 0.12. | |
1346 | ||
366fc9f0 PH |
1347 | PH/26 (n)wildlsearch lookups are documented as being done case-insensitively. |
1348 | However, an attempt to turn on case-sensitivity in a regex key by | |
1349 | including (?-i) didn't work because the subject string was already | |
1350 | lowercased, and the effects were non-intuitive. It turns out that a | |
1351 | one-line patch can be used to allow (?-i) to work as expected. | |
1352 | ||
c59f5781 | 1353 | |
c887c79e TF |
1354 | Exim version 4.62 |
1355 | ----------------- | |
1356 | ||
1357 | TF/01 Fix the add_header change below (4.61 PH/55) which had a bug that (amongst | |
1358 | other effects) broke the use of negated acl sub-conditions. | |
1359 | ||
1cce3af8 PH |
1360 | PH/01 ${readsocket now supports Internet domain sockets (modified John Jetmore |
1361 | patch). | |
1362 | ||
afb3eaaf PH |
1363 | PH/02 When tcp-wrappers is called from Exim, it returns only "deny" or "allow". |
1364 | "Deny" causes Exim to reject the incoming connection with a 554 error. | |
1365 | Unfortunately, if there is a major crisis, such as a disk failure, | |
1366 | tcp-wrappers gives "deny", whereas what one would like would be some | |
1367 | kind of temporary error. A kludge has been added to help with this. | |
1368 | Before calling hosts_ctl(), errno is set zero. If the result is "deny", a | |
1369 | 554 error is used if errno is still zero or contains ENOENT (which occurs | |
1370 | if either of the /etc/hosts.{allow,deny} files is missing). Otherwise, a | |
1371 | 451 error is used. | |
1372 | ||
e173618b PH |
1373 | PH/03 Add -lutil to the default FreeBSD LIBS setting. |
1374 | ||
dd16e114 PH |
1375 | PH/04 Change PH/19 for 4.61 was too wide. It should not be applied to host |
1376 | errors. Otherwise a message that provokes a temporary error (when other | |
1377 | messages do not) can cause a whole host to time out. | |
1378 | ||
f7fd3850 PH |
1379 | PH/05 Batch deliveries by appendfile and pipe transports did not work when the |
1380 | addresses were routed directly to files or pipes from a redirect router. | |
1381 | File deliveries just didn't batch; pipe deliveries might have suffered | |
1382 | odd errors. | |
1383 | ||
d87df92c PH |
1384 | PH/06 A failure to get a lock for a hints database would erroneously always say |
1385 | "Failed to get write lock", even when it was really a read lock. | |
1386 | ||
7e9f683d PH |
1387 | PH/07 The appendfile transport was creating MBX lock files with a fixed mode |
1388 | of 0600. This has been changed to use the value of the lockfile_mode | |
1389 | option (which defaults to 0600). | |
1390 | ||
bfad5236 PH |
1391 | PH/08 Applied small patch from the Sieve maintainer. |
1392 | ||
01c490df PH |
1393 | PH/09 If maildir_quota_directory_regex was set to exclude (say) the .Trash |
1394 | folder from quota calculations, a direct delivery into this folder messed | |
1395 | up the contents of the maildirsize file. This was because the regex was | |
1396 | used only to exclude .Trash (or whatever) when the size of the mailbox | |
1397 | was calculated. There was no check that a delivery was happening into an | |
1398 | excluded directory. This bug has been fixed by ignoring all quota | |
1399 | processing for deliveries into excluded directories. | |
1400 | ||
d6629cdc PH |
1401 | PH/10 Added the maildirfolder_create_regex option to appendfile. |
1402 | ||
1cce3af8 | 1403 | |
214e2000 PH |
1404 | Exim version 4.61 |
1405 | ----------------- | |
1406 | ||
1407 | PH/01 The code for finding all the local interface addresses on a FreeBSD | |
1408 | system running IPv6 was broken. This may well have applied to all BSD | |
1409 | systems, as well as to others that have similar system calls. The broken | |
1410 | code found IPv4 interfaces correctly, but gave incorrect values for the | |
1411 | IPv6 interfaces. In particular, ::1 was not found. The effect in Exim was | |
1412 | that it would not match correctly against @[] and not recognize the IPv6 | |
1413 | addresses as local. | |
1414 | ||
f9daeae0 PH |
1415 | PH/02 The ipliteral router was not recognizing addresses of the form user@ |
1416 | [ipv6:....] because it didn't know about the "ipv6:" prefix. | |
1417 | ||
7e66e54d PH |
1418 | PH/03 Added disable_ipv6. |
1419 | ||
c8ea1597 PH |
1420 | PH/04 Changed $reply_address to use the raw form of the headers instead of the |
1421 | decoded form, because it is most often used to construct To: headers | |
1422 | lines in autoreplies, and the decoded form may well be syntactically | |
1423 | invalid. However, $reply_address has leading white space removed, and all | |
1424 | newlines turned into spaces so that the autoreply transport does not | |
1425 | grumble. | |
1426 | ||
911f6fde PH |
1427 | PH/05 If group was specified without a user on a router, and no group or user |
1428 | was specified on a transport, the group from the router was ignored. | |
1429 | ||
47ca6d6c PH |
1430 | PH/06 Increased the number of ACL variables to 20 of each type, and arranged |
1431 | for visible compile-time settings that can be used to change these | |
1432 | numbers, for those that want even more. Backwards compatibility with old | |
1433 | spool files has been maintained. However, going back to a previous Exim | |
1434 | release will lost any variables that are in spool files. | |
1435 | ||
ed0e9820 PH |
1436 | PH/07 Two small changes when running in the test harness: increase delay when |
1437 | passing a TCP/IP connection to a new process, in case the original | |
1438 | process has to generate a bounce, and remove special handling of | |
1439 | 127.0.0.2 (sic), which is no longer necessary. | |
1440 | ||
eff37e47 PH |
1441 | PH/08 Changed debug output of dbfn_open() flags from numbers to names, so as to |
1442 | be the same on different OS. | |
1443 | ||
1921d2ea PH |
1444 | PH/09 Moved a debug statement in filter processing to avoid a race problem when |
1445 | testing. | |
1446 | ||
b3f69ca8 JJ |
1447 | JJ/01 exipick: fixed bug where -b (brief) output option showed "Vars:" |
1448 | whether --show-vars was specified or not | |
1449 | ||
1450 | JJ/02 exipick: Added support for new ACL variable spool format introduced | |
1451 | in 4.61-PH/06 | |
1452 | ||
424a1c63 PH |
1453 | PH/10 Fixed another bug related to PH/04 above: if an incoming message had a |
1454 | syntactically invalid From: or Reply-to: line, and a filter used this to | |
1455 | generate an autoreply, and therefore failed to obtain an address for the | |
1456 | autoreply, Exim could try to deliver to a non-existent relative file | |
1457 | name, causing unrelated and misleading errors. What now happens is that | |
1458 | it logs this as a hard delivery error, but does not attempt to create a | |
1459 | bounce message. | |
1460 | ||
7a100415 PH |
1461 | PH/11 The exinext utility has a -C option for testing purposes, but although |
1462 | the given file was scanned by exinext itself; it wasn't being passed on | |
1463 | when Exim was called. | |
1464 | ||
19b9dc85 PH |
1465 | PH/12 In the smtp transport, treat an explicit ECONNRESET error the same as |
1466 | an end-of-file indication when reading a command response. | |
1467 | ||
309bd837 PH |
1468 | PH/13 Domain literals for IPv6 were not recognized unless IPv6 support was |
1469 | compiled. In many other places in Exim, IPv6 addresses are always | |
1470 | recognized, so I have changed this. It also means that IPv4 domain | |
1471 | literals of the form [IPV4:n.n.n.n] are now always recognized. | |
1472 | ||
59e82a2a PH |
1473 | PH/14 When a uid/gid is specified for the queryprogram router, it cannot be |
1474 | used if the router is not running as root, for example, when verifying at | |
1475 | ACL time, or when using -bh. The debugging output from this situation was | |
1476 | non-existent - all you got was a failure to exec. I have made two | |
1477 | changes: | |
1478 | ||
1479 | (a) Failures to set uid/gid, the current directory, or a process leader | |
1480 | in a subprocess such as that created by queryprogram now generate | |
1481 | suitable debugging ouput when -d is set. | |
1482 | ||
1483 | (b) The queryprogram router detects when it is not running as root, | |
1484 | outputs suitable debugging information if -d is set, and then runs | |
1485 | the subprocess without attempting to change uid/gid. | |
1486 | ||
9edc04ce PH |
1487 | PH/15 Minor change to Makefile for building test_host (undocumented testing |
1488 | feature). | |
1489 | ||
1349e1e5 PH |
1490 | PH/16 As discussed on the list in Nov/Dec: Exim no longer looks at the |
1491 | additional section of a DNS packet that returns MX or SRV records. | |
1492 | Instead, it always explicitly searches for A/AAAA records. This avoids | |
1493 | major problems that occur when a DNS server includes only records of one | |
1494 | type (A or AAAA) in an MX/SRV packet. A byproduct of this change has | |
1495 | fixed another bug: if SRV records were looked up and the corresponding | |
1496 | address records were *not* found in the additional section, the port | |
1497 | values from the SRV records were lost. | |
1498 | ||
ea49d0e1 PH |
1499 | PH/17 If a delivery to a pipe, file, or autoreply was deferred, Exim was not |
1500 | using the correct key (the original address) when searching the retry | |
1501 | rules in order to find which one to use for generating the retry hint. | |
1502 | ||
064a94c9 PH |
1503 | PH/18 If quota_warn_message contains a From: header, Exim now refrains from |
1504 | adding the default one. Similarly, if it contains a Reply-To: header, the | |
1505 | errors_reply_to option, if set, is not used. | |
1506 | ||
727071f8 PH |
1507 | PH/19 When calculating a retry time, Exim used to measure the "time since |
1508 | failure" by looking at the "first failed" field in the retry record. Now | |
1509 | it does not use this if it is later than than the arrival time of the | |
1510 | message. Instead it uses the arrival time. This makes for better | |
1511 | behaviour in cases where some deliveries succeed, thus re-setting the | |
1512 | "first failed" field. An example is a quota failure for a huge message | |
1513 | when small messages continue to be delivered. Without this change, the | |
1514 | "time since failure" will always be short, possible causing more frequent | |
1515 | delivery attempts for the huge message than are intended. | |
dd16e114 | 1516 | [Note: This change was subsequently modified - see PH/04 for 4.62.] |
727071f8 | 1517 | |
f78eb7c6 PH |
1518 | PH/20 Added $auth1, $auth2, $auth3 to contain authentication data (as well as |
1519 | $1, $2, $3) because the numerical variables can be reset during some | |
1520 | expansion items (e.g. "match"), thereby losing the authentication data. | |
1521 | ||
21c28500 PH |
1522 | PH/21 Make -bV show the size of off_t variables so that the test suite can |
1523 | decide whether to run tests for quotas > 2G. | |
1524 | ||
1525 | PH/22 Test the values given for quota, quota_filecount, quota_warn_threshold, | |
1526 | mailbox_size, and mailbox_filecount in the appendfile transport. If a | |
1527 | filecount value is greater than 2G or if a quota value is greater than 2G | |
1528 | on a system where the size of off_t is not greater than 4, a panic error | |
1529 | is given. | |
1530 | ||
1688f43b PH |
1531 | PH/23 When a malformed item such as 1.2.3/24 appears in a host list, it can |
1532 | never match. The debug and -bh output now contains an explicit error | |
1533 | message indicating a malformed IPv4 address or mask. | |
1534 | ||
1535 | PH/24 An host item such as 1.2.3.4/abc was being treated as the IP address | |
1536 | 1.2.3.4 without a mask. Now it is not recognized as an IP address, and | |
1537 | PH/23 above applies. | |
1538 | ||
9675b384 PH |
1539 | PH/25 Do not write to syslog when running in the test harness. The only |
1540 | occasion when this arises is a failure to open the main or panic logs | |
1541 | (for which there is an explicit test). | |
1542 | ||
6a3f1455 PH |
1543 | PH/26 Added the /no_tell option to "control=freeze". |
1544 | ||
dac79d3e PH |
1545 | PH/27 If a host name lookup failed very early in a connection, for example, if |
1546 | the IP address matched host_lookup and the reverse lookup yielded a name | |
1547 | that did not have a forward lookup, an error message of the form "no IP | |
1548 | address found for host xxx.xxx.xxx (during SMTP connection from NULL)" | |
1549 | could be logged. Now it outputs the IP address instead of "NULL". | |
1349e1e5 | 1550 | |
5977a0b3 PH |
1551 | PH/28 An enabling patch from MH: add new function child_open_exim2() which |
1552 | allows the sender and the authenticated sender to be set when | |
1553 | submitting a message from within Exim. Since child_open_exim() is | |
1554 | documented for local_scan(), the new function should be too. | |
1555 | ||
c91535f3 PH |
1556 | PH/29 In GnuTLS, a forced expansion failure for tls_privatekey was not being |
1557 | ignored. In both GnuTLS and OpenSSL, an expansion of tls_privatekey that | |
1558 | results in an empty string is now treated as unset. | |
1559 | ||
0d46a8c8 PH |
1560 | PH/30 Fix eximon buffer overflow bug (Bugzilla #73). |
1561 | ||
278c6e6c PH |
1562 | PH/31 Added sender_verify_fail logging option. |
1563 | ||
2cbb4081 PH |
1564 | PH/32 In November 2003, the code in Exim that added an empty Bcc: header when |
1565 | needed by RFC 822 but not by RFC 2822 was commented out. I have now | |
1566 | tidied the source and removed it altogether. | |
1567 | ||
3eef829e PH |
1568 | PH/33 When a queue run was abandoned because the load average was too high, a |
1569 | log line was always written; now it is written only if the queue_run log | |
1570 | selector is set. In addition, the log line for abandonment now contains | |
1571 | information about the queue run such as the pid. This is always present | |
1572 | in "start" and "stop" lines but was omitted from the "abandon" line. | |
1573 | ||
1ab95fa6 PH |
1574 | PH/34 Omit spaces between a header name and the colon in the error message that |
1575 | is given when verify = headers_syntax fails (if there are lots of them, | |
1576 | the message gets confusing). | |
1577 | ||
230205fc PH |
1578 | PH/35 Change the default for dns_check_names_pattern to allow slashes within |
1579 | names, as there are now some PTR records that contain slashes. This check | |
1580 | is only to protect against broken name servers that fall over on strange | |
1581 | characters, so the fact that it applies to all lookups doesn't matter. | |
1582 | ||
75e0e026 PH |
1583 | PH/36 Now that the new test suite is complete, we can remove some of the |
1584 | special code in Exim that was needed for the old test suite. For example, | |
1585 | sorting DNS records because real resolvers return them in an arbitrary | |
1586 | order. The new test suite's fake resolver always returns records in the | |
1587 | same order. | |
1588 | ||
1589 | PH/37 When running in the test harness, use -odi for submitted messages (e.g. | |
1590 | bounces) except when queue_only is set, to avoid logging races between | |
1591 | the different processes. | |
1592 | ||
145396a6 PH |
1593 | PH/38 Panic-die if .include specifies a non-absolute path. |
1594 | ||
3cd34f13 PH |
1595 | PH/39 A tweak to the "H" retry rule from its user. |
1596 | ||
11121d3d JJ |
1597 | JJ/03 exipick: Removed parentheses from 'next' and 'last' calls that specified |
1598 | a label. They prevented compilation on older perls. | |
1599 | ||
1600 | JJ/04 exipick: Refactored code to prevent implicit split to @_ which caused | |
1601 | a warning to be raised on newish perls. | |
1602 | ||
1603 | JJ/05 exipick: Fixed bug where -bpc always showed a count of all messages | |
1604 | on queue. Changes to match documented behaviour of showing count of | |
1605 | messages matching specified criteria. | |
1606 | ||
8def5aaf PH |
1607 | PH/40 Changed the default ident timeout from 30s to 5s. |
1608 | ||
929ba01c PH |
1609 | PH/41 Added support for the use of login_cap features, on those BSD systems |
1610 | that have them, for controlling the resources used by pipe deliveries. | |
1611 | ||
2632889e PH |
1612 | PH/42 The content-scanning code uses fopen() to create files in which to put |
1613 | message data. Previously it was not paying any attention to the mode of | |
1614 | the files. Exim runs with umask(0) because the rest of the code creates | |
1615 | files with open(), and sets the required mode explicitly. Thus, these | |
1616 | files were ending up world-writeable. This was not a big issue, because, | |
1617 | being within the spool directory, they were not world-accessible. I have | |
1618 | created a function called modefopen, which takes an additional mode | |
1619 | argument. It sets umask(777), creates the file, chmods it to the required | |
1620 | mode, then resets the umask. All the relevant calls to fopen() in the | |
1621 | content scanning code have been changed to use this function. | |
1622 | ||
944a9c55 PH |
1623 | PH/43 If retry_interval_max is set greater than 24 hours, it is quietly reset |
1624 | to 24 hours. This avoids potential overflow problems when processing G | |
1625 | and H retry rules. I suspect nobody ever tinkers with this value. | |
1626 | ||
4a23603b PH |
1627 | PH/44 Added STRIP_COMMAND=/usr/bin/strip to the FreeBSD Makefile. |
1628 | ||
4730f942 PH |
1629 | PH/45 When the plaintext authenticator is running as a client, the server's |
1630 | challenges are checked to ensure they are valid base64 strings. By | |
1631 | default, the authentication attempt is cancelled if an invalid string is | |
1632 | received. Setting client_ignore_invalid_base64 true ignores these errors. | |
1633 | The decoded challenge strings are now placed in $auth1, $auth2, etc. as | |
1634 | they are received. Thus, the responses can be made to depend on the | |
1635 | challenges. If an invalid string is ignored, an empty string is placed in | |
1636 | the variable. | |
1637 | ||
30dba1e6 PH |
1638 | PH/46 Messages that are created by the autoreply transport now contains a |
1639 | References: header, in accordance with RFCs 2822 and 3834. | |
1640 | ||
382afc6b PH |
1641 | PH/47 Added authenticated_sender_force to the smtp transport. |
1642 | ||
a86229cf PH |
1643 | PH/48 The ${prvs expansion was broken on systems where time_t was long long. |
1644 | ||
50c99ba6 PH |
1645 | PH/49 Installed latest patch from the Sieve maintainer. |
1646 | ||
d35e429d PH |
1647 | PH/50 When an Exim quota was set without a file count quota, and mailbox_size |
1648 | was also set, the appendfile transport was unnecessarily scanning a | |
1649 | directory of message files (e.g. for maildir delivery) to find the count | |
1650 | of files (along with the size), even though it did not need this | |
1651 | information. It now does the scan only if it needs to find either the | |
1652 | size of the count of files. | |
1653 | ||
f90d018c PH |
1654 | PH/51 Added ${time_eval: to convert Exim time strings into seconds. |
1655 | ||
75def545 PH |
1656 | PH/52 Two bugs concerned with error handling when the smtp transport is |
1657 | used in LMTP mode: | |
1658 | ||
1659 | (i) Exim was not creating retry information for temporary errors given | |
1660 | for individual recipients after the DATA command when the smtp transport | |
1661 | was used in LMTP mode. This meant that they could be retried too | |
1662 | frequently, and not timed out correctly. | |
1663 | ||
1664 | (ii) Exim was setting the flag that allows error details to be returned | |
1665 | for LMTP errors on RCPT commands, but not for LMTP errors for individual | |
1666 | recipients that were returned after the DATA command. | |
1667 | ||
1668 | PH/53 This is related to PH/52, but is more general: for any failing address, | |
1669 | when detailed error information was permitted to be returned to the | |
1670 | sender, but the error was temporary, then after the final timeout, only | |
1671 | "retry timeout exceeded" was returned. Now it returns the full error as | |
1672 | well as "retry timeout exceeded". | |
1673 | ||
c46782ef PH |
1674 | PH/54 Added control=allow_auth_unadvertised, as it seems there are clients that |
1675 | do this, and (what is worse) MTAs that accept it. | |
1676 | ||
71fafd95 PH |
1677 | PH/55 Added the add_header modified to ACLs. The use of "message" with "warn" |
1678 | will now be deprecated. | |
1679 | ||
2c5db4fd PH |
1680 | PH/56 New os.c-cygwin from the Cygwin maintainer. |
1681 | ||
9cf6b11a JJ |
1682 | JJ/06 exipick: added --unsorted option to allow unsorted output in all output |
1683 | formats (previously only available in exim formats via -bpr, -bpru, | |
1684 | and -bpra. Now also available in native and exiqgrep formats) | |
1685 | ||
1686 | JJ/07 exipick: added --freeze and --thaw options to allow faster interaction | |
1687 | with very large, slow to parse queues | |
1688 | ||
1689 | JJ/08 exipick: added ! as generic prefix to negate any criteria format | |
1690 | ||
1691 | JJ/09 exipick: miscellaneous performance enhancements (~24% improvements) | |
1692 | ||
898d150f PH |
1693 | PH/57 Tidies in SMTP dialogue display in debug output: (i) It was not showing |
1694 | responses to authentication challenges, though it was showing the | |
1695 | challenges; (ii) I've removed the CR characters from the debug output for | |
1696 | SMTP output lines. | |
1697 | ||
46218253 PH |
1698 | PH/58 Allow for the insertion of a newline as well as a space when a string |
1699 | is turned into more than one encoded-word during RFC 2047 encoding. The | |
1700 | Sieve code now uses this. | |
1701 | ||
e97957bc PH |
1702 | PH/59 Added the following errors that can be detected in retry rules: mail_4xx, |
1703 | data_4xx, lost_connection, tls_required. | |
1704 | ||
81e509d7 PH |
1705 | PH/60 When a VRFY deferred or FAILED, the log message rather than the user |
1706 | message was being sent as an SMTP response. | |
1707 | ||
3d240ff7 PH |
1708 | PH/61 Add -l and -k options to exicyclog. |
1709 | ||
b37c4101 PH |
1710 | PH/62 When verifying, if an address was redirected to one new address, so that |
1711 | verification continued, and the new address failed or deferred after | |
1712 | having set something in $address_data, the value of $address_data was not | |
1713 | passed back to the ACL. This was different to the case when no | |
1714 | redirection occurred. The value is now passed back in both cases. | |
1715 | ||
79378e0f PH |
1716 | PH/63 Changed the macro HAVE_LOGIN_CAP (see PH/41 for this release above) to |
1717 | HAVE_SETCLASSRESOURCES because there are different APIs in use that all | |
1718 | use login_cap.h, so on its own it isn't the distinguishing feature. The | |
1719 | new name refers directly to the setclassresources() function. | |
1720 | ||
e49c7bb4 PH |
1721 | PH/65 Added configuration files for NetBSD3. |
1722 | ||
d114ec46 PH |
1723 | PH/66 Updated OS/Makefile-HP-UX for gcc 4.1.0 with HP-UX 11. |
1724 | ||
f3d7df6c PH |
1725 | PH/67 Fixed minor infelicity in the sorting of addresses to ensure that IPv6 |
1726 | is preferred over IPv4. | |
1727 | ||
715ab376 PH |
1728 | PH/68 The bounce_return_message and bounce_return_body options were not being |
1729 | honoured for bounces generated during the reception of non-SMTP messages. | |
1730 | In particular, this applied to messages rejected by the ACL. This bug has | |
1731 | been fixed. However, if bounce_return_message is true and bounce_return_ | |
1732 | body is false, the headers that are returned for a non-SMTP message | |
1733 | include only those that have been read before the error was detected. | |
1734 | (In the case of an ACL rejection, they have all been read.) | |
1735 | ||
6b31b150 PH |
1736 | PH/69 The HTML version of the specification is now built in a directory called |
1737 | spec_html instead of spec.html, because the latter looks like a path with | |
1738 | a MIME-type, and this confuses some software. | |
1739 | ||
1740 | PH/70 Catch two compiler warnings in sieve.c. | |
1741 | ||
d515a917 PH |
1742 | PH/71 Fixed an obscure and subtle bug (thanks Alexander & Matthias). The |
1743 | function verify_get_ident() calls ip_connect() to connect a socket, but | |
1744 | if the "connect()" function timed out, ip_connect() used to close the | |
1745 | socket. However, verify_get_ident() also closes the socket later, and in | |
1746 | between Exim writes to the log, which may get opened at this point. When | |
1747 | the socket was closed in ip_connect(), the log could get the same file | |
1748 | descriptor number as the socket. This naturally causes chaos. The fix is | |
1749 | not to close the socket in ip_connect(); the socket should be closed by | |
1750 | the function that creates it. There was only one place in the code where | |
1751 | this was missing, in the iplookup router, which I don't think anybody now | |
1752 | uses, but I've fixed it anyway. | |
1753 | ||
9b8fadde PH |
1754 | PH/72 Make dns_again_means_nonexist apply to lookups using gethostbyname() as |
1755 | well as to direct DNS lookups. Otherwise the handling of names in host | |
1756 | lists is inconsistent and therefore confusing. | |
1757 | ||
214e2000 | 1758 | |
5de37277 PH |
1759 | Exim version 4.60 |
1760 | ----------------- | |
1761 | ||
cc38ddbf PH |
1762 | PH/01 Two changes to the default runtime configuration: |
1763 | ||
1764 | (1) Move the checks for relay_from_hosts and authenticated clients from | |
1765 | after to before the (commented out) DNS black list checks. | |
1766 | ||
1767 | (2) Add control=submission to the relay_from_hosts and authenticated | |
1768 | clients checks, on the grounds that messages accepted by these | |
1769 | statements are most likely to be submissions. | |
5de37277 | 1770 | |
72fdd6ae PH |
1771 | PH/02 Several tidies to the handling of ${prvs and ${prvscheck: |
1772 | ||
1773 | (1) Generate an error if the third argument for the ${prvs expansion is | |
1774 | not a single digit. | |
1775 | ||
1776 | (2) Treat a missing third argument of ${prvscheck as if it were an empty | |
1777 | string. | |
1778 | ||
1779 | (3) Reset the variables that are obtained from the first argument of | |
1780 | ${prvscheck and used in the second argument before leaving the code, | |
1781 | because their memory is reclaimed, so using them afterwards may do | |
1782 | silly things. | |
1783 | ||
1784 | (4) Tidy up the code for expanding the arguments of ${prvscheck one by | |
1785 | one (it's much easier than Tom thought :-). | |
1786 | ||
1787 | (5) Because of (4), we can now allow for the use of $prvscheck_result | |
1788 | inside the third argument. | |
cb9328de | 1789 | |
cb741023 PH |
1790 | PH/03 For some reason, the default setting of PATH when running a command from |
1791 | a pipe transport was just "/usr/bin". I have changed it to | |
1792 | "/bin:/usr/bin". | |
1793 | ||
f174f16e PH |
1794 | PH/04 SUPPORT_TRANSLATE_IP_ADDRESS and MOVE_FROZEN_MESSAGES did not cause |
1795 | anything to be listed in the output from -bV. | |
b2f5a032 | 1796 | |
c25242d7 PH |
1797 | PH/05 When a filter generated an autoreply, the entire To: header line was |
1798 | quoted in the delivery log line, like this: | |
1799 | ||
1800 | => >A.N.Other <ano@some.domain> <original@ddress> ... | |
1801 | ||
1802 | This has been changed so that it extracts the operative address. There | |
1803 | may be more than one such address. If so, they are comma-separated, like | |
1804 | this: | |
1805 | ||
1806 | => >ano@some.domain,ona@other.domain <original@ddress> ... | |
1807 | ||
82c19f95 PH |
1808 | PH/06 When a client host used a correct literal IP address in a HELO or EHLO |
1809 | command, (for example, EHLO [1.2.3.4]) and the client's IP address was | |
1810 | not being looked up in the rDNS to get a host name, Exim was showing the | |
1811 | IP address twice in Received: lines, even though the IP addresses were | |
1812 | identical. For example: | |
1813 | ||
1814 | Received: from [1.2.3.4] (helo=[1.2.3.4]) | |
1815 | ||
1816 | However, if the real host name was known, it was omitting the HELO data | |
1817 | if it matched the actual IP address. This has been tidied up so that it | |
1818 | doesn't show the same IP address twice. | |
1819 | ||
d7ffbc12 PH |
1820 | PH/07 When both +timestamp and +memory debugging was on, the value given by |
1821 | $tod_xxx expansions could be wrong, because the tod_stamp() function was | |
1822 | called by the debug printing, thereby overwriting the timestamp buffer. | |
1823 | Debugging no longer uses the tod_stamp() function when +timestamp is set. | |
1824 | ||
9f526266 PH |
1825 | PH/08 When the original message was included in an autoreply transport, it |
1826 | always said "this is a copy of the message, including all the headers", | |
1827 | even if body_only or headers_only was set. It now gives an appropriate | |
1828 | message. | |
1829 | ||
87fcc8b9 PH |
1830 | PH/09 Applied a patch from the Sieve maintainer which: |
1831 | ||
1832 | o fixes some comments | |
1833 | o adds the (disabled) notify extension core | |
1834 | o adds some debug output for the result of if/elsif tests | |
1835 | o points to the current vacation draft in the documentation | |
1836 | and documents the missing references header update | |
1837 | ||
1838 | and most important: | |
1839 | ||
1840 | o fixes a bug in processing the envelope test (when testing | |
1841 | multiple envelope elements, the last element determinted the | |
1842 | result) | |
1843 | ||
456682f5 PH |
1844 | PH/10 Exim was violating RFC 3834 ("Recommendations for Automatic Responses to |
1845 | Electronic Mail") by including: | |
1846 | ||
1847 | Auto-submitted: auto-generated | |
1848 | ||
1849 | in the messages that it generates (bounce messages and others, such as | |
1850 | warnings). In the case of bounce messages for non-SMTP mesages, there was | |
1851 | also a typo: it was using "Auto_submitted" (underscore instead of | |
1852 | hyphen). Since every message generated by Exim is necessarily in response | |
1853 | to another message, thes have all been changed to: | |
1854 | ||
1855 | Auto-Submitted: auto-replied | |
1856 | ||
1857 | in accordance with these statements in the RFC: | |
1858 | ||
1859 | The auto-replied keyword: | |
1860 | ||
1861 | - SHOULD be used on messages sent in direct response to another | |
1862 | message by an automatic process, | |
1863 | ||
1864 | - MUST NOT be used on manually-generated messages, | |
1865 | ||
1866 | - MAY be used on Delivery Status Notifications (DSNs) and Message | |
1867 | Disposition Notifications (MDNs), | |
1868 | ||
1869 | - MUST NOT be used on messages generated by automatic or periodic | |
1870 | processes, except for messages which are automatic responses to | |
1871 | other messages. | |
1872 | ||
3e46c1aa PH |
1873 | PH/11 Added "${if def:sender_address {(envelope-from <$sender_address>)\n\t}}" |
1874 | to the default Received: header definition. | |
456682f5 | 1875 | |
49826d12 PH |
1876 | PH/12 Added log selector acl_warn_skipped (default on). |
1877 | ||
eba0c039 PH |
1878 | PH/13 After a successful wildlsearch lookup, discard the values of numeric |
1879 | variables because (a) they are in the wrong storage pool and (b) even if | |
1880 | they were copied, it wouldn't work properly because of the caching. | |
1881 | ||
a0d6ba8a PH |
1882 | PH/14 Add check_rfc2047_length to disable enforcement of RFC 2047 length |
1883 | checking when decoding. Apparently there are clients that generate | |
1884 | overlong encoded strings. Why am I not surprised? | |
1885 | ||
f0917727 PH |
1886 | PH/15 If the first argument of "${if match_address" was not empty, but did not |
1887 | contain an "@" character, Exim crashed. Now it writes a panic log message | |
1888 | and treats the condition as false. | |
1889 | ||
096fee00 PH |
1890 | PH/16 In autoreply, treat an empty string for "once" the same as unset. |
1891 | ||
024bd3c2 PH |
1892 | PH/17 A further patch from the Sieve maintainer: "Introduce the new Sieve |
1893 | extension "envelope-auth". The code is finished and in agreement with | |
1894 | other implementations, but there is no documentation so far and in fact, | |
1895 | nobody wrote the draft yet. This extension is currently #undef'ed, thus | |
1896 | not changing the active code. | |
1897 | ||
1898 | Print executed "if" and "elsif" statements when debugging is used. This | |
1899 | helps a great deal to understand what a filter does. | |
1900 | ||
1901 | Document more things not specified clearly in RFC3028. I had all this | |
1902 | sorted out, when out of a sudden new issues came to my mind. Oops." | |
1903 | ||
df199fec PH |
1904 | PH/18 Exim was not recognizing the "net-" search type prefix in match_ip lists |
1905 | (Bugzilla #53). | |
1906 | ||
d27f1df3 PH |
1907 | PH/19 Exim expands the IPv6 address given to -bh to its full non-abbreviated |
1908 | canonical form (as documented). However, after a host name lookup from | |
1909 | the IP address, check_host() was doing a simple string comparison with | |
1910 | addresses acquired from the DNS when checking that the found name did | |
1911 | have the original IP as one of its addresses. Since any found IPv6 | |
1912 | addresses are likely to be in abbreviated form, the comparison could | |
1913 | fail. Luckily, there already exists a function for doing the comparison | |
1914 | by converting both addresses to binary, so now that is used instead of | |
1915 | the text comparison. | |
1916 | ||
96776534 PH |
1917 | PH/20 There was another similar case to PH/19, when a complete host name was |
1918 | given in a host list; looking up its IP address could give an abbreviated | |
1919 | form, whereas the current host's name might or might not be abbreviated. | |
1920 | The same fix has been applied. | |
1921 | ||
5de37277 | 1922 | |
9a799bc0 PH |
1923 | Exim version 4.54 |
1924 | ----------------- | |
1925 | ||
1926 | PH/01 The ${base62: operator adjusted itself to base 36 when BASE_62 was | |
1927 | set to 36 (for Darwin and Cygwin), but the ${base62d: operator did not. | |
1928 | It now does. | |
1929 | ||
99a4b039 PH |
1930 | PH/02 Two minor problems detected in Cygwin: the os.{c,h} files had lost */ on |
1931 | the CVS lines, and there was a missing #if HAVE_IPV6 in host.c. | |
1932 | ||
1933 | PH/03 Typo: missing ".o" in src/pcre/Makefile. | |
1934 | ||
4b233853 PH |
1935 | PH/04 Tighten up "personal" tests: Instead of testing for any "List-" |
1936 | header line, restrict the check to what is listed in RFCs 2369 and 2929. | |
1937 | Also, for "Auto-Submitted", treat anything other than "no" as | |
1938 | non-personal, in accordance with RFC 3834. (Previously it treated | |
1939 | anything starting "auto-" as non-personal.) | |
1940 | ||
8857ccfd PH |
1941 | TF/01 The control=submission/name=... option had a problem with syntax |
1942 | errors if the name included a slash character. The /name= option | |
1943 | now slurps the rest of the string, so it can include any characters | |
1944 | but it must come last in the list of options (after /sender_retain | |
1945 | or /domain=). | |
1946 | ||
433a2980 PH |
1947 | PH/05 Some modifications to the interface to the fake nameserver for the new |
1948 | testing suite. | |
1949 | ||
3e46c1aa | 1950 | |
9a799bc0 | 1951 | |
e3a311ba TK |
1952 | Exim version 4.53 |
1953 | ----------------- | |
1954 | ||
1955 | TK/01 Added the "success_on_redirect" address verification option. See | |
1956 | NewStuff for rationale and an example. | |
1957 | ||
13b685f9 PH |
1958 | PH/01 Added support for SQLite, basic code supplied by David Woodhouse. |
1959 | ||
395ff96d PH |
1960 | PH/02 Patch to exigrep to allow it to work on syslog lines. |
1961 | ||
5b68f6e4 PH |
1962 | PH/03 When creating an mbox file for a virus/spam scan, use fseek() instead of |
1963 | fread() to skip over the body file's header line, because in Cygwin the | |
1964 | header line is locked and is inaccessible. | |
1965 | ||
1ab52c69 PH |
1966 | PH/04 Added $message_exim_id, ultimately to replace $message_id (they will both |
1967 | co-exist for some time) to make it clear that it is the Exim ID that is | |
1968 | referenced, not the Message-ID: header line. | |
1969 | ||
b07e6aa3 PH |
1970 | PH/05 Replaced all Tom's calls to snprintf() with calls to the internal |
1971 | string_format() function, because snprintf() does not exist on all | |
1972 | operating systems. | |
1973 | ||
254e032f PH |
1974 | PH/06 The use of forbid_filter_existstest now also locks out the use of the |
1975 | ${stat: expansion item. | |
1976 | ||
3af76a81 PH |
1977 | PH/07 Changed "SMTP protocol violation: synchronization error" into "SMTP |
1978 | protocol synchronization error", to keep the pedants happy. | |
1979 | ||
2548ba04 PH |
1980 | PH/08 Arrange for USE_INET_NTOA_FIX to be set in config.h for AIX systems as |
1981 | well as for IRIX systems, when gcc is being used. See the host.c source | |
1982 | file for comments. | |
1983 | ||
b6c6011d PH |
1984 | PH/09 Installed latest Cygwin configuration files from the Cygwin maintainer. |
1985 | ||
cf39cf57 PH |
1986 | PH/10 Named domain lists were not working if used in a queue_smtp_domains |
1987 | setting. | |
1988 | ||
f1513293 PH |
1989 | PH/11 Added support for the IGNOREQUOTA extension to LMTP, both to the lmtp |
1990 | transport and to the smtp transport in LMTP mode. | |
1991 | ||
727549a4 PH |
1992 | TK/02 Remove one case of BASE64 error detection FTTB (undocumented anyway). |
1993 | ||
af46795e PH |
1994 | PH/12 There was a missing call to search_tidyup() before the fork() in rda.c to |
1995 | run a filter in a subprocess. This could lead to confusion in subsequent | |
1996 | lookups in the parent process. There should also be a search_tidyup() at | |
1997 | the end of the subprocess. | |
1998 | ||
d7b47fd0 PH |
1999 | PH/13 Previously, if "verify = helo" was set in an ACL, the condition was true |
2000 | only if the host matched helo_try_verify_hosts, which caused the | |
2001 | verification to occur when the EHLO/HELO command was issued. The ACL just | |
2002 | tested the remembered result. Now, if a previous verification attempt has | |
2003 | not happened, "verify = helo" does it there and then. | |
2004 | ||
ee744174 JJ |
2005 | JJ/01 exipick: added $message_exim_id variable (see 4.53-PH/04) |
2006 | ||
b582ab87 PH |
2007 | TK/03 Fix log output including CR from clamd. |
2008 | ||
41a13e0a PH |
2009 | PH/14 A reference to $reply_address when Reply-to: was empty and From: did not |
2010 | exist provoked a memory error which could cause a segfault. | |
2011 | ||
f625cc5a PH |
2012 | PH/15 Installed PCRE 6.2 |
2013 | ||
2014 | PH/17 Defined BIND_8_COMPAT in the Darwin os.h file. | |
2015 | ||
21f7af35 PH |
2016 | PH/18 Reversed 4.52/PH/17 because the HP-UX user found it wasn't the cause |
2017 | of the problem. Specifically, suggested +O2 rather than +O1 for the | |
2018 | HP-UX compiler. | |
2019 | ||
31480e42 PH |
2020 | PH/19 Added sqlite_lock_timeout option (David Woodhouse's patch). |
2021 | ||
2d280592 PH |
2022 | PH/20 If a delivery was routed to a non-standard port by means of an SRV |
2023 | record, the port was not correctly logged when the outgoing_port log | |
2024 | selector was set (it logged the transort's default port). | |
2025 | ||
7cd1141b PH |
2026 | PH/21 Added support for host-specific ports to manualroute, queryprogram, |
2027 | fallback_hosts, and "hosts" in the smtp transport. | |
2028 | ||
2029 | PH/22 If the log selector "outgoing_port" is set, the port is now also given on | |
2030 | host errors such as "Connection refused". | |
2031 | ||
750af86e PH |
2032 | PH/23 Applied a patch to fix problems with exim-4.52 while doing radius |
2033 | authentication with radiusclient 0.4.9: | |
2034 | ||
2035 | - Error returned from rc_read_config was caught wrongly | |
2036 | - Username/password not passed on to radius server due to wrong length. | |
2037 | ||
2038 | The presumption is that some radiusclient API changes for 4.51/PH/17 | |
2039 | were not taken care of correctly. The code is still untested by me (my | |
2040 | Linux distribution still has 0.3.2 of radiusclient), but it was | |
2041 | contributed by a Radius user. | |
2042 | ||
2043 | PH/24 When doing a callout, the value of $domain wasn't set correctly when | |
2044 | expanding the "port" option of the smtp transport. | |
2045 | ||
4304270b TK |
2046 | TK/04 MIME ACL: Fix buffer underrun that occurs when EOF condition is met |
2047 | while reading a MIME header. Thanks to Tom Hughes for a patch. | |
2048 | ||
750af86e PH |
2049 | PH/24 Include config.h inside local_scan.h so that configuration settings are |
2050 | available. | |
2051 | ||
64ffc24f PH |
2052 | PH/25 Make $smtp_command_argument available after all SMTP commands. This means |
2053 | that in an ACL for RCPT (for example), you can examine exactly what was | |
2054 | received. | |
2055 | ||
5dd9625b PH |
2056 | PH/26 Exim was recognizing IPv6 addresses of the form [IPv6:....] in EHLO |
2057 | commands, but it was not correctly comparing the address with the actual | |
2058 | client host address. Thus, it would show the EHLO address in Received: | |
2059 | header lines when this was not necessary. | |
2060 | ||
5591031b PH |
2061 | PH/27 Added the % operator to ${eval:}. |
2062 | ||
ba18e66a PH |
2063 | PH/28 Exim tries to create and chdir to its spool directory when it starts; |
2064 | it should be ignoring failures (because with -C, for example, it has lost | |
2065 | privilege). It wasn't ignoring creation failures other than "already | |
2066 | exists". | |
2067 | ||
9cec981f PH |
2068 | PH/29 Added "crypteq" to the list of supported features that Exim outputs when |
2069 | -bV or -d is used. | |
2070 | ||
aa2b5c79 PH |
2071 | PH/30 Fixed (presumably very longstanding) bug in exim_dbmbuild: if it failed |
2072 | because an input line was too long, either on its own, or by virtue of | |
1509d3a8 PH |
2073 | too many continuations, the temporary file was not being removed, and the |
2074 | return code was incorrect. | |
aa2b5c79 | 2075 | |
48a53b7f PH |
2076 | PH/31 Missing "BOOL" in function definition in filtertest.c. |
2077 | ||
1c59d63b PH |
2078 | PH/32 Applied Sieve patches from the maintainer. |
2079 | ||
671012da TK |
2080 | TK/05 Domainkeys: Accomodate for a minor API change in libdomainkeys 0.67. |
2081 | ||
1509d3a8 PH |
2082 | PH/33 Added "verify = not_blind". |
2083 | ||
2084 | PH/34 There are settings for CHOWN_COMMAND and MV_COMMAND that can be used in | |
2085 | Local/Makefile (with some defaults set). These are used in built scripts | |
2086 | such as exicyclog, but they have never been used in the exim_install | |
2087 | script (though there are many overriding facilities there). I have | |
2088 | arranged that the exim_install script now takes note of these two | |
2089 | settings. | |
2090 | ||
2091 | PH/35 Installed configuration files for Dragonfly. | |
2092 | ||
2fe1a124 PH |
2093 | PH/36 When a locally submitted message by a trusted user did not contain a |
2094 | From: header, and the sender address was obtained from -f or from an SMTP | |
2095 | MAIL command, and the trusted user did not use -F to supply a sender | |
2096 | name, $originator_name was incorrectly used when constructing a From: | |
2097 | header. Furthermore, $originator_name was used for submission mode | |
2098 | messages from external hosts without From: headers in a similar way, | |
2099 | which is clearly wrong. | |
2100 | ||
8800895a PH |
2101 | PH/37 Added control=suppress_local_fixups. |
2102 | ||
ccfdb010 PH |
2103 | PH/38 When log_selector = +received_sender was set, and the addition of the |
2104 | sender made the log line's construction buffer exactly full, or one byte | |
2105 | less than full, an overflow happened when the terminating "\n" was | |
2106 | subsequently added. | |
2107 | ||
1130bfb0 PH |
2108 | PH/39 Added a new log selector, "unknown_in_list", which provokes a log entry |
2109 | when the result of a list match is failure because a DNS lookup failed. | |
2110 | ||
ebcb507f PH |
2111 | PH/40 RM_COMMAND is now used in the building process. |
2112 | ||
c35e155c PH |
2113 | PH/41 Added a "distclean" target to the top-level Makefile; it deletes all |
2114 | the "build-* directories that it finds. | |
2115 | ||
95d1f782 PH |
2116 | PH/42 (But a TF fix): In a domain list, Exim incorrectly matched @[] if the IP |
2117 | address in a domain literal was a prefix of an interface address. | |
2118 | ||
fd6de02e PH |
2119 | PH/43 (Again a TF fix): In the dnslookup router, do not apply widen_domains |
2120 | when verifying a sender address, unless rewrite_headers is false. | |
2121 | ||
58de37c5 PH |
2122 | PH/44 Wrote a long comment about why errors_to addresses are verified as |
2123 | recipients, not senders. | |
2124 | ||
261cf466 TF |
2125 | TF/01 Add missing LIBS=-lm to OS/Makefile-OpenBSD which was overlooked when |
2126 | the ratelimit ACL was added. | |
2127 | ||
3ee512ff PH |
2128 | PH/45 Added $smtp_command for the full command (cf $smtp_command_argument). |
2129 | ||
e08c430f PH |
2130 | PH/46 Added extra information about PostgreSQL errors to the error string. |
2131 | ||
bef5a11f PH |
2132 | PH/47 Added an interface to a fake DNS resolver for use by the new test suite, |
2133 | avoiding the need to install special zones in a real server. This is | |
2134 | backwards compatible; if it can't find the fake resolver, it drops back. | |
2135 | Thus, both old and new test suites can be run. | |
2136 | ||
7546de58 TF |
2137 | TF/02 Added util/ratelimit.pl |
2138 | ||
e5d5a95f TF |
2139 | TF/03 Minor fix to the ratelimit code to improve its behaviour in case the |
2140 | clock is set back in time. | |
2141 | ||
2e88a017 TF |
2142 | TF/04 Fix the ratelimit support in exim_fixdb. Patch provided by Brian |
2143 | Candler <B.Candler@pobox.com>. | |
2144 | ||
a5f65aa4 TF |
2145 | TF/05 The fix for PH/43 was not completely correct; widen_domains is always |
2146 | OK for addresses that are the result of redirections. | |
2147 | ||
e7726cbf PH |
2148 | PH/48 A number of further additions for the benefit of the new test suite, |
2149 | including a fake gethostbyname() that interfaces to the fake DNS resolver | |
2150 | (see PH/47 above). | |
2151 | ||
a7fdad5b TF |
2152 | TF/06 The fix for widen_domains has also been applied to qualify_single and |
2153 | search_parents which are the other dnslookup options that can cause | |
2154 | header rewrites. | |
2155 | ||
6af56900 PH |
2156 | PH/49 Michael Haardt's randomized retrying, but as a separate retry parameter |
2157 | type ("H"). | |
2158 | ||
0925ede6 PH |
2159 | PH/50 Make never_users, trusted_users, admin_groups, trusted_groups expandable. |
2160 | ||
66afa403 TF |
2161 | TF/07 Exim produced the error message "an SRV record indicated no SMTP |
2162 | service" if it encountered an MX record with an empty target hostname. | |
2163 | The message is now "an MX or SRV record indicated no SMTP service". | |
2164 | ||
0154e85a TF |
2165 | TF/08 Change PH/13 introduced the possibility that verify=helo may defer, |
2166 | if the DNS of the sending site is misconfigured. This is quite a | |
2167 | common situation. This change restores the behaviour of treating a | |
2168 | helo verification defer as a failure. | |
2169 | ||
16f12c76 PH |
2170 | PH/51 If self=fail was set on a router, the bounce message did not include the |
2171 | actual error message. | |
2172 | ||
bbe902f0 | 2173 | |
e5a9dba6 PH |
2174 | Exim version 4.52 |
2175 | ----------------- | |
2176 | ||
2177 | TF/01 Added support for Client SMTP Authorization. See NewStuff for details. | |
2178 | ||
22c3b60b PH |
2179 | PH/01 When a transport filter timed out in a pipe delivery, and the pipe |
2180 | command itself ended in error, the underlying message about the transport | |
2181 | filter timeout was being overwritten with the pipe command error. Now the | |
2182 | underlying error message should be appended to the second error message. | |
2183 | ||
06a9b4b5 PH |
2184 | TK/01 Fix poll() being unavailable on Mac OSX 10.2. |
2185 | ||
c1ac6996 PH |
2186 | PH/02 Reduce the amount of output that "make" produces by default. Full output |
2187 | can still be requested. | |
2188 | ||
9c7a242c PH |
2189 | PH/03 The warning log line about a condition test deferring for a "warn" verb |
2190 | was being output only once per connection, rather than after each | |
2191 | occurrence (because it was using the same function as for successful | |
2192 | "warn" verbs). This seems wrong, so I have changed it. | |
2193 | ||
87ba3f5f PH |
2194 | TF/02 Two buglets in acl.c which caused Exim to read a few bytes of memory that |
2195 | it should not have, which might have caused a crash in the right | |
2196 | circumstances, but probably never did. | |
2197 | ||
2198 | PH/04 Installed a modified version of Tony Finch's patch to make submission | |
2199 | mode fix the return path as well as the Sender: header line, and to | |
2200 | add a /name= option so that you can make the user's friendly name appear | |
2201 | in the header line. | |
2202 | ||
29aba418 TF |
2203 | TF/03 Added the control = fakedefer ACL modifier. |
2204 | ||
fe0dab11 TF |
2205 | TF/04 Added the ratelimit ACL condition. See NewStuff for details. Thanks to |
2206 | Mark Lowes for thorough testing. | |
870f6ba8 | 2207 | |
11d337a4 TK |
2208 | TK/02 Rewrote SPF support to work with libspf2 versions >1.2.0. |
2209 | ||
2210 | TK/03 Merged latest SRS patch from Miles Wilton. | |
2211 | ||
415c8f3b PH |
2212 | PH/05 There's a shambles in IRIX6 - it defines EX_OK in unistd.h which conflicts |
2213 | with the definition in sysexits.h (which is #included earlier). | |
2214 | Fortunately, Exim does not actually use EX_OK. The code used to try to | |
2215 | preserve the sysexits.h value, by assumimg that macro definitions were | |
2216 | scanned for macro replacements. I have been disabused of this notion, | |
2217 | so now the code just undefines EX_OK before #including unistd.h. | |
11d337a4 | 2218 | |
958541e9 PH |
2219 | PH/06 There is a timeout for writing blocks of data, set by, e.g. data_timeout |
2220 | in the smtp transport. When a block could not be written in a single | |
2221 | write() function, the timeout was being re-applied to each part-write. | |
2222 | This seems wrong - if the receiver was accepting one byte at a time it | |
2223 | would take for ever. The timeout is now adjusted when this happens. It | |
2224 | doesn't have to be particularly precise. | |
2225 | ||
c206415f TK |
2226 | TK/04 Added simple SPF lookup method in EXPERIMENTAL_SPF. See NewStuff for |
2227 | details. Thanks to Chris Webb <chris@arachsys.com> for the patch! | |
2228 | ||
2a4be8f9 PH |
2229 | PH/07 Added "fullpostmaster" verify option, which does a check to <postmaster> |
2230 | without a domain if the check to <postmaster@domain> fails. | |
2231 | ||
1cba11c5 SC |
2232 | SC/01 Eximstats: added -xls and the ability to specify output files |
2233 | (patch written by Frank Heydlauf). | |
2234 | ||
2235 | SC/02 Eximstats: use FileHandles for outputing results. | |
2236 | ||
2237 | SC/03 Eximstats: allow any combination of xls, txt, and html output. | |
2238 | ||
2239 | SC/04 Eximstats: fixed display of large numbers with -nvr option | |
2240 | ||
2241 | SC/05 Eximstats: fixed merging of reports with empty tables. | |
2242 | ||
2243 | SC/06 Eximstats: added the -include_original_destination flag | |
2244 | ||
2245 | SC/07 Eximstats: removed tabs and trailing whitespace. | |
2246 | ||
1005d00e TK |
2247 | TK/05 Malware: Improve on aveserver error handling. Patch from Alex Miller. |
2248 | ||
2249 | TK/06 MBOX spool code: Add real "From " MBOX separator line | |
2250 | so the .eml file is really in mbox format (even though | |
2251 | most programs do not really care). Patch from Alex Miller. | |
2252 | ||
2253 | TK/07 MBOX spool code: Add X-Envelope-From: and X-Envelope-To: headers. | |
2254 | The latter is generated from $received_to and is only set if the | |
2255 | message has one envelope recipient. SA can use these headers, | |
2256 | obviously out-of-the-box. Patch from Alex Miller. | |
2257 | ||
9b4768fa PH |
2258 | PH/08 The ${def test on a variable was returning false if the variable's |
2259 | value was "0", contrary to what the specification has always said! | |
2260 | The result should be true unless the variable is empty. | |
2261 | ||
2262 | PH/09 The syntax error of a character other than { following "${if | |
2263 | def:variable_name" (after optional whitespace) was not being diagnosed. | |
2264 | An expansion such as ${if def:sender_ident:{xxx}{yyy}} in which an | |
2265 | accidental colon was present, for example, could give incorrect results. | |
2266 | ||
0d7eb84a PH |
2267 | PH/10 Tidied the code in a number of places where the st_size field of a stat() |
2268 | result is used (not including appendfile, where other changes are about | |
2269 | to be made). | |
2270 | ||
2271 | PH/11 Upgraded appendfile so that quotas larger than 2G are now supported. | |
2272 | This involved changing a lot of size variables from int to off_t. It | |
2273 | should work with maildirs and everything. | |
2274 | ||
40727bee TK |
2275 | TK/08 Apply fix provided by Michael Haardt to prevent deadlock in case of |
2276 | spamd dying while we are connected to it. | |
2277 | ||
554d2369 TF |
2278 | TF/05 Fixed a ${extract error message typo reported by Jeremy Harris |
2279 | <jgh@wizmail.org> | |
2280 | ||
1f922db1 PH |
2281 | PH/12 Applied Alex Kiernan's patch for the API change for the error callback |
2282 | function for BDB 4.3. | |
2283 | ||
ef213c3b PH |
2284 | PH/13 Changed auto_thaw such that it does not apply to bounce messages. |
2285 | ||
8ac170f3 PH |
2286 | PH/14 Imported PCRE 6.0; this was more than just a trivial operation because |
2287 | the sources for PCRE have been re-arranged and more files are now | |
2288 | involved. | |
2289 | ||
b1c749bb PH |
2290 | PH/15 The code I had for printing potentially long long variables in PH/11 |
2291 | above was not the best (it lost precision). The length of off_t variables | |
2292 | is now inspected at build time, and an appropriate printing format (%ld | |
c6c2dc1d PH |
2293 | or %lld) is chosen and #defined by OFF_T_FMT. We also define LONGLONG_T |
2294 | to be "long long int" or "long int". This is needed for the internal | |
2295 | formatting function string_vformat(). | |
b1c749bb | 2296 | |
4aac9b49 PH |
2297 | PH/16 Applied Matthew Newton's patch to exicyclog: "If log_file_path is set in |
2298 | the configuration file to be ":syslog", then the script "guesses" where | |
2299 | the logs files are, rather than using the compiled in default. In our | |
2300 | case the guess is not the same as the compiled default, so the script | |
2301 | suddenly stopped working when I started to use syslog. The patch checks | |
2302 | to see if log_file_path is "". If so, it attempts to read it from exim | |
2303 | with no configuration file to get the compiled in version, before it | |
2304 | falls back to the previous guessing code." | |
2305 | ||
294520c8 TK |
2306 | TK/09 Added "prvs" and "prvscheck" expansion items. These help a lot with |
2307 | implementing BATV in an Exim configuration. See NewStuff for the gory | |
2308 | details. | |
2309 | ||
5bd022fe PH |
2310 | PH/17 Applied Michael Haardt's patch for HP-UX, affecting only the os.h and |
2311 | Makefile that are specific to HP-UX. | |
2312 | ||
90e9ce59 PH |
2313 | PH/18 If the "use_postmaster" option was set for a recipient callout together |
2314 | with the "random" option, the postmaster address was used as the MAIL | |
2315 | FROM address for the random test, but not for the subsequent recipient | |
2316 | test. It is now used for both. | |
2317 | ||
5ea81592 PH |
2318 | PH/19 Applied Michael Haardt's patch to update Sieve to RFC3028bis. "The |
2319 | patch removes a few documentation additions to RFC 3028, because the | |
2320 | latest draft now contains them. It adds the new en;ascii-case comparator | |
2321 | and a new error check for 8bit text in MIME parts. Comparator and | |
2322 | require names are now matched exactly. I enabled the subaddress | |
2323 | extension, but it is not well tested yet (read: it works for me)." | |
2324 | ||
c6c2dc1d PH |
2325 | PH/20 Added macros for time_t as for off_t (see PH/15 above) and used them to |
2326 | rework some of the code of TK/09 above to avoid the hardwired use of | |
2327 | "%lld" and "long long". Replaced the call to snprintf() with a call to | |
2328 | string_vformat(). | |
2329 | ||
fffffe4c PH |
2330 | PH/21 Added some other messages to those in 4.51/PH/42, namely "All relevant MX |
2331 | records point to non-existent hosts", "retry timeout exceeded", and | |
2332 | "retry time not reached for any host after a long failure period". | |
ca02eafb | 2333 | |
9a26b6b2 PH |
2334 | PH/22 Fixed some oversights/typos causing bugs when Exim is compiled with |
2335 | experimental DomainKeys support: | |
2336 | ||
2337 | (1) The filter variables $n0-$n9 and $sn0-$sn9 were broken. | |
2338 | (2) On an error such as an illegally used "control", the wrong name for | |
2339 | the control was given. | |
2340 | ||
2341 | These problems did NOT occur unless DomainKeys support was compiled. | |
2342 | ||
4aee0225 PH |
2343 | PH/23 Added daemon_startup_retries and daemon_startup_sleep. |
2344 | ||
32d668a5 PH |
2345 | PH/24 Added ${if match_ip condition. |
2346 | ||
8187c3f3 PH |
2347 | PH/25 Put debug statements on either side of calls to EXIM_DBOPEN() for hints |
2348 | databases so that it will be absolutely obvious if a crash occurs in the | |
2349 | DB library. This is a regular occurrence (often caused by mis-matched | |
2350 | db.h files). | |
2351 | ||
ff790e47 | 2352 | PH/26 Insert a lot of missing (void) casts for functions such as chown(), |
f1e894f3 PH |
2353 | chmod(), fcntl(), sscanf(), and other functions from stdio.h. These were |
2354 | picked up on a user's system that detects such things. There doesn't seem | |
2355 | to be a gcc warning option for this - only an attribute that has to be | |
2356 | put on the function's prototype. It seems that in Fedora Core 4 they have | |
2357 | set this on a number of new functions. No doubt there will be more in due | |
2358 | course. | |
ff790e47 | 2359 | |
5417f6d1 PH |
2360 | PH/27 If a dnslookup or manualroute router is set with verify=only, it need not |
2361 | specify a transport. However, if an address that was verified by such a | |
2362 | router was the subject of a callout, Exim crashed because it tried to | |
2363 | read the rcpt_include_affixes from the non-existent transport. Now it | |
2364 | just assumes that the setting of that option is false. This bug was | |
2365 | introduced by 4.51/PH/31. | |
2366 | ||
59cf8544 PH |
2367 | PH/28 Changed -d+all to exclude +memory, because that information is very |
2368 | rarely of interest, but it makes the output a lot bigger. People tend to | |
2369 | do -d+all out of habit. | |
2370 | ||
e7ad8a65 PH |
2371 | PH/29 Removed support for the Linux-libc5 build, as it is obsolete and the |
2372 | code in os-type was giving problems when libc.so lives in lib64, like on | |
2373 | x86_64 Fedora Core. | |
2374 | ||
ade42478 PH |
2375 | PH/30 Exim's DNS code uses the original T_xxx names for DNS record times. These |
2376 | aren't the modern standard, and it seems that some systems' include files | |
2377 | don't always have them. Exim was already checking for some of the newer | |
2378 | ones like T_AAAA, and defining it itself. I've added checks for all the | |
2379 | record types that Exim uses. | |
2380 | ||
182ad5cf PH |
2381 | PH/31 When using GnuTLS, if the parameters cache file did not exist, Exim was |
2382 | not automatically generating a new one, as it is supposed to. This | |
2383 | prevented TLS from working. If the file did exist, but contained invalid | |
2384 | data, a new version was generated, as expected. It was only the case of a | |
2385 | non-existent file that was broken. | |
2386 | ||
b0d9fc80 TK |
2387 | TK/10 Domainkeys: Fix a bug in verification that caused a crash in conjunction |
2388 | with a change in libdomainkeys > 0.64. | |
2389 | ||
2390 | TK/11 Domainkeys: Change the logic how the "testing" policy flag is retrieved | |
2391 | from DNS. If the selector record carries the flag, it now has | |
2392 | precedence over the domain-wide flag. | |
2393 | ||
2394 | TK/12 Cleared some compiler warnings related to SPF, SRS and DK code. | |
2395 | ||
47c7a64a PH |
2396 | PH/32 In mua_wrapper mode, if an smtp transport configuration error (such as |
2397 | the use of a port name that isn't defined in /etc/services) occurred, the | |
2398 | message was deferred as in a normal delivery, and thus remained on the | |
2399 | spool, instead of being failed because of the mua_wrapper setting. This | |
2400 | is now fixed, and I tidied up some of the mua_wrapper messages at the | |
2401 | same time. | |
2402 | ||
a388bce4 SC |
2403 | SC/08 Eximstats: whilst parsing the mainlog(s), store information about |
2404 | the messages in a hash of arrays rather than using individual hashes. | |
2405 | This is a bit cleaner and results in dramatic memory savings, albeit | |
2406 | at a slight CPU cost. | |
2407 | ||
2408 | SC/09 Eximstats: added the -show_rt<list> and the -show_dt<list> flags | |
2409 | as requested by Marc Sherman. | |
2410 | ||
2411 | SC/10 Eximstats: added histograms for user specified patterns as requested | |
2412 | by Marc Sherman. | |
2413 | ||
0793e4ed SC |
2414 | SC/11 Eximstats: v1.43 - bugfix for pattern histograms with -h0 specified. |
2415 | ||
c58b88df PH |
2416 | PH/33 Patch from the Cygwin maintainer to add "b" to all occurences of |
2417 | fopen() in the content-scanning modules that did not already have it. | |
2418 | ||
e7ad8a65 | 2419 | |
7982096b PH |
2420 | Exim version 4.51 |
2421 | ----------------- | |
2422 | ||
1a46a8c5 PH |
2423 | TK/01 Added Yahoo DomainKeys support via libdomainkeys. See |
2424 | doc/experimental-spec.txt for details. (http://domainkeys.sf.net) | |
2425 | ||
2f079f46 | 2426 | TK/02 Fix ACL "control" statement not being available in MIME ACL. |
1a46a8c5 PH |
2427 | |
2428 | TK/03 Fix ACL "regex" condition not being available in MIME ACL. | |
2429 | ||
2430 | PH/01 Installed a patch from the Sieve maintainer that allows -bf to be used | |
2431 | to test Sieve filters that use "vacation". | |
2432 | ||
2433 | PH/02 Installed a slightly modified version of Nikos Mavrogiannopoulos' patch | |
2434 | that changes the way the GnuTLS parameters are stored in the cache file. | |
2435 | The new format can be generated externally. For backward compatibility, | |
2436 | if the data in the cache doesn't make sense, Exim assumes it has read an | |
2437 | old-format file, and it generates new data and writes a new file. This | |
2438 | means that you can't go back to an older release without removing the | |
2439 | file. | |
2440 | ||
2441 | PH/03 A redirect router that has both "unseen" and "one_time" set does not | |
2442 | work if there are any delivery delays because "one_time" forces the | |
2443 | parent to be marked "delivered", so its unseen clone is never tried | |
2444 | again. For this reason, Exim now forbids the simultaneous setting of | |
2445 | these two options. | |
2446 | ||
2447 | PH/04 Change 4.11/85 fixed an obscure bug concerned with addresses that are | |
2448 | redirected to themselves ("homonym" addresses). Read the long ChangeLog | |
2449 | entry if you want to know the details. The fix, however, neglected to | |
2450 | consider the case when local delivery batching is involved. The test for | |
2451 | "previously delivered" was not happening when checking to see if an | |
2452 | address could be batched with a previous (undelivered) one; under | |
2453 | certain circumstances this could lead to multiple deliveries to the same | |
c2c19e9d | 2454 | address. |
1a46a8c5 PH |
2455 | |
2456 | PH/05 Renamed the macro SOCKLEN_T as EXIM_SOCKLEN_T because AIX uses SOCKLEN_T | |
2457 | in its include files, and this causes problems building Exim. | |
2458 | ||
2459 | PH/06 A number of "verify =" ACL conditions have no options (e.g. verify = | |
2460 | header_syntax) but Exim was just ignoring anything given after a slash. | |
2461 | In particular, this caused confusion with an attempt to use "verify = | |
2462 | reverse_host_lookup/defer_ok". An error is now given when options are | |
2463 | supplied for verify items that do not have them. (Maybe reverse_host_ | |
2464 | lookup should have a defer_ok option, but that's a different point.) | |
2465 | ||
2466 | PH/07 Increase the size of the buffer for incoming SMTP commands from 512 (as | |
2467 | defined by RFC 821) to 2048, because there were problems with some AUTH | |
2468 | commands, and RFC 1869 says the size should be increased for extended | |
2469 | SMTP commands that take arguments. | |
2470 | ||
2471 | PH/08 Added ${dlfunc dynamically loaded function for expansion (code from Tony | |
2472 | Finch). | |
2473 | ||
2474 | PH/09 Previously, an attempt to use ${perl when it wasn't compiled gave an | |
2475 | "unknown" error; now it says that the functionality isn't in the binary. | |
8d67ada3 | 2476 | |
49c2d5ea PH |
2477 | PH/10 Added a nasty fudge to try to recognize and flatten LDAP passwords in |
2478 | an address' error message when a string expansion fails (syntax or | |
f331f3b6 PH |
2479 | whatever). Otherwise the password may appear in the log. Following change |
2480 | PH/42 below, there is no longer a chance of it appearing in a bounce | |
2481 | message. | |
49c2d5ea | 2482 | |
bf759a8b PH |
2483 | PH/11 Installed exipick version 20050225.0 from John Jetmore. |
2484 | ||
83364d30 PH |
2485 | PH/12 If the last host in a fallback_hosts list was multihomed, only the first |
2486 | of its addresses was ever tried. (Bugzilla bug #2.) | |
2487 | ||
7999bbd7 PH |
2488 | PH/13 If "headers_add" in a transport didn't end in a newline, Exim printed |
2489 | the result incorrectly in the debug output. (It correctly added a newline | |
2490 | to what was transported.) | |
2491 | ||
7dbf77c9 PH |
2492 | TF/01 Added $received_time. |
2493 | ||
74e0617f PH |
2494 | PH/14 Modified the default configuration to add an acl_smtp_data ACL, with |
2495 | commented out examples of how to interface to a virus scanner and to | |
2496 | SpamAssassin. Also added commented examples of av_scanner and | |
2497 | spamd_address settings. | |
2498 | ||
2f079f46 PH |
2499 | PH/15 Further to TK/02 and TK/03 above, tidied up the tables of what conditions |
2500 | and controls are allowed in which ACLs. There were a couple of minor | |
2501 | errors. Some of the entries in the conditions table (which is a table of | |
2502 | where they are NOT allowed) were getting very unwieldy; rewrote them as a | |
2503 | negation of where the condition IS allowed. | |
2504 | ||
8c841523 PH |
2505 | PH/16 Installed updated OS/os.c-cygwin from the Cygwin maintainer. |
2506 | ||
7766a4f0 PH |
2507 | PH/17 The API for radiusclient changed at release 0.4.0. Unfortunately, the |
2508 | header file does not have a version number, so I've had to invent a new | |
2509 | value for RADIUS_LIB_TYPE, namely "RADIUSCLIENTNEW" to request the new | |
2510 | API. The code is untested by me (my Linux distribution still has 0.3.2 of | |
2511 | radiusclient), but it was contributed by a Radius user. | |
2512 | ||
8b417f2c PH |
2513 | PH/18 Installed Lars Mainka's patch for the support of CRL collections in |
2514 | files or directories, for OpenSSL. | |
2515 | ||
901f42cb PH |
2516 | PH/19 When an Exim process that is running as root has to create an Exim log |
2517 | file, it does so in a subprocess that runs as exim:exim so as to get the | |
2518 | ownership right at creation (otherwise, other Exim processes might see | |
2519 | the file with the wrong ownership). There was no test for failure of this | |
2520 | fork() call, which would lead to the process getting stuck as it waited | |
2521 | for a non-existent subprocess. Forks do occasionally fail when resources | |
2522 | run out. I reviewed all the other calls to fork(); they all seem to check | |
2523 | for failure. | |
2524 | ||
f9b9210e PH |
2525 | PH/20 When checking for unexpected SMTP input at connect time (before writing |
2526 | the banner), Exim was not dealing correctly with a non-positive return | |
2527 | from the read() function. If the client had disconnected by this time, | |
2528 | the result was a log entry for a synchronization error with an empty | |
2529 | string after "input=" when read() returned zero. If read() returned -1 | |
2530 | (an event I could not check), uninitialized data bytes were printed. | |
2531 | There were reports of junk text (parts of files, etc) appearing after | |
2532 | "input=". | |
2533 | ||
54cdb463 PH |
2534 | PH/21 Added acl_not_smtp_mime to allow for MIME scanning for non-SMTP messages. |
2535 | ||
cf00dad6 PH |
2536 | PH/22 Added support for macro redefinition, and (re)definition in between |
2537 | driver and ACL definitions. | |
2538 | ||
acb1b346 PH |
2539 | PH/23 The cyrus_sasl authenticator was expanding server_hostname, but then |
2540 | forgetting to use the resulting value; it was using the unexpanded value. | |
2541 | ||
c5ddb310 PH |
2542 | PH/24 The cyrus_sasl authenticator was advertising mechanisms for which it |
2543 | hadn't been configured. The fix is from Juergen Kreileder, who | |
2544 | understands it better than I do: | |
2545 | ||
2546 | "Here's what I see happening with three configured cyrus_sasl | |
2547 | authenticators configured (plain, login, cram-md5): | |
2548 | ||
2549 | On startup auth_cyrus_sasl_init() gets called for each of these. | |
2550 | This means three calls to sasl_listmech() without a specified mech_list. | |
2551 | => SASL tests which mechs of all available mechs actually work | |
2552 | => three warnings about OTP not working | |
2553 | => the returned list contains: plain, login, cram-md5, digest-md5, ... | |
2554 | ||
2555 | With the patch, sasl_listmech() also gets called three times. But now | |
2556 | SASL's mech_list option is set to the server_mech specified in the the | |
2557 | authenticator. Or in other words, the answer from sasl_listmech() | |
2558 | gets limited to just the mech you're testing for (which is different | |
2559 | for each call.) | |
2560 | => the return list contains just 'plain' or 'login', 'cram-md5' or | |
2561 | nothing depending on the value of ob->server_mech. | |
2562 | ||
2563 | I've just tested the patch: Authentication still works fine, | |
2564 | unavailable mechs specified in the exim configuration are still | |
2565 | caught, and the auth.log warnings about OTP are gone." | |
2566 | ||
31619da6 PH |
2567 | PH/25 When debugging is enabled, the contents of the command line are added |
2568 | to the debugging output, even when log_selector=+arguments is not | |
2569 | specified. | |
2570 | ||
bebaf0fc PH |
2571 | PH/26 Change scripts/os-type so that when "uname -s" returns just "GNU", the |
2572 | answer is "GNU", and only if the return is "GNU/something" is the answer | |
2573 | "Linux". | |
2574 | ||
475fe28a PH |
2575 | PH/27 $acl_verify_message is now set immediately after the failure of a |
2576 | verification in an ACL, and so is available in subsequent modifiers. In | |
2577 | particular, the message can be preserved by coding like this: | |
2578 | ||
2579 | warn !verify = sender | |
2580 | set acl_m0 = $acl_verify_message | |
2581 | ||
2582 | Previously, $acl_verify_message was set only while expanding "message" | |
2583 | and "log_message" when a very denied access. | |
2584 | ||
7e8bec7a PH |
2585 | PH/28 Modified OS/os.c-Linux with |
2586 | ||
2587 | -#ifndef OS_LOAD_AVERAGE | |
2588 | +#if !defined(OS_LOAD_AVERAGE) && defined(__linux__) | |
2589 | ||
2590 | to make Exim compile on kfreebsd-gnu. (I'm totally confused about the | |
2591 | nomenclature these days.) | |
2592 | ||
e4a89c47 PH |
2593 | PH/29 Installed patch from the Sieve maintainer that adds the options |
2594 | sieve_useraddress and sieve_subaddress to the redirect router. | |
2595 | ||
5ca2a9a1 PH |
2596 | PH/30 In these circumstances: |
2597 | . Two addresses routed to the same list of hosts; | |
2598 | . First host does not offer TLS; | |
2599 | . First host accepts first address; | |
2600 | . First host gives temporary error to second address; | |
2601 | . Second host offers TLS and a TLS session is established; | |
2602 | . Second host accepts second address. | |
2603 | Exim incorrectly logged both deliveries with the TLS parameters (cipher | |
2604 | and peerdn, if requested) that were in fact used only for the second | |
2605 | address. | |
7e8bec7a | 2606 | |
c688b954 PH |
2607 | PH/31 When doing a callout as part of verifying an address, Exim was not paying |
2608 | attention to any local part prefix or suffix that was matched by the | |
2609 | router that accepted the address. It now behaves in the same way as it | |
2610 | does for delivery: the affixes are removed from the local part unless | |
2611 | rcpt_include_affixes is set on the transport. | |
2612 | ||
fed77020 PH |
2613 | PH/32 Add the sender address, as F=<...>, to the log line when logging a |
2614 | timeout during the DATA phase of an incoming message. | |
2615 | ||
7fe1560f PH |
2616 | PH/33 Sieve envelope tests were broken for match types other than :is. I have |
2617 | applied a patch sanctioned by the Sieve maintainer. | |
c688b954 | 2618 | |
ebb6e6d5 PH |
2619 | PH/34 Change 4.50/80 broke Exim in that it could no longer handle cases where |
2620 | the uid or gid is negative. A case of a negative gid caused this to be | |
2621 | noticed. The fix allows for either to be negative. | |
2622 | ||
9c4e8f60 PH |
2623 | PH/35 ACL_WHERE_MIME is now declared unconditionally, to avoid too much code |
2624 | clutter, but the tables that are indexed by ACL_WHERE_xxx values had been | |
2625 | overlooked. | |
2626 | ||
2627 | PH/36 The change PH/12 above was broken. Fixed it. | |
2628 | ||
d7174846 PH |
2629 | PH/37 Exim used to check for duplicate addresses in the middle of routing, on |
2630 | the grounds that routing the same address twice would always produce the | |
2631 | same answer. This might have been true once, but it is certainly no | |
2632 | longer true now. Routing a child address may depend on the previous | |
2633 | routing that produced that child. Some complicated redirection strategies | |
2634 | went wrong when messages had multiple recipients, and made Exim's | |
2635 | behaviour dependent on the order in which the addresses were given. | |
2636 | ||
2637 | I have moved the duplicate checking until after the routing is complete. | |
2638 | Exim scans the addresses that are assigned to local and remote | |
2639 | transports, and removes any duplicates. This means that more work will be | |
2640 | done, as duplicates will always all be routed, but duplicates are | |
2641 | presumably rare, so I don't expect this is of any significance. | |
2642 | ||
2643 | For deliveries to pipes, files, and autoreplies, the duplicate checking | |
2644 | still happens during the routing process, since they are not going to be | |
2645 | routed further. | |
2646 | ||
cfe75fc3 PH |
2647 | PH/38 Installed a patch from Ian Freislich, with the agreement of Tom Kistner. |
2648 | It corrects a timeout issue with spamd. This is Ian's comment: "The | |
2649 | background is that sometimes spamd either never reads data from a | |
2650 | connection it has accepted, or it never writes response data. The exiscan | |
2651 | spam.[ch] uses a 3600 second timeout on spamd socket reads, further, it | |
2652 | blindly assumes that writes won't block so it may never time out." | |
2653 | ||
be22d70e PH |
2654 | PH/39 Allow G after quota size as well as K and M. |
2655 | ||
0612b098 PH |
2656 | PH/40 The value set for $authenticated_id in an authenticator may not contain |
2657 | binary zeroes or newlines because the value is written to log lines and | |
2658 | to spool files. There was no check on this. Now the value is run through | |
2659 | the string_printing() function so that such characters are converted to | |
2660 | printable escape sequences. | |
2661 | ||
2e0c1448 PH |
2662 | PH/41 $message_linecount is a new variable that contains the total number of |
2663 | lines in the message. Compare $body_linecount, which is the count for the | |
2664 | body only. | |
2665 | ||
447d236c PH |
2666 | PH/42 Exim no longer gives details of delivery errors for specific addresses in |
2667 | bounce and delay warning messages, except in certain special cases, which | |
2668 | are as follows: | |
2669 | ||
2670 | (a) An SMTP error message from a remote host; | |
2671 | (b) A message specified in a :fail: redirection; | |
2672 | (c) A message specified in a "fail" command in a system filter; | |
2673 | (d) A message specified in a FAIL return from the queryprogram router; | |
2674 | (e) A message specified by the cannot_route_message router option. | |
2675 | ||
2676 | In these cases only, Exim does include the error details in bounce and | |
2677 | warning messages. There are also a few cases where bland messages such | |
2678 | as "unrouteable address" or "local delivery error" are given. | |
2679 | ||
d20976dc PH |
2680 | PH/43 $value is now also set for the "else" part of a ${run expansion. |
2681 | ||
f656d135 PH |
2682 | PH/44 Applied patch from the Sieve maintainer: "The vacation draft is still |
2683 | being worked on, but at least Exim now implements the latest version to | |
2684 | play with." | |
2685 | ||
2e2a30b4 PH |
2686 | PH/45 In a pipe transport, although a timeout while waiting for the pipe |
2687 | process to complete was treated as a delivery failure, a timeout while | |
2688 | writing the message to the pipe was logged, but erroneously treated as a | |
2689 | successful delivery. Such timeouts include transport filter timeouts. For | |
2690 | consistency with the overall process timeout, these timeouts are now | |
2691 | treated as errors, giving rise to delivery failures by default. However, | |
2692 | there is now a new Boolean option for the pipe transport called | |
2693 | timeout_defer, which, if set TRUE, converts the failures into defers for | |
2694 | both kinds of timeout. A transport filter timeout is now identified in | |
2695 | the log output. | |
2696 | ||
9176e9f0 PH |
2697 | PH/46 The "scripts/Configure-config.h" script calls "make" at one point. On |
2698 | systems where "make" and "gmake" are different, calling "gmake" at top | |
2699 | level broke things. I've arranged for the value of $(MAKE) to be passed | |
2700 | from the Makefile to this script so that it can call the same version of | |
2701 | "make". | |
2702 | ||
7982096b | 2703 | |
bbe902f0 PH |
2704 | A note about Exim versions 4.44 and 4.50 |
2705 | ---------------------------------------- | |
2706 | ||
2707 | Exim 4.50 was meant to be the next release after 4.43. It contains a lot of | |
2708 | changes of various kinds. As a consequence, a big documentation update was | |
2709 | needed. This delayed the release for rather longer than seemed good, especially | |
2710 | in the light of a couple of (minor) security issues. Therefore, the changes | |
2711 | that fixed bugs were backported into 4.43, to create a 4.44 maintenance | |
2712 | release. So 4.44 and 4.50 are in effect two different branches that both start | |
2713 | from 4.43. | |
2714 | ||
2715 | I have left the 4.50 change log unchanged; it contains all the changes since | |
2716 | 4.43. The change log for 4.44 is below; many of its items are identical to | |
2717 | those for 4.50. This seems to be the most sensible way to preserve the | |
2718 | historical information. | |
2719 | ||
2720 | ||
f7b63901 | 2721 | Exim version 4.50 |
495ae4b0 PH |
2722 | ----------------- |
2723 | ||
5fe762f6 PH |
2724 | 1. Minor wording change to the doc/README.SIEVE file. |
2725 | ||
139059f6 | 2726 | 2. Change 4.43/35 introduced a bug: if quota_filecount was set, the |
5fe762f6 | 2727 | computation of the current number of files was incorrect. |
495ae4b0 | 2728 | |
7086e875 PH |
2729 | 3. Closing a stable door: arrange to panic-die if setitimer() ever fails. The |
2730 | bug fixed in 4.43/37 would have been diagnosed quickly if this had been in | |
2731 | place. | |
2732 | ||
35af9f61 PH |
2733 | 4. Give more explanation in the error message when the command for a transport |
2734 | filter fails to execute. | |
2735 | ||
b668c215 PH |
2736 | 5. There are several places where Exim runs a non-Exim command in a |
2737 | subprocess. The SIGUSR1 signal should be disabled for these processes. This | |
2738 | was being done only for the command run by the queryprogram router. It is | |
2739 | now done for all such subprocesses. The other cases are: ${run, transport | |
2740 | filters, and the commands run by the lmtp and pipe transports. | |
2741 | ||
a494b1e1 PH |
2742 | 6. Added CONFIGURE_GROUP build-time option. |
2743 | ||
2744 | 7. Some older OS have a limit of 256 on the maximum number of file | |
2745 | descriptors. Exim was using setrlimit() to set 1000 as a large value | |
2746 | unlikely to be exceeded. Change 4.43/17 caused a lot of logging on these | |
2747 | systems. I've change it so that if it can't get 1000, it tries for 256. | |
35edf2ff | 2748 | |
c5fcb476 PH |
2749 | 8. "control=submission" was allowed, but had no effect, in a DATA ACL. This |
2750 | was an oversight, and furthermore, ever since the addition of extra | |
2751 | controls (e.g. 4.43/32), the checks on when to allow different forms of | |
2752 | "control" were broken. There should now be diagnostics for all cases when a | |
2753 | control that does not make sense is encountered. | |
2754 | ||
69358f02 PH |
2755 | 9. Added the /retain_sender option to "control=submission". |
2756 | ||
5be20824 PH |
2757 | 10. $recipients is now available in the predata ACL (oversight). |
2758 | ||
eb2c0248 PH |
2759 | 11. Tidy the search cache before the fork to do a delivery from a message |
2760 | received from the command line. Otherwise the child will trigger a lookup | |
2761 | failure and thereby defer the delivery if it tries to use (for example) a | |
2762 | cached ldap connection that the parent has called unbind on. | |
2763 | ||
2a3eea10 PH |
2764 | 12. If verify=recipient was followed by verify=sender in a RCPT ACL, the value |
2765 | of $address_data from the recipient verification was clobbered by the | |
2766 | sender verification. | |
2767 | ||
2768 | 13. The value of address_data from a sender verification is now available in | |
2769 | $sender_address_data in subsequent conditions in the ACL statement. | |
2770 | ||
23c7ff99 PH |
2771 | 14. Added forbid_sieve_filter and forbid_exim_filter to the redirect router. |
2772 | ||
4deaf07d PH |
2773 | 15. Added a new option "connect=<time>" to callout options, to set a different |
2774 | connection timeout. | |
2775 | ||
926e1192 PH |
2776 | 16. If FIXED_NEVER_USERS was defined, but empty, Exim was assuming the uid 0 |
2777 | was its contents. (It was OK if the option was not defined at all.) | |
2778 | ||
650edc6f PH |
2779 | 17. A "Completed" log line is now written for messages that are removed from |
2780 | the spool by the -Mrm option. | |
2781 | ||
2c7db3f5 PH |
2782 | 18. New variables $sender_verify_failure and $recipient_verify_failure contain |
2783 | information about exactly what failed. | |
2784 | ||
3d235903 PH |
2785 | 19. Added -dd to debug only the daemon process. |
2786 | ||
7c7ad977 PH |
2787 | 20. Incorporated Michael Haardt's patch to ldap.c for improving the way it |
2788 | handles timeouts, both on the server side and network timeouts. Renamed the | |
2789 | CONNECT parameter as NETTIMEOUT (but kept the old name for compatibility). | |
2790 | ||
981756db PH |
2791 | 21. The rare case of EHLO->STARTTLS->HELO was setting the protocol to "smtp". |
2792 | It is now set to "smtps". | |
2793 | ||
d4eb88df PH |
2794 | 22. $host_address is now set to the target address during the checking of |
2795 | ignore_target_hosts. | |
2796 | ||
2797 | 23. When checking ignore_target_hosts for an ipliteral router, no host name was | |
2798 | being passed; this would have caused $sender_host_name to have been used if | |
2799 | matching the list had actually called for a host name (not very likely, | |
2800 | since this list is usually IP addresses). A host name is now passed as | |
2801 | "[x.x.x.x]". | |
2802 | ||
7d468ab8 PH |
2803 | 24. Changed the calls that set up the SIGCHLD handler in the daemon to use the |
2804 | code that specifies a non-restarting handler (typically sigaction() in | |
2805 | modern systems) in an attempt to fix a rare and obscure crash bug. | |
2806 | ||
2807 | 25. Narrowed the window for a race in the daemon that could cause it to ignore | |
2808 | SIGCHLD signals. This is not a major problem, because they are used only to | |
2809 | wake it up if nothing else does. | |
2810 | ||
62c0818f PH |
2811 | 26. A malformed maildirsize file could cause Exim to calculate negative values |
2812 | for the mailbox size or file count. Odd effects could occur as a result. | |
2813 | The maildirsize information is now recalculated if the size or filecount | |
2814 | end up negative. | |
2815 | ||
26034054 PH |
2816 | 27. Added HAVE_SYS_STATVFS_H to the os.h file for Linux, as it has had this |
2817 | support for a long time. Removed HAVE_SYS_VFS_H. | |
2818 | ||
af66f652 PH |
2819 | 28. Installed the latest version of exipick from John Jetmore. |
2820 | ||
90af77f4 PH |
2821 | 29. In an address list, if the pattern was not a regular expression, an empty |
2822 | subject address (from a bounce message) matched only if the pattern was an | |
2823 | empty string. Non-empty patterns were not even tested. This was the wrong | |
2824 | because it is perfectly reasonable to use an empty address as part of a | |
2825 | database query. An empty address is now tested by patterns that are | |
2826 | lookups. However, all the other forms of pattern expect the subject to | |
2827 | contain a local part and a domain, and therefore, for them, an empty | |
2828 | address still always fails if the pattern is not itself empty. | |
2829 | ||
d8ef3577 PH |
2830 | 30. Exim went into a mad DNS loop when attempting to do a callout where the |
2831 | host was specified on an smtp transport, and looking it up yielded more | |
2832 | than one IP address. | |
2833 | ||
5cb8cbc6 PH |
2834 | 31. Re-factored the code for checking spool and log partition space into a |
2835 | function that finds that data and another that does the check. The former | |
2836 | is then used to implement four new variables: $spool_space, $log_space, | |
2837 | $spool_inodes, and $log_inodes. | |
2838 | ||
14702f5b PH |
2839 | 32. The RFC2047 encoding function was originally intended for short strings |
2840 | such as real names; it was not keeping to the 75-character limit for | |
2841 | encoded words that the RFC imposes. It now respects the limit, and | |
2842 | generates multiple encoded words if necessary. To be on the safe side, I | |
2843 | have increased the buffer size for the ${rfc2047: expansion operator from | |
2844 | 1024 to 2048 bytes. | |
2845 | ||
063b1e99 PH |
2846 | 33. It is now permitted to omit both strings after an "if" condition; if the |
2847 | condition is true, the result is "true". As before, when the second string | |
2848 | is omitted, a false condition yields an empty string. This makes it less | |
2849 | cumbersome to write custom ACL and router conditions. | |
2850 | ||
652e1b65 PH |
2851 | 34. Failure to deliver a bounce message always caused it to be frozen, even if |
2852 | there was an errors_to setting on the router. The errors_to setting is now | |
2853 | respected. | |
2854 | ||
6f0c9a4f PH |
2855 | 35. If an IPv6 address is given for -bh or -bhc, it is now converted to the |
2856 | canonical form (fully expanded) before being placed in | |
2857 | $sender_host_address. | |
2858 | ||
33397d19 PH |
2859 | 36. The table in the code that translates DNS record types into text (T_A to |
2860 | "A" for instance) was missing entries for NS and CNAME. It is just possible | |
2861 | that this could have caused confusion if both these types were looked up | |
2862 | for the same domain, because the text type is used as part of Exim's | |
2863 | per-process caching. But the chance of anyone hitting this buglet seems | |
2864 | very small. | |
2865 | ||
7bb56e1f PH |
2866 | 37. The dnsdb lookup has been extended in a number of ways. |
2867 | ||
2868 | (1) There is a new type, "zns", which walks up the domain tree until it | |
2869 | finds some nameserver records. It should be used with care. | |
2870 | ||
ea3bc19b PH |
2871 | (2) There is a new type, "mxh", which is like "mx" except that it returns |
2872 | just the host names, not the priorities. | |
2873 | ||
2874 | (3) It is now possible to give a list of domains (or IP addresses) to be | |
ff4dbb19 PH |
2875 | looked up. The behaviour when one of the lookups defers can be |
2876 | controlled by a keyword. | |
7bb56e1f | 2877 | |
ea3bc19b | 2878 | (4) It is now possible to specify the separator character for use when |
7bb56e1f | 2879 | multiple records are returned. |
33397d19 | 2880 | |
0bcb2a0e PH |
2881 | 38. The dnslists ACL condition has been extended: it is now possible to supply |
2882 | a list of IP addresses and/or domains to be looked up in a particular DNS | |
2883 | domain. | |
2884 | ||
2ac0e484 PH |
2885 | 39. Added log_selector=+queue_time_overall. |
2886 | ||
4e1fde53 PH |
2887 | 40. When running the queue in the test harness, wait just a tad after forking a |
2888 | delivery process, to get repeatability of debugging output. | |
2889 | ||
de365ded PH |
2890 | 41. Include certificate and key file names in error message when GnuTLS fails |
2891 | to set them up, because the GnuTLS error message doesn't include the name | |
2892 | of the failing file when there is a problem reading it. | |
2893 | ||
f05da2e8 PH |
2894 | 42. Allow both -bf and -bF in the same test run. |
2895 | ||
d6453af2 PH |
2896 | 43. Did the same fix as 41 above for OpenSSL, which had the same infelicity. |
2897 | ||
f7b63901 PH |
2898 | 44. The "Exiscan patch" is now merged into the mainline Exim source. |
2899 | ||
2900 | 45. Sometimes the final signoff response after QUIT could fail to get | |
2901 | transmitted in the non-TLS case. Testing !tls_active instead of tls_active | |
2902 | < 0 before doing a fflush(). This bug looks as though it goes back to the | |
2903 | introduction of TLS in release 3.20, but "sometimes" must have been rare | |
2904 | because the tests only now provoked it. | |
2905 | ||
a444213a PH |
2906 | 46. Reset the locale to "C" after calling embedded Perl, in case it was changed |
2907 | (this can affect the format of dates). | |
2908 | ||
0ec020ea PH |
2909 | 47. exim_tidydb, when checking for the continued existence of a message for |
2910 | which it has found a message-specific retry record, was not finding | |
2911 | messages that were in split spool directories. Consequently, it was | |
2912 | deleting retry records that should have stayed in existence. | |
2913 | ||
b1206957 PH |
2914 | 48. Steve fixed some bugs in eximstats. |
2915 | ||
2916 | 49. The SPA authentication driver was not abandoning authentication and moving | |
2917 | on to the next authenticator when an expansion was forced to fail, | |
2918 | contradicting the general specification for all authenticators. Instead it | |
2919 | was generating a temporary error. It now behaves as specified. | |
2920 | ||
26dd5a95 PH |
2921 | 50. The default ordering of permitted cipher suites for GnuTLS was pessimal |
2922 | (the order specifies the preference for clients). The order is now AES256, | |
2923 | AES128, 3DES, ARCFOUR128. | |
2924 | ||
343b2385 PH |
2925 | 51. Small patch to Sieve code - explicitly set From: when generating an |
2926 | autoreply. | |
2927 | ||
1c5466b9 PH |
2928 | 52. Exim crashed if a remote delivery caused a very long error message to be |
2929 | recorded - for instance if somebody sent an entire SpamAssassin report back | |
2930 | as a large number of 550 error lines. This bug was coincidentally fixed by | |
2931 | increasing the size of one of Exim's internal buffers (big_buffer) that | |
2932 | happened as part of the Exiscan merge. However, to be on the safe side, I | |
2933 | have made the code more robust (and fixed the comments that describe what | |
2934 | is going on). | |
2935 | ||
55ee9ee3 PH |
2936 | 53. Now that there can be additional text after "Completed" in log lines (if |
2937 | the queue_time_overall log selector is set), a one-byte patch to exigrep | |
2938 | was needed to allow it to recognize "Completed" as not the last thing in | |
2939 | the line. | |
2940 | ||
d38f8232 PH |
2941 | 54. The LDAP lookup was not handling a return of LDAP_RES_SEARCH_REFERENCE. A |
2942 | patch that reportedly fixes this has been added. I am not expert enough to | |
2943 | create a test for it. This is what the patch creator wrote: | |
2944 | ||
2945 | "I found a little strange behaviour of ldap code when working with | |
2946 | Windows 2003 AD Domain, where users was placed in more than one | |
2947 | Organization Units. When I tried to give exim partial DN, the exit code | |
2948 | of ldap_search was unknown to exim because of LDAP_RES_SEARCH_REFERENCE. | |
2949 | But simultaneously result of request was absolutely normal ldap result, | |
2950 | so I produce this patch..." | |
2951 | ||
3295e65b PH |
2952 | Later: it seems that not all versions of LDAP support LDAP_RES_SEARCH_ |
2953 | REFERENCE, so I have modified the code to exclude the patch when that macro | |
2954 | is not defined. | |
2955 | ||
7102e136 PH |
2956 | 55. Some experimental protocols are using DNS PTR records for new purposes. The |
2957 | keys for these records are domain names, not reversed IP addresses. The | |
b975ba52 PH |
2958 | dnsdb PTR lookup now tests whether its key is an IP address. If not, it |
2959 | leaves it alone. Component reversal etc. now happens only for IP addresses. | |
ea3a6f44 | 2960 | CAN-2005-0021 |
7102e136 | 2961 | |
3ca0ba97 PH |
2962 | 56. Improve error message when ldap_search() fails in OpenLDAP or Solaris LDAP. |
2963 | ||
c2bcbe20 PH |
2964 | 57. Double the size of the debug message buffer (to 2048) so that more of very |
2965 | long debug lines gets shown. | |
2966 | ||
18ce445d PH |
2967 | 58. The exicyclog utility now does better if the number of log files to keep |
2968 | exceeds 99. In this case, it numbers them 001, 002 ... instead of 01, 02... | |
2969 | ||
1f5b4c3d PH |
2970 | 59. Two changes related to the smtp_active_hostname option: |
2971 | ||
2972 | (1) $smtp_active_hostname is now available as a variable. | |
2973 | (2) The default for smtp_banner uses $smtp_active_hostname instead | |
2974 | of $primary_hostname. | |
2975 | ||
b975ba52 PH |
2976 | 60. The host_aton() function is supposed to be passed a string that is known |
2977 | to be a valid IP address. However, in the case of IPv6 addresses, it was | |
2978 | not checking this. This is a hostage to fortune. Exim now panics and dies | |
2979 | if the condition is not met. A case was found where this could be provoked | |
85b87bc2 PH |
2980 | from a dnsdb PTR lookup with an IPv6 address that had more than 8 |
2981 | components; fortuitously, this particular loophole had already been fixed | |
2982 | by change 4.50/55 above. | |
2983 | ||
2984 | If there are any other similar loopholes, the new check in host_aton() | |
2985 | itself should stop them being exploited. The report I received stated that | |
2986 | data on the command line could provoke the exploit when Exim was running as | |
2987 | exim, but did not say which command line option was involved. All I could | |
2988 | find was the use of -be with a bad dnsdb PTR lookup, and in that case it is | |
2989 | running as the user. | |
ea3a6f44 | 2990 | CAN-2005-0021 |
85b87bc2 PH |
2991 | |
2992 | 61. There was a buffer overflow vulnerability in the SPA authentication code | |
2993 | (which came originally from the Samba project). I have added a test to the | |
2994 | spa_base64_to_bits() function which I hope fixes it. | |
ea3a6f44 | 2995 | CAN-2005-0022 |
b975ba52 | 2996 | |
17ffcae7 PH |
2997 | 62. Configuration update for GNU/Hurd and variations. Updated Makefile-GNU and |
2998 | os.h-GNU, and added configuration files for GNUkFreeBSD and GNUkNetBSD. | |
2999 | ||
d95f9fdb PH |
3000 | 63. The daemon start-up calls getloadavg() while still root for those OS that |
3001 | need the first call to be done as root, but it missed one case: when | |
3002 | deliver_queue_load_max is set with deliver_drop_privilege. This is | |
3003 | necessary for the benefit of the queue runner, because there is no re-exec | |
3004 | when deliver_drop_privilege is set. | |
3005 | ||
86b8287f PH |
3006 | 64. A call to exiwhat cut short delays set up by "delay" modifiers in ACLs. |
3007 | This has been fixed. | |
3008 | ||
60dc5e56 PH |
3009 | 65. Caching of lookup data for "hosts =" ACL conditions, when a named host list |
3010 | was in use, was not putting the data itself into the right store pool; | |
3011 | consequently, it could be overwritten for a subsequent message in the same | |
3012 | SMTP connection. (Fix 4.40/11 dealt with the non-cache case, but overlooked | |
3013 | the caching.) | |
3014 | ||
533244af PH |
3015 | 66. Added hosts_max_try_hardlimit to the smtp transport, default 50. |
3016 | ||
a5a28604 PH |
3017 | 67. The string_is_ip_address() function returns 0, 4, or 6, for "no an IP |
3018 | address", "IPv4 address", and "IPv6 address", respectively. Some calls of | |
3019 | the function were treating the return as a boolean value, which happened to | |
3020 | work because 0=false and not-0=true, but is not correct code. | |
3021 | ||
7e634d24 PH |
3022 | 68. The host_aton() function was not handling scoped IPv6 addresses (those |
3023 | with, for example, "%eth0" on the end) correctly. | |
3024 | ||
3e11c26b PH |
3025 | 69. Fixed some compiler warnings in acl.c for the bitmaps specified with |
3026 | negated items (that is, ~something) in unsigned ints. Some compilers | |
3027 | apparently mutter when there is no cast. | |
3028 | ||
6729cf78 PH |
3029 | 70. If an address verification called from an ACL failed, and did not produce a |
3030 | user-specific message (i.e. there was only a "system" message), nothing was | |
3031 | put in $acl_verify_message. In this situation, it now puts the system | |
3032 | message there. | |
3033 | ||
00f00ca5 PH |
3034 | 71. Change 4.23/11 added synchronization checking at the start of an SMTP |
3035 | session; change 4.31/43 added the unwanted input to the log line - except | |
3036 | that it did not do this in the start of session case. It now does. | |
3037 | ||
c9bdd01c PH |
3038 | 72. After a timeout in a callout SMTP session, Exim still sent a QUIT command. |
3039 | This is wrong and can cause the other end to generate a synchronization | |
3040 | error if it is another Exim or anything else that does the synchronization | |
3041 | check. A QUIT command is no longer sent after a timeout. | |
3042 | ||
d43194df PH |
3043 | 73. $host_lookup_deferred has been added, to make it easier to detect DEFERs |
3044 | during host lookups. | |
3045 | ||
fe5b5d0b PH |
3046 | 74. The defer_ok option of callout verification was not working if it was used |
3047 | when verifying addresses in header lines, that is, for this case: | |
3048 | ||
3049 | verify = header_sender/callout=defer_ok | |
3050 | ||
76a2d7ba PH |
3051 | 75. A backgrounded daemon closed stdin/stdout/stderr on entry; this meant that |
3052 | those file descriptors could be used for SMTP connections. If anything | |
3053 | wrote to stderr (the example that came up was "warn" in embedded Perl), it | |
3054 | could be sent to the SMTP client, causing chaos. The daemon now opens | |
3055 | stdin, stdout, and stderr to /dev/null when it puts itself into the | |
3056 | background. | |
3057 | ||
3058 | 76. Arrange for output from Perl's "warn" command to be written to Exim's main | |
3059 | log by default. The user can override this with suitable Perl magic. | |
3060 | ||
04f7d5b9 PH |
3061 | 77. The use of log_message on a "discard" ACL verb, which is supposed to add to |
3062 | the log message when discard triggers, was not working for the DATA ACL or | |
3063 | for the non-SMTP ACL. | |
3064 | ||
bc60667e PH |
3065 | 78. Error message wording change in sieve.c. |
3066 | ||
bb6e88ff PH |
3067 | 79. If smtp_accept_max_per_host was set, the number of connections could be |
3068 | restricted to fewer than expected, because the daemon was trying to set up | |
3069 | a new connection before checking whether the processes handling previous | |
3070 | connections had finished. The check for completed processes is now done | |
3071 | earlier. On busy systems, this bug wouldn't be noticed because something | |
3072 | else would have woken the daemon, and it would have reaped the completed | |
3073 | process earlier. | |
3074 | ||
1e70f85b PH |
3075 | 80. If a message was submitted locally by a user whose login name contained one |
3076 | or more spaces (ugh!), the spool file that Exim wrote was not re-readable. | |
3077 | It caused a spool format error. I have fixed the spool reading code. A | |
3078 | related problem was that the "from" clause in the Received: line became | |
3079 | illegal because of the space(s). It is now covered by ${quote_local_part. | |
3080 | ||
3081 | 81. Included the latest eximstats from Steve (adds average sizes to HTML Top | |
3082 | tables). | |
3083 | ||
4e01f9d6 PH |
3084 | 82. Updated OS/Makefile-AIX as per message from Mike Meredith. |
3085 | ||
1ee1cef2 PH |
3086 | 83. Patch from Sieve maintainer to fix unterminated string problem in |
3087 | "vacation" handling. | |
3088 | ||
6e2b4ccc PH |
3089 | 84. Some minor changes to the Linux configuration files to help with other |
3090 | OS variants using glibc. | |
3091 | ||
8e669ac1 PH |
3092 | 85. One more patch for Sieve to update vacation handling to latest spec. |
3093 | ||
495ae4b0 | 3094 | |
bbe902f0 PH |
3095 | ---------------------------------------------------- |
3096 | See the note above about the 4.44 and 4.50 releases. | |
3097 | ---------------------------------------------------- | |
3098 | ||
3099 | ||
3100 | Exim version 4.44 | |
3101 | ----------------- | |
3102 | ||
3103 | 1. Change 4.43/35 introduced a bug that caused file counts to be | |
3104 | incorrectly computed when quota_filecount was set in an appendfile | |
3105 | transport | |
3106 | ||
3107 | 2. Closing a stable door: arrange to panic-die if setitimer() ever fails. The | |
3108 | bug fixed in 4.43/37 would have been diagnosed quickly if this had been in | |
3109 | place. | |
3110 | ||
3111 | 3. Give more explanation in the error message when the command for a transport | |
3112 | filter fails to execute. | |
3113 | ||
3114 | 4. There are several places where Exim runs a non-Exim command in a | |
3115 | subprocess. The SIGUSR1 signal should be disabled for these processes. This | |
3116 | was being done only for the command run by the queryprogram router. It is | |
3117 | now done for all such subprocesses. The other cases are: ${run, transport | |
3118 | filters, and the commands run by the lmtp and pipe transports. | |
3119 | ||
3120 | 5. Some older OS have a limit of 256 on the maximum number of file | |
3121 | descriptors. Exim was using setrlimit() to set 1000 as a large value | |
3122 | unlikely to be exceeded. Change 4.43/17 caused a lot of logging on these | |
3123 | systems. I've change it so that if it can't get 1000, it tries for 256. | |
3124 | ||
3125 | 6. "control=submission" was allowed, but had no effect, in a DATA ACL. This | |
3126 | was an oversight, and furthermore, ever since the addition of extra | |
3127 | controls (e.g. 4.43/32), the checks on when to allow different forms of | |
3128 | "control" were broken. There should now be diagnostics for all cases when a | |
3129 | control that does not make sense is encountered. | |
3130 | ||
3131 | 7. $recipients is now available in the predata ACL (oversight). | |
3132 | ||
3133 | 8. Tidy the search cache before the fork to do a delivery from a message | |
3134 | received from the command line. Otherwise the child will trigger a lookup | |
3135 | failure and thereby defer the delivery if it tries to use (for example) a | |
3136 | cached ldap connection that the parent has called unbind on. | |
3137 | ||
3138 | 9. If verify=recipient was followed by verify=sender in a RCPT ACL, the value | |
3139 | of $address_data from the recipient verification was clobbered by the | |
3140 | sender verification. | |
3141 | ||
3142 | 10. If FIXED_NEVER_USERS was defined, but empty, Exim was assuming the uid 0 | |
3143 | was its contents. (It was OK if the option was not defined at all.) | |
3144 | ||
3145 | 11. A "Completed" log line is now written for messages that are removed from | |
3146 | the spool by the -Mrm option. | |
3147 | ||
3148 | 12. $host_address is now set to the target address during the checking of | |
3149 | ignore_target_hosts. | |
3150 | ||
3151 | 13. When checking ignore_target_hosts for an ipliteral router, no host name was | |
3152 | being passed; this would have caused $sender_host_name to have been used if | |
3153 | matching the list had actually called for a host name (not very likely, | |
3154 | since this list is usually IP addresses). A host name is now passed as | |
3155 | "[x.x.x.x]". | |
3156 | ||
3157 | 14. Changed the calls that set up the SIGCHLD handler in the daemon to use the | |
3158 | code that specifies a non-restarting handler (typically sigaction() in | |
3159 | modern systems) in an attempt to fix a rare and obscure crash bug. | |
3160 | ||
3161 | 15. Narrowed the window for a race in the daemon that could cause it to ignore | |
3162 | SIGCHLD signals. This is not a major problem, because they are used only to | |
3163 | wake it up if nothing else does. | |
3164 | ||
3165 | 16. A malformed maildirsize file could cause Exim to calculate negative values | |
3166 | for the mailbox size or file count. Odd effects could occur as a result. | |
3167 | The maildirsize information is now recalculated if the size or filecount | |
3168 | end up negative. | |
3169 | ||
3170 | 17. Added HAVE_SYS_STATVFS_H to the os.h file for Linux, as it has had this | |
3171 | support for a long time. Removed HAVE_SYS_VFS_H. | |
3172 | ||
ea3a6f44 | 3173 | 18. Updated exipick to current release from John Jetmore. |
bbe902f0 PH |
3174 | |
3175 | 19. Allow an empty sender to be matched against a lookup in an address list. | |
3176 | Previously the only cases considered were a regular expression, or an | |
3177 | empty pattern. | |
3178 | ||
3179 | 20. Exim went into a mad DNS lookup loop when doing a callout where the | |
3180 | host was specified on the transport, if the DNS lookup yielded more than | |
3181 | one IP address. | |
3182 | ||
ea3a6f44 NM |
3183 | 21. The RFC2047 encoding function was originally intended for short strings |
3184 | such as real names; it was not keeping to the 75-character limit for | |
3185 | encoded words that the RFC imposes. It now respects the limit, and | |
3186 | generates multiple encoded words if necessary. To be on the safe side, I | |
3187 | have increased the buffer size for the ${rfc2047: expansion operator from | |
3188 | 1024 to 2048 bytes. | |
bbe902f0 | 3189 | |
ea3a6f44 NM |
3190 | 22. Failure to deliver a bounce message always caused it to be frozen, even if |
3191 | there was an errors_to setting on the router. The errors_to setting is now | |
3192 | respected. | |
bbe902f0 PH |
3193 | |
3194 | 23. If an IPv6 address is given for -bh or -bhc, it is now converted to the | |
3195 | canonical form (fully expanded) before being placed in | |
3196 | $sender_host_address. | |
3197 | ||
3198 | 24. Updated eximstats to version 1.33 | |
3199 | ||
ea3a6f44 NM |
3200 | 25. Include certificate and key file names in error message when GnuTLS fails |
3201 | to set them up, because the GnuTLS error message doesn't include the name | |
3202 | of the failing file when there is a problem reading it. | |
bbe902f0 PH |
3203 | |
3204 | 26. Expand error message when OpenSSL has problems setting up cert/key files. | |
ea3a6f44 | 3205 | As per change 25. |
bbe902f0 | 3206 | |
ea3a6f44 NM |
3207 | 27. Reset the locale to "C" after calling embedded Perl, in case it was changed |
3208 | (this can affect the format of dates). | |
bbe902f0 | 3209 | |
ea3a6f44 NM |
3210 | 28. exim_tidydb, when checking for the continued existence of a message for |
3211 | which it has found a message-specific retry record, was not finding | |
3212 | messages that were in split spool directories. Consequently, it was | |
3213 | deleting retry records that should have stayed in existence. | |
bbe902f0 PH |
3214 | |
3215 | 29. eximstats updated to version 1.35 | |
3216 | 1.34 - allow eximstats to parse syslog lines as well as mainlog lines | |
3217 | 1.35 - bugfix such that pie charts by volume are generated correctly | |
3218 | ||
ea3a6f44 NM |
3219 | 30. The SPA authentication driver was not abandoning authentication and moving |
3220 | on to the next authenticator when an expansion was forced to fail, | |
3221 | contradicting the general specification for all authenticators. Instead it | |
3222 | was generating a temporary error. It now behaves as specified. | |
bbe902f0 | 3223 | |
ea3a6f44 NM |
3224 | 31. The default ordering of permitted cipher suites for GnuTLS was pessimal |
3225 | (the order specifies the preference for clients). The order is now AES256, | |
3226 | AES128, 3DES, ARCFOUR128. | |
bbe902f0 | 3227 | |
ea3a6f44 NM |
3228 | 31. Small patch to Sieve code - explicitly set From: when generating an |
3229 | autoreply. | |
bbe902f0 | 3230 | |
ea3a6f44 NM |
3231 | 32. Exim crashed if a remote delivery caused a very long error message to be |
3232 | recorded - for instance if somebody sent an entire SpamAssassin report back | |
3233 | as a large number of 550 error lines. This bug was coincidentally fixed by | |
3234 | increasing the size of one of Exim's internal buffers (big_buffer) that | |
3235 | happened as part of the Exiscan merge. However, to be on the safe side, I | |
3236 | have made the code more robust (and fixed the comments that describe what | |
3237 | is going on). | |
bbe902f0 | 3238 | |
ea3a6f44 NM |
3239 | 33. Some experimental protocols are using DNS PTR records for new purposes. The |
3240 | keys for these records are domain names, not reversed IP addresses. The | |
3241 | dnsdb PTR lookup now tests whether its key is an IP address. If not, it | |
3242 | leaves it alone. Component reversal etc. now happens only for IP addresses. | |
bbe902f0 PH |
3243 | CAN-2005-0021 |
3244 | ||
ea3a6f44 NM |
3245 | 34. The host_aton() function is supposed to be passed a string that is known |
3246 | to be a valid IP address. However, in the case of IPv6 addresses, it was | |
3247 | not checking this. This is a hostage to fortune. Exim now panics and dies | |
3248 | if the condition is not met. A case was found where this could be provoked | |
3249 | from a dnsdb PTR lookup with an IPv6 address that had more than 8 | |
3250 | components; fortuitously, this particular loophole had already been fixed | |
3251 | by change 4.50/55 or 4.44/33 above. | |
3252 | ||
3253 | If there are any other similar loopholes, the new check in host_aton() | |
3254 | itself should stop them being exploited. The report I received stated that | |
3255 | data on the command line could provoke the exploit when Exim was running as | |
3256 | exim, but did not say which command line option was involved. All I could | |
3257 | find was the use of -be with a bad dnsdb PTR lookup, and in that case it is | |
3258 | running as the user. | |
bbe902f0 PH |
3259 | CAN-2005-0021 |
3260 | ||
ea3a6f44 NM |
3261 | 35. There was a buffer overflow vulnerability in the SPA authentication code |
3262 | (which came originally from the Samba project). I have added a test to the | |
3263 | spa_base64_to_bits() function which I hope fixes it. | |
bbe902f0 PH |
3264 | CAN-2005-0022 |
3265 | ||
ea3a6f44 NM |
3266 | 36. The daemon start-up calls getloadavg() while still root for those OS that |
3267 | need the first call to be done as root, but it missed one case: when | |
3268 | deliver_queue_load_max is set with deliver_drop_privilege. This is | |
3269 | necessary for the benefit of the queue runner, because there is no re-exec | |
3270 | when deliver_drop_privilege is set. | |
bbe902f0 | 3271 | |
ea3a6f44 NM |
3272 | 37. Caching of lookup data for "hosts =" ACL conditions, when a named host list |
3273 | was in use, was not putting the data itself into the right store pool; | |
3274 | consequently, it could be overwritten for a subsequent message in the same | |
3275 | SMTP connection. (Fix 4.40/11 dealt with the non-cache case, but overlooked | |
3276 | the caching.) | |
bbe902f0 | 3277 | |
ea3a6f44 NM |
3278 | 38. Sometimes the final signoff response after QUIT could fail to get |
3279 | transmitted in the non-TLS case. Testing !tls_active instead of tls_active | |
3280 | < 0 before doing a fflush(). This bug looks as though it goes back to the | |
3281 | introduction of TLS in release 3.20, but "sometimes" must have been rare | |
3282 | because the tests only now provoked it. | |
bbe902f0 PH |
3283 | |
3284 | ||
495ae4b0 PH |
3285 | Exim version 4.43 |
3286 | ----------------- | |
3287 | ||
3288 | 1. Fixed a longstanding but relatively impotent bug: a long time ago, before | |
3289 | PIPELINING, the function smtp_write_command() used to return TRUE or FALSE. | |
3290 | Now it returns an integer. A number of calls were still expecting a T/F | |
3291 | return. Fortuitously, in all cases, the tests worked in OK situations, | |
3292 | which is the norm. However, things would have gone wrong on any write | |
3293 | failures on the smtp file descriptor. This function is used when sending | |
3294 | messages over SMTP and also when doing verify callouts. | |
3295 | ||
3296 | 2. When Exim is called to do synchronous delivery of a locally submitted | |
3297 | message (the -odf or -odi options), it no longer closes stderr before doing | |
3298 | the delivery. | |
3299 | ||
3300 | 3. Implemented the mua_wrapper option. | |
3301 | ||
3302 | 4. Implemented mx_fail_domains and srv_fail_domains for the dnslookup router. | |
3303 | ||
3304 | 5. Implemented the functions header_remove(), header_testname(), | |
3305 | header_add_at_position(), and receive_remove_recipient(), and exported them | |
3306 | to local_scan(). | |
3307 | ||
3308 | 6. If an ACL "warn" statement specified the addition of headers, Exim already | |
3309 | inserted X-ACL-Warn: at the start if there was no header name. However, it | |
3310 | was not making this test for the second and subsequent header lines if | |
3311 | there were newlines in the string. This meant that an invalid header could | |
3312 | be inserted if Exim was badly configured. | |
3313 | ||
3314 | 7. Allow an ACL "warn" statement to add header lines at the start or after all | |
3315 | the Received: headers, as well as at the end. | |
3316 | ||
3317 | 8. Added the rcpt_4xx retry error code. | |
3318 | ||
3319 | 9. Added postmaster_mailfrom=xxx to callout verification option. | |
3320 | ||
3321 | 10. Added mailfrom=xxxx to the callout verification option, for verify= | |
3322 | header_sender only. | |
3323 | ||
3324 | 11. ${substr_1_:xxxx} and ${substr__3:xxxx} are now diagnosed as syntax errors | |
3325 | (they previously behaved as ${substr_1_0:xxxx} and ${substr:_0_3:xxxx}). | |
3326 | ||
3327 | 12. Inserted some casts to stop certain compilers warning when using pointer | |
3328 | differences as field lengths or precisions in printf-type calls (mostly | |
3329 | affecting debugging statements). | |
3330 | ||
3331 | 13. Added optional readline() support for -be (dynamically loaded). | |
3332 | ||
3333 | 14. Obscure bug fix: if a message error (e.g. 4xx to MAIL) happened within the | |
3334 | same clock tick as a message's arrival, so that its received time was the | |
3335 | same as the "first fail" time on the retry record, and that message | |
3336 | remained on the queue past the ultimate address timeout, every queue runner | |
3337 | would try a delivery (because it was past the ultimate address timeout) but | |
3338 | after another failure, the ultimate address timeout, which should have then | |
3339 | bounced the address, did not kick in. This was a "< instead of <=" error; | |
3340 | in most cases the first failure would have been in the next clock tick | |
3341 | after the received time, and all would be well. | |
3342 | ||
3343 | 15. The special items beginning with @ in domain lists (e.g. @mx_any) were not | |
3344 | being recognized when the domain list was tested by the match_domain | |
3345 | condition in an expansion string. | |
3346 | ||
3347 | 16. Added the ${str2b64: operator. | |
3348 | ||
3349 | 17. Exim was always calling setrlimit() to set a large limit for the number of | |
3350 | processes, without checking whether the existing limit was already | |
3351 | adequate. (It did check for the limit on file descriptors.) Furthermore, | |
3352 | errors from getrlimit() and setrlimit() were being ignored. Now they are | |
3353 | logged to the main and panic logs, but Exim does carry on, to try to do its | |
3354 | job under whatever limits there are. | |
3355 | ||
3356 | 18. Imported PCRE 5.0. | |
3357 | ||
3358 | 19. Trivial typo in log message " temporarily refused connection" (the leading | |
3359 | space). | |
3360 | ||
3361 | 20. If the log selector return_path_on_delivery was set and an address was | |
3362 | redirected to /dev/null, the delivery process crashed because it assumed | |
3363 | that a return path would always be set for a "successful" delivery. In this | |
3364 | case, the whole delivery is bypassed as an optimization, and therefore no | |
3365 | return path is set. | |
3366 | ||
3367 | 21. Internal re-arrangement: the function for sending a challenge and reading | |
3368 | a response while authentication was assuming a zero-terminated challenge | |
3369 | string. It's now changed to take a pointer and a length, to allow for | |
3370 | binary data in such strings. | |
3371 | ||
3372 | 22. Added the cyrus_sasl authenticator (code supplied by MBM). | |
3373 | ||
3374 | 23. Exim was not respecting finduser_retries when seeking the login of the | |
3375 | uid under which it was called; it was always trying 10 times. (The default | |
3376 | setting of finduser_retries is zero.) Also, it was sleeping after the final | |
3377 | failure, which is pointless. | |
3378 | ||
3379 | 24. Implemented tls_on_connect_ports. | |
3380 | ||
3381 | 25. Implemented acl_smtp_predata. | |
3382 | ||
3383 | 26. If the domain in control=submission is set empty, Exim assumes that the | |
3384 | authenticated id is a complete email address when it generates From: or | |
3385 | Sender: header lines. | |
3386 | ||
3387 | 27. Added "#define SOCKLEN_T int" to OS/os.h-SCO and OS/os.h-SCO_SV. Also added | |
3388 | definitions to OS/Makefile-SCO and OS/Makefile-SCO_SV that put basename, | |
3389 | chown and chgrp in /bin and hostname in /usr/bin. | |
3390 | ||
3391 | 28. Exim was keeping the "process log" file open after each use, just as it | |
3392 | does for the main log. This opens the possibility of it remaining open for | |
3393 | long periods when the USR1 signal hits a daemon. Occasional processlog | |
3394 | errors were reported, that could have been caused by this. Anyway, it seems | |
3395 | much more sensible not to leave this file open at all, so that is what now | |
3396 | happens. | |
3397 | ||
3398 | 29. The long-running daemon process does not normally write to the log once it | |
3399 | has entered its main loop, and it closes the log before doing so. This is | |
3400 | so that log files can straightforwardly be renamed and moved. However, | |
3401 | there are a couple of unusual error situations where the daemon does write | |
3402 | log entries, and I had neglected to close the log afterwards. | |
3403 | ||
3404 | 30. The text of an SMTP error response that was received during a remote | |
3405 | delivery was being truncated at 512 bytes. This is too short for some of | |
3406 | the long messages that one sometimes sees. I've increased the limit to | |
3407 | 1024. | |
3408 | ||
3409 | 31. It is now possible to make retry rules that apply only when a message has a | |
3410 | specific sender, in particular, an empty sender. | |
3411 | ||
3412 | 32. Added "control = enforce_sync" and "control = no_enforce_sync". This makes | |
3413 | it possible to be selective about when SMTP synchronization is enforced. | |
3414 | ||
3415 | 33. Added "control = caseful_local_part" and "control = "caselower_local_part". | |
3416 | ||
3417 | 32. Implemented hosts_connection_nolog. | |
3418 | ||
3419 | 33. Added an ACL for QUIT. | |
3420 | ||
3421 | 34. Setting "delay_warning=" to disable warnings was not working; it gave a | |
3422 | syntax error. | |
3423 | ||
3424 | 35. Added mailbox_size and mailbox_filecount to appendfile. | |
3425 | ||