New Exim Wish List, from comments on the mailing list. I have guessed at the amount of work involved, and categorized the items as Tiny, Small, Medium, Large, or Gigantic. The guesses are not based on any detailed investigation, so must be taken as very rough. 08-Mar-99 I have archived the wish list contents, and removed those items that have been done in the released Exim from this copy. Hence the discontinuities in the numbers. 17-Aug-00 Pruned again. ------------------------------------------------------------------------------ (3) 29-Jun-98 M hosts_treat_as_local per router Jochen Topf This isn't a huge amount of work, but would involve passing the router's parameter through to the function which currently just looks at the global option. ------------------------------------------------------------------------------ **** Done rewriting headers at transport time (7) 07-Jul-98 G rewriting by drivers Sean Witham "I would like to be able to use rewrite rules within drivers. Sometimes I only want to perform a rewrite when I know where and how the message is going to be delivered." David Sheryn Would like this too, but wants rewritten message to be sent to all recipients. Sean wants rewriting only for the recipient handled by the director or router. That facility really needs a different way of handling the headers such that there are independent copies for each address, but rewrites as a result of DNS qualification of abbreviated domains must apply to all of them. This is very major redesign; I am not sure if it would be possible at all within the current structure. Torsten Curdt The possibility of rewriting at transport time has also been suggested; a sort of built-in transport filtering mechanism. Routers and directors could then send addresses to appropriate transports. That would be at least a "Large" project. ------------------------------------------------------------------------------ (9) 10-Jul-98 L passing information between consenting Exims Sean Witham This is a suggestion for passing additional information from a relaying Exim to a receiving Exim via some private mechanism, but before the message itself, so that decisions about acceptance could be based on it. This is information such as the IP address from which the relay received the message. The only possible way to do this would be by some private ESMTP extension. ------------------------------------------------------------------------------ (10) 13-Jul-98 M more flexibility for pipe returns Ben Smithurst The ability to specify more precisely what happens concerning the return code from the pipe and the presence/absence of STDOUT/STDERR is requested. The particular configuration that was requested was: > if the command exited EX_OK, *and* produced nothing on STDOUT or > STDERR, it succeeded... > if the command exited EX_TEMPFAIL, defer, regardless of > STDOUT/STDERR... > otherwise freeze the message (this will get my attention by way of > freeze_tell_mailmaster)... ------------------------------------------------------------------------------ (11) 17-Jul-98 G support for DSN Andy Mell It is unclear to me how this should work in the presence of aliases and forwarding. Local deliveries would have to explicitly configured as deliveries or relaying or whatever. A substantial amount of code is probably needed. Jeffrey Goldberg I have nothing to add except to say that for many of the reasons you've stated, I don't think that DSN is coherent enough to be worth the effort to implement. Another comment: I thought the RFC was pretty clear on this. In a nutshell, if the delivery rewrites the envelope from address, it's considered a terminal delivery (i.e. delivery to a mailing list exploder), otherwise treat it as a forwarding operation (the /etc/aliases case). I would treat a .forward expansion as a final delivery event (it got to the user as far as the MTA is concerned). Yes, we need the DSN syntax. We also require the complete semantics of NOTIFY=SUCCESS,FAILURE for our application to work. Electronic Bill Presentment is really going to push the need for DSN support in MTAs. We just don't want to get stuck in a situation where we're faced with a non-DSN-aware MTA when we go to install our bill/statement engine, thus our interest in what the MTA vendors are planning to do about DSN. ------------------------------------------------------------------------------ (12) 17-Jul-98 M support for verbose SMTP Andy Mell The VERB ON command causes some MTAs to output additional information about "what's happening to the message". I haven't seen any documentation on what this output should be. Anyway, as far as Exim is concerned, nothing happens to the message, other than verification, while the SMTP connection exists. ------------------------------------------------------------------------------ (18) 30-Jul-98 M command-line option to write string to Exim's log Marc Haber This would have to be for trusted users only, of course. I am not convinced that it is likely to be of wide use. ------------------------------------------------------------------------------ (24) 13-Aug-98 G truncate overlong MIME headers Evan Leibovitch Alan Thew Evan: "There has been some news lately about the fact that certain folk are exploiting a bug in some email clients. This bug compromises security if the MIME headers are long enough to overflow the buffers alloted to them. The Sendmail folk have produced a patch that allows the admin to truncate MIME headers in the MTA, before they can do such damage. Is such a facility worth considering in Exim?" Paul Mansfield "humble opinion: this feature will be used if at all for about a month whilst mail client people scramble to fix bugs introduced by bad programming practices (i.e. lack of peer review, poor testing etc)." patl@phoenix.volant.org "This is clearly out of Exim's domain. I could see an argument for a temporary hack in an IMAP or POP server; but certainly not in a MTA." ... and several others in opposition. ------------------------------------------------------------------------------ **** Done, in effect, by the /accept option (25) 24-Aug-98 M Reverse RBL: allow only if can be looked up Stuart Lynne "I'm thinking in this might be used as a way for an ISP to manage lists of allowed dialup IP addresses." This might be possible anyway using the dnsdb lookup type without additional code. ------------------------------------------------------------------------------ (29) 04-Sep-98 M More detailed require_files tests Peter Radcliffe Require_files just tests existence; sometimes one wants to test other things, e.g. execute permission. The full facilities of "test" seem overkill, but perhaps a single test for a numeric permission might be sufficient? Something like require_files = 0111/some/executable to test for the presence of the 111 bits. A simpler test such as x/some/executable isn't all that simple. Executable by who? ------------------------------------------------------------------------------ (31) 10-Sep-98 L External program checkers for SMTP commands "Georg v.Zezschwitz" The hooks should act on the SMTP-sender passing the "MAIL FROM", the "RCPT TO" and the "HELO"-command. The external programs should be given as parameters (or environment): - the parameter - the IP-No / Name of the client - the size of the message (if given by "MAIL FROM: SIZE=xxx") - other information? They should return the intended output, e.g. "250 O.k.". ------------------------------------------------------------------------------ (33) 16-Sep-98 M Distinguish domain syntax errors in lookuphost Rudolf Kompf "If the lookuphost router finds a syntax-error of the domain-name: how can I break the routing so that exim does not try the next router?" The current behaviour of Exim is as if the domain did not exist. This is referring to domain names that are syntactically invalid according to RFC 821 rules (any that are invalid by 822 rules won't get this far). How useful would this distinction actually be? ------------------------------------------------------------------------------ (35) 24-Sep-98 M Support for /etc/networks "V. T. Mueller" If an entry in a netlist is a name not containing / then it could be looked up using getnetbyname() to obtain a network number. This suggestion is now probably unrealistic since net lists and host lists were amalgamated. Besides, I don't know how it fits with IPv6. ------------------------------------------------------------------------------ (40b) 09-Oct-98 M Reduce log levels in times of stress Paul Mansfield The suggestion is that logging levels be reduced if the disk gets more than, say, 90% full. Julian suggested automatically kicking off exicyclog from the daemon in this case. Optionally, of course. There would have to be a safeguard against doing it too often. ------------------------------------------------------------------------------ (41) 14-Oct-98 M Find a way of modifying header lines Oliver Smith The problem with header_remove followed by header_add is that you can't refer to the previous value of the header when adding a replacement. This could be solved with a replace_header option. ------------------------------------------------------------------------------ (42) 14-Oct-98 M Test for space left in quota Philip Hazel (after a comment from a local user) If the space left in a user's quota could be accessible in a filter file, users could implement strategies like "if message > xxxx and only yyyy left in my quota, do zzzzzz". Problems: quotas apply to file systems. The value would have to be something like $quotaleft_/some/path I suspect. ------------------------------------------------------------------------------ (43) 15-Oct-98 M Sender rewrite *after* SMTP incoming checks Andreas Edler The anti-relaying check happens after the sender has been rewritten; there are times when it would be helpful to do the check on the original sender, not on the rewritten one. Quite how to configure this I'm not sure. A related suggestion (from Steve Sargent) is to retain the original sender address and make it accessible somehow. ------------------------------------------------------------------------------ (44) 15-Oct-98 L Filter run at SMTP time Ilya Ketris This is to run a filter before replying at the end of the data, to decide whether to accept the message or not. This relates to (31). ------------------------------------------------------------------------------ (45) 16-Oct-98 M Make inclusion of filter code compile-time configurable Julian James Dehnert suggests a way to compile a stripped- down client-only version. ------------------------------------------------------------------------------ (46) 20-Oct-98 L SMTP protocol hooks Malcolm Ray "But there are enough broken SMTP implementations to make me wonder whether there isn't a case for providing hooks for tweaking the SMTP transport's protocol exchange. Something which would allow me to say things like 'if, when talking to lame.example.com, you get a 251 response to a MAIL command, rewrite the response to 501 before continuing'." ------------------------------------------------------------------------------ **** Done headers rewriting (47) 20-Oct-98 L Rewriting rules to be applied at transport time David Sheryn Sean Witham "I can't do this using the rewriting rules (since they've already been applied at message arrival time and so would have already stripped the prefix). What I'd really like to be able to do is say something like: rewrite = "prefix-(.*)@city.ac.uk $1@city.ac.uk tT" in the appropriate director or transport." "I currently use two exim daemons to handle such things which is very messy." ------------------------------------------------------------------------------ **** AUTH support is done within Exim **** TLS support is done by using the OpenSSL library. (48) 22-Oct-98 L Security additions to Exim patl@phoenix.volant.org "I'd like to propose two new items for the WishList: 1) TLS support (requires external SSL library) There is a separate SMTPS port currently listed by the IANA; but according to draft-hoffman-smtp-ssl-08 widespread consensus is that it should be abandoned. That draft specifies a new STARTTLS capability to allow negotiation of an authenticated and/or secured connection after the EHLO. 2) SASL (RFC-2222) support The Simple Authentication and Security Layer was originally proposed for IMAP; but is general enough to apply to almost any of the application-level Internet protocols. It provides a mechanism to negotiate arbitrary authentication and security mechanisms. It's application to SMTP is proposed in draft- myers-smtp-auth-11." That draft has now become RFC 2554. See also SMTP Service Extension for Secure SMTP over TLS, RFC 2487 (Jan 1999). Look for the OpenTLS library for support. Look at this SASL library: See if it can be used within the existing Exim SASL support, for those that want to make use of the facilities it contains. ------------------------------------------------------------------------------ (50) 13-Nov-98 M A "Focus" option for eximon Frank Elsner This is the opposite of "Hide"; it just displays a certain subset. Hmm. Could something clever be done with regular expressions? ------------------------------------------------------------------------------ (51) 18-Nov-98 S Add INSTALL_BIN_DIRECTORY to the building process Marc Haber This is so that a program built for running in /xxxx/bin can actually be installed in /yyyy/bin, with a symbolic link. ------------------------------------------------------------------------------ (52) 18-Nov-98 M Limit on number of messages from given IP in given time. Pete Ashdown This could be quite tricky to specify, but may be OK for the gross cases. ------------------------------------------------------------------------------ (55) 26-Nov-98 M An "include" facility for the configuration file. Philip Hazel (after a comment about changing configs) This would allow for some better flexibility in running Exim with different configurations. For example, you could put `MACRO=include /something' at the top of the file and then use -D to define MACRO as null when you don't want the inclusion. An alternative, or addition, could be a kind of #ifdef facility. However, reading multiple files is going to affect performance. ------------------------------------------------------------------------------ (56) 07-Dec-98 M Expand "interface" and key waiting db with it Lutz Pressler The "interface" option in the smtp transport is currently a fixed IP address. Expanding it allows for more flexible support of "virtual hosts"; however it also means changing the waiting database to be keyed by interface as well as remote hostname, and also by port if port is expanded (see 139). ------------------------------------------------------------------------------ (61) 22-Dec-98 M Send failed error messages to somebody Harald Meland With sendmail, the failed error message is made into a error message, with both envelope sender and recipient set to MAILER-DAEMON. The original, bogus-envelope-sender message is then available to whoever receives MAILER-DAEMON's mail. A more flexible approach would be to specify a specific recipient. ------------------------------------------------------------------------------ (65) 17-Jan-99 M Expand queue_only settings Marc Haber This would allow for dynamic testing of various conditions. ------------------------------------------------------------------------------ (66) 19-Jan-99 S Log any signal that terminates a daemon Marc Haber This for informational reasons. I don't personally think it is worth the code required to catch every possible signal. Alexander Koch This option would not even be considered useful with me... ------------------------------------------------------------------------------ (67) 20-Jan-99 M Recognize message larger than user's quota as special error "Tabor J. Wells" This would allow such messages to be bounced immediately. Is there a standard way of finding out what a user's system-imposed quota actually is? If not, this could be done only for Exim-imposed quotas. **** Done Mark Morley would be a bit like "condition" and would allow Perl to be run. ------------------------------------------------------------------------------ (71) 03-Feb-99 M Log delivered message sizes Nigel Metheringham The problem is that each delivery may be different, so can't just trivially add S=$message_size to the log line. ------------------------------------------------------------------------------ (74) 04-Feb-99 M Partial lookups without the * Bart Schaefer Sendmail mailertables contain partial domains beginning with just .thing rather than *.thing. This change would permit Exim to use them without modification. Sendmail apparently can have entries of the form @domain in alias files, for defaults. ------------------------------------------------------------------------------ **** Done (79) 19-Feb-99 L Support for LMTP Daniel Smith See RFC 2033. This would be for local delivery to some process, not for use for incoming mail. ------------------------------------------------------------------------------ (81) 01-Mar-99 M Addition of Content-MD5 support Martin Hamilton Martin supplied a suggested patch at http://www.net.lut.ac.uk/~martin/antispam/exim-hacks/ ------------------------------------------------------------------------------ (82) 05-Mar-99 M Run script after too many bad RCPTS from same host James Antill It seems that spammers are trying random addresses to find out which ones are valid. The suggestion is a rate control - running a script when the threshold is reached. This could automatically add the sender to a blocking list. The problem is that actually implementing this would be quite involved. A script that gets the information by tailing the log file might be a better way of addressing this problem. ------------------------------------------------------------------------------ (84) 15-Mar-99 M partial- matching for query-style lookups michael@roka.net ------------------------------------------------------------------------------ (85) 15-Mar-99 M ability to rewrite addresses in non-standard headers Dave Lewney John Holman Such as "return-receipt-to". See also 41. ------------------------------------------------------------------------------ (86) 17-Mar-99 M a queryprogram *director* After a message from Jason L Tibbitts III about Majordomo 2, which could use this. Ian Jackson subsequently suggested a queryprogram lookup, which could then be used to synthesize something, as well as for other purposes. A true director must be able to pass back all the information that a director can (including uid/gid etc.) so the interface must be crafted with care. ------------------------------------------------------------------------------ (87) 23-Mar-99 S recipients_max_hosts to control to whom it applies Peter Gervai ------------------------------------------------------------------------------ (88) 09-Apr-99 T one-line queue listing Paul Mansfield This is to save running a script to convert the normal -bp output. ------------------------------------------------------------------------------ **** Not done, but things have changed. Aliases now continue with verification when there is only one child address, so they are like smartuser. (89) 19-Apr-99 M verification of smartuser new addresses "V. T. Mueller" Exim treats new addresses generated by smartuser as a kind of dynamic rewriting; effectively a sort of routing ploy. For this reason, it goes on to verify the generated address. This is unlike an alias file, where verification of the existence of the alias is all that is done in the basic case. Should there be an option of smartuser to control what it does? It seems rather an obscure feature, and an alias can almost always be used instead. ------------------------------------------------------------------------------ (90) 21-Apr-99 M change wild prefix/suffix greediness Ben Smithurst Currently, when prefix or suffix containing * is set on a director, and the fixed part occurs more than once in a local part, the length of the prefix or suffix is maximized. For example, with suffix = -* and a local part of foo-bar-baz the suffix is taken as bar-baz, leaving the local part as foo. An option is proposed to invert this rule. ------------------------------------------------------------------------------ (91) 26-Apr-99 S make queue_run_in_order to newest first "Andreas M. Kirchwitz" The tidiest thing would be to have queue_run_order={random,oldest,newest}, and make queue_run_in_order obsolete. ------------------------------------------------------------------------------ (92) 26-Apr-99 M delay large messages until given time Brian Whit via Mark Baker "Would be possible to add another size limit to exim such that it would defer further delivery of large messages until a certain time? Perhaps something like... message_delay_size = 1M message_delay_times = 03:00-07:00 Thus, any message larger than 1MB would not be delivered until between 3am and 7am local time. This would allow people to send large emails without it clogging up the outgoing pipe during peak hours. I suppose you could also apply this to incoming mail by returning some sort of temporary error to the sender. It would probably be best to use different configuration value names, though, if this were to be done." Such a delay should, of course, apply only to non-local deliveries. This could perhaps be done by using "condition" to pass such deliveries to a smartuser director with :defer:, but that would cause a retry time to be set for the address. See also 104. ------------------------------------------------------------------------------ (93) 04-May-1999 L fallback_transport This would be a generic transport option, specifying a different transport to be used if the first one failed. Failed hard, or failed soft? Or an option? And if failed hard, is a bounce message sent as well, or not? There are uid issues. Remote delivery would have to be done always in a subprocess so that the main process could retain privilege in case the fallback transport was local. That could be conditional. That's why this is labelled "Large". Some of the things people want to do with this can be done by variations in the routers, e.g. use $message_age to switch routers. ------------------------------------------------------------------------------ (94) 13-May-1999 M message to go with -Mg Dave Holland Alan Thew So the admin can pass back a reason. ------------------------------------------------------------------------------ (95) 13-May-1999 S non-specific -oM flag People are using -oMr as a "virus checked" flag. It would be better to have a separate flag that trusted users could set, rather than overload this existing data. ------------------------------------------------------------------------------ (96) 19-May-1999 M treat RBL like sender-rejects That is to say, reject after DATA the first time, logging the headers. ------------------------------------------------------------------------------ **** Done (97) 22-May-1999 S log port as well as incoming IP address "H. Georg v.Zezschwitz" RFC 2505 states the increasing popularity of NAT might require that MTAs not only log the IP-number of the sender, but also the port the sender came from (at least in the logfiles, if not in the header). ------------------------------------------------------------------------------ (98) 26-May-1999 L support for rrdtool James FitzGibbon See http://ee-staff.ethz.ch/~oetiker/webtools/rrdtool/ ------------------------------------------------------------------------------ (99) 28-May-1999 M header to list failures for syntax_errors_to mark david mcCreary "I use the syntax_errors_to feature to email a copy of the error message. It would be helpful to have the X-Failed-Receipients header in there, identifying which addreses(s) are the problem, so that I don't have to parse the body of the email message to figure out which addresses." ------------------------------------------------------------------------------ (100) 04-Jun-1999 S admin_users option, like trusted_users Paul Mansfield ------------------------------------------------------------------------------ (101) 08-Jun-1999 M filter-time pipes A number of people want to run pipes at filter time, specifically at system filter time, to do things like virus scanning. Typically, several different responses are wanted, so some kind of multiway switch is needed. Could the variables be used? There is also a requirement to modify message bodies. This needs investigation as to the locking regime. ------------------------------------------------------------------------------ (102) 21-Jun-1999 M expanded basic variables Julian King Oh, and a wishlist entry, qualify_domain, and preferably other variables can be set with a $lookup in the first part of the exim configuration file, perhaps by an equivalent to backticks in shell script ("`command`")? ------------------------------------------------------------------------------ **** Not needed. (103) 22-Jun-1999 S make reverse lookup failure into a prohibition reason This would allow a prohibition_message to be more explicit. In fact, this is not needed because $host_lookup_failed should be available in the expansion of the prohibition reason (from 3.03). ------------------------------------------------------------------------------ (104) 22-Jun-1999 S add a "queue" command to system filter This would allow for specific messages to be handled by a queue runner, thereby serializing them to some extent. ------------------------------------------------------------------------------ (105) 28-Jun-1999 M MIME-format bounce messages Paul Makepeace (Paul.Makepeace@realprogrammers.com) "Is there any work going/gone on/planned to enable exim to report delivery status notifications using RFC1892 multipart/report MIME messages? It would be great to have errors reported in a message/rfc822 attachment." Jeffrey Goldberg "I like plain bounces, so would hope that if you do this, that it be configurable. I think that even for those who want it, it shouldn't be very high on the wish list priority." Other suggestions: toggle for bounces/warnings; override max_return for certain addresses; use plain text if original not MIME. See Paul's hack for background of what to do. Nigel suggests using a specially named autoreply transport to generate bounces; people could then replace this with another transport (e.g. pipe) if they want to customize it themselves. ------------------------------------------------------------------------------ (106) 05-Jul-1999 T expand sender_address_relay Lukasz Grochal This would make it possible to vary the relay checking depending on the sending host. ------------------------------------------------------------------------------ (107) 12-Jul-1999 S defer transport at given load level Marc Haber ------------------------------------------------------------------------------ (108) 16-Jul-1999 S remote sort by numbers of recipients mark david mcCreary In the absence of remote_sort, sort remote domains by the number of recipients in each. ------------------------------------------------------------------------------ **** Partially done (109) 21-Jul-1999 M sort domainlist hosts randomly Theo Schlossnagle Given a list of hosts in a route list, sort them randomly before trying. **** Randomizing is done An alternative suggestion by mark david mcCreary is to use round-robinning. He also wants the following, which is related: > I want the ability to split up one message, 100 addresses at a time, and > relay it to a smarthost for final delivery. When there are multiple > smarthosts named in the domain-list or file, then Exim would be able to > balance the load automatically. > If it sorted and grouped by mx host, that would be fantastic. That is, > those email addresses with common mx delivery hosts, should be sent to the > same smarthost, in that batch. ------------------------------------------------------------------------------ (111) 05-Aug-1999 S addition to relay_domains_include_local_mx Ross West Add a further check that the lowest MX for the domain points at a host with specific IP address (typically within some range). ------------------------------------------------------------------------------ (112) 16-Aug-1999 M scanning incoming messages Some people want to apply their own rules to incoming mail before delivering it. Exim could be caused to run a program/script instead of delivering, whenever a message is received. This could be passed the message's header file, or the function for reading headers could be made more easily callable from other programs. ------------------------------------------------------------------------------ **** Done, for aliases that generate just one new address. (113) 01-Oct-1999 M/L multi-level alias verification Address verification does not pursue secondary addresses created from aliases; if the alias exists, the verification is considered to have succeeded. This is a request to continue - however, there are complications. You have to accept an address if at least one of its children verifies - but there may be bad ones as well, so do you really gain that much? ------------------------------------------------------------------------------ (114) 11-Nov-1999 S List of possible outgoing interfaces Allow the smtp "interface" option to be a list: try them in turn until one is found to work. Also allow masks to specify a range of addresses. ------------------------------------------------------------------------------ **** Done (115) 11-Nov-1999 S Configure the HELO argument in outgoing It's legal to send an IP address instead of a name, and sometimes this might be wanted. Also, "virtual host" situations might want to change the value according to some criterion. ------------------------------------------------------------------------------ (116) 12-Nov-1999 M Qualified and unqualified aliases in the same file Marc Haber For example: abuse@some_hosted_domain: them@their_address.example.com abuse: me@my_address.example.com This could either be an option to cause *both* qualified and unqualified lookups (include_domain = both?) or there could be some kind of default lookup for "localpart@*". ------------------------------------------------------------------------------ (117) 19-Nov-1999 M Preventing too much mail for a given user Hugh Sasse "Some way of limiting number of messages (to a user/group?) (in a time period?) for damage limitation when being mailed bombed. (Temporary failures, user-selectable limits, statiscally derived limits maybe useful to consider)" Problem is exactly how to (a) define what is to be done and (b) implement it. ------------------------------------------------------------------------------ (118) 25-Nov-1999 M/L Preserving freezing text with message "James A.T. Rice" The requirement is for -bp to show the freezing reason, but since there could be different ones for different addresses, this would require modifying the spool format to keep a text per address (and not necessarily a top-level address either). ------------------------------------------------------------------------------ (119) 09-Dec-1999 S More information on the reject log Marc Haber Would it be possible to have the name of the configuration option that caused a reject to happen in the reject log? Something along the lines of the text that is in $prohibition_reason" could perhaps be done. ------------------------------------------------------------------------------ (120) 09-Dec-1999 M Separate RBL processing for different groups of hosts Michael Deutschmann For example, a smarthost might want to reject messages from any of its clients that are ORBS-listed, but only put warnings into incoming messages from other hosts that are ORBS-listed. Or, as Michael said: "I could legitimately want to ban any ORBS-listed hosts from relaying, while accepting local e-mail from them (perhaps with warning). I want just two lists (of RBLs) -- The existing one, and new one that only bites nonlocal mail, but ignores rbl_hosts." ------------------------------------------------------------------------------ **** Partly done (121) 13-Dec-1999 T Add an option not to add Sender: headers. On (more-or-less) personal computers running Exim, this doesn't have the usefulness that it does on large shared systems. **** Global turn-off implemented; also support for prefixes/suffixes. Do more than on/off: alternate header name, only certain senders, etc. "What I would like is a way to allow users to specify their own Sender (if they want to) and not have one added, and also to specify the return-path, _without_ giving them the ability to forge the first Received line." ------------------------------------------------------------------------------ (123) 23-Dec-1999 L Use AUTH + TURN for dial-in hosts Andrew Tverdokhleb The way to do this would be to have Exim deliver messages into per-host directories in, say, BSMTP format. Accept TURN if authenticated, and cause it to run a helper program that is passed the socket in order to deliver the mail. Provide a helper program! ------------------------------------------------------------------------------ (124) 04-Jan-2000 S/M Brackets in host lists This is to help with macros in the configuration file, so that one could say, for example, rbl_hosts = ! (MACROLIST) but there are complications with nesting to think about. ------------------------------------------------------------------------------ (125) 04-Jan-2000 L Use shared memory segment for queue list Theo Schlossnagle The idea is that a queue-runner that finds no existing shared segment should create one (if configured - possibly some fixed size) and all Exim processes should maintain a list of messages in it, thereby saving on directory scans when there are lots of messages. This needs a lot of careful thought to try to eliminate any possibility of data loss. The interlocking could be quite tricky. Further posters suggested using a db file to hold the list. See also 127. ------------------------------------------------------------------------------ **** Done (126) 05-Jan-2000 M Rejection of 127.0.0.1 addresses Apparently there are some domains in the DNS that have A records pointing to 127.0.0.1, which cause defers/freezes etc if anyone tries to mail to them. The requirement is for a way to pretend that such records do not exist. This should probably be per-router. ------------------------------------------------------------------------------ (128) 12-Jan-2000 M Check local domains have MX records Recognize a domain as local only if it has an MX record (optionally). This would allow more control over wildcarded domains such as *.x.y.z. The option should probably be attached to the item in local_domains rather than being global. ------------------------------------------------------------------------------ (129) 14-Jan-2000 L Dynamically loadable lookup modules Steve Haslam Suggested patch provided. ------------------------------------------------------------------------------ (131) 17-Jan-2000 T Facility for assuming existence for EACCES Peter Radcliffe The opposite option for "+" in require_files: assume existence if cannot peer into the directory (+ assumes non-existence). ------------------------------------------------------------------------------ (133) 20-Jan-2000 M An "exipick" utility Jeffrey Goldberg A utility to scan the queue and select messages according to a variety of criteria, outputting the message id's of those that match. What should the criteria be? ------------------------------------------------------------------------------ **** Done (135) 20-Jan-2000 L Outgoing PIPELINING support Anand Buddhdev This is a lot of work. ------------------------------------------------------------------------------ **** Done (136) 20-Jan-2000 T Make "optional" in aliasfile work for queries Tristan Aston If a query defers, check the "optional" setting. ------------------------------------------------------------------------------ (137) 30-Jan-2000 S Interface to ATRN program Exim can't support ATRN directly, but it could be made to call a script, along the lines of ETRN. ------------------------------------------------------------------------------ **** Done (maildirfolder) (130) 28-Feb-2000 M More support for maildir++ michael@freenet-ag.de From 3.14 it is possible to include the file size in its name, but maildir++ has other features as well that might be wanted. ------------------------------------------------------------------------------ (131) 29-Feb-2000 M? Control total number of outgoing SMTP calls Brian White This is for hosts with slow connections. Could some modification of serialize_hosts be used for this? Or maybe use a semaphore? They seem to be quite widely available. ------------------------------------------------------------------------------ (132) 01-Mar-2000 S Lookup host name from outgoing interface Vadim Vygonets Instead of primary_hostname, look up the name for the interface that is being used for sending. Suggested patch supplied, but this should be an option of the smtp transport. ------------------------------------------------------------------------------ (133) 06-Mar-2000 S Filter option not to log "previously sent" Bruce Bowler This is when using the "log" option of the autoreply driver. ------------------------------------------------------------------------------ (134) 09-Mar-2000 S Option to remove attachments when bouncing ------------------------------------------------------------------------------ (135) 10-Mar-2000 M Getting the name for $interface_address patl@phoenix.volant.org If there is no easy built-in method at this time, I'd like to propose either: 1) Add an $interface_host variable that would be set to the reverse DNS lookup of $interface_address. (When that variable is valid.) **** Done Or 2) Add a general DNS lookup capability that would take a key and a record type. (With some magic to recognize and convert IP address keys into the in-addr.arpa form when PTR records are requested.) ------------------------------------------------------------------------------ (136) 13-Mar-2000 S/M Option for aliasfile to suppress "me too" Could be tricky determining who "me" is. ------------------------------------------------------------------------------ **** Done more general DNS lookup (137) 14-Mar-2000 M Support for virtual hosts (virtual by IP) patl@phoenix.volant.org Need a way of getting the name of an incoming interface; either $interface_ name (seek when first used) or provide a more general DNS lookup method. Need a way of adjusting qualify_domain. Could it be expanded whenever used? ------------------------------------------------------------------------------ (138) 06-Apr-2000 M/L Daemon to listen on more than one port Dave C. The port number would need to be available in $sender_host_port so that various policies could be changed on a per-port basis, e.g. authentication requirements. If *all* "incoming" policies were to be made per-port settable, this is a big job. ------------------------------------------------------------------------------ (139) 20-Apr-2000 M Expand the "port" option There are cases where this could be useful. Patch supplied by Milan.Kocian@cnw.cz. However, making this change really means that the waiting database must be keyed by port too (see also 56). ------------------------------------------------------------------------------ **** Done (assumes iso-8859-1) (140) 20-Apr-2000 S Escape gecos field better for non-printers When creating From:/Sender: headers, this is. Need to go for the modern thing like "=?iso-8859-2?Q?Petr_=C8ech?=", but where is this defined? How to find the character set? ------------------------------------------------------------------------------ **** Done (for debug levels > 1) (141) 27-Apr-2000 T Restrict debugging to admin users This is because debugging shows database queries, and these may nowadays contain passwords. Also, filter file processing can be seen. ------------------------------------------------------------------------------ (142) 06-May-2000 S Control whether body or header is returned Jason The current control is merely on the size of returned message in bounces. The suggestion is for an option to say "none", "header", or "all". ------------------------------------------------------------------------------ (143) 08-May-2000 S Make quota_warn_threshold into a list David Carter So several warnings could be generated as the mailbox got bigger and bigger. ------------------------------------------------------------------------------ (144) 08-May-2000 M Implement accept_max_per_connection, or a rate limiter Pete Naylor What people want is a way of holding up a remote host that is either spamming or flooding you. Suggest patch supplied, plus several comments. ------------------------------------------------------------------------------ (146) 15-May-2000 M Allow SMTP error codes in retry rules This would allow special handling of certain errors from certain hosts. In particular, it would allow failing of certain 4xx codes. ------------------------------------------------------------------------------ **** Done (147) 15-May-2000 S Restrict MX count This suggestion is a way of restricting the number of MX records that a delivery tries to use. In fact, it might be easier to restrict the number of IP addresses. So if a domain has 24 MXs or IPs, you could say "try up to 4", for example. ------------------------------------------------------------------------------ (148) 15-May-2000 S Warn recipient if message rejected for quota excession. Heinz Ekker Maybe not all that small, because the possibility of retrying must be taken into account. ------------------------------------------------------------------------------ (149) 19-May-2000 L Make added headers visible in filters and other places Hans Morten Kind Headers added by directors/routers are not visible in subsequent processing. This is a request to make them visible. What about removed headers? This could be tricky to specify, hence the L. A separate but related issue is the effect of headers added by "unseen" directors. These are documented in chapter 19 as not being accumulated. Should any change be made? ------------------------------------------------------------------------------ (150) 22-May-2000 L Better ways of embedding local logic into Exim Interpreted filters are slow and not flexible. Embedded Perl is flexible, but not very efficient. Some better way is needed. Think about ways of embedding local logic into Exim - e.g. some scheme for linking it with locally-supplied C functions that get called via the expansion mechanism. Various ideas have been suggested. Also, some people require a more sophisticated filter language. Also: take a look at sendmail's "milter" concept. There's an API to talk to an external program via sockets. http://www.activestate.com/Products/PerlMx/ http://sourceforge.net/projects/sendmail-milter/ ------------------------------------------------------------------------------ (151) 25-May-2000 S headers_check_xxx to become a host list. I'm not all that keen. Why make this distinction? ------------------------------------------------------------------------------ (152) 25-May-2000 S Limit recipients when sender is <> ... on the grounds that bounce messages should only have one recipient. ------------------------------------------------------------------------------ **** Done (153) 12-Jun-2000 M Get filter text from a database Thorkild Stray ... instead of from a file. ------------------------------------------------------------------------------ **** Done (154) 14-Jun-2000 S Investigate encoding header data There are now ways to encode 8-bit data in header lines. Do this for user names from the password file that contain topbit characters. This is the same as (140). ------------------------------------------------------------------------------ (155) 16-Jun-2000 M Special handling for certain hosts mark david mcCreary A means of changing the transport depending on the host name/IP of the most preferred MX record so that all domains that route to certain hosts can be handled specially. Maybe this could be a variable that is available in the expansion of the "transport" option. ------------------------------------------------------------------------------ (156) 19-Jun-2000 M Option to tailor contents of X-RBL-Warning: line Tabor J . Wells ------------------------------------------------------------------------------ **** Done (157) 26-Jun-2000 M Fancy Exim quota facilities John Linn The suggestion is for an option to continue to deliver unless a user is *over* quota (so it would be unlike a system quota), with facilities for allowing certain messages to bypass the quota checking. My personal feeling is that this is a bit over elaborate. ------------------------------------------------------------------------------ (158) 29-Jun-2000 S Configure "From" in bounces Ben Parker Cf Reply-To. ------------------------------------------------------------------------------ (159) 07-Jul-2000 M Keep messages for fixed time Gary Palmer An option to keep messages on the queue for a specified time, even if all their destination hosts have timed out. ------------------------------------------------------------------------------ **** Done the second thing (untrusted_set_sender) (160) 10-Jul-2000 T An option to consider all users trusted For simple systems with few users. Could this be trusted_users = *? Some people require only the ability to forge sender, *without* the ability to forge the other things. Maybe a separate option? ------------------------------------------------------------------------------ (161) 13-Jul-2000 T Recognize "@" in qualify_{domain,recipient} And possibly elsewhere? ------------------------------------------------------------------------------ (162) 31-Jul-2000 T An explicit "skip if already used" director option "If this director has been used before in generating the current address, skip it." ------------------------------------------------------------------------------ (163) 10-Aug-2000 S A way of rejecting based on HELO/EHLO Dennis Taylor Something like helo_reject[_recipients]. Of course, the contents of HELO can be changed by the determined, but maybe this could be helpful. ------------------------------------------------------------------------------ (164) 17-Aug-2000 S sender_unqualified_auth_hosts To allow authenticated hosts to send unqualified addresses. Presumably it needs received_... as well. ------------------------------------------------------------------------------ (165) 21-Aug-2000 S Option to ignore RBL check if client authenticates Maximiliano Kolus "My problem is that i want to use DUL *and* SMTP AUTH, but i didnt find a way to tell exim 'no matter if the IP is on a RBL, if it was authenticated let the mail pass'." This is yet another variabion on RBL. We really need to consider them all, and set up a more flexible scheme. ------------------------------------------------------------------------------ (166) 23-Aug-2000 M #ifdef feature in configuration files Marc MERLIN This would make it easy to include/exclude parts of the file more easily. Something like this: #ifdef MACRO exim stuff #endif ------------------------------------------------------------------------------ (167) 05-Sep-2000 L Support for ODBC This would allow access to databases that don't have native support built into Exim. See http://www.openlinksw.com/info/docs/rel3doc/unix/odbcsdk.htm ------------------------------------------------------------------------------ (168) 06-Sep-2000 M Deliver messages that alias to nothing to a given address Dr ZP Han If other people are managing alias lists, and one is empty, bounce that delivery to a given address rather than freezing the message. Use the errors_to address? ------------------------------------------------------------------------------ (169) 06-Sep-2000 M/L A way of dumping build-time settings Christi Alice Scarborough This would require a whole slew of new code inside Exim to record the various build-time settings that are not defaults for runtime settings, and code to output this. It adds to the maintenance burden to keep this up-to-date. I'm not keen. ------------------------------------------------------------------------------ **** Done (170) 07-Sep-2000 M/L LDAP improvements michael@freenet-ag.de Patches suppled for new OpenLDAP, which also do a number of other things to the way LDAP works. Needs evaluation. Also, consider changing the separator for multiple fields from ", " to " " so that ${extract} works. ------------------------------------------------------------------------------ (171) 11-Sep-2000 M Extend accept_max_per_host to look as a list Mark Ivens The idea here is to limit specific hosts, or specific networks, to a maximum number of incoming connections, while allowing others a larger limit. ------------------------------------------------------------------------------ (172) 11-Sep-2000 S Allow file/directory in appendfile to override "Michael J. Tubby" When appendfile is called from forward or filter files, it ignores file or directory settings. Maybe they should override. The path set by the forward or filter is available in $address_file these days, so it could be used to create a longer path. ------------------------------------------------------------------------------ (173) 18-Sep-2000 S A way of doing lsearches with EOL terminated keys Jason Robertson This is for looking up things like subject contents. Probably need an option to exim_dbmbuild to make them into DBM files. ------------------------------------------------------------------------------ (174) 19-Sep-2000 S A way of using a different port for fallback hosts. Dean Brooks ------------------------------------------------------------------------------ (175) 25-Sep-2000 M Rate limiting for (e.g.) HELO syntax errors Dave C. "On another tack, (this is directed mostly at PH10), how hard would it be to add an option to exim that if a given host failed some sort of syntax or verification, a configurable number of times within a configurable timeframe, that connections from that host would be refused outright for a configurable following timeframe?" This was prompted by a spate of HELO syntax errors. Is this worth it? How much do you really gain? ------------------------------------------------------------------------------ **** Done (for senders) (176) 19-Oct-2000 S Verification by SMTP call back Phil Chambers This would be controlled per domain, and might be useful for locally managed domains. In general it is less useful. ------------------------------------------------------------------------------ (177) 19-Oct-2000 S Option to do quotas by allocated rather than used I'm not keen on this idea because it's hard to explain to users, and depends on the block size of the file systems in use. It is most relevant when each message is in a separate file, because then the waste can add up to a lot more disc space than the actually amounts used. ------------------------------------------------------------------------------ **** Done (178) 19-Oct-2000 S A failure mode for ${extract} Needs some new syntax. ------------------------------------------------------------------------------ (179) 30-Oct-2000 S Expand quota_filecount Brian Candler "The philosophical problem is that if you implement quota_filecount properly, then for consistency you should have a quota_filecount_warn_threshold as well. More complexity." ------------------------------------------------------------------------------ (180) 31-Oct-2000 S Queue runs that do first deliveries only michael@freenet-ag.de Such a queue runner would operate only on messages that have not yet had any delivery attempts. But would this actually gain very much? ------------------------------------------------------------------------------ (181) 10-Nov-2000 S Compile-time options for ignoring Sendmail options So that new ones could be accommodated easily. ------------------------------------------------------------------------------ (181) 10-Nov-2000 S Log result of RBL lookup Matthew Frost "Something like rbl_log_returned_ip (or a switch on the rbl_domains entry) which will log the returned IP address from the RBL look up in the reject log (for ORBS so it's possible to see which list the entry resides on if you have a blanket entry of "rbl_domains=relays.orbs.org/warn")". ------------------------------------------------------------------------------ (182) 20-Nov-2000 M Recipients max but not for reserved host Dave C. "I would like to apply a recipients_max setting, but have it not apply to the hosts in smtp_reserve_hosts (Eg, I want to have a different set of limits for 'internal' hosts than for remote hosts..)" ------------------------------------------------------------------------------ (183) 04-Dec-2000 L dns_means_nonexist_after Dave C. In other words, wait a bit before giving up. This needs a mechanism for remembering, which is not currently available. To be borne in mind for the future. ------------------------------------------------------------------------------ (184) 04-Dec-2000 M Log more details of local caller J. Nick Koston "I was wondering if it was possible for exim to log the parent pid's cwd and exe when it is called from a script/invoked by actually running /usr/sbin/exim or /usr/sbin/sendmail." Question: is this information actually/easily available to Exim? Needs investigation. ------------------------------------------------------------------------------ (185) 15-Dec-2000 M RBL on a per-user basis Tom Marazita "One solution would be to allow RBL rejections to occur on a per-user basis. I could imagine a scenario where there was a new option for "rbl-domains" entries that looked like: rbl_domains = "rbl.maps.vix.com/user;/etc/rbl-users" With /rbl/users containing usernames and "warn" or "reject" options." ------------------------------------------------------------------------------ (186) 19-Dec-2000 S A simple utility to reset a retry time Marc Haber Basically, to do what exim_fixdb "delete" can do, but straightforwardly. There could be an interface from eximon. ------------------------------------------------------------------------------ (187) 02-Jan-2001 M Wildcarding in headers_remove Tamas TEVESZ What I'd like to see is it to handle globs (or regexps, but i'm not sure this latter would worth the hassle), in a way like: headers_remove = "X-*:Additional-header" ------------------------------------------------------------------------------ (188) 02-Jan-2001 S Make pipe timeout a temporary error Georg v.Zezschwitz A way to make a timeout into a temporary error. ------------------------------------------------------------------------------ (189) 03-Jan-2001 S A "show" option for eximon The opposite of "hide". ------------------------------------------------------------------------------ (190) 03-Jan-2001 M Multiple message operations in eximon ------------------------------------------------------------------------------