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