ph10 2006/06/27 15:34:27 BST
Modified files:
exim-doc/doc-txt ChangeLog NewStuff OptionLists.txt
exim-src ACKNOWLEDGMENTS
exim-src/src filter.c macros.h
exim-src/src/routers redirect.c
exim-test/confs 0037
exim-test/scripts/0000-Basic 0037
exim-test/stderr 0037
exim-test/stdout 0037
Added files:
exim-test/aux-fixed 0037.f-7
Log:
Implement filter_prepend_home option.
Revision Changes Path
1.359 +2 -0 exim/exim-doc/doc-txt/ChangeLog
1.103 +10 -0 exim/exim-doc/doc-txt/NewStuff
1.21 +2 -1 exim/exim-doc/doc-txt/OptionLists.txt
1.47 +2 -1 exim/exim-src/ACKNOWLEDGMENTS
1.10 +3 -2 exim/exim-src/src/filter.c
1.25 +2 -1 exim/exim-src/src/macros.h
1.16 +3 -1 exim/exim-src/src/routers/redirect.c
1.1 +3 -0 exim/exim-test/aux-fixed/0037.f-7 (new)
1.2 +12 -0 exim/exim-test/confs/0037
1.2 +6 -0 exim/exim-test/scripts/0000-Basic/0037
1.2 +8 -0 exim/exim-test/stderr/0037
1.2 +4 -0 exim/exim-test/stdout/0037
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.358
retrieving revision 1.359
diff -u -r1.358 -r1.359
--- ChangeLog 27 Jun 2006 14:04:29 -0000 1.358
+++ ChangeLog 27 Jun 2006 14:34:26 -0000 1.359
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.358 2006/06/27 14:04:29 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.359 2006/06/27 14:34:26 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -40,6 +40,8 @@
without this. I don't know how relevant this is to other LDAP libraries.
PH/02 Add the verb name to the "unknown ACL verb" error.
+
+PH/03 Magnus Holmgren's patch for filter_prepend_home.
Exim version 4.62
Index: NewStuff
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -r1.102 -r1.103
--- NewStuff 27 Apr 2006 08:53:24 -0000 1.102
+++ NewStuff 27 Jun 2006 14:34:26 -0000 1.103
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.102 2006/04/27 08:53:24 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.103 2006/06/27 14:34:26 ph10 Exp $
New Features in Exim
--------------------
@@ -7,6 +7,16 @@
but have not yet made it into the main manual (which is most conveniently
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.63
+------------
+
+1. There is a new Boolean option called filter_prepend_home for the redirect
+ router. It defaults true, for backward compatibility. If a "save" command in
+ an Exim filter has a relative path for its argument, and $home is defined,
+ it is automatically prepended to the relative path. This action can now be
+ prevented by setting filter_prepend_home false.
+
Version 4.62
------------
Index: OptionLists.txt
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/OptionLists.txt,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- OptionLists.txt 27 Apr 2006 08:53:24 -0000 1.20
+++ OptionLists.txt 27 Jun 2006 14:34:26 -0000 1.21
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.20 2006/04/27 08:53:24 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.21 2006/06/27 14:34:26 ph10 Exp $
LISTS OF EXIM OPTIONS
---------------------
@@ -11,7 +11,7 @@
4. Those that can appear in the build time configuration for the Exim monitor
(Local/eximon.conf).
-This file was last updated for Exim release 4.62.
+This file was last updated for Exim release 4.63.
1. RUN TIME OPTIONS
@@ -204,6 +204,7 @@
file_must_exist boolean false appendfile
file_optional boolean false autoreply
file_transport string* unset redirect 4.00
+filter_prepend_home boolean true redirect 4.63
final_timeout time 10m smtp
finduser_retries integer 0 main
forbid_blackhole boolean false redirect 4.00
Index: ACKNOWLEDGMENTS
===================================================================
RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- ACKNOWLEDGMENTS 7 Jun 2006 15:06:26 -0000 1.46
+++ ACKNOWLEDGMENTS 27 Jun 2006 14:34:26 -0000 1.47
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.46 2006/06/07 15:06:26 fanf2 Exp $
+$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.47 2006/06/27 14:34:26 ph10 Exp $
EXIM ACKNOWLEDGEMENTS
@@ -20,7 +20,7 @@
Philip Hazel
Lists created: 20 November 2002
-Last updated: 04 April 2006
+Last updated: 27 June 2006
THE OLD LIST
@@ -157,6 +157,7 @@
Sheldon Hearn Suggested patch for smtp_accept_max_nonmail_hosts
Bryan Henderson Patch to use RM_COMMAND everywhere during building
Jakob Hirsch Patch for % operator
+Magnus Holmgren Patch for filter_prepend_home
Kjetil Torgrim Homme Patch for require_files problem on NFS file systems
Tom Hughes Suggested patch for $n bug in pipe command from filter
Pierre Humblet Continued Cygwin support
Index: filter.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/filter.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- filter.c 7 Feb 2006 11:19:00 -0000 1.9
+++ filter.c 27 Jun 2006 14:34:26 -0000 1.10
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/filter.c,v 1.9 2006/02/07 11:19:00 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/filter.c,v 1.10 2006/06/27 14:34:26 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1834,11 +1834,12 @@
else
{
+ if (s[0] != '/' && (filter_options & RDO_PREPEND_HOME) != 0 &&
+ deliver_home != NULL && deliver_home[0] != 0)
+ s = string_sprintf("%s/%s", deliver_home, s);
DEBUG(D_filter) debug_printf("Filter: %ssave message to: %s%s\n",
(commands->seen)? "" : "unseen ", s,
commands->noerror? " (noerror)" : "");
- if (s[0] != '/' && deliver_home != NULL && deliver_home[0] != 0)
- s = string_sprintf("%s/%s", deliver_home, s);
/* Create the new address and add it to the chain, setting the
af_pfr and af_file flags, the af_ignore_error flag if necessary, and the
Index: macros.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/macros.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- macros.h 9 Mar 2006 15:10:16 -0000 1.24
+++ macros.h 27 Jun 2006 14:34:26 -0000 1.25
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/macros.h,v 1.24 2006/03/09 15:10:16 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/macros.h,v 1.25 2006/06/27 14:34:26 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -508,6 +508,7 @@
#define RDO_REWRITE 0x00020000 /* Rewrite generated addresses */
#define RDO_EXIM_FILTER 0x00040000 /* Forbid Exim filters */
#define RDO_SIEVE_FILTER 0x00080000 /* Forbid Sieve filters */
+#define RDO_PREPEND_HOME 0x00100000 /* Prepend $home to relative paths in Exim filter save commands */
/* This is the set that apply to expansions in filters */
@@ -521,7 +522,7 @@
enum { RDON_BLACKHOLE, RDON_DEFER, RDON_EACCES, RDON_ENOTDIR, RDON_EXISTS,
RDON_FAIL, RDON_FILTER, RDON_FREEZE, RDON_INCLUDE, RDON_LOG, RDON_LOOKUP,
RDON_PERL, RDON_READFILE, RDON_READSOCK, RDON_RUN, RDON_DLFUNC, RDON_REALLOG,
- RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER };
+ RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER, RDON_PREPEND_HOME };
/* Results of filter or forward file processing. Some are only from a filter;
some are only from a forward file. */
Index: redirect.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/routers/redirect.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- redirect.c 7 Feb 2006 11:19:02 -0000 1.15
+++ redirect.c 27 Jun 2006 14:34:26 -0000 1.16
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/routers/redirect.c,v 1.15 2006/02/07 11:19:02 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/routers/redirect.c,v 1.16 2006/06/27 14:34:26 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -39,6 +39,8 @@
(void *)offsetof(redirect_router_options_block, file) },
{ "file_transport", opt_stringptr,
(void *)offsetof(redirect_router_options_block, file_transport_name) },
+ { "filter_prepend_home",opt_bit | (RDON_PREPEND_HOME << 16),
+ (void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_blackhole", opt_bit | (RDON_BLACKHOLE << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_exim_filter", opt_bit | (RDON_EXIM_FILTER << 16),
@@ -160,7 +162,7 @@
NULL, /* srs_dbselect */
#endif
022, /* modemask */
- RDO_REWRITE, /* bit_options */
+ RDO_REWRITE | RDO_PREPEND_HOME, /* bit_options */
FALSE, /* check_ancestor */
TRUE_UNSET, /* check_owner */
TRUE_UNSET, /* check_group */
Index: 0037.f-7
====================================================================
#exim filter
save relative
Index: 0037
===================================================================
RCS file: /home/cvs/exim/exim-test/confs/0037,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0037 7 Feb 2006 10:34:25 -0000 1.1
+++ 0037 27 Jun 2006 14:34:27 -0000 1.2
@@ -1,5 +1,7 @@
# Exim test configuration 0037
+FILTER_PREPEND_HOME=
+
exim_path = EXIM_PATH
host_lookup_order = bydns
rfc1413_query_timeout = 0s
@@ -38,6 +40,16 @@
allow_filter
file = DIR/aux-var/TESTNUM.f-readfile
user = CALLER
+
+prepend_filter:
+ driver = redirect
+ local_parts = prepend
+ allow_filter
+ router_home_directory = /usr
+ file = DIR/aux-fixed/TESTNUM.f-7
+ file_transport = appendfile
+ user = CALLER
+ FILTER_PREPEND_HOME
userfilter:
driver = redirect
Index: 0037
===================================================================
RCS file: /home/cvs/exim/exim-test/scripts/0000-Basic/0037,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0037 7 Feb 2006 10:54:33 -0000 1.1
+++ 0037 27 Jun 2006 14:34:27 -0000 1.2
@@ -171,4 +171,10 @@
exim -odi filter-stat
Subject: should give filter error (7)
****
+# Check prepend $home
+exim -bt prepend@???
+****
+# Check not prepend $home
+exim -DFILTER_PREPEND_HOME=no_filter_prepend_home -bt prepend@???
+****
no_msglog_check
Index: 0037
===================================================================
RCS file: /home/cvs/exim/exim-test/stderr/0037,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0037 7 Feb 2006 10:47:31 -0000 1.1
+++ 0037 27 Jun 2006 14:34:27 -0000 1.2
@@ -29,6 +29,10 @@
local_part=filter-userx domain=test.ex
checking local_parts
fail_read_filter router skipped: local_parts mismatch
+--------> prepend_filter router <--------
+local_part=filter-userx domain=test.ex
+checking local_parts
+prepend_filter router skipped: local_parts mismatch
--------> userfilter router <--------
local_part=filter-userx domain=test.ex
checking local_parts
@@ -62,6 +66,10 @@
local_part=userx domain=test.ex
checking local_parts
fail_read_filter router skipped: local_parts mismatch
+--------> prepend_filter router <--------
+local_part=userx domain=test.ex
+checking local_parts
+prepend_filter router skipped: local_parts mismatch
--------> userfilter router <--------
local_part=userx domain=test.ex
checking local_parts
Index: 0037
===================================================================
RCS file: /home/cvs/exim/exim-test/stdout/0037,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0037 7 Feb 2006 10:47:37 -0000 1.1
+++ 0037 27 Jun 2006 14:34:27 -0000 1.2
@@ -257,3 +257,7 @@
Unseen deliver message to: userz@??? errors_to abcd@???
Filtering did not set up a significant delivery.
Normal delivery will occur.
+prepend@??? -> /usr/relative
+ transport = appendfile
+prepend@??? -> relative
+ transport = appendfile