Fix typo reported by Matt Sealey <matt@genesi-usa.com>
[users/jgh/exim.git] / doc / doc-misc / WishList
1 $Cambridge: exim/doc/doc-misc/WishList,v 1.69 2006/06/30 08:53:49 ph10 Exp $
2
3 EXIM 4 WISH LIST
4 ----------------
5
6 Even when it was first released, Exim 4 had a Wish List because not all the
7 things suggested for it were implemented. The list has not stopped growing...
8
9 Another reason it is so long is that I have retained some items from the Exim 3
10 Wish List that never got implemented, but which seem reasonable possibilities
11 for later addition to Exim 4.
12
13 I have guessed at the amount of work involved, and categorized the items as
14 Tiny, Small, Medium, Large, or Unknown. The guesses are not based on any
15 detailed investigation, so must be taken as very rough.
16
17
18 ------------------------------------------------------------------------------
19 ------------------------------------------------------------------------------
20 -----                Retained from the Exim 3 Wish List                 ------
21 ------------------------------------------------------------------------------
22 ------------------------------------------------------------------------------
23
24 (10) 13-Jul-98  M  more flexibility for pipe returns
25 Ben Smithurst
26
27 The ability to specify more precisely what happens concerning the return code
28 from the pipe and the presence/absence of STDOUT/STDERR is requested. The
29 particular configuration that was requested was:
30
31 > if the command exited EX_OK, *and* produced nothing on STDOUT or
32 > STDERR, it succeeded...
33 > if the command exited EX_TEMPFAIL, defer, regardless of
34 > STDOUT/STDERR...
35 > otherwise freeze the message (this will get my attention by way of
36 > freeze_tell_mailmaster)...
37 ------------------------------------------------------------------------------
38
39 (11) 17-Jul-98  G  support for DSN
40 Andy Mell
41
42 It is unclear to me how this should work in the presence of aliases and
43 forwarding. Local deliveries would have to explicitly configured as deliveries
44 or relaying or whatever. A substantial amount of code is probably needed.
45
46 Jeffrey Goldberg
47 I have nothing to add except to say that for many of the reasons you've
48 stated, I don't think that DSN is coherent enough to be worth the effort
49 to implement.
50
51 Another comment:
52
53   I thought the RFC was pretty clear on this. In a nutshell, if the
54   delivery rewrites the envelope from address, it's considered a
55   terminal delivery (i.e. delivery to a mailing list exploder), otherwise
56   treat it as a forwarding operation (the /etc/aliases case). I would
57   treat a .forward expansion as a final delivery event (it got to the
58   user as far as the MTA is concerned).
59
60   Yes, we need the DSN syntax. We also require the complete semantics of
61   NOTIFY=SUCCESS,FAILURE for our application to work.
62
63   Electronic Bill Presentment is really going to push the need for
64   DSN support in MTAs. We just don't want to get stuck in a situation
65   where we're faced with a non-DSN-aware MTA when we go to install
66   our bill/statement engine, thus our interest in what the MTA vendors
67   are planning to do about DSN.
68 ------------------------------------------------------------------------------
69
70 (41) 14-Oct-98  M  Find a way of modifying header lines
71 Oliver Smith
72
73 The problem with header_remove followed by header_add is that you can't refer
74 to the previous value of the header when adding a replacement. This could be
75 solved with a replace_header option. See also Exim 4/333.
76 ------------------------------------------------------------------------------
77
78 (43) 15-Oct-98  M  Sender rewrite *after* SMTP incoming checks
79 Andreas Edler
80
81 The anti-relaying check happens after the sender has been rewritten; there are
82 times when it would be helpful to do the check on the original sender, not on
83 the rewritten one. Quite how to configure this I'm not sure.
84
85 A related suggestion (from Steve Sargent) is to retain the original sender
86 address and make it accessible somehow.
87 ------------------------------------------------------------------------------
88
89 (46) 20-Oct-98  L  SMTP protocol hooks
90 Malcolm Ray
91
92 "But there are enough broken SMTP implementations to make me wonder whether
93 there isn't a case for providing hooks for tweaking the SMTP transport's
94 protocol exchange. Something which would allow me to say things like 'if, when
95 talking to lame.example.com, you get a 251 response to a MAIL command, rewrite
96 the response to 501 before continuing'."
97 ------------------------------------------------------------------------------
98
99 (50) 13-Nov-98  M  A "Focus" option for eximon
100 Frank Elsner
101
102 This is the opposite of "Hide"; it just displays a certain subset. Hmm. Could
103 something clever be done with regular expressions?
104 ------------------------------------------------------------------------------
105
106 (61) 22-Dec-98  M  Send failed error messages to somebody
107 Harald Meland
108
109 With sendmail, the failed error message is made into a error message,
110 with both envelope sender and recipient set to MAILER-DAEMON.  The
111 original, bogus-envelope-sender message is then available to whoever
112 receives MAILER-DAEMON's mail. A more flexible approach would be to
113 specify a specific recipient.
114 ------------------------------------------------------------------------------
115
116 (81) 01-Mar-99  M  Addition of Content-MD5 support
117 Martin Hamilton
118
119 Martin supplied a suggested patch at
120 http://www.net.lut.ac.uk/~martin/antispam/exim-hacks/
121 ------------------------------------------------------------------------------
122
123 (85) 15-Mar-99  M  ability to rewrite addresses in non-standard headers
124 Dave Lewney
125 John Holman
126
127 Such as "return-receipt-to". See also 41. See also Exim 4/333.
128 ------------------------------------------------------------------------------
129
130 (90) 21-Apr-99  M  change wild prefix/suffix greediness
131 Ben Smithurst
132
133 Currently, when prefix or suffix containing * is set on a director, and the
134 fixed part occurs more than once in a local part, the length of the prefix or
135 suffix is maximized. For example, with suffix = -* and a local part of
136 foo-bar-baz the suffix is taken as bar-baz, leaving the local part as foo.
137 An option is proposed to invert this rule.
138 ------------------------------------------------------------------------------
139
140 (91) 26-Apr-99  S  make queue_run_in_order to newest first
141 "Andreas M. Kirchwitz"
142
143 The tidiest thing would be to have queue_run_order={random,oldest,newest},
144 and make queue_run_in_order obsolete.
145 ------------------------------------------------------------------------------
146
147 (93) 04-May-1999  L  fallback_transport
148
149 This would be a generic transport option, specifying a different transport to
150 be used if the first one failed. Failed hard, or failed soft? Or an option?
151 And if failed hard, is a bounce message sent as well, or not? There are uid
152 issues. Remote delivery would have to be done always in a subprocess so that
153 the main process could retain privilege in case the fallback transport was
154 local. That could be conditional. That's why this is labelled "Large". Some of
155 the things people want to do with this can be done by variations in the
156 routers, e.g. use $message_age to switch routers.
157 ------------------------------------------------------------------------------
158
159 (94) 13-May-1999  M  message to go with -Mg
160 Dave Holland
161 Alan Thew
162
163 So the admin can pass back a reason.
164 ------------------------------------------------------------------------------
165
166 (99) 28-May-1999  M  header to list failures for syntax_errors_to
167 mark david mcCreary
168
169 "I use the syntax_errors_to feature to email a copy of the error message.
170 It would be helpful to have the X-Failed-Receipients header in there,
171 identifying which addreses(s) are the problem, so that I don't have to
172 parse the body of the email message to figure out which addresses."
173 ------------------------------------------------------------------------------
174
175 (100) 04-Jun-1999  S  admin_users option, like trusted_users
176 Paul Mansfield
177 ------------------------------------------------------------------------------
178
179 (102) 21-Jun-1999  M  expanded basic variables
180 Julian King
181
182 Oh, and a wishlist entry, qualify_domain, and preferably other variables
183 can be set with a $lookup in the first part of the exim configuration
184 file, perhaps by an equivalent to backticks in shell script ("`command`")?
185 ------------------------------------------------------------------------------
186
187 (105) 28-Jun-1999  M  MIME-format bounce messages
188 Paul Makepeace
189
190 "Is there any work going/gone on/planned to enable exim to report delivery
191 status notifications using RFC1892 multipart/report MIME messages? It would be
192 great to have errors reported in a message/rfc822 attachment."
193
194 Jeffrey Goldberg
195 "I like plain bounces, so would hope that if you do this, that it be
196 configurable. I think that even for those who want it, it shouldn't be very
197 high on the wish list priority."
198
199 Other suggestions: toggle for bounces/warnings; override max_return for
200 certain addresses; use plain text if original not MIME. See Paul's hack
201 for background of what to do.
202
203 Nigel suggests using a specially named autoreply transport to generate bounces;
204 people could then replace this with another transport (e.g. pipe) if they want
205 to customize it themselves.
206
207 Eli Chen posted an unconditional patch for 3.32 that does some of this work.
208 That could form a basis.
209 ------------------------------------------------------------------------------
210
211 (107) 12-Jul-1999  S  defer transport at given load level
212 Marc Haber
213
214 ------------------------------------------------------------------------------
215
216 (108) 16-Jul-1999  S  remote sort by numbers of recipients
217 mark david mcCreary
218
219 In the absence of remote_sort, sort remote domains by the number of recipients
220 in each.
221 ------------------------------------------------------------------------------
222
223 (114) 11-Nov-1999 S  List of possible outgoing interfaces
224
225 Allow the smtp "interface" option to be a list: try them in turn until one
226 is found to work. Also allow masks to specify a range of addresses.
227 ------------------------------------------------------------------------------
228
229 (123) 23-Dec-1999 L  Use AUTH + TURN for dial-in hosts
230 Andrew Tverdokhleb
231
232 The way to do this would be to have Exim deliver messages into per-host
233 directories in, say, BSMTP format. Accept TURN if authenticated, and cause it
234 to run a helper program that is passed the socket in order to deliver the mail.
235 Provide a helper program!
236 ------------------------------------------------------------------------------
237
238 (125) 04-Jan-2000 L  Use shared memory segment for queue list
239 Theo Schlossnagle
240
241 The idea is that a queue-runner that finds no existing shared segment should
242 create one (if configured - possibly some fixed size) and all Exim processes
243 should maintain a list of messages in it, thereby saving on directory scans
244 when there are lots of messages. This needs a lot of careful thought to try to
245 eliminate any possibility of data loss. The interlocking could be quite tricky.
246 Further posters suggested using a db file to hold the list. See also 127.
247 ------------------------------------------------------------------------------
248
249 (129) 14-Jan-2000 L  Dynamically loadable lookup modules
250 Steve Haslam
251
252 Suggested patch provided.
253 ------------------------------------------------------------------------------
254
255 (131) 17-Jan-2000 T  Facility for assuming existence for EACCES
256 Peter Radcliffe
257
258 The opposite option for "+" in require_files: assume existence if cannot
259 peer into the directory (+ assumes non-existence).
260 ------------------------------------------------------------------------------
261
262 (131) 29-Feb-2000 M? Control total number of outgoing SMTP calls
263 Brian White
264
265 This is for hosts with slow connections. Could some modification of
266 serialize_hosts be used for this? Or maybe use a semaphore? They seem to
267 be quite widely available.
268 ------------------------------------------------------------------------------
269
270 (132) 01-Mar-2000 S  Lookup host name from outgoing interface
271 Vadim Vygonets
272
273 Instead of primary_hostname, look up the name for the interface that is being
274 used for sending. Suggested patch supplied, but this should be an option of the
275 smtp transport.
276 ------------------------------------------------------------------------------
277
278 (133) 06-Mar-2000 S  Filter option not to log "previously sent"
279 Bruce Bowler
280
281 This is when using the "log" option of the autoreply driver.
282 ------------------------------------------------------------------------------
283
284 (134) 09-Mar-2000 S  Option to remove attachments when bouncing
285 ------------------------------------------------------------------------------
286
287 (136) 13-Mar-2000 S/M Option for aliasfile to suppress "me too"
288
289 Could be tricky determining who "me" is.
290 ------------------------------------------------------------------------------
291
292 (143) 08-May-2000 S  Make quota_warn_threshold into a list
293 David Carter
294
295 So several warnings could be generated as the mailbox got bigger and bigger.
296 ------------------------------------------------------------------------------
297
298 (148) 15-May-2000 S  Warn recipient if message rejected for quota excession.
299 Heinz Ekker
300
301 Maybe not all that small, because the possibility of retrying must be taken
302 into account.
303 ------------------------------------------------------------------------------
304
305 (149) 19-May-2000 L  Make added headers visible in filters and other places
306 Hans Morten Kind
307
308 Headers added by directors/routers are not visible in subsequent processing.
309 This is a request to make them visible. What about removed headers? This could
310 be tricky to specify, hence the L.
311
312 A separate but related issue is the effect of headers added by "unseen"
313 directors. These are documented in chapter 19 as not being accumulated. Should
314 any change be made? See also Exim 4/333.
315 ------------------------------------------------------------------------------
316
317 (155) 16-Jun-2000 M  Special handling for certain hosts
318 mark david mcCreary
319
320 A means of changing the transport depending on the host name/IP of the most
321 preferred MX record so that all domains that route to certain hosts can be
322 handled specially. Maybe this could be a variable that is available in the
323 expansion of the "transport" option.
324 ------------------------------------------------------------------------------
325
326 (158) 29-Jun-2000 S  Configure "From" in bounces
327 Ben Parker
328
329 Cf Reply-To.
330 ------------------------------------------------------------------------------
331
332 (159) 07-Jul-2000 M  Keep messages for fixed time
333 Gary Palmer
334
335 An option to keep messages on the queue for a specified time, even if all their
336 destination hosts have timed out.
337 ------------------------------------------------------------------------------
338
339 (164) 17-Aug-2000 S  sender_unqualified_auth_hosts
340
341 To allow authenticated hosts to send unqualified addresses. Presumably it
342 needs received_... as well.
343 ------------------------------------------------------------------------------
344
345 (167) 05-Sep-2000 L  Support for ODBC
346
347 This would allow access to databases that don't have native support built into
348 Exim. See http://www.openlinksw.com/info/docs/rel3doc/unix/odbcsdk.htm
349 ------------------------------------------------------------------------------
350
351 (168) 06-Sep-2000 M  Deliver messages that alias to nothing to a given address
352 Dr ZP Han
353
354 If other people are managing alias lists, and one is empty, bounce that
355 delivery to a given address rather than freezing the message. Use the errors_to
356 address?
357 ------------------------------------------------------------------------------
358
359 (173)  18-Sep-2000 S  A way of doing lsearches with EOL terminated keys
360 Jason Robertson
361
362 This is for looking up things like subject contents. Probably need an option to
363 exim_dbmbuild to make them into DBM files.
364 ------------------------------------------------------------------------------
365
366 (181)  10-Nov-2000 S  Compile-time options for ignoring Sendmail options
367
368 So that new ones could be accommodated easily.
369 ------------------------------------------------------------------------------
370
371 (183)  04-Dec-2000 L  dns_means_nonexist_after
372 Dave C.
373
374 In other words, wait a bit before giving up. This needs a mechanism for
375 remembering, which is not currently available. To be borne in mind for the
376 future.
377 ------------------------------------------------------------------------------
378
379 (184)  04-Dec-2000 M  Log more details of local caller
380 J. Nick Koston
381
382 "I was wondering if it was possible for exim to log the parent pid's cwd and
383 exe when it is called from a script/invoked by actually running /usr/sbin/exim
384 or /usr/sbin/sendmail."  Question: is this information actually/easily
385 available to Exim? Needs investigation.
386 ------------------------------------------------------------------------------
387
388 (186)  19-Dec-2000 S  A simple utility to reset a retry time
389 Marc Haber
390
391 Basically, to do what exim_fixdb "delete" can do, but straightforwardly. There
392 could be an interface from eximon.
393 ------------------------------------------------------------------------------
394
395 (187)  02-Jan-2001 M  Wildcarding in headers_remove
396 Tamas TEVESZ
397
398 What I'd like to see is it to handle globs (or regexps, but i'm not sure this
399 latter would worth the hassle), in a way like:
400
401         headers_remove = "X-*:Additional-header"
402 ------------------------------------------------------------------------------
403
404 (190)  03-Jan-2001 M  Multiple message operations in eximon
405 ------------------------------------------------------------------------------
406
407 (195)  19-Mar-2001 T TCP window size
408
409 TCP window size for receiving/sending, SMTP client/server.
410 ------------------------------------------------------------------------------
411 ------------------------------------------------------------------------------
412
413
414
415 ------------------------------------------------------------------------------
416 ------------------------------------------------------------------------------
417 -----            Things that didn't make it into Exim 4                 ------
418 ------------------------------------------------------------------------------
419 ------------------------------------------------------------------------------
420
421 . An option to send messages to postmaster when ignore_errmsg_errors_after
422 times out.
423
424 . When an address is being routed, its constituents are in $local_part and
425 $domain, but there is currently no variable that contains the whole thing. It
426 could be put into $recipient, but that risks confusion with $recipients
427 (which is available in system filters). Maybe $address could be used?
428
429 . The ability to relay to host X without knowing all the domains that host X
430 might have. At ACL time, one would need to verify the recipient, and determine
431 that it routed to host X.
432
433 . People want to change the wording of messages; can we find an efficient way
434 of allowing this? (Maybe put all messages into a separate module?) The problem
435 is not in the messages themselves, but in the values that get inserted into
436 messages. Would have to invent a new kind of function that used identified
437 values rather than positional ones. Use GNU gettext?
438
439 . Invent lf_hosts for those that may use LF without CR. Any other RFC
440 things we need to worry about?
441
442 . A user would really like to see something similar, perhaps with
443 "ID=$authenticated_id", similar to "helo=" and "ident=" in the default received
444 header. BUT there are security issues. Maybe give it as a commented out option
445 in the default configuration?
446
447 . Consider expanding further options that take integer values. What about
448 smtp_xxx options for different limits at different times of day (for example)?
449 What about tls_advertise_hosts (so can look at incoming IP/port)?
450
451 . How about a "hold hosts" option (cf hold_domains) to hold delivery to certain
452 hosts?
453
454 . Allow user filters to use "headers add", but probably not remove. Or maybe
455 just implement "allow" options for both of these features.
456
457 . Have the return from pipe in a variable, so that (e.g. error_message_file)
458 can make use of it.
459
460 . Implement randomize for ldap/sql servers.
461
462 . Add an option for ETRN that says "wait for the command to finish, and use its
463 stdout as the SMTP response."  // A serialized ETRN now does the waiting, but
464 there is as yet no way to use the status. //
465
466 . -odsomething for "ignore retry when doing immediate delivery".
467
468 . Add an option to the smtp transport to make it treat 5xx on connection as if
469 it were 4xx. Or possible add a sophisticated "after command X, treat xxx as
470 yyy".
471
472 . Global option to enable initgroups() for exim uid. Default off.
473
474 . When verifying a sender, should it be rewritten with any T rewrites, because
475 it would be so rewritten if it actually was a recipient in a message?
476
477 . Sean Witham wants a way of defining macros that are not privileged, and a
478 sort of #ifdef structure that allows for different configurations in the same
479 file.
480
481 . Allow :fail: to specify that 551 be used instead of 550. Maybe allow a code
482 at the start, optionally? What about :defer:?
483
484 . SMTP timeout in middle of receiving message: log sender address if known, and
485 possibly message_id if known.
486
487 . Make -brw show rewrites for transports too.
488
489 . Have the MTA log destinations that have timed-out on a ident request and
490 no longer send rfc1413_queries to them. Add an option for how not to cache
491 these entries.
492
493 . Options and/or a utility to enable non-privileged users to view the queue
494 (e.g. -bpp), manipulate their own messages, etc.
495
496 . A generalized "From" escaping scheme that also escapes >From so that the
497 whole thing can be reversed.
498
499 . There was a request for the \dns_again_means_nonexist\ option not to be
500 instantaneous, but to operate only after the DNS has been giving "try again"
501 for some time. Use the misc hints database.
502
503
504
505 ------------------------------------------------------------------------------
506 ------------------------------------------------------------------------------
507 -----                     The Exim 4 Wish List                          ------
508 ------------------------------------------------------------------------------
509 ------------------------------------------------------------------------------
510
511 (1)  01-Jan-02  U  Use of dynamically loaded libraries.
512
513 People want Exim to use dynamically loaded modules for a variety of reasons.
514 When I started to create Exim, I never expected anything other than source
515 distribution; the RPMs and inclusions in OS distributions caught me by
516 surprise. I know very little about the mechanics of dynamic loading, but I'm
517 aware that not all operating systems support it. I'm also aware that not all
518 people support it!
519
520 Furthermore, a way round this might be to supply more hooks along the lines of
521 local_scan(). Then people can write their own dynamic loaders if they want.
522 ------------------------------------------------------------------------------
523
524 (3)  01-Jan-02  U  Test for over-quota at SMTP time
525
526 This is a hard one, because the only way to test for over quota is to try to
527 deliver a message, certainly if system quotas are being used. And also, the
528 only available size at RCPT time is the SIZE option, though of course the test
529 could be run at DATA time. I think maybe we leave this one to an external
530 program, and require people to use ${run} to access the data. Let someone else
531 figure out how to extract the current mailbox size!
532
533 One suggestion is to implement
534
535   ${file_size:/path/to/file}
536   ${directory_size:/path/to/directory}
537
538 so that explicit checks can be done. It may be necessary to have four
539 operators, two being based on the block count, and two showing the "visible"
540 size. Directory scanning is expensive; is there any scope for caching? It would
541 seem not (you don't often get two addresses to the same user).
542 ------------------------------------------------------------------------------
543
544 (6)  01-Jan-02  S  Option to disable the use of -t
545 Dave C.
546
547 Would require work so that Exim itself doesn't use -t.
548 ------------------------------------------------------------------------------
549
550 (7)  01-Jan-02  M  Avoid showing LDAP passwords in log lines for LDAP errors
551 John W Baxter
552
553 May be tricky, because at the higher levels, the format of the query is not
554 understood. // There is now a fudge that works in some cases. See ChangeLog
555 4.51/PH/10. //
556 ------------------------------------------------------------------------------
557
558 (9)  01-Jan-02  S  Headers as well as body in file for autoreply
559 Florian Laws
560 ------------------------------------------------------------------------------
561
562 (10) 01-Jan-02  T  Make "true" and "false" valid expansion conditions
563
564 This might help with "and" and "or" when one of the sub-conditions is, for
565 example, a lookup.
566 ------------------------------------------------------------------------------
567
568 (11) 01-Jan-02  S  Allow a filter to include another file.
569 ------------------------------------------------------------------------------
570
571 (12) 01-Jan-02  M  Support for different SQL servers per query
572
573 In other words, the global mysql_servers etc. is too restrictive.
574 ------------------------------------------------------------------------------
575
576 (14) 01-Jan-02  M? Support for Sendmail milters
577
578 This could perhaps be done by extending the local_scan() idea and providing a
579 "standard" module which interfaced to milter.
580 ------------------------------------------------------------------------------
581
582 (15) 01-Jan-02  M  More hooks like local_scan()
583
584 One request has been for a similar hook at logging time. For other SMTP
585 interactions, maybe a hook into the ACL? See also 79 and 218 and 301.
586 ------------------------------------------------------------------------------
587
588 (17) 11-Jan-02  M  The construction of config.h needs refactoring
589
590 This has been hacked about substantially since the original implementation.
591 Given that there is a program (buildconfig), the messing around with the
592 environment could be abolished. Also, the distinction between "yes" and "no"
593 isn't always properly made (tests for #ifdef don't care about the value).
594 ------------------------------------------------------------------------------
595
596 (18) 24-Jan-02  S  Make $value retain its value after a top-level expansion
597
598 This was specifically for use in filter files. Currently it reverts to empty
599 as a consequence of save/restore for every lookup. It might be confusing to
600 do otherwise, however.
601 ------------------------------------------------------------------------------
602
603 (19) 29-Jan-02  L  Use of multiple DBM libraries
604
605 The problem is how to handle conflicting function names. Much research is
606 needed.
607 ------------------------------------------------------------------------------
608
609 (20) 29-Jan-02  S  Make system filter refreeze after manual thaw
610
611 Currently, a "freeze" in a system filter doesn't freeze after a manual thaw.
612 ------------------------------------------------------------------------------
613
614 (21) 12-Feb-02  S  Expand return_size_limit
615 Joachim Wieland
616
617 Is this really worth it? A per-transport value is also suggested - that would
618 mean remembering the value with each failed address and taking a minimum or
619 a maximimum (which?).
620 ------------------------------------------------------------------------------
621
622 (24)  21-Feb-02 ?  A way of testing TLS using -bh
623 ------------------------------------------------------------------------------
624
625 (27)  06-Mar-02 M  Distinguishing between different temporary callout errors
626
627 The request was to distinguish between a 4xx error and a failure to connect.
628 Problem is: how to cope when there is more than one host? Maybe only if ALL
629 fail to connect. An option like /callout_no_connect_ok.
630 ------------------------------------------------------------------------------
631
632 (30)  12-Mar-02 S  Add "recipients" precondition to routers.
633
634 This would avoid having to use "condition". (See also requirement for $address
635 mentioned above.) However, it would also require adding a caching feature, and
636 probably $recipient_data (cf $domain_data).
637 ------------------------------------------------------------------------------
638
639 (31)  21-Mar-02 S  Variables that indicate 8-bit message and 8-bit host, and
640                    a way of using them to suppress a transport filter
641
642 A variable that is set if the message contains 8-bit characters, and another
643 that is set during the smtp transport if the host supports 8-bit. Then we also
644 need a condition that's expanded in the transport to control whether the filter
645 is run or not (e.g. transport_filter_condition).
646 ------------------------------------------------------------------------------
647
648 (32)  22-Mar-02 M  More info about callout fails for header sender verify
649
650 When there's a callout failure for an envelope address, the error message
651 contains details (by default) of the callout commands. This doesn't happen
652 for addresses in the header because there may be more than one of them, and
653 deciding how to give that information is tricky. Can we do better?
654 ------------------------------------------------------------------------------
655
656 (33)  25-Mar-02 S  Option to assume nomatch in dnslist lookups that time out
657
658 Currently this causes a DEFER.
659 ------------------------------------------------------------------------------
660
661 (34)  26-Mar-02 S  Access to DNS lookup functions via local_scan() API
662
663 This would make local_scan() writers lives easier for DNS usage.
664 ------------------------------------------------------------------------------
665
666 (36)  02-Apr-02 ?  A way of throttling, but allowing, relaying that would
667                    otherwise be denied
668
669 This was suggested in connection with anonymizing messages. The "wait" command
670 in ACLs goes some way towards this. Is it enough?
671 ------------------------------------------------------------------------------
672
673 (41)  17-Apr-02 T  Make config.samples available as a directory for ftp
674
675 This is so that people can browse individual samples directly.
676 ------------------------------------------------------------------------------
677
678 (42)  23-Apr-02 T  An option not to flatten newlines in $message_body.
679
680 Or maybe better to provide $message_body_nl so as to have both.
681 ------------------------------------------------------------------------------
682
683 (43)  23-Apr-02 T  An option to treat 4xx as 5xx from STARTTLS
684
685 This would make Exim retry in clear unless the host is in hosts_require_tls.
686 ------------------------------------------------------------------------------
687
688 (44)  24-Apr-02 ?  Use errors_to for timeouts after redirect syntax errors
689
690 A syntax error in redirection data (with skip_syntax_errors false) causes a
691 defer. Eventually, the address may time out. This suggestion is that, when it
692 does, the bounce is sent to errors_to rather than to the sender.
693 ------------------------------------------------------------------------------
694
695 (45)  13-May-02 T  smtp_etrn_serialize_id = ....
696
697 The default behaviour would be equivalent to
698
699   smtp_etrn_serialize_id = $smtp_command_argument
700 ------------------------------------------------------------------------------
701
702 (47)  16-May-02 S  Access to all addresses in batched local delivery
703 Miquel van Smoorenburg
704
705 In a batched local delivery with more than one recipient, there's no way to
706 access the list of recipients for doing custom things, such as stuffing them
707 all into a header. (BSMTP is the only approach; not everybody can use it.)
708 Suggested patch supplied.
709 ------------------------------------------------------------------------------
710
711 (48)  21-May-02 M  Support for ATRN (server and client)
712 Brian Candler
713
714 Server: If Exim had the ability to accept an ATRN command and then simply
715 invoke an external program, passing the SMTP stream on stdin and stdout and
716 the authenticated id as a parameter, that would do the job nicely.
717
718 Client: We need a variant of 'exim -bs' which would connect to a specified
719 host, send AUTH/ATRN, and then accept incoming messages as usual.
720 ------------------------------------------------------------------------------
721
722 (50)  22-May-02 S?  Add comment (duplicate address) to Envelope-To:
723
724 This is just to minimize the confusion some people have. However, it is not
725 trivially easy to decide which to label as duplicates because of complications
726 with redirection. I'm not convinced it will actually reduce confusion.
727 ------------------------------------------------------------------------------
728
729 (51)  07-Jun-02 S  Option to use another address in callout MAIL FROM
730
731 This would be an address to try if MAIL FROM:<> failed. Is this actually going
732 to be helpful? See also 101.
733 ------------------------------------------------------------------------------
734
735 (53)  11-Jun-02 S  Make local_scan() dynamically loadable
736
737 David Woodhouse sent a patch. There's a more sophisticated one from Marc
738 Merlin. (See also Peter Benie's comments.) But should the base Exim have all
739 this in it?
740 ------------------------------------------------------------------------------
741
742 (54)  11-Jun-02 S  Ignore -Ac if called as mailq
743
744 I am not sure if this makes sense. This flag requests a listing of a different
745 mail queue, but Exim doesn't work like that. Is is not better for people to be
746 aware of this?
747 ------------------------------------------------------------------------------
748
749 (55)  13-Jun-02 M  Rewriting whole header lines
750 Dave C.
751
752 Current rewriting rules apply to individual addresses in header lines. This
753 feature would use a regex to match whole lines and replace them. It could be
754 useful for patching up syntactically invalid lines from crappy clients, before
755 the syntax check kicks in. (It might also be useful for hiding local host names
756 in Received: headers.) See also 333.
757 ------------------------------------------------------------------------------
758
759 (58)  26-Jun-02 ?  Extend PAM support
760
761 Apparently PAM can do challenge-response authentication. The Exim interface
762 can't handle this. Investigate and think about how to do this.
763 ------------------------------------------------------------------------------
764
765 (59)  26-Jun-02 M  A "custom" authenticator
766
767 ... that is simply a front end to external code. For example, there may be
768 an external API that hides the user password and does CRAM-MD5 when passed the
769 details of the challenge and response.
770 ------------------------------------------------------------------------------
771
772 (60)  27-Jun-02 S  Make trusted_users a local part list
773
774 So that it can use lsearch etc.
775 ------------------------------------------------------------------------------
776
777 (62)  28-Jun-02 S  Remove headers before DATA ACL
778 Patrice Fournier
779
780 "I'd like to be able to give Exim a list of headers that must be removed
781 from the message at arrival, before data_acl processing (and before the
782 rcpt_acl warn headers are added to the message)." See also 333.
783 ------------------------------------------------------------------------------
784
785 (63)  28-Jun-02 S  Access to ACL-added headers in ACLs
786 Patrice Fournier
787
788 "I'd like also to be able to look at the already added headers by a
789 rcpt_acl when still checking rcpt_acl (either later in the acl for the same
790 RCPT TO or for another RCPT TO)." See also 333.
791 ------------------------------------------------------------------------------
792
793 (65)  28-Jun-02 M  Expand fallback hosts
794
795 See also 174 of the Exim 3 list.
796 ------------------------------------------------------------------------------
797
798 (66)  01-Jul-02 M  Use Berkeley DB 4 concurrent access features
799
800 This might give better performance on very busy sites by reducing the
801 contention for access to hints databases. Rob Butler points out that this could
802 also be useful to allow updates of other DB files used by Exim to happen
803 concurrently. Another thing to think about with BDB is the possible use of
804 B-trees.
805 ------------------------------------------------------------------------------
806
807 (68)  01-Jul-02 S  Add sender host to delivery line
808
809 "Would it be possible to have a "sending_host_on_delivery" option that
810 logs the IP of the sending host in the => line?" Also requested was amount of
811 data transmitted for a non-delivery attempt.
812 ------------------------------------------------------------------------------
813
814 (69)  03-Jul-02 T  Log selector to log whoson checs
815 Matt Bernstein
816
817 "I'd quite like a log_selector option which could spot you'd done a whoson
818 lookup in your DATA ACL and maybe log it as W=user."
819 ------------------------------------------------------------------------------
820
821 (70)  09-Jul-02 S  A way of changing the RCPT address in an accept router
822
823 So as to avoid duplication problems when sending multiple addresses in multiple
824 copies to the same address.
825 ------------------------------------------------------------------------------
826
827 (74)  22-Jul-02 M  Extend -bV to do more semantic checking
828
829 For example, diagnose "local_hosts" that should probably be "+local_hosts".
830 ------------------------------------------------------------------------------
831
832 (75)  23-Jul-02 S  Reference option on command line
833
834 The idea here is that a spam scanner that re-injects a message can supply a
835 reference on the command line that gets logged with R=.
836 ------------------------------------------------------------------------------
837
838 (78)  30-Jul-02 S  Expand queue_only (and/or queue_only_file)
839
840 The requirement is to make it possible to queue messages if certain conditions
841 are met (e.g. messages from certain local users). See also 93.
842
843 This control can now be achieved in the ACL - is this still needed?
844 ------------------------------------------------------------------------------
845
846 (79)  31-Jul-02 S  Additional info for log lines
847
848 An option to set an expanded string to be added to <= lines. And also for the
849 other delivery lines? See also 15.
850 ------------------------------------------------------------------------------
851
852 (84)  09-Aug-02 S  Make interfaces available in a variable
853
854 Something like $local_interfaces. Maybe limit the max length.
855 ------------------------------------------------------------------------------
856
857 (85)  12-Aug-02 S/M  Notice database connection failures
858
859 The small version of this just removes a server from the list within a single
860 Exim process when a connection to it fails. The bigger project would use the
861 retry database - but that has implications for bottlenecking and may not be
862 helpful. See also item 109. Another suggestion is to randomize the order in
863 which database servers are tried (randomize_database_servers). And another is
864 to measure response times and remember which server is fastest.
865 ------------------------------------------------------------------------------
866
867 (87)  12-Aug-02 M  Partial lookups for query-style lookups
868
869 The suggestion is to allow the lookup to contain a keystring (same syntax as
870 single-key lookups) which is then permuted and place in a suitable variable
871 each time - $permuted_key or something.
872 ------------------------------------------------------------------------------
873
874 (88)  20-Aug-02 S  Allow special retrying for forced defer
875
876 See also 146 in Exim 3 wish list above.
877 ------------------------------------------------------------------------------
878
879 (89)  20-Aug-02 S  Also allow retry rules on routers and transports
880 ------------------------------------------------------------------------------
881
882 (90)  23-Aug-02 M  Macros with arguments, a la C
883
884 I don't like this, because of the cost of frequent interpretation.
885 ------------------------------------------------------------------------------
886
887 (93)  27-Aug-02 S  queue_only_condition
888 Peter A. Savitch
889
890 queue_only_condition global option, expanded string. This contain
891 condition, which if evaluated to `no' or `false' or `0', behaves like
892 queue_only (queue_only_load ?). Don't know what to do is the string
893 expansion fails with DEFER (either force queueing or continue with
894 immediate delivery). Another option can control Exim behaviour if the
895 expansion fails. Don't know how the name for it ;-) See also 78.
896
897 This control can now be achieved in the ACL - is the new feature now needed?
898 ------------------------------------------------------------------------------
899
900 (95)  27-Aug-02 S  Log all parents as a router option
901
902 So that specific addresses can be logged like this. Should there be more log
903 selector options per router? Per transport?
904 ------------------------------------------------------------------------------
905
906 (99)  28-Aug-02 L  Test pre-conditions in order given
907
908 This would get round certain problems with require_files. However, it is
909 totally incompatible, and therefore an "Exim 5" wish.
910 ------------------------------------------------------------------------------
911
912 (101) 02-Oct-02 M  Callout and <> rejections
913
914 Some people don't want to fail the callout if the MAIL FROM:<> command is
915 rejected. Think of a way of handling this tidily. See also 51.
916 ------------------------------------------------------------------------------
917
918 (102) 03-Oct-02 M  Log option to suppress message-id logging
919
920 M because it would involve a change to eximstats.
921 ------------------------------------------------------------------------------
922
923 (106) 09-Oct-02 S  Appendfile to create directory not as user
924
925 Arrange for the setup entry to appendfile to create the directory under some
926 other uid (and with given owners/permissions?)
927 ------------------------------------------------------------------------------
928
929 (109) 15-Oct-02 M  Remember when LDAP (etc) servers are down
930
931 The idea would be to use some kind of retry rule, just like for hosts.
932 See also 85.
933 ------------------------------------------------------------------------------
934
935 (110) 18-Oct-02 M  errors_to for pipe command in filter
936
937 To work in the same was as errors_to for deliver commands.
938 ------------------------------------------------------------------------------
939
940 (113) 15-Nov-02 M  support for XMLRPC
941
942 Patch supplied for 4.10 by Joel Vandal.
943 ------------------------------------------------------------------------------
944
945 (114) 04-Dec-02 M  local_scan: return message on accept
946
947 (This actually dates from earlier.) The problem with this is that the string
948 currently passes into $local_scan_data. Thus, an incompatible change of some
949 sort would be required. Possibly a global that local_scan can set?
950 ------------------------------------------------------------------------------
951
952 (118) 10-Dec-02 S  access to Perl from local_scan
953 ------------------------------------------------------------------------------
954
955 (119) 12-Dec-02 M  ability to specify additional headers in an autoreply
956
957 This is so that vacation messages etc can have MIME headers that specify, for
958 example, the character set.
959 ------------------------------------------------------------------------------
960
961 (125) 02-Jan-03 M  Per-host daemon logging
962
963 "So what I would like is an option like debug_hosts, that allows to specify
964 an hostlist, and if the current incoming/outgoing hosts matches, creates a
965 logfile like $hostname_(in|out).log in my logdirectory."
966 ------------------------------------------------------------------------------
967
968 (127) 06-Jan-03 M  Different messages for different callout failures
969
970 The real requirement here is to detect when a callout "MAIL FROM:<>" failed, so
971 that a specific warning about that can be sent, different to the message when a
972 callout "RCPT TO:" fails. I think this is in fact now mostly done.
973 ------------------------------------------------------------------------------
974
975 (129) 09-Jan-03 M  Keep track of DNSBL timeouts, and refrain from calling
976
977 If so configured, keep track of DNSBL timeouts in a hints record, and don't
978 retry that DNSBL for a while after (a sufficient number of) timeouts. It is
979 effectively disabled for a while. Log enable/disable, of course. Another
980 thought is an option not to apply +defer_unknown unless *all* DNSBL lookups in
981 a list defer.
982 ------------------------------------------------------------------------------
983
984 (130) 09-Jan-03 M  A number of LDAP-related things
985 Peter A. Savitch
986
987 OpenLDAP 2.1 is going to be more popular (2.1.9 is available with many
988 bug fixes). TLS-enabled LDAP is an interesting and usefull thing.
989 I can try to implement some things and send the patches, like with
990 ldapi.
991
992 How do You see:
993
994 1) The propagation of TLS options (key, certificate, CA certificate)
995    to the OpenLDAP library.
996
997 2) (was dereferencing; done in 4.23).
998 ------------------------------------------------------------------------------
999
1000 (131) 09-Jan-03 S  Additional variables
1001 Peter A. Savitch
1002
1003 $root_uid    Why?
1004
1005 (Some that were previously here are done)
1006
1007 $smtp_accept_count    -- used for acl_smtp_connect
1008
1009 $queue_runners        -- children of the listening daemon could use this
1010                          value for controlling the number of queue runners
1011
1012 I don't like either of these because they cannot be real-time values. They
1013 would be snapshots of the values at the time the process was forked from the
1014 daemon, and I fear they would just be confusing. For processes that were not
1015 forked from the daemon they couldn't be set at all.
1016 ------------------------------------------------------------------------------
1017
1018 (131) 09-Jan-03 S  Additional options
1019 Peter A. Savitch
1020
1021 exim_processes_max
1022 exim_file_descriptors_max
1023 queue_run_condition   -- to deprecate queue_run_max, better system
1024                          load control
1025
1026 Given Exim's distributed nature, I'm not at all sure how the first two of these
1027 can usefully be implemented.
1028 ------------------------------------------------------------------------------
1029
1030 (132) 16-Jan-03 M  Option for when a transport filter fails (crashes)
1031
1032 Freezing is one obvious option. Currently, Exim just retries. Another user
1033 wanted to retry without the filter, but that is much harder.
1034 ------------------------------------------------------------------------------
1035
1036 (136) 24-Jan-03 M  Make "personal" available as a condition for use in routers
1037 ------------------------------------------------------------------------------
1038
1039 (138) 28-Jan-03 M  A variable containing what was matched in a host list
1040
1041 Or, presumably, other lists. This is so that ACL messages can say things like
1042 "your host name matches xxxx". Note: not the same as $domain_data. Also, this
1043 could be tricky with lookups and things that match in files.
1044 ------------------------------------------------------------------------------
1045
1046 (143) 06-Mar-03 L  Ability to have multiple authenticators of same type
1047
1048 For example, to have two PLAIN authenticators; if the first fails, try the
1049 second.
1050 ------------------------------------------------------------------------------
1051
1052 (144) 07-Mar-03 T  ACL control = local_scan_skip to skip the local scan
1053
1054 A bigger project would be control = local_scan <xxx> where xxx could select
1055 different local_scan functions (possibly by dynamic loading).
1056
1057 This can now be simulated using the fact that ACL variables are preserved,
1058 so it doesn't look as it once did.
1059 ------------------------------------------------------------------------------
1060
1061 (145) 07-Mar-03 T  Export string_cat() to local_scan()
1062 ------------------------------------------------------------------------------
1063
1064 (147) 17-Mar-03 T  Option to treat 5xx as 4xx if received on initial connection
1065
1066 This issue is controversial. That may be a good reason for not changing
1067 anything.
1068 ------------------------------------------------------------------------------
1069
1070 (153) 25-Apr-03 S  A way of making log_as_local apply to the smtp transport
1071
1072 Either an option on the transport, or log_remote_as_local for the router.
1073 Messy, either way. Maybe log_local_as_local and log_remote_as_local, and
1074 deprecate log_as_local?
1075 ------------------------------------------------------------------------------
1076
1077 (154) 01-May-03 M  Teergrubing at the CR/LF level
1078
1079 It is believed that the most effective way to teergrube is to insert a delay
1080 between transmitting CR and LF in the SMTP response. Furthermore, this is also
1081 the best place to test for bad synchronization (i.e. at the last possible
1082 time).
1083 ------------------------------------------------------------------------------
1084
1085 (155) 01-May-03 S  "control=no_pipelining" for connect and EHLO ACLs
1086
1087 Yet more flexibility! Maybe this should be a more general control for what is
1088 sent in response to EHLO.
1089 ------------------------------------------------------------------------------
1090
1091 (156) 06-May-02 M  Finer-grained synchronisation checking
1092
1093 On operating systems that can be asked whether any sent bytes have not yet been
1094 ACK'd at the TCP/IP level, a finer-grained check for proper synchronisation can
1095 be done. All bytes must have been ACK'd if the client has received the previous
1096 response before sending the next command. See also 293.
1097 ------------------------------------------------------------------------------
1098
1099 (157) 07-May-03 M  Newline as a list item separator
1100
1101 This will make life easier for lists obtained form databases where the
1102 separator is naturally a newline.
1103 ------------------------------------------------------------------------------
1104
1105 (158) 13-May-03 M  Ability to add to OK message for SMTP commands
1106
1107 For sending reasons for slow response, etc.
1108 ------------------------------------------------------------------------------
1109
1110 (160) 19-May-03 M  Remove headers using wild cards
1111
1112 See also 333.
1113 ------------------------------------------------------------------------------
1114
1115 (162) 28-May-03 M/L Use of real numbers in filters, expansions, and options
1116
1117 The motivation for this is for handling spam scores that are real numbers. The
1118 questions are (a) how widely should it spread and (b) whether floating point or
1119 fixed point representations should be used. And what about the eval operator?
1120 ------------------------------------------------------------------------------
1121
1122 (164) 02-Jun-03 S  Set variables for interface and port in smtp transport
1123
1124 These could be useful for varying HELO data etc. See also several other
1125 items about interfaces above.
1126 ------------------------------------------------------------------------------
1127
1128 (166) 18-Jun-03 S  CN verification in client TLS code
1129
1130 A tls_verify_cn option is suggested by Sven Geggus.
1131 ------------------------------------------------------------------------------
1132
1133 (168) 19-Jun-03 S  Ability to add a header recording envelope rewrites
1134
1135 Current code adds a deleted header with only some information. Maybe what is
1136 needed is a flag for a rewrite rule.
1137 ------------------------------------------------------------------------------
1138
1139 (169) 19-Jun-03 M  A way of detecting timeouts in callout returns
1140
1141 ------------------------------------------------------------------------------
1142
1143 (170) 23-Jun-03 S  Option to accept rather than defer after local scan timeout
1144
1145 Suggested patch supplied.
1146 ------------------------------------------------------------------------------
1147
1148 (172) 23-Jun-03 M  Option to make SQL query to specific server
1149
1150 ------------------------------------------------------------------------------
1151
1152 (175) 04-Jul-03 S  show_all_ancestors_in_errmsg for the redirect router
1153
1154 This is the opposite of hide_child_in_errmsg in effect.
1155 ------------------------------------------------------------------------------
1156
1157 (180) 14-Jul-03 M  Extend never_users to be more flexible
1158
1159 e.g. never_users = ! mailnull : ! cyrus : !mailman : 0-100
1160 ------------------------------------------------------------------------------
1161
1162 (183) 16-Jul-03 S  freeze_tell_text to add custom text to the message
1163
1164 ------------------------------------------------------------------------------
1165
1166 (185) 24-Jul-03 S  An expansion operator that decodes RFC 2047 strings
1167
1168 ------------------------------------------------------------------------------
1169
1170 (188) 13-Aug-03 T  batch_max=0 to mean unlimited
1171
1172 ------------------------------------------------------------------------------
1173
1174 (189) 22-Aug-03 S  Allow filter "logwrite" to write to syslog
1175
1176 I feel this is a dangerous facility, and also of very minority interest, at
1177 least for user's filters. Allowing a system filter to write to mainlog or
1178 syslog may be different. However, writing the main log would only be possible
1179 if the filter runs as root or exim.
1180 ------------------------------------------------------------------------------
1181
1182 (190) 22-Aug-03 S  A way of testing "forced delivery" in filter and routers
1183 ------------------------------------------------------------------------------
1184
1185 (191) 26-Aug-03 M  Preserve $address_data for a verified recipient
1186
1187 The idea is to preserve it in the recipients data structure so that local_scan
1188 can have access to it. The value could also be used as the initial value of
1189 $address_data while routing.
1190 ------------------------------------------------------------------------------
1191
1192 (192) 05-Sep-03 M  Better handling of TXT records for dnslists
1193
1194 When multiple lists are accessible via a merged lookup, handling TXT records
1195 is difficult. An option for doing the TXT lookup in a sub-list has been
1196 suggested, with syntax such as
1197
1198         dnslists = list.example.org=127.0.0.2%dialups \
1199                                    ,127.0.0.3%relays \
1200                                    ,127.0.0.5%spews
1201 ------------------------------------------------------------------------------
1202
1203 (194) 10-Sep-03 M  $addresslist_data to be like $host_data/$domain_data
1204
1205 ------------------------------------------------------------------------------
1206
1207 (195) 29-Sep-03 M  A variable containing the error for verify = header_syntax
1208
1209 Maybe there should always be a variable with the error message for all the
1210 different kinds of verify failure.
1211 ------------------------------------------------------------------------------
1212
1213 (197) 30-Sep-03 S  MACROS_DROP_PRIVS and ALT_CONFIG_DROP_PRIVS
1214
1215 Now that alternative configurations can be restricted to certain directories,
1216 some more flexibility can be allowed. Not by default, though.
1217 ------------------------------------------------------------------------------
1218
1219 (198) 01-Oct-03 M  Accept mail after local_scan() crash instead of defer
1220
1221 This may not be as easy to implement as it sounds; one is never sure of the
1222 environment after a crash. Is is actually a good idea? The crashing local_scan
1223 may have wrecked the memory in arbitrary ways; for example, screwing up the
1224 recipients list...
1225 ------------------------------------------------------------------------------
1226
1227 (199) 01-Oct-03 M  ${pipe which will pipe the message to a script ...
1228
1229 ... and otherwise behave as ${run. Probably needs to have locking out features
1230 so that it can be turned off for users .forwards if the sysadmin so desires.
1231 ------------------------------------------------------------------------------
1232
1233 (200) 07-Oct-03 L  Alternative ways of storing hints
1234
1235 People want to store hints in databases. Some assert that SQL databases can
1236 be made to perform satisfactorily. If a general interface could be worked on,
1237 people could at least try different strategies. See also 66 above, which is
1238 specifically concerned with Berkeley DB. Another possible option is a switch to
1239 disable smtp-wait hints - to avoid contention problems.
1240 ------------------------------------------------------------------------------
1241
1242 (201) 07-Oct-03 M  A "soft bounce" feature
1243
1244 This is an option that turns all hard bounces into soft bounces. The idea is
1245 that it can be used as a safety-net while testing configurations. Instead of a
1246 local bounce, the message stays on the queue; instead of 5xx SMTP responses,
1247 4xx ones are given.
1248 ------------------------------------------------------------------------------
1249
1250 (202) 10-Oct-03 S  -bvsomething to do a callout after the verify
1251
1252 For example: -bvc and -bvsc. The problem now (Nov 04) is that there are quite a
1253 few possible callout options that can be specified in an ACL, and they would
1254 have to be replicated here.
1255 ------------------------------------------------------------------------------
1256
1257 (203) 14-Oct-03 S  verify=something to easily check for header presence
1258
1259 This is purely cosmetic; "condition" can already be used.
1260 ------------------------------------------------------------------------------
1261
1262 (204) 27-Oct-03 S  an inverted queue_only_file
1263
1264 That is, queue if a file does NOT exist.
1265 ------------------------------------------------------------------------------
1266
1267 (205) 27-Oct-03 S  expand smtp_accept_queue_per_connection
1268
1269 ------------------------------------------------------------------------------
1270
1271 (206) 27-Oct-03 S  appendfile: a variable containing the maildir base name
1272
1273 ------------------------------------------------------------------------------
1274
1275 (207) 29-Oct-03 S  ability to keep trusted users in a file - expand it.
1276 ------------------------------------------------------------------------------
1277
1278 (208) 31-Oct-03 M  cache temporary verification errors and fail after a time
1279
1280 This request was for a way of turning temporary verification failures into
1281 permanent ones after some fixed time.
1282 ------------------------------------------------------------------------------
1283
1284 (209) 31-Oct-03 S  a way of making crashes in pipe commands temporary errors
1285 ------------------------------------------------------------------------------
1286
1287 (210) 31-Oct-03 S  runtime option to change the daemon name used for tcprwappers
1288
1289 A patch for compile time was supplied, but this seems better as a runtime
1290 option, for use with multiple Exim daemons.
1291 ------------------------------------------------------------------------------
1292
1293 (211) 31-Oct-03 S  ability to disable debugging output from -bh & -bhc
1294 ------------------------------------------------------------------------------
1295
1296 (212) 31-Oct-03 M  specify headers lines in HELO ACL to be added to all msgs
1297
1298 See also 333.
1299 ------------------------------------------------------------------------------
1300
1301 (214) 05-Nov-03 S  Put the wild part of local part prefix/suffx in variables
1302
1303 Unfortunately, this isn't quite as trivial as it seems.
1304 ------------------------------------------------------------------------------
1305
1306 (215) 26-Nov-03 M/L Conversion of IDNA domain names for logging
1307
1308 IDNA (RFCs 3490-3492) converts domains names containing non-ASCII characters
1309 into ASCII strings of a special form. Exim will of course handle these.
1310 However, it might be nice to convert them to a local code for logging. This
1311 might be quite a big project: there's also output from -bp and eximon queue
1312 display and no doubt other places as well. (Utilities that process the logs,
1313 e.g. exigrep, eximstats, will be automatically handled if the logs are
1314 changed.)
1315 ------------------------------------------------------------------------------
1316
1317 (217) 27-Nov-03 M  A function to pass back variables from Perl
1318
1319 This is a function that can be called from Perl, to take a name and a value and
1320 put that value into an Exim variable.
1321 ------------------------------------------------------------------------------
1322
1323 (218) 01-Dec-03 M  A local_scan-like hook at system filter time
1324
1325 That is, make a C API available for custom filtering at this point.
1326 ------------------------------------------------------------------------------
1327
1328 (221) 18-Dec-03 U  Merge routers and ACLs - or at least make more similar
1329
1330 "It will be very useful to be able to use most of the ACL conditions
1331 (authenticated, hosts, senders, sender_domains, ... ) in routers and also the
1332 possibility to have multiple conditions in routers. It will be great to also
1333 be able to set variables in routers like in acl's." This is effectively a
1334 radical suggestion for a complete re-design, and is therefore BIG.
1335 ------------------------------------------------------------------------------
1336
1337 (223) 22-Dec-03 S  Support SOA lookup in dnsdb lookups
1338
1339 This could be like zns, and climb up the tree till it hits a zone. Would the
1340 name of the zone be required?
1341 ------------------------------------------------------------------------------
1342
1343 (225) 22-Dec-03 M  Add acl= to routers
1344
1345 This would use an ACL to "control access" to a router, opening up a number
1346 of interesting possibilities. Details of possible limitations need to be
1347 investigated.
1348 ------------------------------------------------------------------------------
1349
1350 (226) 23-Dec-03 S  A way of treating DEFER as fail in dnsdb lookups
1351
1352 (i.e. the dnsdb lookup failed, so accept the message)
1353 ------------------------------------------------------------------------------
1354
1355 (227) 30-Jan-04 M  A configuration .if facility
1356
1357 "Second with the .ifdef and such, it would be nice to have a base .if,
1358 so I could do something like
1359 .if DEFINED_DATA == xyz
1360 configuration here
1361 .elseif DEFINED_DATA == abc
1362 configuration here
1363 .else
1364 configuration here
1365 .endif
1366 also this would be nice at least in my case in the system filters, but
1367 isn't required but you could pass the defined data to the system, in
1368 variables."
1369 ------------------------------------------------------------------------------
1370
1371 (229) 30-Jan-04 M  New expansion mechanism: {list ...}
1372
1373 "Proposed syntax: {list {separator}{item}{item}...}
1374 This first expands the contents of {separator} and all of the {item}s,
1375 then constructs a separator-delimited list. The twist is: if an {item}
1376 generates the empty string, no separator will be generated for it.
1377 The entire construct will fail is {separator} fails, or all {item}s
1378 fail. If just some {item}s fail, they will be treated as if they
1379 generated empty strings.
1380 Examples:
1381    {list {,}{aaaaaa}{bbbbbb}{cccccc}} -> aaaaaa,bbbbbb,cccccc
1382    {list {,}{:fail:}{bbbbbb}{cccccc}} -> bbbbbb,cccccc
1383    {list {,}{aaaaaa}{:fail:}{cccccc}} -> aaaaaa,cccccc
1384    {list { }{aaaaaa}{bbbbbb}{}}       -> aaaaaa bbbbbb
1385    {list { }{:fail:}{:fail:}{:fail:}} -> :fail:
1386    {list {:fail:}{aaaaa}{bbbb}{cccc}} -> :fail:
1387 See particularly examples 2-4, which handle the case of a missing first
1388 and last item with ease; doing this using {if ...} would be quite difficult!"
1389 ------------------------------------------------------------------------------
1390
1391 (230) 30-Jan-04 M  Find IP addresses of a domain's nameservers
1392
1393 This needs some way of processing a list of things in a similar way, which
1394 should perhaps be a more general facility. // This can now be done using the
1395 list facilities of dnsdb; verbose, but it can be done. //
1396 ------------------------------------------------------------------------------
1397
1398 (231) 30-Jan-04 ?  -C has a number of problems when used for real
1399
1400 -C was intended for testing; people are using it for "alternate"
1401 configurations, and it doesn't work too well. Can a better way of doing this be
1402 invented?
1403 ------------------------------------------------------------------------------
1404
1405 (232) 02-Feb-04 ?  Make parts of the code loadable
1406
1407 The idea being that drivers, etc. could be compiled separately. There are, of
1408 course, security issues. This is not something I want to go into at present.
1409 ------------------------------------------------------------------------------
1410
1411 (235) 02-Feb-04 T  Make smtp_accept_count available as a variable
1412
1413 This is for use in ACLs. Of course, it is a snapshot of the count at the
1414 start of the receiving process. As such, it could be confusing because if a
1415 connection lasts a long time, the "true" value could be very different. For
1416 this reason, I don't really like this idea.
1417 ------------------------------------------------------------------------------
1418
1419 (236) 02-Feb-04 S  String in local_scan that's added to the binary version string
1420 ------------------------------------------------------------------------------
1421
1422 (238) 05-Feb-04 S  ${address to handle multiple addresses
1423
1424 At present, ${address expects to see just one address. An extension would let
1425 it handle header lines with multiple addresses, just retaining the actual
1426 addresses. Or perhaps a new operator is needed?
1427 ------------------------------------------------------------------------------
1428
1429 (239) 23-Feb-04 ?  Expansion items for encryption/decryption
1430
1431 Perhaps for some kind of cookie handling? This would need an external crypto
1432 library, because there's no crypto code in Exim itself.
1433 ------------------------------------------------------------------------------
1434
1435 (240) 23-Feb-04 ? Some way to know if a ip is a mx for a given domain
1436
1437 Some kind of iterative operation for dnsdb might be a general way of providing
1438 this. // This can now be done using the list facilities of dnsdb; verbose, but
1439 it can be done. //
1440 ------------------------------------------------------------------------------
1441
1442 (242) 01-Mar-04 ? Run a filter from an expansion condition
1443
1444 This would add a lot of power to ACLs, but its implementation might be tricky
1445 because of the possibility of recursion.
1446 ------------------------------------------------------------------------------
1447
1448 (243) 01-Mar-04 ? Run an ACL from an expansion condition
1449
1450 The problem here is knowing what data is available at an arbitrary time.
1451 ------------------------------------------------------------------------------
1452
1453 (244) 01-Mar-04 ? Add an on-success event to transports
1454
1455 This could just be an expansion string, whose value is either ignored or
1456 logged, but it could be used to run SQL updates or run programs etc.
1457 However, what is "success" when a transport has multiple recipients?
1458 ------------------------------------------------------------------------------
1459
1460 (245) 01-Mar-04 M Add all the string expansion conditions to filters
1461
1462 Some thought would be needed on how to design the syntax for this.
1463 ------------------------------------------------------------------------------
1464
1465 (247) 09-Mar-04 S IP addresses that are never looked up
1466
1467 It would be nice if we could prevent this for certain IP addresses for
1468 which we _know_ we'll never get a valid PTR record, like 2002::/16.
1469 So a new option might reasonably default to:
1470
1471         hosts_never_lookup = <; 2002::/16
1472 ------------------------------------------------------------------------------
1473
1474 (253) 05-Apr-04 M Use ESMTP and TLS for recipient callout verification
1475
1476 The best way to do this would involve quite a bit of refactoring so as to
1477 abstract some of the code from the smtp transport into subroutines that could
1478 also be used from the callout code. The tls parameters should probably be
1479 taken from the transport. That might also require some substantial code
1480 refactoring. See also 294.
1481 ------------------------------------------------------------------------------
1482
1483 (260) 30-Apr-04 S Respect +tls_cipher +tls_peerdn in rejectlog entries
1484
1485 ------------------------------------------------------------------------------
1486
1487 (261) 05-May-04 S Add a "required_version" option
1488
1489 So that configurations can insist on a specific Exim version.
1490 ------------------------------------------------------------------------------
1491
1492 (262) 10-May-04 S Add "scratch" ACL variables
1493
1494 The idea is for variables that are flushed at the start of each ACL. I'm not
1495 really convinced that these are worth implementing.
1496 ------------------------------------------------------------------------------
1497
1498 (263) 10-May-04 S Add variable $router_name $transport_name
1499
1500 These could be used in debug_print settings, which are output during -bt, and
1501 thus don't need the privilege to run with -d.
1502 ------------------------------------------------------------------------------
1503
1504 (265) 25-May-04 M An init.d script for exim is needed
1505
1506 The old sendmail script used to "just work" because it just did -bd -q 20m or
1507 whatever. Newer versions start more than one sendmail daemon, so do not work.
1508 ------------------------------------------------------------------------------
1509
1510 (267) 25-May-04 S tarpitting delay option
1511
1512 A modifier that sets a delay between lines for multiline responses.
1513 ------------------------------------------------------------------------------
1514
1515 (268) 25-May-04 S? Add a PID to every log line
1516
1517 Given that pids are reused non-cyclically these days, is this actually useful?
1518 ------------------------------------------------------------------------------
1519
1520 (270) 01-Jun-04 M Add headers at top and middle
1521
1522 Various initiatives like SPF and DomainKeys require header lines to be added
1523 above or in the middle of existing headers. Exim always adds at the bottom.
1524 When these requirements are more standard and clearer, some way of controlling
1525 where header lines are added will probably become necessary. Some new syntax
1526 will be required.
1527
1528 This can now be done fairly generally from local_scan(), and at the start and
1529 after the Received: block from an ACL. Is anything more needed? See also 333.
1530 ------------------------------------------------------------------------------
1531
1532 (271) 02-Jun-04 L Callouts at routing time
1533
1534 From a user's message:
1535
1536 > I would like to be able to:
1537 >[...]
1538 > 2) Forcing callouts as address verification at router level
1539 > [ check_callout just like check_local_user ]
1540 >
1541 > I would like to redirect messages in some domain to "domain with callout
1542 > verification" and to "domain without callout verification"
1543 >
1544 > e.g.
1545 > userA@domain.in -> userX@doamin.out-verify (use callout to verify)
1546 > userB@domain.in -> userY@doamin.out-noverify (do not use callout verify)
1547 >
1548 > [both out-* domains delivered via "callout ready" transports]
1549
1550 Other versions of the wish:
1551 * limiting callouts in acls to specific transport
1552       verify = recipient/callout=5s,transport:intranet_smtp
1553 * adding "select transport" to ACL conditions
1554       accept domains = +local_domains
1555              transport = cyrus_ltcp
1556              verify = recipient/callout=5s
1557 ------------------------------------------------------------------------------
1558
1559 (272) 07-Jun-04 S Expand hosts_randomize
1560
1561 It occurs in manualroute and in smtp.
1562 ------------------------------------------------------------------------------
1563
1564 (278) 21-Jun-04 M quota_warn_message_file option
1565
1566 Similar to the bounce and delivery warn message files.
1567 ------------------------------------------------------------------------------
1568
1569 (280) 23-Jun-04 M A way of adding a header line after callout defer_ok
1570
1571 This would record that, e.g., a sender domain verified, but the callout
1572 could not be done. There are ways of fudging this, using ACL variables and
1573 "warn" statements.
1574 ------------------------------------------------------------------------------
1575
1576 (285) 16-Jul-04 M Separate and independent log_selector for rejectlog
1577
1578 For example: mainlog_selector and rejectlog_selector, with log_selector setting
1579 both of them.
1580 ------------------------------------------------------------------------------
1581
1582 (288) 10-Aug-04 M Option for verify to require MX
1583
1584 e.g. verify=sender/require_mx
1585 I'm not too keen because this is rather special purpose, and of course could
1586 only apply if the verification happened to hit a dnslookup router.
1587 ------------------------------------------------------------------------------
1588
1589 (289) 10-Aug-04 L Option to treat defers in database lookups as "not found"
1590
1591 This is so that alternatives can be coded for when databases are down. A
1592 suggested patch has been sent, but it just catches all instances of "defer"
1593 from a lookup in an expansion string. These can occur for a number of different
1594 reasons, not just connection failures. I think that we need a specific
1595 "connection failed" indicator. Also, what about lookups in lists?
1596 ------------------------------------------------------------------------------
1597
1598 (291) 13-Aug-04 M An ACL or "local_scan()" to be run on size excession
1599
1600 The idea is to give something a chance to look at the data so far received when
1601 more than message_size_limit (or some other limit) has arrived. I am not sure
1602 how useful this would actually be in practice.
1603 ------------------------------------------------------------------------------
1604
1605 (292) 13-Aug-04 M Overall timeout for message reception
1606
1607 A client could in priciple keep an SMTP connection open for a very long time by
1608 trickling in data very slowly. Also, after message_size_limit is exceeded, Exim
1609 continues to swallow the data (though it does not write it to disk) until the
1610 end is reached. Again, the connection could be held open for a very long time.
1611 Some kind of overall time limit for an SMTP connection, possibly reset at the
1612 start of each message, might be helpful in these situations.
1613 ------------------------------------------------------------------------------
1614
1615 (294) 23-Aug-04 L Callouts and AUTH and LMTP
1616
1617 People want to do callouts using LMTP as well as SMTP, and that would also
1618 include sockets as well as TCP/IP connections. Also, people want to make use of
1619 AUTH during the callout checking, on all types of connection. I suppose that
1620 means making TLS available as well. This probably means a rewrite of the code
1621 that actually does the callout. Should we use the relevant transport in a new
1622 "callout" mode instead of keeping things separate? See also 253 and 323.
1623
1624 And here's another submitted idea: "My actual suggestion is that if this model
1625 is followed, the parent process doesn't have to stop the callout process if it
1626 is taking too long to respond: it can return 450 to the incoming connection
1627 within the 5 minute SMTP command timeout and leave the callout process to
1628 continue, in the hope that it will eventually get a result and store it in the
1629 callout cache in time for the sender's next attempt."
1630 ------------------------------------------------------------------------------
1631
1632 (296) 09-Sep-04 S Make deliver_time work for == lines as well as =>
1633
1634 What about ** lines?
1635 ------------------------------------------------------------------------------
1636
1637 (299) 25-Oct-04 S Options to make Sieve "keep" pass to next router
1638
1639 Currently, "keep" saves in the mailbox. Probably need two options, for implicit
1640 and explicit keep commands.
1641 ------------------------------------------------------------------------------
1642
1643 (301) 27-Oct-04 M Use an "ACL" to filter logging
1644
1645 This idea was for ACL syntax to be able to "accept" or "deny" individual log
1646 lines. This would make it possible to have, for example, per-host logging for
1647 certain things. See also 15 above.
1648 ------------------------------------------------------------------------------
1649
1650 (302) 28-Oct-04 M Expand pass_router and redirect_router
1651
1652 Doing this would mean postponing the validity checks till the router was
1653 actually used instead of doing them at start up. It does not seem to be a
1654 facility that will be widely used.
1655 ------------------------------------------------------------------------------
1656
1657 (303) 28-Oct-04 M Support SQL relay
1658
1659 This would make it easier for packagers to support "generic SQL" without having
1660 to choose which one. It can be slotted in using a MySQL interface without
1661 modifying Exim, but native support would be nice.
1662 ------------------------------------------------------------------------------
1663
1664 (304) 02-Nov-04 M A way of seeing the whole message in Perl or ${run
1665
1666 At present, the headers are available in $message_headers, but only part of
1667 the body is visible. The only way to pass the whole body would be as a file
1668 descriptor because it can be very large. See also (42).
1669 ------------------------------------------------------------------------------
1670
1671 (305) 02-Nov-04 M A Perl transport
1672
1673 The suggestion here is that an embedded Perl function takes responsibility for
1674 doing the delivery. I am not at all keen on this. One way of doing it would be
1675 to implement (244), which provides an "on success" string expansion. Then
1676 anyone who wants this could run that on a transport that does nothing.
1677 ------------------------------------------------------------------------------
1678
1679 (306) 09-Nov-04 M Make the search type partial-lsearch*@ be useful
1680
1681 At present, it treats the whole key as a domain for the partial search, then
1682 does the *@ thing. A more sensible plan would be something like:
1683
1684   user@company.com
1685   *@company.com
1686   user@*.company.com
1687   *@*.company.com
1688   *
1689
1690 That is, try the local part and * at each of the partial domain values.
1691 ------------------------------------------------------------------------------
1692
1693 (307) 24-Nov-04 S Check the syntax of Message-ID: header lines
1694
1695 This could be added to "verify=header_syntax" or, if the incompatibility is
1696 felt to be too great, an additional condition, or a sub-option, could be added.
1697 ------------------------------------------------------------------------------
1698
1699 (308) 24-Nov-04 S Add $body_longlinecount and $header_longlinecount
1700
1701 These variables would hold the number of physical lines in the body and header
1702 that were longer than 998 bytes. This would be fiddly to implement because of
1703 the way Exim currently reads the input. It isn't just a trivial patch.
1704 ------------------------------------------------------------------------------
1705
1706 (309) 01-Dec-04 S/M Queue runners should get locks before forking
1707
1708 If a queue-runner opened the -D file and took out the lock before forking, it
1709 would waste fewer resources if the message was already being delivered. But how
1710 often would this actually matter in practice?
1711 ------------------------------------------------------------------------------
1712
1713 (310) 06-Dec-04 S After "personal" save what matched
1714
1715 The idea is to save the email address that actually was found in the message
1716 in a variable so it can be used (e.g. as the From: address in an autoreply).
1717 ------------------------------------------------------------------------------
1718
1719 (311) 07-Dec-04 ? More flexible SMTP response codes
1720
1721 The requestor wanted to be able to specify, for example, 551 in an ACL deny
1722 instead of 550, and also vary the defer code. The first digit, however, should
1723 remain fixed. In addition to main codes, enhanced status codes (RFC 2034) were
1724 requested. (As far as I can tell, they have never been highly popular.)
1725 ------------------------------------------------------------------------------
1726
1727 (312) 10-Dec-04 ? Shadow remote transports
1728
1729 Unless a lot of work is done, this would be restricted to another remote
1730 transport. A similar effect could therefore be achieved with "shadow_hosts"
1731 which are like fallback_hosts but which operate on success.
1732 ------------------------------------------------------------------------------
1733
1734 (313) 21-Jan-05 ? Multiple queues
1735
1736 Exim runs poorly if its queue gets too big. Various ways round this are all
1737 to some extent kludges. There has been a suggestion of using multiple
1738 directories instead of just "input". (Originally it was for a whole set of
1739 spool directories, but that introduces complications with the hint files.)
1740 On message arrival, somehow a selection of "input" must be made. Then queue
1741 runners must be startable for the different "queues". Don't forget that the
1742 "msglog" directory is also involved. Perhaps add a new level of indirection:
1743 /var/spool/exim/queue1/{input,msglog}, /var/spool/exim/queue2/....
1744 ------------------------------------------------------------------------------
1745
1746 (314) 15-Feb-05 M Multiple headers_{add,remove} for routers
1747
1748 If headers_{add,remove} could be specified multiple times, it would be easier
1749 for those people that construct configs using .ifdef or .include, etc. See also
1750 333.
1751 ------------------------------------------------------------------------------
1752
1753 (315) 15-Feb-05 M String variables for use in filters.
1754
1755 Currently, only numerical variables are supported.
1756 ------------------------------------------------------------------------------
1757
1758 (316) 21-Feb-05 M Put callout response into a variable
1759
1760 When a callout fails, put the entire SMTP response into a variable. This is not
1761 trivial because we probably should retain it in the cache as well.
1762 ------------------------------------------------------------------------------
1763
1764 (317) 25-Feb-05 S Delete the pid file when the daemon exits
1765
1766 At least try to catch some of the exit routes from the daemon and either delete
1767 or empty the pid file.
1768 ------------------------------------------------------------------------------
1769
1770 (318) 02-Mar-05 S Add current connection count to daemon's exiwhat output
1771 ------------------------------------------------------------------------------
1772
1773 (319) 03-Mar-05 ? Allow file rather than directory for scanning call
1774
1775 "I can call arbitrary scanning software by specifying the full path. I can pass
1776 a directory to be scanned in the arguments. I'd like to be able to pass a
1777 specific file name instead of a directory. I think this would allow me to call
1778 Bogofilter at smtp time. Bogofilter requires a filename, not a directory. The
1779 file would contain the complete email. I suppose there may be other scanning
1780 solutions with a similar requirement."
1781 ------------------------------------------------------------------------------
1782
1783 (321) 07-Mar-05 S Run an ACL on a sync error
1784
1785 ... and possibly "accept" or "deny" it.
1786 ------------------------------------------------------------------------------
1787
1788 (322) 15-Mar-05 M Add a /defer_ok option to verify=reverse_host_lookup
1789 ------------------------------------------------------------------------------
1790
1791 (323) 15-Mar-05 M Make callouts use smtp_data from the smtp transport
1792
1793 This is yet another problem caused by duplicating the SMTP code between the
1794 transport and the callout verification. See item 294 above. Merging the
1795 transport and the callout code could prevent this kind of thing from happening.
1796 ------------------------------------------------------------------------------
1797
1798 (324) 04-Apr-05 ? Make -bP show ACLs
1799
1800 This is in the Bugzilla as #10.
1801 ------------------------------------------------------------------------------
1802
1803 (326) 03-May-05 ? Queue-only on memory shortage
1804
1805 This is bugzilla #17. The idea is to have something like queue_only_load that
1806 triggers on a shortage of main memory.
1807 ------------------------------------------------------------------------------
1808
1809 (327) 06-May-05 ? Break delay if connection drops
1810
1811 Currently, "delay=5m" (e.g.) waits for 5 minutes. If we can detect that the
1812 connection has died in the meantime, it would make sense to break the delay.
1813 However, it doesn't seem possible to detect a dropped connection without trying
1814 to read from it.
1815 ------------------------------------------------------------------------------
1816
1817 (328) 10-May-05 S After "unseen" routing, pass on header additions/deletions
1818
1819 Currently, when an "unseen" router accepts an address, header additions and
1820 deletions stick with that address, and the "clone" address that continues to be
1821 routed starts off without any additions or removals. This request is for an
1822 option to select other actions: retain header actions with the clone only, or
1823 pass them on to both addresses. See also 333.
1824 ------------------------------------------------------------------------------
1825
1826 (329) 12-May-05 S Create message ID at MAIL FROM time
1827
1828 Currently, the ID is created only when Exim is about to create the data (-D)
1829 file for an incoming message. In other words, after it knows it really is going
1830 to accept the message. Creating the ID earlier would mean that rejection
1831 messages in the log would be tagged with an ID, and this is seen as desirable
1832 by some people.
1833 ------------------------------------------------------------------------------
1834
1835 (330) 31-May-05 ? Default interface for -bh and default port for -oMi
1836
1837 I do not think it worth putting effort in here for these reasons: If a host has
1838 multiple interfaces, there's no easy way to choose one to be the default for
1839 $interface_address when -bh is used. If the host does not have multiple
1840 interfaces, chances are the configuration won't be looking at
1841 $interface_address anyway. If you are setting -oMi, and care about the port, it
1842 isn't much effort to tack on a port number, though in this case, I suppose a
1843 default of 25 is "obvious".
1844 ------------------------------------------------------------------------------
1845
1846 (331) 31-May-05 M More than one retry time per host
1847
1848 Consider this example: an attempt to start a TLS connection to a host gets a
1849 temporary error. This stops *all* connections, both for TLS and otherwise.
1850 Different retry times for different circumstances are needed to get round this.
1851 What are the circumstances? TLS/not-TLS is clearly one, but sometimes you don't
1852 know if you are going to try TLS until you have connected. So this makes sense
1853 only if require_tls is used. Perhaps the multiple retry times should just be
1854 per-transport, to avoid these difficulties. If we made all retry keys depend on
1855 the transport, this would happen automatically.
1856 ------------------------------------------------------------------------------
1857
1858 (332) 03-Jun-05 S A "receive time taken" log selector
1859
1860 This suggestion is to at an RT= item to the <= line, giving the time it
1861 actually took to receive the message.
1862 ------------------------------------------------------------------------------
1863
1864 (333) 06-Jun-05 L Re-think and re-implement header handling
1865
1866 There are a number of items related to headers above. Better facilities for
1867 handling headers at ACL time are needed. The whole way in which Exim handles
1868 headers should be re-planned and re-implemented in a more consistent manner.
1869
1870 These are the main previous items:
1871
1872 Exim 3 Wish List: 41, 85, 149, 187.
1873 Exim 4 Wish List: 55, 62, 63, 160, 212, 270, 314, 328.
1874 ------------------------------------------------------------------------------
1875
1876 (334) 07-Jun-05 M Support for messages larger than 2G
1877
1878 This is probably a longish-term thing at the moment. Quotas over 2G are now
1879 supported, but not individual messages; no doubt one day this will be wanted.
1880 ------------------------------------------------------------------------------
1881
1882 (336) 16-Jun-05 M Show recipient(s) after header check failure
1883
1884 The mainlog line for "There is no valid sender in any header line" shows the
1885 sending host and the envelope sender, but does not show any recipients. There
1886 has been a request to show recipients. Presumably this should be on some new
1887 log selector, and it must have a cutoff maximum number of recipients. NOTE: the
1888 data in the reject log does show the envelope recipients as part of its
1889 additional data.
1890 ------------------------------------------------------------------------------
1891
1892 (337) 29-Jun-05 S Add "defer" to $recipient_verify_failure
1893
1894 This is for when defer_ok was set when verifying recipients. Since this isn't
1895 for a failure, we probably also need "ok" for the non-fail case.
1896 ------------------------------------------------------------------------------
1897
1898 (338) 14-Jul-05 M Change to Bind 9 API
1899
1900 Exim uses the original API for calling the DNS resolver. There is a newer API
1901 available, and noises are being made in some OS that compatibility with the old
1902 API is going to be dropped. Nevertheless, there are sure to be systems about
1903 for ages that require the use of the old API. Therefore, we will have to
1904 implement not only an interface to the new API, but a backwards compatibility
1905 feature. It would be nice if this was automatic.
1906 ------------------------------------------------------------------------------
1907
1908 (339) 28-Jul-05 S Log name of maildir file
1909
1910 This wish is for an option to log the name of the file that is written in
1911 maildir format (e.g. time.pid.host).
1912 ------------------------------------------------------------------------------
1913
1914 (340) 30-Aug-05 M Match more than one item
1915
1916 match_address, for instance, matches one address to a list. The wish is to be
1917 able to supply two lists; for each address in the first list, search the
1918 second. Maybe something like ${match_any{...}{...}} is needed.
1919 ------------------------------------------------------------------------------
1920
1921 (341) 15-Sep-05 S Add /return_path_retain to submission mode
1922
1923 This would re-instate the behaviour prior to change 4.52/PH/04.
1924 ------------------------------------------------------------------------------
1925
1926 (342) 26-Sep-05 T Log and maybe defer odd values for condition pre-condition
1927
1928 Odd values for "condition" in an ACL cause it to defer. In a router, they are
1929 treated as "true". At least they should be logged in a router, and perhaps they
1930 should also defer, for compatibility with ACLs.
1931 ------------------------------------------------------------------------------
1932
1933 (343) 03-Oct-05 M A query-style lookup for scanning flat files
1934
1935 The natural syntax for this would be to use a regex, like this:
1936 ${lookup regex{/some/file regex}{found-string}{not-found-string}}
1937 However, it would be natural to want to use $1 etc in the found-string; this
1938 would be hard because of the lookup caching (if repeated, the lookup won't
1939 actually be done and therefore the numerical variables won't be set), and in
1940 any case, even without caching (and it could, I suppose, be disabled for this
1941 lookup) those variables are not in the right storage pool even if they were
1942 preserved after the lookup.
1943
1944 An alternative approach might be to implement something like this:
1945
1946   ${scanfile{/some/file}{sub-expression}}
1947
1948 where the sub-expression is expanded for every line in the file, with each line
1949 in turn being put into $value. This is like a conditional ${readfile, and in
1950 fact ${readfile could be written using ${scanfile. It would be nice to find a
1951 way of stopping the scan once something has happened. The only thing I can
1952 think of is to invent a variable that changes when scanning a line generates
1953 some non-null text, and then always to stop on a forced failure. That would
1954 allow expressions like this:
1955
1956   ${scanfile{/some/file}
1957     {
1958     ${if eq{$generated}{}{${if match{regex}{$value}{something}}} fail}
1959     }}
1960
1961 It's all rather clumsy. Once a line has matched and generated some text, the
1962 next iteration would stop the scan. Another thought: maybe use $scanline
1963 instead of $value (to save confusion) and have $scantext containing everything
1964 that's been generated so far. That sounds pretty flexible.
1965 ------------------------------------------------------------------------------
1966
1967 (344) 10-Oct-05 M Make debug_print work in authenticators
1968 ------------------------------------------------------------------------------
1969
1970 (345) 14-Oct-05 M Standardize rejection messages
1971
1972 "The parsing for rejection lines is a bit of a mess, and fairly
1973 unmaintainable. Do you think it would be possible to standardise
1974 rejection/refusal log messages? How about something like:
1975
1976 (<ID>|16 Spaces) *< (Connection|MAIL|RCPT|HELO|EHLO|DATA) rejected (from
1977 <Address>)?: <Reason> (\(<Detail>\))?"
1978 ------------------------------------------------------------------------------
1979
1980 (346) 20-Oct-05 S Set $domain and $local_part in retry matching
1981
1982 Currently, these variables are unset. Make it like rewrite matching.
1983 ------------------------------------------------------------------------------
1984
1985 (347) 15-Nov-05 M Arrange to expand data from wildlsearch
1986
1987 This would allow keys that are regular expressions to set up numerical
1988 variables that are included in the data. This has to be done inside the lookup
1989 code, because of caching. Probably means we have to invent ewildlsearch and
1990 enwildlsearch.
1991 ------------------------------------------------------------------------------
1992
1993 (351) 31-Mar-06 ? Allow some/all/a few internal variables to be set
1994
1995 The original idea was to allow "set authenticated = x" to pretend a connection
1996 is authenticated after other conditions are true. This can, of course, be
1997 packaged up using macros in other ways. Setting other variables could cause
1998 problems.
1999 ------------------------------------------------------------------------------
2000
2001 (352) 04-Apr-06 S Add +accept_defer for host lists (and maybe others)
2002
2003 At present, a defer causes a delivery defer. For non-critical ACLs there are
2004 times when it may be better to accept. See also 226 and 289.
2005 ------------------------------------------------------------------------------
2006
2007 (354) 30-Jun-06 ? Extensions to SMTP error codes
2008
2009 A number of ideas arose following a discussion on the mailing list. I record
2010 them here so that they don't get lost. The motivations were to support the 551
2011 bounce code and enhanced status codes. Suggestions are to add a new ACL
2012 feature, possibly one of:
2013
2014   errorcode = 511
2015   control = errorcode=551
2016   message = 551 xxxx
2017
2018 where in the last case, it's recognized by being 3 digits. In all cases, the
2019 first digit must be "right" for the circumstance - ignore or fault if not?
2020
2021 To handle ESC, perhaps a new variable called $smtp_errorcode, settable by an
2022 option in a router when it fails, would do the trick. It could be used in any
2023 of the above modifiers.
2024 ------------------------------------------------------------------------------
2025
2026 (355) 30-Jun-06 ? Facility to permit experiments with SMTP extensions
2027
2028 This is what was suggested:
2029
2030 - adding some expansion variables: $ehlo_extensions (which will
2031    hold the remote server supported smtp extensions announced
2032    in the ehlo) and $rcpt_arguments with any RCPT extra argument
2033
2034 - a main configuration option for adding ehlo extensions to the
2035    ehlo response, like:
2036
2037    extra_ehlo_extensions = XFOO : XBAR
2038
2039 - a extra option for the smtp transport to add arguments to
2040    the RCPT TO command, like:
2041
2042    rcpt_args = FOO=BAR  (will make exim issue RCPT TO:<a@b.c> FOO=BAR
2043    when delivering that message)
2044
2045 - a new acl for unknown smtp commands
2046
2047 This should be very simple to implement and will allow to make
2048 some experiments and implement custom extensions, i.e. one to
2049 known if remote client will redirect on 551 or not. Also the acl
2050 for unknown smpt command could be used for other purposes, like
2051 to dectect and react to some kiddies that send things like
2052 http://... on the smtp port.
2053 ------------------------------------------------------------------------------
2054 --- HWM 355 ------------------------------------------------------------------
2055 ---------------------------- End of WishList ---------------------------------