Compiling with DomainKeys caused the test suite to show up some bugs:
[users/jgh/exim.git] / doc / doc-misc / WishList
index 2166acb47ec7e0feea8e0ad85cb7891834738ec1..adc8b0bba9a41e5ce582df8c59aef2792d22f351 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-misc/WishList,v 1.10 2004/11/25 11:03:37 ph10 Exp $
+$Cambridge: exim/doc/doc-misc/WishList,v 1.39 2005/06/16 15:48:58 ph10 Exp $
 
 EXIM 4 WISH LIST
 ----------------
 
 EXIM 4 WISH LIST
 ----------------
@@ -72,7 +72,7 @@ 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
 
 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.
+solved with a replace_header option. See also Exim 4/333.
 ------------------------------------------------------------------------------
 
 (43) 15-Oct-98  M  Sender rewrite *after* SMTP incoming checks
 ------------------------------------------------------------------------------
 
 (43) 15-Oct-98  M  Sender rewrite *after* SMTP incoming checks
@@ -124,7 +124,7 @@ http://www.net.lut.ac.uk/~martin/antispam/exim-hacks/
 Dave Lewney
 John Holman
 
 Dave Lewney
 John Holman
 
-Such as "return-receipt-to". See also 41.
+Such as "return-receipt-to". See also 41. See also Exim 4/333.
 ------------------------------------------------------------------------------
 
 (90) 21-Apr-99  M  change wild prefix/suffix greediness
 ------------------------------------------------------------------------------
 
 (90) 21-Apr-99  M  change wild prefix/suffix greediness
@@ -301,7 +301,8 @@ This would allow special handling of certain errors from certain hosts. In
 particular, it would allow failing of certain 4xx codes.
 
 This is now available for 4xx responses to RCPT commands. Is anything more
 particular, it would allow failing of certain 4xx codes.
 
 This is now available for 4xx responses to RCPT commands. Is anything more
-needed?
+needed? Apparently, yes; there's been a request for a similar feature for MAIL
+commands.
 ------------------------------------------------------------------------------
 
 (148) 15-May-2000 S  Warn recipient if message rejected for quota excession.
 ------------------------------------------------------------------------------
 
 (148) 15-May-2000 S  Warn recipient if message rejected for quota excession.
@@ -320,7 +321,7 @@ 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
 
 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?
+any change be made? See also Exim 4/333.
 ------------------------------------------------------------------------------
 
 (155) 16-Jun-2000 M  Special handling for certain hosts
 ------------------------------------------------------------------------------
 
 (155) 16-Jun-2000 M  Special handling for certain hosts
