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