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