+
+(299) 25-Oct-04 S Options to make Sieve "keep" pass to next router
+
+Currently, "keep" saves in the mailbox. Probably need two options, for implicit
+and explicit keep commands.
+------------------------------------------------------------------------------
+
+(301) 27-Oct-04 M Use an "ACL" to filter logging
+
+This idea was for ACL syntax to be able to "accept" or "deny" individual log
+lines. This would make it possible to have, for example, per-host logging for
+certain things. See also 15 above.
+------------------------------------------------------------------------------
+
+(302) 28-Oct-04 M Expand pass_router and redirect_router
+
+Doing this would mean postponing the validity checks till the router was
+actually used instead of doing them at start up. It does not seem to be a
+facility that will be widely used.
+------------------------------------------------------------------------------
+
+(303) 28-Oct-04 M Support SQL relay
+
+This would make it easier for packagers to support "generic SQL" without having
+to choose which one. It can be slotted in using a MySQL interface without
+modifying Exim, but native support would be nice.
+------------------------------------------------------------------------------
+
+(304) 02-Nov-04 M A way of seeing the whole message in Perl or ${run
+
+At present, the headers are available in $message_headers, but only part of
+the body is visible. The only way to pass the whole body would be as a file
+descriptor because it can be very large. See also (42).
+------------------------------------------------------------------------------
+
+(305) 02-Nov-04 M A Perl transport
+
+The suggestion here is that an embedded Perl function takes responsibility for
+doing the delivery. I am not at all keen on this. One way of doing it would be
+to implement (244), which provides an "on success" string expansion. Then
+anyone who wants this could run that on a transport that does nothing.
+------------------------------------------------------------------------------
+
+(306) 09-Nov-04 M Make the search type partial-lsearch*@ be useful
+
+At present, it treats the whole key as a domain for the partial search, then
+does the *@ thing. A more sensible plan would be something like:
+
+ user@company.com
+ *@company.com
+ user@*.company.com
+ *@*.company.com
+ *
+
+That is, try the local part and * at each of the partial domain values.
+------------------------------------------------------------------------------
+
+(307) 24-Nov-04 S Check the syntax of Message-ID: header lines
+
+This could be added to "verify=header_syntax" or, if the incompatibility is
+felt to be too great, an additional condition, or a sub-option, could be added.
+------------------------------------------------------------------------------
+
+(308) 24-Nov-04 S Add $body_longlinecount and $header_longlinecount
+
+These variables would hold the number of physical lines in the body and header
+that were longer than 998 bytes. This would be fiddly to implement because of
+the way Exim currently reads the input. It isn't just a trivial patch.
+------------------------------------------------------------------------------
+
+(309) 01-Dec-04 S/M Queue runners should get locks before forking
+
+If a queue-runner opened the -D file and took out the lock before forking, it
+would waste fewer resources if the message was already being delivered. But how
+often would this actually matter in practice?
+------------------------------------------------------------------------------
+
+(310) 06-Dec-04 S After "personal" save what matched
+
+The idea is to save the email address that actually was found in the message
+in a variable so it can be used (e.g. as the From: address in an autoreply).
+------------------------------------------------------------------------------
+
+(311) 07-Dec-04 ? More flexible SMTP response codes
+
+The requestor wanted to be able to specify, for example, 551 in an ACL deny
+instead of 550, and also vary the defer code. The first digit, however, should
+remain fixed. In addition to main codes, enhanced status codes (RFC 2034) were
+requested. (As far as I can tell, they have never been highly popular.)
+------------------------------------------------------------------------------
+
+(312) 10-Dec-04 ? Shadow remote transports
+
+Unless a lot of work is done, this would be restricted to another remote
+transport. A similar effect could therefore be achieved with "shadow_hosts"
+which are like fallback_hosts but which operate on success.
+------------------------------------------------------------------------------
+
+(313) 21-Jan-05 ? Multiple queues
+
+Exim runs poorly if its queue gets too big. Various ways round this are all
+to some extent kludges. There has been a suggestion of using multiple
+directories instead of just "input". (Originally it was for a whole set of
+spool directories, but that introduces complications with the hint files.)
+On message arrival, somehow a selection of "input" must be made. Then queue
+runners must be startable for the different "queues". Don't forget that the
+"msglog" directory is also involved. Perhaps add a new level of indirection:
+/var/spool/exim/queue1/{input,msglog}, /var/spool/exim/queue2/....
+------------------------------------------------------------------------------
+
+(314) 15-Feb-05 M Multiple headers_{add,remove} for routers
+
+If headers_{add,remove} could be specified multiple times, it would be easier
+for those people that construct configs using .ifdef or .include, etc. See also
+333.
+------------------------------------------------------------------------------
+
+(315) 15-Feb-05 M String variables for use in filters.
+
+Currently, only numerical variables are supported.
+------------------------------------------------------------------------------
+
+(316) 21-Feb-05 M Put callout response into a variable
+
+When a callout fails, put the entire SMTP response into a variable. This is not
+trivial because we probably should retain it in the cache as well.
+------------------------------------------------------------------------------
+
+(317) 25-Feb-05 S Delete the pid file when the daemon exits
+
+At least try to catch some of the exit routes from the daemon and either delete
+or empty the pid file.
+------------------------------------------------------------------------------
+
+(318) 02-Mar-05 S Add current connection count to daemon's exiwhat output
+------------------------------------------------------------------------------
+
+(319) 03-Mar-05 ? Allow file rather than directory for scanning call
+
+"I can call arbitrary scanning software by specifying the full path. I can pass
+a directory to be scanned in the arguments. I'd like to be able to pass a
+specific file name instead of a directory. I think this would allow me to call
+Bogofilter at smtp time. Bogofilter requires a filename, not a directory. The
+file would contain the complete email. I suppose there may be other scanning
+solutions with a similar requirement."
+------------------------------------------------------------------------------
+
+(321) 07-Mar-05 S Run an ACL on a sync error
+
+... and possibly "accept" or "deny" it.
+------------------------------------------------------------------------------
+
+(322) 15-Mar-05 M Add a /defer_ok option to verify=reverse_host_lookup
+------------------------------------------------------------------------------
+
+(323) 15-Mar-05 M Make callouts use smtp_data from the smtp transport
+
+This is yet another problem caused by duplicating the SMTP code between the
+transport and the callout verification. See item 294 above. Merging the
+transport and the callout code could prevent this kind of thing from happening.
+------------------------------------------------------------------------------
+
+(324) 04-Apr-05 ? Make -bP show ACLs
+
+This is in the Bugzilla as #10.
+------------------------------------------------------------------------------
+
+(326) 03-May-05 ? Queue-only on memory shortage
+
+This is bugzilla #17. The idea is to have something like queue_only_load that
+triggers on a shortage of main memory.
+------------------------------------------------------------------------------
+
+(327) 06-May-05 ? Break delay if connection drops
+
+Currently, "delay=5m" (e.g.) waits for 5 minutes. If we can detect that the
+connection has died in the meantime, it would make sense to break the delay.
+However, it doesn't seem possible to detect a dropped connection without trying
+to read from it.
+------------------------------------------------------------------------------
+
+(328) 10-May-05 S After "unseen" routing, pass on header additions/deletions
+
+Currently, when an "unseen" router accepts an address, header additions and
+deletions stick with that address, and the "clone" address that continues to be
+routed starts off without any additions or removals. This request is for an
+option to select other actions: retain header actions with the clone only, or
+pass them on to both addresses. See also 333.
+------------------------------------------------------------------------------
+
+(329) 12-May-05 S Create message ID at MAIL FROM time
+
+Currently, the ID is created only when Exim is about to create the data (-D)
+file for an incoming message. In other words, after it knows it really is going
+to accept the message. Creating the ID earlier would mean that rejection
+messages in the log would be tagged with an ID, and this is seen as desirable
+by some people.
+------------------------------------------------------------------------------
+
+(330) 31-May-05 ? Default interface for -bh and default port for -oMi
+
+I do not think it worth putting effort in here for these reasons: If a host has
+multiple interfaces, there's no easy way to choose one to be the default for
+$interface_address when -bh is used. If the host does not have multiple
+interfaces, chances are the configuration won't be looking at
+$interface_address anyway. If you are setting -oMi, and care about the port, it
+isn't much effort to tack on a port number, though in this case, I suppose a
+default of 25 is "obvious".
+------------------------------------------------------------------------------
+
+(331) 31-May-05 M More than one retry time per host
+
+Consider this example: an attempt to start a TLS connection to a host gets a
+temporary error. This stops *all* connections, both for TLS and otherwise.
+Different retry times for different circumstances are needed to get round this.
+What are the circumstances? TLS/not-TLS is clearly one, but sometimes you don't
+know if you are going to try TLS until you have connected. So this makes sense
+only if require_tls is used. Perhaps the multiple retry times should just be
+per-transport, to avoid these difficulties. If we made all retry keys depend on
+the transport, this would happen automatically.
+------------------------------------------------------------------------------
+
+(332) 03-Jun-05 S A "receive time taken" log selector
+
+This suggestion is to at an RT= item to the <= line, giving the time it
+actually took to receive the message.
+------------------------------------------------------------------------------
+
+(333) 06-Jun-05 L Re-think and re-implement header handling
+
+There are a number of items related to headers above. Better facilities for
+handling headers at ACL time are needed. The whole way in which Exim handles
+headers should be re-planned and re-implemented in a more consistent manner.
+
+These are the main previous items:
+
+Exim 3 Wish List: 41, 85, 149, 187.
+Exim 4 Wish List: 55, 62, 63, 160, 212, 270, 314, 328.
+------------------------------------------------------------------------------
+
+(334) 07-Jun-05 M Support for messages larger than 2G
+
+This is probably a longish-term thing at the moment. Quotas over 2G are now
+supported, but not individual messages; no doubt one day this will be wanted.
+------------------------------------------------------------------------------
+
+(336) 16-Jun-05 M Show recipient(s) after header check failure
+
+The mainlog line for "There is no valid sender in any header line" shows the
+sending host and the envelope sender, but does not show any recipients. There
+has been a request to show recipients. Presumably this should be on some new
+log selector, and it must have a cutoff maximum number of recipients. NOTE: the
+data in the reject log does show the envelope recipients as part of its
+additional data.
+------------------------------------------------------------------------------
+
+(337) 29-Jun-05 S Add "defer" to $recipient_verify_failure
+
+This is for when defer_ok was set when verifying recipients. Since this isn't
+for a failure, we probably also need "ok" for the non-fail case.
+------------------------------------------------------------------------------
+
+(338) 14-Jul-05 M Change to Bind 9 API
+
+Exim uses the original API for calling the DNS resolver. There is a newer API
+available, and noises are being made in some OS that compatibility with the old
+API is going to be dropped. Nevertheless, there are sure to be systems about
+for ages that require the use of the old API. Therefore, we will have to
+implement not only an interface to the new API, but a backwards compatibility
+feature. It would be nice if this was automatic.
+------------------------------------------------------------------------------
+
+(339) 28-Jul-05 S Log name of maildir file
+
+This wish is for an option to log the name of the file that is written in
+maildir format (e.g. time.pid.host).
+------------------------------------------------------------------------------
+
+(340) 30-Aug-05 M Match more than one item
+
+match_address, for instance, matches one address to a list. The wish is to be
+able to supply two lists; for each address in the first list, search the
+second. Maybe something like ${match_any{...}{...}} is needed.
+------------------------------------------------------------------------------
+
+(341) 15-Sep-05 S Add /return_path_retain to submission mode
+
+This would re-instate the behaviour prior to change 4.52/PH/04.
+------------------------------------------------------------------------------
+
+(342) 26-Sep-05 T Log and maybe defer odd values for condition pre-condition
+
+Odd values for "condition" in an ACL cause it to defer. In a router, they are
+treated as "true". At least they should be logged in a router, and perhaps they
+should also defer, for compatibility with ACLs.
+------------------------------------------------------------------------------
+
+(343) 03-Oct-05 M A query-style lookup for scanning flat files
+
+The natural syntax for this would be to use a regex, like this:
+${lookup regex{/some/file regex}{found-string}{not-found-string}}
+However, it would be natural to want to use $1 etc in the found-string; this
+would be hard because of the lookup caching (if repeated, the lookup won't
+actually be done and therefore the numerical variables won't be set), and in
+any case, even without caching (and it could, I suppose, be disabled for this
+lookup) those variables are not in the right storage pool even if they were
+preserved after the lookup.
+
+An alternative approach might be to implement something like this:
+
+ ${scanfile{/some/file}{sub-expression}}
+
+where the sub-expression is expanded for every line in the file, with each line
+in turn being put into $value. This is like a conditional ${readfile, and in
+fact ${readfile could be written using ${scanfile. It would be nice to find a
+way of stopping the scan once something has happened. The only thing I can
+think of is to invent a variable that changes when scanning a line generates
+some non-null text, and then always to stop on a forced failure. That would
+allow expressions like this:
+
+ ${scanfile{/some/file}
+ {
+ ${if eq{$generated}{}{${if match{regex}{$value}{something}}} fail}
+ }}
+
+It's all rather clumsy. Once a line has matched and generated some text, the
+next iteration would stop the scan. Another thought: maybe use $scanline
+instead of $value (to save confusion) and have $scantext containing everything
+that's been generated so far. That sounds pretty flexible.
+------------------------------------------------------------------------------
+
+(344) 10-Oct-05 M Make debug_print work in authenticators
+------------------------------------------------------------------------------
+
+(345) 14-Oct-05 M Standardize rejection messages
+
+"The parsing for rejection lines is a bit of a mess, and fairly
+unmaintainable. Do you think it would be possible to standardise
+rejection/refusal log messages? How about something like:
+
+(<ID>|16 Spaces) *< (Connection|MAIL|RCPT|HELO|EHLO|DATA) rejected (from
+<Address>)?: <Reason> (\(<Detail>\))?"
+------------------------------------------------------------------------------
+
+(346) 20-Oct-05 S Set $domain and $local_part in retry matching
+
+Currently, these variables are unset. Make it like rewrite matching.
+------------------------------------------------------------------------------
+
+(347) 15-Nov-05 M Arrange to expand data from wildlsearch
+
+This would allow keys that are regular expressions to set up numerical
+variables that are included in the data. This has to be done inside the lookup
+code, because of caching. Probably means we have to invent ewildlsearch and
+enwildlsearch.
+------------------------------------------------------------------------------
+
+(351) 31-Mar-06 ? Allow some/all/a few internal variables to be set
+
+The original idea was to allow "set authenticated = x" to pretend a connection
+is authenticated after other conditions are true. This can, of course, be
+packaged up using macros in other ways. Setting other variables could cause
+problems.
+------------------------------------------------------------------------------
+
+(352) 04-Apr-06 S Add +accept_defer for host lists (and maybe others)
+
+At present, a defer causes a delivery defer. For non-critical ACLs there are
+times when it may be better to accept. See also 226 and 289.
+------------------------------------------------------------------------------
+
+(354) 30-Jun-06 ? Extensions to SMTP error codes
+
+A number of ideas arose following a discussion on the mailing list. I record
+them here so that they don't get lost. The motivations were to support the 551
+bounce code and enhanced status codes. Suggestions are to add a new ACL
+feature, possibly one of:
+
+ errorcode = 511
+ control = errorcode=551
+ message = 551 xxxx
+
+where in the last case, it's recognized by being 3 digits. In all cases, the
+first digit must be "right" for the circumstance - ignore or fault if not?
+
+To handle ESC, perhaps a new variable called $smtp_errorcode, settable by an
+option in a router when it fails, would do the trick. It could be used in any
+of the above modifiers.
+------------------------------------------------------------------------------
+
+(355) 30-Jun-06 ? Facility to permit experiments with SMTP extensions
+
+This is what was suggested:
+
+- adding some expansion variables: $ehlo_extensions (which will
+ hold the remote server supported smtp extensions announced
+ in the ehlo) and $rcpt_arguments with any RCPT extra argument
+
+- a main configuration option for adding ehlo extensions to the
+ ehlo response, like:
+
+ extra_ehlo_extensions = XFOO : XBAR
+
+- a extra option for the smtp transport to add arguments to
+ the RCPT TO command, like:
+
+ rcpt_args = FOO=BAR (will make exim issue RCPT TO:<a@b.c> FOO=BAR
+ when delivering that message)
+
+- a new acl for unknown smtp commands
+
+This should be very simple to implement and will allow to make
+some experiments and implement custom extensions, i.e. one to
+known if remote client will redirect on 551 or not. Also the acl
+for unknown smtp command could be used for other purposes, like
+to detect and react to some kiddies that send things like
+http://... on the smtp port.
+------------------------------------------------------------------------------
+--- HWM 355 ------------------------------------------------------------------