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