Added a "connect=<time>" option to callouts, for a separate timeout
[users/jgh/exim.git] / doc / doc-misc / WishList
1 $Cambridge: exim/doc/doc-misc/WishList,v 1.5 2004/11/02 09:39:44 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.
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.
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 (146) 15-May-2000 M  Allow SMTP error codes in retry rules
299
300 This would allow special handling of certain errors from certain hosts. In
301 particular, it would allow failing of certain 4xx codes.
302
303 This is now available for 4xx responses to RCPT commands. Is anything more
304 needed?
305 ------------------------------------------------------------------------------
306
307 (148) 15-May-2000 S  Warn recipient if message rejected for quota excession.
308 Heinz Ekker
309
310 Maybe not all that small, because the possibility of retrying must be taken
311 into account.
312 ------------------------------------------------------------------------------
313
314 (149) 19-May-2000 L  Make added headers visible in filters and other places
315 Hans Morten Kind
316
317 Headers added by directors/routers are not visible in subsequent processing.
318 This is a request to make them visible. What about removed headers? This could
319 be tricky to specify, hence the L.
320
321 A separate but related issue is the effect of headers added by "unseen"
322 directors. These are documented in chapter 19 as not being accumulated. Should
323 any change be made?
324 ------------------------------------------------------------------------------
325
326 (155) 16-Jun-2000 M  Special handling for certain hosts
327 mark david mcCreary
328
329 A means of changing the transport depending on the host name/IP of the most
330 preferred MX record so that all domains that route to certain hosts can be
331 handled specially. Maybe this could be a variable that is available in the
332 expansion of the "transport" option.
333 ------------------------------------------------------------------------------
334
335 (158) 29-Jun-2000 S  Configure "From" in bounces
336 Ben Parker
337
338 Cf Reply-To.
339 ------------------------------------------------------------------------------
340
341 (159) 07-Jul-2000 M  Keep messages for fixed time
342 Gary Palmer
343
344 An option to keep messages on the queue for a specified time, even if all their
345 destination hosts have timed out.
346 ------------------------------------------------------------------------------
347
348 (164) 17-Aug-2000 S  sender_unqualified_auth_hosts
349
350 To allow authenticated hosts to send unqualified addresses. Presumably it
351 needs received_... as well.
352 ------------------------------------------------------------------------------
353
354 (167) 05-Sep-2000 L  Support for ODBC
355
356 This would allow access to databases that don't have native support built into
357 Exim. See http://www.openlinksw.com/info/docs/rel3doc/unix/odbcsdk.htm
358 ------------------------------------------------------------------------------
359
360 (168) 06-Sep-2000 M  Deliver messages that alias to nothing to a given address
361 Dr ZP Han
362
363 If other people are managing alias lists, and one is empty, bounce that
364 delivery to a given address rather than freezing the message. Use the errors_to
365 address?
366 ------------------------------------------------------------------------------
367
368 (172)  11-Sep-2000 S  Allow file/directory in appendfile to override
369 "Michael J. Tubby"
370
371 When appendfile is called from forward or filter files, it ignores file or
372 directory settings. Maybe they should override. The path set by the forward or
373 filter is available in $address_file these days, so it could be used to create
374 a longer path.
375 ------------------------------------------------------------------------------
376
377 (173)  18-Sep-2000 S  A way of doing lsearches with EOL terminated keys
378 Jason Robertson
379
380 This is for looking up things like subject contents. Probably need an option to
381 exim_dbmbuild to make them into DBM files.
382 ------------------------------------------------------------------------------
383
384 (174)  19-Sep-2000 S  A way of using a different port for fallback hosts.
385 Dean Brooks
386 ------------------------------------------------------------------------------
387
388 (181)  10-Nov-2000 S  Compile-time options for ignoring Sendmail options
389
390 So that new ones could be accommodated easily.
391 ------------------------------------------------------------------------------
392
393 (183)  04-Dec-2000 L  dns_means_nonexist_after
394 Dave C.
395
396 In other words, wait a bit before giving up. This needs a mechanism for
397 remembering, which is not currently available. To be borne in mind for the
398 future.
399 ------------------------------------------------------------------------------
400
401 (184)  04-Dec-2000 M  Log more details of local caller
402 J. Nick Koston
403
404 "I was wondering if it was possible for exim to log the parent pid's cwd and
405 exe when it is called from a script/invoked by actually running /usr/sbin/exim
406 or /usr/sbin/sendmail."  Question: is this information actually/easily
407 available to Exim? Needs investigation.
408 ------------------------------------------------------------------------------
409
410 (186)  19-Dec-2000 S  A simple utility to reset a retry time
411 Marc Haber
412
413 Basically, to do what exim_fixdb "delete" can do, but straightforwardly. There
414 could be an interface from eximon.
415 ------------------------------------------------------------------------------
416
417 (187)  02-Jan-2001 M  Wildcarding in headers_remove
418 Tamas TEVESZ
419
420 What I'd like to see is it to handle globs (or regexps, but i'm not sure this
421 latter would worth the hassle), in a way like:
422
423         headers_remove = "X-*:Additional-header"
424 ------------------------------------------------------------------------------
425
426 (188)  02-Jan-2001 S  Make pipe timeout a temporary error
427 Georg v.Zezschwitz
428
429 A way to make a timeout into a temporary error.
430 ------------------------------------------------------------------------------
431
432 (190)  03-Jan-2001 M  Multiple message operations in eximon
433 ------------------------------------------------------------------------------
434
435 (195)  19-Mar-2001 T TCP window size
436
437 TCP window size for receiving/sending, SMTP client/server.
438 ------------------------------------------------------------------------------
439 ------------------------------------------------------------------------------
440
441
442
443 ------------------------------------------------------------------------------
444 ------------------------------------------------------------------------------
445 -----            Things that didn't make it into Exim 4                 ------
446 ------------------------------------------------------------------------------
447 ------------------------------------------------------------------------------
448
449 . An option to send messages to postmaster when ignore_errmsg_errors_after
450 times out.
451
452 . When an address is being routed, its constituents are in $local_part and
453 $domain, but there is currently no variable that contains the whole thing. It
454 could be put into $recipient, but that risks confusion with $recipients
455 (which is available in system filters). Maybe $address could be used?
456
457 . The ability to relay to host X without knowing all the domains that host X
458 might have. At ACL time, one would need to verify the recipient, and determine
459 that it routed to host X.
460
461 . A new lookup library that operates on a specially prepared file of IP
462 addresses and masks so that a single "lookup" yields a yes/no answer. This
463 should be a freestanding thing - needs a utility to build the file from a list.
464
465 . People want to change the wording of messages; can we find an efficient way
466 of allowing this? (Maybe put all messages into a separate module?) The problem
467 is not in the messages themselves, but in the values that get inserted into
468 messages. Would have to invent a new kind of function that used identified
469 values rather than positional ones. Use GNU gettext?
470
471 . Invent lf_hosts for those that may use LF without CR. Any other RFC
472 things we need to worry about?
473
474 . A user would really like to see something similar, perhaps with
475 "ID=$authenticated_id", similar to "helo=" and "ident=" in the default received
476 header. BUT there are security issues. Maybe give it as a commented out option
477 in the default configuration?
478
479 . Consider expanding further options that take integer values. What about
480 smtp_xxx options for different limits at different times of day (for example)?
481 What about tls_advertise_hosts (so can look at incoming IP/port)?
482
483 . How about a "hold hosts" option (cf hold_domains) to hold delivery to certain
484 hosts?
485
486 . Allow user filters to use "headers add", but probably not remove. Or maybe
487 just implement "allow" options for both of these features.
488
489 . Have the return from pipe in a variable, so that (e.g. error_message_file)
490 can make use of it.
491
492 . Implement randomize for ldap/sql servers.
493
494 . Add an option for ETRN that says "wait for the command to finish, and use its
495 stdout as the SMTP response."
496
497 . -odsomething for "ignore retry when doing immediate delivery".
498
499 . Add an option to the smtp transport to make it treat 5xx on connection as if
500 it were 4xx. Or possible add a sophisticated "after command X, treat xxx as
501 yyy".
502
503 . A way of rewriting addresses in non-standard header lines such as
504 Mail-Followup-To.
505
506 . Global option to enable initgroups() for exim uid. Default off.
507
508 . When verifying a sender, should it be rewritten with any T rewrites, because
509 it would be so rewritten if it actually was a recipient in a message?
510
511 . Sean Witham wants a way of defining macros that are not privileged, and a
512 sort of #ifdef structure that allows for different configurations in the same
513 file.
514
515 . Allow :fail: to specify that 551 be used instead of 550. Maybe allow a code
516 at the start, optionally? What about :defer:?
517
518 . SMTP timeout in middle of receiving message: log sender address if known, and
519 possibly message_id if known.
520
521 . Make -brw show rewrites for transports too.
522
523 . Have the MTA log destinations that have timed-out on a ident request and
524 no longer send rfc1413_queries to them. Add an option for how not to cache
525 these entries.
526
527 . Options and/or a utility to enable non-privileged users to view the queue
528 (e.g. -bpp), manipulate their own messages, etc.
529
530 . Specify a port along with a host in a route_list.
531
532 . A generalized "From" escaping scheme that also escapes >From so that the
533 whole thing can be reversed.
534
535 . There was a request for the \dns_again_means_nonexist\ option not to be
536 instantaneous, but to operate only after the DNS has been giving "try again"
537 for some time. Use the misc hints database.
538
539
540
541 ------------------------------------------------------------------------------
542 ------------------------------------------------------------------------------
543 -----                     The Exim 4 Wish List                          ------
544 ------------------------------------------------------------------------------
545 ------------------------------------------------------------------------------
546
547 (1)  01-Jan-02  U  Use of dynamically loaded libraries.
548
549 People want Exim to use dynamically loaded modules for a variety of reasons.
550 When I started to create Exim, I never expected anything other than source
551 distribution; the RPMs and inclusions in OS distributions caught me by
552 surprise. I know very little about the mechanics of dynamic loading, but I'm
553 aware that not all operating systems support it. I'm also aware that not all
554 people support it!
555
556 Furthermore, a way round this might be to supply more hooks along the lines of
557 local_scan(). Then people can write their own dynamic loaders if they want.
558 ------------------------------------------------------------------------------
559
560 (3)  01-Jan-02  U  Test for over-quota at SMTP time
561
562 This is a hard one, because the only way to test for over quota is to try to
563 deliver a message, certainly if system quotas are being used. And also, the
564 only available size at RCPT time is the SIZE option, though of course the test
565 could be run at DATA time. I think maybe we leave this one to an external
566 program, and require people to use ${run} to access the data. Let someone else
567 figure out how to extract the current mailbox size!
568
569 One suggestion is to implement
570
571   ${file_size:/path/to/file}
572   ${directory_size:/path/to/directory}
573
574 so that explicit checks can be done. It may be necessary to have four
575 operators, two being based on the block count, and two showing the "visible"
576 size. Directory scanning is expensive; is there any scope for caching? It would
577 seem not (you don't often get two addresses to the same user).
578 ------------------------------------------------------------------------------
579
580 (4)  01-Jan-02  S  Option to reject if no From: or Date: header line
581
582 Exim, in common with many other MTAs, inserts a From: or Date: header line if
583 one is missing. (It also inserts a blank Bcc:, but that is no longer needed by
584 RFC 2822 - it was by 822.) The suggestion is an option to give an error
585 instead. This could be done by making it possible to detect these insertions in
586 the acl_smtp_data ACL.
587 ------------------------------------------------------------------------------
588
589 (6)  01-Jan-02  S  Option to disable the use of -t
590 Dave C.
591
592 Would require work so that Exim itself doesn't use -t.
593 ------------------------------------------------------------------------------
594
595 (7)  01-Jan-02  M  Avoid showing LDAP passwords in log lines for LDAP errors
596 John W Baxter
597
598 May be tricky, because at the higher levels, the format of the query is not
599 understood.
600 ------------------------------------------------------------------------------
601
602 (8)  01-Jan-02  S  Expand once_repeat in autoreply
603 John Jetmore
604 ------------------------------------------------------------------------------
605
606 (9)  01-Jan-02  S  Headers as well as body in file for autoreply
607 Florian Laws
608 ------------------------------------------------------------------------------
609
610 (10) 01-Jan-02  T  Make "true" and "false" valid expansion conditions
611
612 This might help with "and" and "or" when one of the sub-conditions is, for
613 example, a lookup.
614 ------------------------------------------------------------------------------
615
616 (11) 01-Jan-02  S  Allow a filter to include another file.
617 ------------------------------------------------------------------------------
618
619 (12) 01-Jan-02  M  Support for different SQL servers per query
620
621 In other words, the global mysql_servers etc. is too restrictive.
622 ------------------------------------------------------------------------------
623
624 (14) 01-Jan-02  M? Support for Sendmail milters
625
626 This could perhaps be done by extending the local_scan() idea and providing a
627 "standard" module which interfaced to milter.
628 ------------------------------------------------------------------------------
629
630 (15) 01-Jan-02  M  More hooks like local_scan()
631
632 One request has been for a similar hook at logging time. For other SMTP
633 interactions, maybe a hook into the ACL? See also 79 and 218 and 301.
634 ------------------------------------------------------------------------------
635
636 (17) 11-Jan-02  M  The construction of config.h needs refactoring
637
638 This has been hacked about substantially since the original implementation.
639 Given that there is a program (buildconfig), the messing around with the
640 environment could be abolished. Also, the distinction between "yes" and "no"
641 isn't always properly made (tests for #ifdef don't care about the value).
642 ------------------------------------------------------------------------------
643
644 (18) 24-Jan-02  S  Make $value retain its value after a top-level expansion
645
646 This was specifically for use in filter files. Currently it reverts to empty
647 as a consequence of save/restore for every lookup. It might be confusing to
648 do otherwise, however.
649 ------------------------------------------------------------------------------
650
651 (19) 29-Jan-02  L  Use of multiple DBM libraries
652
653 The problem is how to handle conflicting function names. Much research is
654 needed.
655 ------------------------------------------------------------------------------
656
657 (20) 29-Jan-02  S  Make system filter refreeze after manual thaw
658
659 Currently, a "freeze" in a system filter doesn't freeze after a manual thaw.
660 ------------------------------------------------------------------------------
661
662 (21) 12-Feb-02  S  Expand return_size_limit
663 Joachim Wieland
664
665 Is this really worth it? A per-transport value is also suggested - that would
666 mean remembering the value with each failed address and taking a minimum or
667 a maximimum (which?).
668 ------------------------------------------------------------------------------
669
670 (24)  21-Feb-02 ?  A way of testing TLS using -bh
671 ------------------------------------------------------------------------------
672
673 (27)  06-Mar-02 M  Distinguishing between different temporary callout errors
674
675 The request was to distinguish between a 4xx error and a failure to connect.
676 Problem is: how to cope when there is more than one host? Maybe only if ALL
677 fail to connect. An option like /callout_no_connect_ok.
678 ------------------------------------------------------------------------------
679
680 (30)  12-Mar-02 S  Add "recipients" precondition to routers.
681
682 This would avoid having to use "condition". (See also requirement for $address
683 mentioned above.) However, it would also require adding a caching feature, and
684 probably $recipient_data (cf $domain_data).
685 ------------------------------------------------------------------------------
686
687 (31)  21-Mar-02 S  Variables that indicate 8-bit message and 8-bit host, and
688                    a way of using them to suppress a transport filter
689
690 A variable that is set if the message contains 8-bit characters, and another
691 that is set during the smtp transport if the host supports 8-bit. Then we also
692 need a condition that's expanded in the transport to control whether the filter
693 is run or not (e.g. transport_filter_condition).
694 ------------------------------------------------------------------------------
695
696 (32)  22-Mar-02 M  More info about callout fails for header sender verify
697
698 When there's a callout failure for an envelope address, the error message
699 contains details (by default) of the callout commands. This doesn't happen
700 for addresses in the header because there may be more than one of them, and
701 deciding how to give that information is tricky. Can we do better?
702 ------------------------------------------------------------------------------
703
704 (33)  25-Mar-02 S  Option to assume nomatch in dnslist lookups that time out
705
706 Currently this causes a DEFER.
707 ------------------------------------------------------------------------------
708
709 (34)  26-Mar-02 S  Access to DNS lookup functions via local_scan() API
710
711 This would make local_scan() writers lives easier for DNS usage.
712 ------------------------------------------------------------------------------
713
714 (36)  02-Apr-02 ?  A way of throttling, but allowing, relaying that would
715                    otherwise be denied
716
717 This was suggested in connection with anonymizing messages. The "wait" command
718 in ACLs goes some way towards this. Is it enough?
719 ------------------------------------------------------------------------------
720
721 (41)  17-Apr-02 T  Make config.samples available as a directory for ftp
722
723 This is so that people can browse individual samples directly.
724 ------------------------------------------------------------------------------
725
726 (42)  23-Apr-02 T  An option not to flatten newlines in $message_body.
727
728 Or maybe better to provide $message_body_nl so as to have both.
729 ------------------------------------------------------------------------------
730
731 (43)  23-Apr-02 T  An option to treat 4xx as 5xx from STARTTLS
732
733 This would make Exim retry in clear unless the host is in hosts_require_tls.
734 ------------------------------------------------------------------------------
735
736 (44)  24-Apr-02 ?  Use errors_to for timeouts after redirect syntax errors
737
738 A syntax error in redirection data (with skip_syntax_errors false) causes a
739 defer. Eventually, the address may time out. This suggestion is that, when it
740 does, the bounce is sent to errors_to rather than to the sender.
741 ------------------------------------------------------------------------------
742
743 (45)  13-May-02 T  smtp_etrn_serialize_id = ....
744
745 The default behaviour would be equivalent to
746
747   smtp_etrn_serialize_id = $smtp_command_argument
748 ------------------------------------------------------------------------------
749
750 (47)  16-May-02 S  Access to all addresses in batched local delivery
751 Miquel van Smoorenburg
752
753 In a batched local delivery with more than one recipient, there's no way to
754 access the list of recipients for doing custom things, such as stuffing them
755 all into a header. (BSMTP is the only approach; not everybody can use it.)
756 Suggested patch supplied.
757 ------------------------------------------------------------------------------
758
759 (48)  21-May-02 M  Support for ATRN (server and client)
760 Brian Candler
761
762 Server: If Exim had the ability to accept an ATRN command and then simply
763 invoke an external program, passing the SMTP stream on stdin and stdout and
764 the authenticated id as a parameter, that would do the job nicely.
765
766 Client: We need a variant of 'exim -bs' which would connect to a specified
767 host, send AUTH/ATRN, and then accept incoming messages as usual.
768 ------------------------------------------------------------------------------
769
770 (50)  22-May-02 T  Add comment (duplicate address) to Envelope-To:
771
772 This is just to minimize the confusion some people have.
773 ------------------------------------------------------------------------------
774
775 (51)  07-Jun-02 S  Option to use another address in callout MAIL FROM
776
777 This would be an address to try if MAIL FROM:<> failed. Is this actually going
778 to be helpful? See also 101.
779 ------------------------------------------------------------------------------
780
781 (53)  11-Jun-02 S  Make local_scan() dynamically loadable
782
783 David Woodhouse sent a patch. There's a more sophisticated one from Marc
784 Merlin. (See also Peter Benie's comments.) But should the base Exim have all
785 this in it?
786 ------------------------------------------------------------------------------
787
788 (54)  11-Jun-02 S  Ignore -Ac if called as mailq
789
790 I am not sure if this makes sense. This flag requests a listing of a different
791 mail queue, but Exim doesn't work like that. Is is not better for people to be
792 aware of this?
793 ------------------------------------------------------------------------------
794
795 (55)  13-Jun-02 M  Rewriting whole header lines
796 Dave C.
797
798 Current rewriting rules apply to individual addresses in header lines. This
799 feature would use a regex to match whole lines and replace them. It could be
800 useful for patching up syntactically invalid lines from crappy clients, before
801 the syntax check kicks in. (It might also be useful for hiding local host names
802 in Received: headers.)
803 ------------------------------------------------------------------------------
804
805 (58)  26-Jun-02 ?  Extend PAM support
806
807 Apparently PAM can do challenge-response authentication. The Exim interface
808 can't handle this. Investigate and think about how to do this.
809 ------------------------------------------------------------------------------
810
811 (59)  26-Jun-02 M  A "custom" authenticator
812
813 ... that is simply a front end to external code. For example, there may be
814 an external API that hides the user password and does CRAM-MD5 when passed the
815 details of the challenge and response.
816 ------------------------------------------------------------------------------
817
818 (60)  27-Jun-02 S  Make trusted_users a local part list
819
820 So that it can use lsearch etc.
821 ------------------------------------------------------------------------------
822
823 (62)  28-Jun-02 S  Remove headers before DATA ACL
824 Patrice Fournier
825
826 "I'd like to be able to give Exim a list of headers that must be removed
827 from the message at arrival, before data_acl processing (and before the
828 rcpt_acl warn headers are added to the message)."
829 ------------------------------------------------------------------------------
830
831 (63)  28-Jun-02 S  Access to ACL-added headers in ACLs
832 Patrice Fournier
833
834 "I'd like also to be able to look at the already added headers by a
835 rcpt_acl when still checking rcpt_acl (either later in the acl for the same
836 RCPT TO or for another RCPT TO)."
837 ------------------------------------------------------------------------------
838
839 (65)  28-Jun-02 M  Expand fallback hosts
840
841 See also 174 of the Exim 3 list.
842 ------------------------------------------------------------------------------
843
844 (66)  01-Jul-02 M  Use Berkeley DB 4 concurrent access features
845
846 This might give better performance on very busy sites by reducing the
847 contention for access to hints databases. Rob Butler points out that this could
848 also be useful to allow updates of other DB files used by Exim to happen
849 concurrently. Another thing to think about with BDB is the possible use of
850 B-trees.
851 ------------------------------------------------------------------------------
852
853 (68)  01-Jul-02 S  Add sender host to delivery line
854
855 "Would it be possible to have a "sending_host_on_delivery" option that
856 logs the IP of the sending host in the => line?" Also requested was amount of
857 data transmitted for a non-delivery attempt.
858 ------------------------------------------------------------------------------
859
860 (69)  03-Jul-02 T  Log selector to log whoson checs
861 Matt Bernstein
862
863 "I'd quite like a log_selector option which could spot you'd done a whoson
864 lookup in your DATA ACL and maybe log it as W=user."
865 ------------------------------------------------------------------------------
866
867 (70)  09-Jul-02 S  A way of changing the RCPT address in an accept router
868
869 So as to avoid duplication problems when sending multiple addresses in multiple
870 copies to the same address.
871 ------------------------------------------------------------------------------
872
873 (73)  17-Jul-02 M  Match a list from within a condition
874
875 e.g.  ${if matchdomain {$domain}{+domainlist} ...
876       ${if matchhost {$sender_host_address}{1.2.3.4/10:2.3.4.5/16}...
877
878 Thought needed about how to handle host names. This may be too messy to specify
879 cleanly.
880
881 22-Apr-04: Implemented for domains, addresses, and local parts. Hosts are
882 too messy!
883 ------------------------------------------------------------------------------
884
885 (74)  22-Jul-02 M  Extend -bV to do more semantic checking
886
887 For example, diagnose "local_hosts" that should probably be "+local_hosts".
888 ------------------------------------------------------------------------------
889
890 (75)  23-Jul-02 S  Reference option on command line
891
892 The idea here is that a spam scanner that re-injects a message can supply a
893 reference on the command line that gets logged with R=.
894 ------------------------------------------------------------------------------
895
896 (78)  30-Jul-02 S  Expand queue_only (and/or queue_only_file)
897
898 The requirement is to make it possible to queue messages if certain conditions
899 are met (e.g. messages from certain local users). See also 93.
900
901 This control can now be achieved in the ACL - is this still needed?
902 ------------------------------------------------------------------------------
903
904 (79)  31-Jul-02 S  Additional info for log lines
905
906 An option to set an expanded string to be added to <= lines. And also for the
907 other delivery lines? See also 15.
908 ------------------------------------------------------------------------------
909
910 (84)  09-Aug-02 S  Make interfaces available in a variable
911
912 Something like $local_interfaces. Maybe limit the max length.
913 ------------------------------------------------------------------------------
914
915 (85)  12-Aug-02 S/M  Notice database connection failures
916
917 The small version of this just removes a server from the list within a single
918 Exim process when a connection to it fails. The bigger project would use the
919 retry database - but that has implications for bottlenecking and may not be
920 helpful. See also item 109. Another suggestion is to randomize the order in
921 which database servers are tried (randomize_database_servers). And another is
922 to measure response times and remember which server is fastest.
923 ------------------------------------------------------------------------------
924
925 (87)  12-Aug-02 M  Partial lookups for query-style lookups
926
927 The suggestion is to allow the lookup to contain a keystring (same syntax as
928 single-key lookups) which is then permuted and place in a suitable variable
929 each time - $permuted_key or something.
930 ------------------------------------------------------------------------------
931
932 (88)  20-Aug-02 S  Allow special retrying for forced defer
933
934 See also 146 in Exim 3 wish list above.
935 ------------------------------------------------------------------------------
936
937 (89)  20-Aug-02 S  Also allow retry rules on routers and transports
938 ------------------------------------------------------------------------------
939
940 (90)  23-Aug-02 M  Macros with arguments, a la C
941
942 I don't like this, because of the cost of frequent interpretation.
943 ------------------------------------------------------------------------------
944
945 (93)  27-Aug-02 S  queue_only_condition
946 Peter A. Savitch
947
948 queue_only_condition global option, expanded string. This contain
949 condition, which if evaluated to `no' or `false' or `0', behaves like
950 queue_only (queue_only_load ?). Don't know what to do is the string
951 expansion fails with DEFER (either force queueing or continue with
952 immediate delivery). Another option can control Exim behaviour if the
953 expansion fails. Don't know how the name for it ;-) See also 78.
954
955 This control can now be achieved in the ACL - is the new feature now needed?
956 ------------------------------------------------------------------------------
957
958 (95)  27-Aug-02 S  Log all parents as a router option
959
960 So that specific addresses can be logged like this. Should there be more log
961 selector options per router? Per transport?
962 ------------------------------------------------------------------------------
963
964 (99)  28-Aug-02 L  Test pre-conditions in order given
965
966 This would get round certain problems with require_files. However, it is
967 totally incompatible, and therefore an "Exim 5" wish.
968 ------------------------------------------------------------------------------
969
970 (101) 02-Oct-02 M  Callout and <> rejections
971
972 Some people don't want to fail the callout if the MAIL FROM:<> command is
973 rejected. Think of a way of handling this tidily. See also 51.
974 ------------------------------------------------------------------------------
975
976 (102) 03-Oct-02 M  Log option to suppress message-id logging
977
978 M because it would involve a change to eximstats.
979 ------------------------------------------------------------------------------
980
981 (106) 09-Oct-02 S  Appendfile to create directory not as user
982
983 Arrange for the setup entry to appendfile to create the directory under some
984 other uid (and with given owners/permissions?)
985 ------------------------------------------------------------------------------
986
987 (109) 15-Oct-02 M  Remember when LDAP (etc) servers are down
988
989 The idea would be to use some kind of retry rule, just like for hosts.
990 See also 85.
991 ------------------------------------------------------------------------------
992
993 (110) 18-Oct-02 M  errors_to for pipe command in filter
994
995 To work in the same was as errors_to for deliver commands.
996 ------------------------------------------------------------------------------
997
998 (113) 15-Nov-02 M  support for XMLRPC
999
1000 Patch supplied for 4.10 by Joel Vandal.
1001 ------------------------------------------------------------------------------
1002
1003 (114) 04-Dec-02 M  local_scan: return message on accept
1004
1005 (This actually dates from earlier.) The problem with this is that the string
1006 currently passes into $local_scan_data. Thus, an incompatible change of some
1007 sort would be required. Possibly a global that local_scan can set?
1008 ------------------------------------------------------------------------------
1009
1010 (118) 10-Dec-02 S  access to Perl from local_scan
1011 ------------------------------------------------------------------------------
1012
1013 (119) 12-Dec-02 M  ability to specify additional headers in an autoreply
1014
1015 This is so that vacation messages etc can have MIME headers that specify, for
1016 example, the character set.
1017 ------------------------------------------------------------------------------
1018
1019 (125) 02-Jan-03 M  Per-host daemon logging
1020
1021 "So what I would like is an option like debug_hosts, that allows to specify
1022 an hostlist, and if the current incoming/outgoing hosts matches, creates a
1023 logfile like $hostname_(in|out).log in my logdirectory."
1024 ------------------------------------------------------------------------------
1025
1026 (127) 06-Jan-03 M  Different messages for different callout failures
1027
1028 The real requirement here is to detect when a callout "MAIL FROM:<>" failed, so
1029 that a specific warning about that can be sent, different to the message when a
1030 callout "RCPT TO:" fails. I think this is in fact now mostly done.
1031 ------------------------------------------------------------------------------
1032
1033 (129) 09-Jan-03 M  Keep track of DNSBL timeouts, and refrain from calling
1034
1035 If so configured, keep track of DNSBL timeouts in a hints record, and don't
1036 retry that DNSBL for a while after (a sufficient number of) timeouts. It is
1037 effectively disabled for a while. Log enable/disable, of course. Another
1038 thought is an option not to apply +defer_unknown unless *all* DNSBL lookups in
1039 a list defer.
1040 ------------------------------------------------------------------------------
1041
1042 (130) 09-Jan-03 M  A number of LDAP-related things
1043 Peter A. Savitch
1044
1045 OpenLDAP 2.1 is going to be more popular (2.1.9 is available with many
1046 bug fixes). TLS-enabled LDAP is an interesting and usefull thing.
1047 I can try to implement some things and send the patches, like with
1048 ldapi.
1049
1050 How do You see:
1051
1052 1) The propagation of TLS options (key, certificate, CA certificate)
1053    to the OpenLDAP library.
1054
1055 2) (was dereferencing; done in 4.23).
1056 ------------------------------------------------------------------------------
1057
1058 (131) 09-Jan-03 S  Additional variables
1059 Peter A. Savitch
1060
1061 $root_uid    Why?
1062
1063 (Some that were previously here are done)
1064
1065 $smtp_accept_count    -- used for acl_smtp_connect
1066
1067 $queue_runners        -- children of the listening daemon could use this
1068                          value for controlling the number of queue runners
1069
1070 I don't like either of these because they cannot be real-time values. They
1071 would be snapshots of the values at the time the process was forked from the
1072 daemon, and I fear they would just be confusing. For processes that were not
1073 forked from the daemon they couldn't be set at all.
1074 ------------------------------------------------------------------------------
1075
1076 (131) 09-Jan-03 S  Additional options
1077 Peter A. Savitch
1078
1079 exim_processes_max
1080 exim_file_descriptors_max
1081 queue_run_condition   -- to deprecate queue_run_max, better system
1082                          load control
1083
1084 Given Exim's distributed nature, I'm not at all sure how the first two of these
1085 can usefully be implemented.
1086 ------------------------------------------------------------------------------
1087
1088 (132) 16-Jan-03 M  Option for when a transport filter fails (crashes)
1089
1090 Freezing is one obvious option. Currently, Exim just retries. Another user
1091 wanted to retry without the filter, but that is much harder.
1092 ------------------------------------------------------------------------------
1093
1094 (136) 24-Jan-03 M  Make "personal" available as a condition for use in routers
1095 ------------------------------------------------------------------------------
1096
1097 (138) 28-Jan-03 M  A variable containing what was matched in a host list
1098
1099 Or, presumably, other lists. This is so that ACL messages can say things like
1100 "your host name matches xxxx". Note: not the same as $domain_data. Also, this
1101 could be tricky with lookups and things that match in files.
1102 ------------------------------------------------------------------------------
1103
1104 (143) 06-Mar-03 L  Ability to have multiple authenticators of same type
1105
1106 For example, to have two PLAIN authenticators; if the first fails, try the
1107 second.
1108 ------------------------------------------------------------------------------
1109
1110 (144) 07-Mar-03 T  ACL control = local_scan_skip to skip the local scan
1111
1112 A bigger project would be control = local_scan <xxx> where xxx could select
1113 different local_scan functions (possibly by dynamic loading).
1114
1115 This can now be simulated using the fact that ACL variables are preserved,
1116 so it doesn't look as it once did.
1117 ------------------------------------------------------------------------------
1118
1119 (145) 07-Mar-03 T  Export string_cat() to local_scan()
1120 ------------------------------------------------------------------------------
1121
1122 (147) 17-Mar-03 T  Option to treat 5xx as 4xx if received on initial connection
1123
1124 This issue is controversial. That may be a good reason for not changing
1125 anything.
1126 ------------------------------------------------------------------------------
1127
1128 (153) 25-Apr-03 S  A way of making log_as_local apply to the smtp transport
1129
1130 Either an option on the transport, or log_remote_as_local for the router.
1131 Messy, either way. Maybe log_local_as_local and log_remote_as_local, and
1132 deprecate log_as_local?
1133 ------------------------------------------------------------------------------
1134
1135 (154) 01-May-03 M  Teergrubing at the CR/LF level
1136
1137 It is believed that the most effective way to teergrube is to insert a delay
1138 between transmitting CR and LF in the SMTP response. Furthermore, this is also
1139 the best place to test for bad synchronization (i.e. at the last possible
1140 time).
1141 ------------------------------------------------------------------------------
1142
1143 (155) 01-May-03 S  "control=no_pipelining" for connect and EHLO ACLs
1144
1145 Yet more flexibility! Maybe this should be a more general control for what is
1146 sent in response to EHLO.
1147 ------------------------------------------------------------------------------
1148
1149 (156) 06-May-02 M  Finer-grained synchronisation checking
1150
1151 On operating systems that can be asked whether any sent bytes have not yet been
1152 ACK'd at the TCP/IP level, a finer-grained check for proper synchronisation can
1153 be done. All bytes must have been ACK'd if the client has received the previous
1154 response before sending the next command. See also 293.
1155 ------------------------------------------------------------------------------
1156
1157 (157) 07-May-03 M  Newline as a list item separator
1158
1159 This will make life easier for lists obtained form databases where the
1160 separator is naturally a newline.
1161 ------------------------------------------------------------------------------
1162
1163 (158) 13-May-03 M  Ability to add to OK message for SMTP commands
1164
1165 For sending reasons for slow response, etc.
1166 ------------------------------------------------------------------------------
1167
1168 (160) 19-May-03 M  Remove headers using wild cards
1169 ------------------------------------------------------------------------------
1170
1171 (162) 28-May-03 M/L Use of real numbers in filters, expansions, and options
1172
1173 The motivation for this is for handling spam scores that are real numbers. The
1174 questions are (a) how widely should it spread and (b) whether floating point or
1175 fixed point representations should be used. And what about the eval operator?
1176 ------------------------------------------------------------------------------
1177
1178 (164) 02-Jun-03 S  Set variables for interface and port in smtp transport
1179
1180 These could be useful for varying HELO data etc. See also several other
1181 items about interfaces above.
1182 ------------------------------------------------------------------------------
1183
1184 (166) 18-Jun-03 S  CN verification in client TLS code
1185
1186 A tls_verify_cn option is suggested by Sven Geggus.
1187 ------------------------------------------------------------------------------
1188
1189 (168) 19-Jun-03 S  Ability to add a header recording envelope rewrites
1190
1191 Current code adds a deleted header with only some information. Maybe what is
1192 needed is a flag for a rewrite rule.
1193 ------------------------------------------------------------------------------
1194
1195 (169) 19-Jun-03 M  A way of detecting timeouts in callout returns
1196
1197 ------------------------------------------------------------------------------
1198
1199 (170) 23-Jun-03 S  Option to accept rather than defer after local scan timeout
1200
1201 Suggested patch supplied.
1202 ------------------------------------------------------------------------------
1203
1204 (171) 23-Jun-03 S  Option to make timeout a soft failure on pipe transport
1205
1206 ------------------------------------------------------------------------------
1207
1208 (172) 23-Jun-03 M  Option to make SQL query to specific server
1209
1210 ------------------------------------------------------------------------------
1211
1212 (175) 04-Jul-03 S  show_all_ancestors_in_errmsg for the redirect router
1213
1214 This is the opposite of hide_child_in_errmsg in effect.
1215 ------------------------------------------------------------------------------
1216
1217 (180) 14-Jul-03 M  Extend never_users to be more flexible
1218
1219 e.g. never_users = ! mailnull : ! cyrus : !mailman : 0-100
1220 ------------------------------------------------------------------------------
1221
1222 (183) 16-Jul-03 S  freeze_tell_text to add custom text to the message
1223
1224 ------------------------------------------------------------------------------
1225
1226 (185) 24-Jul-03 S  An expansion operator that decodes RFC 2047 strings
1227
1228 ------------------------------------------------------------------------------
1229
1230 (188) 13-Aug-03 T  batch_max=0 to mean unlimited
1231
1232 ------------------------------------------------------------------------------
1233
1234 (189) 22-Aug-03 S  Allow filter "logwrite" to write to syslog
1235
1236 I feel this is a dangerous facility, and also of very minority interest, at
1237 least for user's filters. Allowing a system filter to write to mainlog or
1238 syslog may be different. However, writing the main log would only be possible
1239 if the filter runs as root or exim.
1240 ------------------------------------------------------------------------------
1241
1242 (190) 22-Aug-03 S  A way of testing "forced delivery" in filter and routers
1243 ------------------------------------------------------------------------------
1244
1245 (191) 26-Aug-03 M  Preserve $address_data for a verified recipient
1246
1247 The idea is to preserve it in the recipients data structure so that local_scan
1248 can have access to it. The value could also be used as the initial value of
1249 $address_data while routing.
1250 ------------------------------------------------------------------------------
1251
1252 (192) 05-Sep-03 M  Better handling of TXT records for dnslists
1253
1254 When multiple lists are accessible via a merged lookup, handling TXT records
1255 is difficult. An option for doing the TXT lookup in a sub-list has been
1256 suggested, with syntax such as
1257
1258         dnslists = list.example.org=127.0.0.2%dialups \
1259                                    ,127.0.0.3%relays \
1260                                    ,127.0.0.5%spews
1261 ------------------------------------------------------------------------------
1262
1263 (194) 10-Sep-03 M  $addresslist_data to be like $host_data/$domain_data
1264
1265 ------------------------------------------------------------------------------
1266
1267 (195) 29-Sep-03 M  A variable containing the error for verify = header_syntax
1268
1269 Maybe there should always be a variable with the error message for all the
1270 different kinds of verify failure.
1271 ------------------------------------------------------------------------------
1272
1273 (196) 30-Sep-03 S  A way of detecting whether it was HELO or EHLO in the ACL
1274
1275 $received_protocol isn't reset until after the command is accepted (which
1276 seems right), and $smtp_data shows only the arguments. Maybe $smtp_command?
1277 ------------------------------------------------------------------------------
1278
1279 (197) 30-Sep-03 S  MACROS_DROP_PRIVS and ALT_CONFIG_DROP_PRIVS
1280
1281 Now that alternative configurations can be restricted to certain directories,
1282 some more flexibility can be allowed. Not by default, though.
1283 ------------------------------------------------------------------------------
1284
1285 (198) 01-Oct-03 M  Accept mail after local_scan() crash instead of defer
1286
1287 This may not be as easy to implement as it sounds; one is never sure of the
1288 environment after a crash. Is is actually a good idea? The crashing local_scan
1289 may have wrecked the memory in arbitrary ways; for example, screwing up the
1290 recipients list...
1291 ------------------------------------------------------------------------------
1292
1293 (199) 01-Oct-03 M  ${pipe which will pipe the message to a script ...
1294
1295 ... and otherwise behave as ${run. Probably needs to have locking out features
1296 so that it can be turned off for users .forwards if the sysadmin so desires.
1297 ------------------------------------------------------------------------------
1298
1299 (200) 07-Oct-03 L  Alternative ways of storing hints
1300
1301 People want to store hints in databases. Some assert that SQL databases can
1302 be made to perform satisfactorily. If a general interface could be worked on,
1303 people could at least try different strategies. See also 66 above, which is
1304 specifically concerned with Berkeley DB. Another possible option is a switch to
1305 disable smtp-wait hints - to avoid contention problems.
1306 ------------------------------------------------------------------------------
1307
1308 (201) 07-Oct-03 M  A "soft bounce" feature
1309
1310 This is an option that turns all hard bounces into soft bounces. The idea is
1311 that it can be used as a safety-net while testing configurations. Instead of a
1312 local bounce, the message stays on the queue; instead of 5xx SMTP responses,
1313 4xx ones are given.
1314
1315 The ability to do the opposite - turn 4xx into 5xx under certain circumstances
1316 might also be useful (e.g. after a certain time). This might best be done by
1317 extending the retry logic to recognize 4xx as a special error. (This is now
1318 done.)
1319 ------------------------------------------------------------------------------
1320
1321 (202) 10-Oct-03 S  -bvsomething to do a callout after the verify
1322 ------------------------------------------------------------------------------
1323
1324 (203) 14-Oct-03 S  verify=something to easily check for header presence
1325
1326 This is purely cosmetic; "condition" can already be used.
1327 ------------------------------------------------------------------------------
1328
1329 (204) 27-Oct-03 S  an inverted queue_only_file
1330
1331 That is, queue if a file does NOT exist.
1332 ------------------------------------------------------------------------------
1333
1334 (205) 27-Oct-03 S  expand smtp_accept_queue_per_connection
1335
1336 ------------------------------------------------------------------------------
1337
1338 (206) 27-Oct-03 S  appendfile: a variable containing the maildir base name
1339
1340 ------------------------------------------------------------------------------
1341
1342 (207) 29-Oct-03 S  ability to keep trusted users in a file - expand it.
1343 ------------------------------------------------------------------------------
1344
1345 (208) 31-Oct-03 M  cache temporary verification errors and fail after a time
1346
1347 This request was for a way of turning temporary verification failures into
1348 permanent ones after some fixed time.
1349 ------------------------------------------------------------------------------
1350
1351 (209) 31-Oct-03 S  a way of making crashes in pipe commands temporary errors
1352
1353 ------------------------------------------------------------------------------
1354
1355 (210) 31-Oct-03 S  runtime option to change the daemon name used for tcprwappers
1356
1357 A patch for compile time was supplied, but this seems better as a runtime
1358 option, for use with multiple Exim daemons.
1359 ------------------------------------------------------------------------------
1360
1361 (211) 31-Oct-03 S  ability to disable debugging output from -bh & -bhc
1362 ------------------------------------------------------------------------------
1363
1364 (212) 31-Oct-03 M  specify headers lines in HELO ACL to be added to all msgs
1365 ------------------------------------------------------------------------------
1366
1367 (214) 05-Nov-03 S  Put the wild part of local part prefix/suffx in variables
1368
1369 Unfortunately, this isn't quite as trivial as it seems.
1370 ------------------------------------------------------------------------------
1371
1372 (215) 14-Nov-03 S  A way of turning off message-submission fix-ups
1373
1374 Globally, and perhaps also via an ACL control so that it can be done on a
1375 per-message basis.
1376 ------------------------------------------------------------------------------
1377
1378 (215) 26-Nov-03 M/L Conversion of IDNA domain names for logging
1379
1380 IDNA (RFCs 3490-3492) converts domains names containing non-ASCII characters
1381 into ASCII strings of a special form. Exim will of course handle these.
1382 However, it might be nice to convert them to a local code for logging. This
1383 might be quite a big project: there's also output from -bp and eximon queue
1384 display and no doubt other places as well. (Utilities that process the logs,
1385 e.g. exigrep, eximstats, will be automatically handled if the logs are
1386 changed.)
1387 ------------------------------------------------------------------------------
1388
1389 (216) 27-Nov-03 S  Option to bounce if required TLS doesn't happen
1390
1391 This is for the smtp transport with hosts_require_tls set. Currently, it
1392 defers. Possibly the best approach is to make the error one that can be seen by
1393 the retry logic.
1394 ------------------------------------------------------------------------------
1395
1396 (217) 27-Nov-03 M  A function to pass back variables from Perl
1397
1398 This is a function that can be called from Perl, to take a name and a value and
1399 put that value into an Exim variable.
1400 ------------------------------------------------------------------------------
1401
1402 (218) 01-Dec-03 M  A local_scan-like hook at system filter time
1403
1404 That is, make a C API available for custom filtering at this point.
1405 ------------------------------------------------------------------------------
1406
1407 (221) 18-Dec-03 U  Merge routers and ACLs - or at least make more similar
1408
1409 "It will be very useful to be able to use most of the ACL conditions
1410 (authenticated, hosts, senders, sender_domains, ... ) in routers and also the
1411 possibility to have multiple conditions in routers. It will be great to also
1412 be able to set variables in routers like in acl's." This is effectively a
1413 radical suggestion for a complete re-design, and is therefore BIG.
1414 ------------------------------------------------------------------------------
1415
1416 (222) 19-Dec-03 S  Iterative option for dnsdb
1417
1418 A way of getting a dnsdb lookup to chop off components until something is
1419 found: e.g. ${lookup dndsb-i{ns=a.b.c.d}} would look for nameservers for
1420 a.b.c.d, then b.c.d, etc.
1421 ------------------------------------------------------------------------------
1422
1423 (223) 22-Dec-03 S  Support SOA lookup in dnsdb lookups
1424 ------------------------------------------------------------------------------
1425
1426 (225) 22-Dec-03 M  Add acl= to routers
1427
1428 This would use an ACL to "control access" to a router, opening up a number
1429 of interesting possibilities. Details of possible limitations need to be
1430 investigated.
1431 ------------------------------------------------------------------------------
1432
1433 (226) 23-Dec-03 S  A way of treating DEFER as fail in dnsdb lookups
1434
1435 (i.e. the dnsdb lookup failed, so accept the message)
1436 ------------------------------------------------------------------------------
1437
1438 (227) 30-Jan-04 M  A configuration .if facility
1439
1440 "Second with the .ifdef and such, it would be nice to have a base .if,
1441 so I could do something like
1442 .if DEFINED_DATA == xyz
1443 configuration here
1444 .elseif DEFINED_DATA == abc
1445 configuration here
1446 .else
1447 configuration here
1448 .endif
1449 also this would be nice at least in my case in the system filters, but
1450 isn't required but you could pass the defined data to the system, in
1451 variables."
1452 ------------------------------------------------------------------------------
1453
1454 (229) 30-Jan-04 M  New expansion mechanism: {list ...}
1455
1456 "Proposed syntax: {list {separator}{item}{item}...}
1457 This first expands the contents of {separator} and all of the {item}s,
1458 then constructs a separator-delimited list. The twist is: if an {item}
1459 generates the empty string, no separator will be generated for it.
1460 The entire construct will fail is {separator} fails, or all {item}s
1461 fail. If just some {item}s fail, they will be treated as if they
1462 generated empty strings.
1463 Examples:
1464    {list {,}{aaaaaa}{bbbbbb}{cccccc}} -> aaaaaa,bbbbbb,cccccc
1465    {list {,}{:fail:}{bbbbbb}{cccccc}} -> bbbbbb,cccccc
1466    {list {,}{aaaaaa}{:fail:}{cccccc}} -> aaaaaa,cccccc
1467    {list { }{aaaaaa}{bbbbbb}{}}       -> aaaaaa bbbbbb
1468    {list { }{:fail:}{:fail:}{:fail:}} -> :fail:
1469    {list {:fail:}{aaaaa}{bbbb}{cccc}} -> :fail:
1470 See particularly examples 2-4, which handle the case of a missing first
1471 and last item with ease; doing this using {if ...} would be quite difficult!"
1472 ------------------------------------------------------------------------------
1473
1474 (230) 30-Jan-04 M  Find IP addresses of a domain's nameservers
1475
1476 This needs some way of processing a list of things in a similar way, which
1477 should perhaps be a more general facility.
1478 ------------------------------------------------------------------------------
1479
1480 (231) 30-Jan-04 ?  -C has a number of problems when used for real
1481
1482 -C was intended for testing; people are using it for "alternate"
1483 configurations, and it doesn't work too well. Can a better way of doing this be
1484 invented?
1485 ------------------------------------------------------------------------------
1486
1487 (232) 02-Feb-04 ?  Make parts of the code loadable
1488
1489 The idea being that drivers, etc. could be compiled separately. There are, of
1490 course, security issues. This is not something I want to go into at present.
1491 ------------------------------------------------------------------------------
1492
1493 (235) 02-Feb-04 T  Make smtp_accept_count available as a variable
1494
1495 This is for use in ACLs. Of course, it is a snapshot of the count at the
1496 start of the receiving process.
1497 ------------------------------------------------------------------------------
1498
1499 (236) 02-Feb-04 S  String in local_scan that's added to the binary version string
1500 ------------------------------------------------------------------------------
1501
1502 (237) 02-Feb-04 M  Add_header in ACLs because "message" is overloaded
1503
1504 This would be useful for verbs where "message" is an error message.
1505 ------------------------------------------------------------------------------
1506
1507 (238) 05-Feb-04 S  ${address to handle multiple addresses
1508
1509 At present, ${address expects to see just one address. An extension would let
1510 it handle header lines with multiple addresses, just retaining the actual
1511 addresses. Or perhaps a new operator is needed?
1512 ------------------------------------------------------------------------------
1513
1514 (239) 23-Feb-04 ?  Expansion items for encryption/decryption
1515
1516 Perhaps for some kind of cookie handling? This would need an external crypto
1517 library, because there's no crypto code in Exim itself.
1518 ------------------------------------------------------------------------------
1519
1520 (240) 23-Feb-04 ? Some way to know if a ip is a mx for a given domain
1521
1522 Some kind of iterative operation for dnsdb might be a general way of providing
1523 this.
1524 ------------------------------------------------------------------------------
1525
1526 (242) 01-Mar-04 ? Run a filter from an expansion condition
1527
1528 This would add a lot of power to ACLs, but its implementation might be tricky
1529 because of the possibility of recursion.
1530 ------------------------------------------------------------------------------
1531
1532 (243) 01-Mar-04 ? Run an ACL from an expansion condition
1533
1534 The problem here is knowing what data is available at an arbitrary time.
1535 ------------------------------------------------------------------------------
1536
1537 (244) 01-Mar-04 ? Add an on-success event to transports
1538
1539 This could just be an expansion string, whose value is either ignored or
1540 logged, but it could be used to run SQL updates or run programs etc.
1541 However, what is "success" when a transport has multiple recipients?
1542 ------------------------------------------------------------------------------
1543
1544 (245) 01-Mar-04 M Add all the string expansion conditions to filters
1545
1546 Some thought would be needed on how to design the syntax for this.
1547 ------------------------------------------------------------------------------
1548
1549 (247) 09-Mar-04 S IP addresses that are never looked up
1550
1551 It would be nice if we could prevent this for certain IP addresses for
1552 which we _know_ we'll never get a valid PTR record, like 2002::/16.
1553 So a new option might reasonably default to:
1554
1555         hosts_never_lookup = <; 2002::/16
1556 ------------------------------------------------------------------------------
1557
1558 (253) 05-Apr-04 M Use ESMTP and TLS for recipient callout verification
1559
1560 The best way to do this would involve quite a bit of refactoring so as to
1561 abstract some of the code from the smtp transport into subroutines that could
1562 also be used from the callout code. The tls parameters should probably be
1563 taken from the transport. That might also require some substantial code
1564 refactoring. See also 294.
1565 ------------------------------------------------------------------------------
1566
1567 (260) 30-Apr-04 S Respect +tls_cipher +tls_peerdn in rejectlog entries
1568
1569 ------------------------------------------------------------------------------
1570
1571 (261) 05-May-04 S Add a "required_version" option
1572
1573 So that configurations can insist on a specific Exim version.
1574 ------------------------------------------------------------------------------
1575
1576 (262) 10-May-04 S Add "scratch" ACL variables
1577
1578 The idea is for variables that are flushed at the start of each ACL. I'm not
1579 really convinced that these are worth implementing.
1580 ------------------------------------------------------------------------------
1581
1582 (263) 10-May-04 S Add variable $router_name $transport_name
1583
1584 These could be used in debug_print settings, which are output during -bt, and
1585 thus don't need the privilege to run with -d.
1586 ------------------------------------------------------------------------------
1587
1588 (265) 25-May-04 M An init.d script for exim is needed
1589
1590 The old sendmail script used to "just work" because it just did -bd -q 20m or
1591 whatever. Newer versions start more than one sendmail daemon, so do not work.
1592 ------------------------------------------------------------------------------
1593
1594 (267) 25-May-04 S tarpitting delay option
1595
1596 A modifier that sets a delay between lines for multiline responses.
1597 ------------------------------------------------------------------------------
1598
1599 (268) 25-May-04 S? Add a PID to every log line
1600
1601 Given that pids are reused non-cyclically these days, is this actually useful?
1602 ------------------------------------------------------------------------------
1603
1604 (269) 26-May-04 U Run both a system and a user filter in test mode
1605
1606     exim -bF systemfilter -bf userfilter -f sender@dom < message
1607
1608 This would allow testing the way the userfilter handles the system
1609 variables set by the systemfilter.
1610 ------------------------------------------------------------------------------
1611
1612 (270) 01-Jun-04 M Add headers at top and middle
1613
1614 Various initiatives like SPF and DomainKeys require header lines to be added
1615 above or in the middle of existing headers. Exim always adds at the bottom.
1616 When these requirements are more standard and clearer, some way of controlling
1617 where header lines are added will probably become necessary. Some new syntax
1618 will be required.
1619
1620 This can now be done fairly generally from local_scan(), and at the start and
1621 after the Received: block from an ACL. Is anything more needed?
1622 ------------------------------------------------------------------------------
1623
1624 (271) 02-Jun-04 L Callouts at routing time
1625
1626 From a user's message:
1627
1628 > I would like to be able to:
1629 >[...]
1630 > 2) Forcing callouts as address verification at router level
1631 > [ check_callout just like check_local_user ]
1632 >
1633 > I would like to redirect messages in some domain to "domain with callout
1634 > verification" and to "domain without callout verification"
1635 >
1636 > e.g.
1637 > userA@domain.in -> userX@doamin.out-verify (use callout to verify)
1638 > userB@domain.in -> userY@doamin.out-noverify (do not use callout verify)
1639 >
1640 > [both out-* domains delivered via "callout ready" transports]
1641
1642 Other versions of the wish:
1643 * limiting callouts in acls to specific transport
1644       verify = recipient/callout=5s,transport:intranet_smtp
1645 * adding "select transport" to ACL conditions
1646       accept domains = +local_domains
1647              transport = cyrus_ltcp
1648              verify = recipient/callout=5s
1649 ------------------------------------------------------------------------------
1650
1651 (272) 07-Jun-04 S Expand hosts_randomize
1652
1653 It occurs in manualroute and in smtp.
1654 ------------------------------------------------------------------------------
1655
1656 (278) 21-Jun-04 M quota_warn_message_file option
1657
1658 Similar to the bounce and delivery warn message files.
1659 ------------------------------------------------------------------------------
1660
1661 (280) 23-Jun-04 M A way of adding a header line after callout defer_ok
1662
1663 This would record that, e.g., a sender domain verified, but the callout
1664 could not be done.
1665 ------------------------------------------------------------------------------
1666
1667 (285) 16-Jul-04 M Separate and independent log_selector for rejectlog
1668
1669 For example: mainlog_selector and rejectlog_selector, with log_selector setting
1670 both of them.
1671 ------------------------------------------------------------------------------
1672
1673 (286) 21-Jul-04 M Distinguishing a larger number of errors
1674
1675 For instance, detecting "connection reset by peer" (ENETRESET or ECONNRESET)
1676 might be useful.
1677 ------------------------------------------------------------------------------
1678
1679 (288) 10-Aug-04 M Option for verify to require MX
1680
1681 e.g. verify=sender/require_mx
1682 I'm not too keen because this is rather special purpose, and of course could
1683 only apply if the verification happened to hit a dnslookup router.
1684 ------------------------------------------------------------------------------
1685
1686 (289) 10-Aug-04 L Option to treat defers in database lookups as "not found"
1687
1688 This is so that alternatives can be coded for when databases are down. A
1689 suggested patch has been sent, but it just catches all instances of "defer"
1690 from a lookup in an expansion string. These can occur for a number of different
1691 reasons, not just connection failures. I think that we need a specific
1692 "connection failed" indicator. Also, what about lookups in lists?
1693 ------------------------------------------------------------------------------
1694
1695 (291) 13-Aug-04 M An ACL or "local_scan()" to be run on size excession
1696
1697 The idea is to give something a chance to look at the data so far received when
1698 more than message_size_limit (or some other limit) has arrived. I am not sure
1699 how useful this would actually be in practice.
1700 ------------------------------------------------------------------------------
1701
1702 (292) 13-Aug-04 M Overall timeout for message reception
1703
1704 A client could in priciple keep an SMTP connection open for a very long time by
1705 trickling in data very slowly. Also, after message_size_limit is exceeded, Exim
1706 continues to swallow the data (though it does not write it to disk) until the
1707 end is reached. Again, the connection could be held open for a very long time.
1708 Some kind of overall time limit for an SMTP connection, possibly reset at the
1709 start of each message, might be helpful in these situations.
1710 ------------------------------------------------------------------------------
1711
1712 (294) 23-Aug-04 L Callouts and AUTH and LMTP
1713
1714 People want to do callouts using LMTP as well as SMTP, and that would also
1715 include sockets as well as TCP/IP connections. Also, people want to make use of
1716 AUTH during the callout checking, on all types of connection. I suppose that
1717 means making TLS available as well. This probably means a rewrite of the code
1718 that actually does the callout. Should we use the relevant transport in a new
1719 "callout" mode instead of keeping things separate? See also 253.
1720
1721 And here's another submitted idea: "My actual suggestion is that if this model
1722 is followed, the parent process doesn't have to stop the callout process if it
1723 is taking too long to respond: it can return 450 to the incoming connection
1724 within the 5 minute SMTP command timeout and leave the callout process to
1725 continue, in the hope that it will eventually get a result and store it in the
1726 callout cache in time for the sender's next attempt."
1727 ------------------------------------------------------------------------------
1728
1729 (296) 09-Sep-04 S Make deliver_time work for == lines as well as =>
1730
1731 What about ** lines?
1732 ------------------------------------------------------------------------------
1733
1734 (298) 25-Oct-04 S Debugging the daemon process only
1735
1736 When there are daemon problems (e.g. it dies) it would be helpful to be able to
1737 turn on debugging that did not get passed on to any subprocesses.
1738 ------------------------------------------------------------------------------
1739
1740 (299) 25-Oct-04 S Options to make Sieve "keep" pass to next router
1741
1742 Currently, "keep" saves in the mailbox. Probably need two options, for implicit
1743 and explicit keep commands.
1744 ------------------------------------------------------------------------------
1745
1746 (300) 25-Oct-04 S Option to lock out Sieve or Exim filter
1747
1748 Currently, if allow_filter is set, either kind of filter is permitted.
1749 ------------------------------------------------------------------------------
1750
1751 (301) 27-Oct-04 M Use an "ACL" to filter logging
1752
1753 This idea was for ACL syntax to be able to "accept" or "deny" individual log
1754 lines. This would make it possible to have, for example, per-host logging for
1755 certain things. See also 15 above.
1756 ------------------------------------------------------------------------------
1757
1758 (302) 28-Oct-04 M Expand pass_router and redirect_router
1759
1760 Doing this would mean postponing the validity checks till the router was
1761 actually used instead of doing them at start up. It does not seem to be a
1762 facility that will be widely used.
1763 ------------------------------------------------------------------------------
1764
1765 (303) 28-Oct-04 M Support SQL relay
1766
1767 This would make it easier for packagers to support "generic SQL" without having
1768 to choose which one. It can be slotted in using a MySQL interface without
1769 modifying Exim, but native support would be nice.
1770 ------------------------------------------------------------------------------
1771
1772 (304) 02-Nov-04 M A way of seeing the whole message in Perl or ${run
1773
1774 At present, the headers are available in $message_headers, but only part of
1775 the body is visible. The only way to pass the whole body would be as a file
1776 descriptor because it can be very large. See also (42).
1777 ------------------------------------------------------------------------------
1778
1779 (305) 02-Nov-04 M A Perl transport
1780
1781 The suggestion here is that an embedded Perl function takes responsibility for
1782 doing the delivery. I am not at all keen on this. One way of doing it would be
1783 to implement (244), which provides an "on success" string expansion. Then
1784 anyone who wants this could run that on a transport that does nothing.
1785 ------------------------------------------------------------------------------
1786 --- HWM 305 ------------------------------------------------------------------
1787 ---------------------------- End of WishList ---------------------------------