@@ -577,15 +578,6 @@ size. Directory scanning is expensive; is there any scope for caching? It would
 seem not (you don't often get two addresses to the same user).
 ------------------------------------------------------------------------------
 
 seem not (you don't often get two addresses to the same user).
 ------------------------------------------------------------------------------
 
-(4)  01-Jan-02  S  Option to reject if no From: or Date: header line
-
-Exim, in common with many other MTAs, inserts a From: or Date: header line if
-one is missing. (It also inserts a blank Bcc:, but that is no longer needed by
-RFC 2822 - it was by 822.) The suggestion is an option to give an error
-instead. This could be done by making it possible to detect these insertions in
-the acl_smtp_data ACL.
-------------------------------------------------------------------------------
-
 (6)  01-Jan-02  S  Option to disable the use of -t
 Dave C.
 
 (6)  01-Jan-02  S  Option to disable the use of -t
 Dave C.
 
@@ -767,9 +759,11 @@ Client: We need a variant of 'exim -bs' which would connect to a specified
 host, send AUTH/ATRN, and then accept incoming messages as usual.
 ------------------------------------------------------------------------------
 
 host, send AUTH/ATRN, and then accept incoming messages as usual.
 ------------------------------------------------------------------------------
 
-(50)  22-May-02 T  Add comment (duplicate address) to Envelope-To:
+(50)  22-May-02 S?  Add comment (duplicate address) to Envelope-To:
 
 
-This is just to minimize the confusion some people have.
+This is just to minimize the confusion some people have. However, it is not
+trivially easy to decide which to label as duplicates because of complications
+with redirection. I'm not convinced it will actually reduce confusion.
 ------------------------------------------------------------------------------
 
 (51)  07-Jun-02 S  Option to use another address in callout MAIL FROM
 ------------------------------------------------------------------------------
 
 (51)  07-Jun-02 S  Option to use another address in callout MAIL FROM
@@ -799,7 +793,7 @@ Current rewriting rules apply to individual addresses in header lines. This
 feature would use a regex to match whole lines and replace them. It could be
 useful for patching up syntactically invalid lines from crappy clients, before
 the syntax check kicks in. (It might also be useful for hiding local host names
 feature would use a regex to match whole lines and replace them. It could be
 useful for patching up syntactically invalid lines from crappy clients, before
 the syntax check kicks in. (It might also be useful for hiding local host names
-in Received: headers.)
+in Received: headers.) See also 333.
 ------------------------------------------------------------------------------
 
 (58)  26-Jun-02 ?  Extend PAM support
 ------------------------------------------------------------------------------
 
 (58)  26-Jun-02 ?  Extend PAM support
@@ -825,7 +819,7 @@ Patrice Fournier
 
 "I'd like to be able to give Exim a list of headers that must be removed
 from the message at arrival, before data_acl processing (and before the
 
 "I'd like to be able to give Exim a list of headers that must be removed
 from the message at arrival, before data_acl processing (and before the
-rcpt_acl warn headers are added to the message)."
+rcpt_acl warn headers are added to the message)." See also 333.
 ------------------------------------------------------------------------------
 
 (63)  28-Jun-02 S  Access to ACL-added headers in ACLs
 ------------------------------------------------------------------------------
 
 (63)  28-Jun-02 S  Access to ACL-added headers in ACLs
@@ -833,7 +827,7 @@ Patrice Fournier
 
 "I'd like also to be able to look at the already added headers by a
 rcpt_acl when still checking rcpt_acl (either later in the acl for the same
 
 "I'd like also to be able to look at the already added headers by a
 rcpt_acl when still checking rcpt_acl (either later in the acl for the same
-RCPT TO or for another RCPT TO)."
+RCPT TO or for another RCPT TO)." See also 333.
 ------------------------------------------------------------------------------
 
 (65)  28-Jun-02 M  Expand fallback hosts
 ------------------------------------------------------------------------------
 
 (65)  28-Jun-02 M  Expand fallback hosts
@@ -880,6 +874,12 @@ cleanly.
 
 22-Apr-04: Implemented for domains, addresses, and local parts. Hosts are
 too messy!
 
 22-Apr-04: Implemented for domains, addresses, and local parts. Hosts are
 too messy!
+
+The only sensible approach seems to be to allow IP address arguments only.
+Anything else should be diagnosed as an error. However, if a name appears in
+the list, a PTR lookup should be done. This may require a lot of refactoring
+in the code, because of the current assumption that were are (almost) always
+dealing with THE sending host.
 ------------------------------------------------------------------------------
 
 (74)  22-Jul-02 M  Extend -bV to do more semantic checking
 ------------------------------------------------------------------------------
 
 (74)  22-Jul-02 M  Extend -bV to do more semantic checking
@@ -1166,6 +1166,8 @@ For sending reasons for slow response, etc.
 ------------------------------------------------------------------------------
 
 (160) 19-May-03 M  Remove headers using wild cards
 ------------------------------------------------------------------------------
 
 (160) 19-May-03 M  Remove headers using wild cards
+
+See also 333.
 ------------------------------------------------------------------------------
 
 (162) 28-May-03 M/L Use of real numbers in filters, expansions, and options
 ------------------------------------------------------------------------------
 
 (162) 28-May-03 M/L Use of real numbers in filters, expansions, and options
@@ -1366,6 +1368,8 @@ option, for use with multiple Exim daemons.
 ------------------------------------------------------------------------------
 
 (212) 31-Oct-03 M  specify headers lines in HELO ACL to be added to all msgs
 ------------------------------------------------------------------------------
 
 (212) 31-Oct-03 M  specify headers lines in HELO ACL to be added to all msgs
+
+See also 333.
 ------------------------------------------------------------------------------
 
 (214) 05-Nov-03 S  Put the wild part of local part prefix/suffx in variables
 ------------------------------------------------------------------------------
 
 (214) 05-Nov-03 S  Put the wild part of local part prefix/suffx in variables
@@ -1476,7 +1480,8 @@ and last item with ease; doing this using {if ...} would be quite difficult!"
 (230) 30-Jan-04 M  Find IP addresses of a domain's nameservers
 
 This needs some way of processing a list of things in a similar way, which
 (230) 30-Jan-04 M  Find IP addresses of a domain's nameservers
 
 This needs some way of processing a list of things in a similar way, which
-should perhaps be a more general facility.
+should perhaps be a more general facility. // This can now be done using the
+list facilities of dnsdb; verbose, but it can be done. //
 ------------------------------------------------------------------------------
 
 (231) 30-Jan-04 ?  -C has a number of problems when used for real
 ------------------------------------------------------------------------------
 
 (231) 30-Jan-04 ?  -C has a number of problems when used for real
@@ -1495,7 +1500,9 @@ course, security issues. This is not something I want to go into at present.
 (235) 02-Feb-04 T  Make smtp_accept_count available as a variable
 
 This is for use in ACLs. Of course, it is a snapshot of the count at the
 (235) 02-Feb-04 T  Make smtp_accept_count available as a variable
 
 This is for use in ACLs. Of course, it is a snapshot of the count at the
-start of the receiving process.
+start of the receiving process. As such, it could be confusing because if a
+connection lasts a long time, the "true" value could be very different. For
+this reason, I don't really like this idea.
 ------------------------------------------------------------------------------
 
 (236) 02-Feb-04 S  String in local_scan that's added to the binary version string
 ------------------------------------------------------------------------------
 
 (236) 02-Feb-04 S  String in local_scan that's added to the binary version string
@@ -1503,7 +1510,8 @@ start of the receiving process.
 
 (237) 02-Feb-04 M  Add_header in ACLs because "message" is overloaded
 
 
 (237) 02-Feb-04 M  Add_header in ACLs because "message" is overloaded
 
-This would be useful for verbs where "message" is an error message.
+This would be useful for verbs where "message" is an error message. See also
+333.
 ------------------------------------------------------------------------------
 
 (238) 05-Feb-04 S  ${address to handle multiple addresses
 ------------------------------------------------------------------------------
 
 (238) 05-Feb-04 S  ${address to handle multiple addresses
@@ -1522,7 +1530,8 @@ library, because there's no crypto code in Exim itself.
 (240) 23-Feb-04 ? Some way to know if a ip is a mx for a given domain
 
 Some kind of iterative operation for dnsdb might be a general way of providing
 (240) 23-Feb-04 ? Some way to know if a ip is a mx for a given domain
 
 Some kind of iterative operation for dnsdb might be a general way of providing
-this.
+this. // This can now be done using the list facilities of dnsdb; verbose, but
+it can be done. //
 ------------------------------------------------------------------------------
 
 (242) 01-Mar-04 ? Run a filter from an expansion condition
 ------------------------------------------------------------------------------
 
 (242) 01-Mar-04 ? Run a filter from an expansion condition
@@ -1603,14 +1612,6 @@ A modifier that sets a delay between lines for multiline responses.
 Given that pids are reused non-cyclically these days, is this actually useful?
 ------------------------------------------------------------------------------
 
 Given that pids are reused non-cyclically these days, is this actually useful?
 ------------------------------------------------------------------------------
 
-(269) 26-May-04 U Run both a system and a user filter in test mode
-
-    exim -bF systemfilter -bf userfilter -f sender@dom < message
-
-This would allow testing the way the userfilter handles the system
-variables set by the systemfilter.
-------------------------------------------------------------------------------
-
 (270) 01-Jun-04 M Add headers at top and middle
 
 Various initiatives like SPF and DomainKeys require header lines to be added
 (270) 01-Jun-04 M Add headers at top and middle
 
 Various initiatives like SPF and DomainKeys require header lines to be added
@@ -1620,7 +1621,7 @@ where header lines are added will probably become necessary. Some new syntax
 will be required.
 
 This can now be done fairly generally from local_scan(), and at the start and
 will be required.
 
 This can now be done fairly generally from local_scan(), and at the start and
-after the Received: block from an ACL. Is anything more needed?
+after the Received: block from an ACL. Is anything more needed? See also 333.
 ------------------------------------------------------------------------------
 
 (271) 02-Jun-04 L Callouts at routing time
 ------------------------------------------------------------------------------
 
 (271) 02-Jun-04 L Callouts at routing time
@@ -1719,7 +1720,7 @@ include sockets as well as TCP/IP connections. Also, people want to make use of
 AUTH during the callout checking, on all types of connection. I suppose that
 means making TLS available as well. This probably means a rewrite of the code
 that actually does the callout. Should we use the relevant transport in a new
 AUTH during the callout checking, on all types of connection. I suppose that
 means making TLS available as well. This probably means a rewrite of the code
 that actually does the callout. Should we use the relevant transport in a new
-"callout" mode instead of keeping things separate? See also 253.
+"callout" mode instead of keeping things separate? See also 253 and 323.
 
 And here's another submitted idea: "My actual suggestion is that if this model
 is followed, the parent process doesn't have to stop the callout process if it
 
 And here's another submitted idea: "My actual suggestion is that if this model
 is followed, the parent process doesn't have to stop the callout process if it
@@ -1734,23 +1735,12 @@ callout cache in time for the sender's next attempt."
 What about ** lines?
 ------------------------------------------------------------------------------
 
 What about ** lines?
 ------------------------------------------------------------------------------
 
-(298) 25-Oct-04 S Debugging the daemon process only
-
-When there are daemon problems (e.g. it dies) it would be helpful to be able to
-turn on debugging that did not get passed on to any subprocesses.
-------------------------------------------------------------------------------
-
 (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.
 ------------------------------------------------------------------------------
 
 (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.
 ------------------------------------------------------------------------------
 
-(300) 25-Oct-04 S Option to lock out Sieve or Exim filter
-
-Currently, if allow_filter is set, either kind of filter is permitted.
-------------------------------------------------------------------------------
-
 (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
 (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
@@ -1813,5 +1803,205 @@ 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.
 ------------------------------------------------------------------------------
 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.
 ------------------------------------------------------------------------------
---- HWM 308 ------------------------------------------------------------------
+
+(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."
+------------------------------------------------------------------------------
+
+(320) 03-Mar-05 T Options to control daemon retry binding
+
+Currently the daemon tries 10 times at 30-second intervals to listen on an IP
+address. The wish is for options to control these numbers.
+------------------------------------------------------------------------------
+
+(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, 237, 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.
+------------------------------------------------------------------------------
+
+(335) 14-Jun-05 T Re-arrange default configuration
+
+A small niggle which might be worth fixing is the ordering of the ACL in the
+default configuration file. The relay_from_hosts and authenticated clauses
+would be better off before the dnslists examples. However, this should be left
+until a x.x0 release, because of the documentation implications.
+------------------------------------------------------------------------------
+
+(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.
+------------------------------------------------------------------------------
+--- HWM 336 ------------------------------------------------------------------
 ---------------------------- End of WishList ---------------------------------
 ---------------------------- End of WishList ---------------------------------