X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/b9e40c5110dd37a24510e1567415b8b7e775314b..83364d30f60965fc809f0340cb5cab5f17b6b1c9:/doc/doc-txt/NewStuff diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index fc613073c..e6e55c745 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/NewStuff,v 1.26 2005/02/17 12:24:00 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/NewStuff,v 1.29 2005/03/22 15:02:34 ph10 Exp $ New Features in Exim -------------------- @@ -9,6 +9,85 @@ updated when there is a relatively large batch of changes). The doc/ChangeLog file contains a listing of all changes, including bug fixes. +Version 4.51 +------------ + +PH/01 The format in which GnuTLS parameters are written to the gnutls-param + file in the spool directory has been changed. This change has been made + to alleviate problems that some people had with the generation of the + parameters by Exim when /dev/random was exhausted. In this situation, + Exim would hang until /dev/random acquired some more entropy. + + The new code exports and imports the DH and RSA parameters in PEM + format. This means that the parameters can be generated externally using + the certtool command that is part of GnuTLS. + + To replace the parameters with new ones, instead of deleting the file + and letting Exim re-create it, you can generate new parameters using + certtool and, when this has been done, replace Exim's cache file by + renaming. The relevant commands are something like this: + + # rm -f new.params + # touch new.params + # chown exim:exim new.params + # chmod 0400 new.params + # certtool --generate-privkey --bits 512 >new.params + # echo "" >>new.params + # certtool --generate-dh-params --bits 1024 >> new.params + # mv new.params params + + If Exim never has to generate the parameters itself, the possibility of + stalling is removed. + +PH/02 A new expansion item for dynamically loading and calling a locally- + written C function is now provided, if Exim is compiled with + + EXPAND_DLFUNC=yes + + set in Local/Makefile. The facility is not included by default (a + suitable error is given if you try to use it when it is not there.) + + If you enable EXPAND_DLFUNC, you should also be aware of the new redirect + router option forbid_filter_dlfunc. If you have unprivileged users on + your system who are permitted to create filter files, you might want to + set forbid_filter_dlfunc=true in the appropriate router, to stop them + using ${dlfunc to run code within Exim. + + You load and call an external function like this: + + ${dlfunc{/some/file}{function}{arg1}{arg2}...} + + Once loaded, Exim remembers the dynamically loaded object so that it + doesn't reload the same object file in the same Exim process (but of + course Exim does start new processes frequently). + + There may be from zero to eight arguments to the function. When compiling + a local function that is to be called in this way, local_scan.h should be + included. The Exim variables and functions that are defined by that API + are also available for dynamically loaded functions. The function itself + must have the following type: + + int dlfunction(uschar **yield, int argc, uschar *argv[]) + + Where "uschar" is a typedef for "unsigned char" in local_scan.h. The + function should return one of the following values: + + OK Success. The string that is placed in "yield" is put into + the expanded string that is being built. + + FAIL A non-forced expansion failure occurs, with the error + message taken from "yield", if it is set. + + FAIL_FORCED A forced expansion failure occurs, with the error message + taken from "yield" if it is set. + + ERROR Same as FAIL, except that a panic log entry is written. + + When compiling a function that is to be used in this way with gcc, + you need to add -shared to the gcc command. Also, in the Exim build-time + configuration, you must add -export-dynamic to EXTRALIBS. + + Version 4.50 ------------