Test for failure of the fork() when a root process creates a log file.
[exim.git] / doc / doc-misc / WishList
index 16ff99a6d1baebcbe69bc34add0eb1c4f9c03dfb..119e31e2d939d9bf2e073f0948e00fe68c5330ae 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-misc/WishList,v 1.3 2004/10/25 09:54:04 ph10 Exp $
+$Cambridge: exim/doc/doc-misc/WishList,v 1.26 2005/03/15 15:46:24 ph10 Exp $
 
 EXIM 4 WISH LIST
 ----------------
@@ -577,15 +577,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).
 ------------------------------------------------------------------------------
 
-(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.
 
@@ -630,7 +621,7 @@ This could perhaps be done by extending the local_scan() idea and providing a
 (15) 01-Jan-02  M  More hooks like local_scan()
 
 One request has been for a similar hook at logging time. For other SMTP
-interactions, maybe a hook into the ACL? See also 79 and 218.
+interactions, maybe a hook into the ACL? See also 79 and 218 and 301.
 ------------------------------------------------------------------------------
 
 (17) 11-Jan-02  M  The construction of config.h needs refactoring
@@ -767,9 +758,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.
 ------------------------------------------------------------------------------
 
-(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
@@ -880,6 +873,12 @@ cleanly.
 
 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
@@ -1319,6 +1318,10 @@ done.)
 ------------------------------------------------------------------------------
 
 (202) 10-Oct-03 S  -bvsomething to do a callout after the verify
+
+For example: -bvc and -bvsc. The problem now (Nov 04) is that there are quite a
+few possible callout options that can be specified in an ACL, and they would
+have to be replicated here.
 ------------------------------------------------------------------------------
 
 (203) 14-Oct-03 S  verify=something to easily check for header presence
@@ -1372,7 +1375,9 @@ Unfortunately, this isn't quite as trivial as it seems.
 (215) 14-Nov-03 S  A way of turning off message-submission fix-ups
 
 Globally, and perhaps also via an ACL control so that it can be done on a
-per-message basis.
+per-message basis. Is this still needed? Since this item was added to this
+list, default fixups for non-local messages have been removed, and control =
+submission has been added.
 ------------------------------------------------------------------------------
 
 (215) 26-Nov-03 M/L Conversion of IDNA domain names for logging
@@ -1413,14 +1418,10 @@ be able to set variables in routers like in acl's." This is effectively a
 radical suggestion for a complete re-design, and is therefore BIG.
 ------------------------------------------------------------------------------
 
-(222) 19-Dec-03 S  Iterative option for dnsdb
-
-A way of getting a dnsdb lookup to chop off components until something is
-found: e.g. ${lookup dndsb-i{ns=a.b.c.d}} would look for nameservers for
-a.b.c.d, then b.c.d, etc.
-------------------------------------------------------------------------------
-
 (223) 22-Dec-03 S  Support SOA lookup in dnsdb lookups
+
+This could be like zns, and climb up the tree till it hits a zone. Would the
+name of the zone be required?
 ------------------------------------------------------------------------------
 
 (225) 22-Dec-03 M  Add acl= to routers
@@ -1474,7 +1475,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
-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
@@ -1493,7 +1495,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
-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
@@ -1520,7 +1524,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
-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
@@ -1601,14 +1606,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?
 ------------------------------------------------------------------------------
 
-(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
@@ -1661,7 +1658,8 @@ Similar to the bounce and delivery warn message files.
 (280) 23-Jun-04 M A way of adding a header line after callout defer_ok
 
 This would record that, e.g., a sender domain verified, but the callout
-could not be done.
+could not be done. There are ways of fudging this, using ACL variables and
+"warn" statements.
 ------------------------------------------------------------------------------
 
 (285) 16-Jul-04 M Separate and independent log_selector for rejectlog
@@ -1716,7 +1714,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
-"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
@@ -1731,21 +1729,170 @@ callout cache in time for the sender's next attempt."
 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.
 ------------------------------------------------------------------------------
 
-(300) 25-Oct-04 S Option to lock out Sieve or Exim filter
+(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.
+------------------------------------------------------------------------------
+
+(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
 
-Currently, if allow_filter is set, either kind of filter is permitted.
+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.
 ------------------------------------------------------------------------------
---- HWM 300 ------------------------------------------------------------------
+--- HWM 323 ------------------------------------------------------------------
 ---------------------------- End of WishList ---------------------------------