ph10 2004/11/04 10:42:11 GMT
Modified files:
exim-doc/doc-txt ChangeLog NewStuff OptionLists.txt
exim-src/src macros.h rda.c
exim-src/src/routers redirect.c
exim-test-orig/AutoTest/confs 002
exim-test-orig/AutoTest/stdout 001 002
Log:
Added forbid_exim_filter and forbid_sieve_filter to the redirect router.
Revision Changes Path
1.14 +2 -0 exim/exim-doc/doc-txt/ChangeLog
1.5 +5 -0 exim/exim-doc/doc-txt/NewStuff
1.3 +2 -0 exim/exim-doc/doc-txt/OptionLists.txt
1.2 +20 -18 exim/exim-src/src/macros.h
1.2 +27 -8 exim/exim-src/src/rda.c
1.2 +4 -0 exim/exim-src/src/routers/redirect.c
1.2 +2 -0 exim/exim-test-orig/AutoTest/confs/002
1.2 +4 -0 exim/exim-test-orig/AutoTest/stdout/001
1.2 +8 -0 exim/exim-test-orig/AutoTest/stdout/002
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ChangeLog 19 Oct 2004 13:40:39 -0000 1.13
+++ ChangeLog 4 Nov 2004 10:42:11 -0000 1.14
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.13 2004/10/19 13:40:39 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.14 2004/11/04 10:42:11 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -53,6 +53,8 @@
13. The value of address_data from a sender verification is now available in
$sender_address_data in subsequent conditions in the ACL statement.
+
+14. Added forbid_sieve_filter and forbid_exim_filter to the redirect router.
Exim version 4.43
Index: NewStuff
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- NewStuff 21 Oct 2004 15:24:42 -0000 1.4
+++ NewStuff 4 Nov 2004 10:42:11 -0000 1.5
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.4 2004/10/21 15:24:42 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.5 2004/11/04 10:42:11 ph10 Exp $
New Features in Exim
--------------------
@@ -27,6 +27,11 @@
this is just like $address_data. The value does not persist after the end
of the current ACL statement. If you want to preserve it, you can use one
of the ACL variables.
+
+ 5. The redirect router has two new options: forbid_sieve_filter and
+ forbid_exim_filter. When filtering is enabled by allow_filter, these
+ options control which type(s) of filtering are permitted. By default, both
+ Exim and Sieve filters are allowed.
Version 4.43
Index: OptionLists.txt
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/OptionLists.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- OptionLists.txt 18 Oct 2004 09:16:57 -0000 1.2
+++ OptionLists.txt 4 Nov 2004 10:42:11 -0000 1.3
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.2 2004/10/18 09:16:57 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/OptionLists.txt,v 1.3 2004/11/04 10:42:11 ph10 Exp $
LISTS OF EXIM OPTIONS
---------------------
@@ -196,6 +196,7 @@
final_timeout time 10m smtp
finduser_retries integer 0 main
forbid_blackhole boolean false redirect 4.00
+forbid_exim_filter boolean false redirect 4.44
forbid_fail boolean false redirect 4.00
forbid_file boolean false redirect 4.00
forbid_filter_existstest boolean false redirect 4.00
@@ -208,6 +209,7 @@
forbid_filter_run boolean false redirect 4.00
forbid_include boolean false redirect 4.00
forbid_pipe boolean false redirect 4.00
+forbid_sieve_filter boolean false redirect 4.44
freeze_exec_fail boolean false pipe 1.89
freeze_tell boolean false main 4.00 replaces freeze_tell_mailmaster
from string* unset autoreply
Index: macros.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/macros.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- macros.h 7 Oct 2004 10:39:01 -0000 1.1
+++ macros.h 4 Nov 2004 10:42:11 -0000 1.2
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/macros.h,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/macros.h,v 1.2 2004/11/04 10:42:11 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -467,23 +467,25 @@
router, which were chosen to represent the standard situation for users'
.forward files. */
-#define RDO_BLACKHOLE 0x00000001 /* Forbid :blackhole: */
-#define RDO_DEFER 0x00000002 /* Allow :defer: or "defer" */
-#define RDO_EACCES 0x00000004 /* Ignore EACCES */
-#define RDO_ENOTDIR 0x00000008 /* Ignore ENOTDIR */
-#define RDO_EXISTS 0x00000010 /* Forbid "exists" in expansion in filter */
-#define RDO_FAIL 0x00000020 /* Allow :fail: or "fail" */
-#define RDO_FILTER 0x00000040 /* Allow a filter script */
-#define RDO_FREEZE 0x00000080 /* Allow "freeze" */
-#define RDO_INCLUDE 0x00000100 /* Forbid :include: */
-#define RDO_LOG 0x00000200 /* Forbid "log" */
-#define RDO_LOOKUP 0x00000400 /* Forbid "lookup" in expansion in filter */
-#define RDO_PERL 0x00000800 /* Forbid "perl" in expansion in filter */
-#define RDO_READFILE 0x00001000 /* Forbid "readfile" in exp in filter */
-#define RDO_READSOCK 0x00002000 /* Forbid "readsocket" in exp in filter */
-#define RDO_RUN 0x00004000 /* Forbid "run" in expansion in filter */
-#define RDO_REALLOG 0x00008000 /* Really do log (not testing/verifying) */
-#define RDO_REWRITE 0x00010000 /* Rewrite generated addresses */
+#define RDO_BLACKHOLE 0x00000001 /* Forbid :blackhole: */
+#define RDO_DEFER 0x00000002 /* Allow :defer: or "defer" */
+#define RDO_EACCES 0x00000004 /* Ignore EACCES */
+#define RDO_ENOTDIR 0x00000008 /* Ignore ENOTDIR */
+#define RDO_EXISTS 0x00000010 /* Forbid "exists" in expansion in filter */
+#define RDO_FAIL 0x00000020 /* Allow :fail: or "fail" */
+#define RDO_FILTER 0x00000040 /* Allow a filter script */
+#define RDO_FREEZE 0x00000080 /* Allow "freeze" */
+#define RDO_INCLUDE 0x00000100 /* Forbid :include: */
+#define RDO_LOG 0x00000200 /* Forbid "log" */
+#define RDO_LOOKUP 0x00000400 /* Forbid "lookup" in expansion in filter */
+#define RDO_PERL 0x00000800 /* Forbid "perl" in expansion in filter */
+#define RDO_READFILE 0x00001000 /* Forbid "readfile" in exp in filter */
+#define RDO_READSOCK 0x00002000 /* Forbid "readsocket" in exp in filter */
+#define RDO_RUN 0x00004000 /* Forbid "run" in expansion in filter */
+#define RDO_REALLOG 0x00008000 /* Really do log (not testing/verifying) */
+#define RDO_REWRITE 0x00010000 /* Rewrite generated addresses */
+#define RDO_EXIM_FILTER 0x00020000 /* Forbid Exim filters */
+#define RDO_SIEVE_FILTER 0x00040000 /* Forbid Sieve filters */
/* This is the set that apply to expansions in filters */
@@ -497,7 +499,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_REALLOG,
- RDON_REWRITE };
+ RDON_REWRITE, RDON_EXIM_FILTER, RDON_SIEVE_FILTER };
/* Results of filter or forward file processing. Some are only from a filter;
some are only from a forward file. */
Index: rda.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/rda.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- rda.c 7 Oct 2004 10:39:01 -0000 1.1
+++ rda.c 4 Nov 2004 10:42:11 -0000 1.2
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/rda.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/rda.c,v 1.2 2004/11/04 10:42:11 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -374,23 +374,42 @@
int frc;
int old_expand_forbid = expand_forbid;
+ DEBUG(D_route) debug_printf("data is %s filter program\n",
+ (*filtertype == FILTER_EXIM)? "an Exim" : "a Sieve");
+
+ /* RDO_FILTER is an "allow" bit */
+
if ((options & RDO_FILTER) == 0)
{
*error = US"filtering not enabled";
return FF_ERROR;
}
- DEBUG(D_route) debug_printf("data is %s filter program\n",
- (*filtertype == FILTER_EXIM)? "an Exim" : "a Sieve");
-
expand_forbid =
(expand_forbid & ~RDO_FILTER_EXPANSIONS) |
(options & RDO_FILTER_EXPANSIONS);
-
- frc = (*filtertype == FILTER_EXIM)?
- filter_interpret(data, options, generated, error)
- :
- sieve_interpret(data, options, sieve_vacation_directory, generated, error);
+
+ /* RDO_{EXIM,SIEVE}_FILTER are forbid bits */
+
+ if (*filtertype == FILTER_EXIM)
+ {
+ if ((options & RDO_EXIM_FILTER) != 0)
+ {
+ *error = US"Exim filtering not enabled";
+ return FF_ERROR;
+ }
+ frc = filter_interpret(data, options, generated, error);
+ }
+ else
+ {
+ if ((options & RDO_SIEVE_FILTER) != 0)
+ {
+ *error = US"Sieve filtering not enabled";
+ return FF_ERROR;
+ }
+ frc = sieve_interpret(data, options, sieve_vacation_directory, generated,
+ error);
+ }
expand_forbid = old_expand_forbid;
return frc;
Index: redirect.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/routers/redirect.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- redirect.c 7 Oct 2004 13:10:02 -0000 1.1
+++ redirect.c 4 Nov 2004 10:42:11 -0000 1.2
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/routers/redirect.c,v 1.1 2004/10/07 13:10:02 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/routers/redirect.c,v 1.2 2004/11/04 10:42:11 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -41,6 +41,8 @@
(void *)offsetof(redirect_router_options_block, file_transport_name) },
{ "forbid_blackhole", opt_bit | (RDON_BLACKHOLE << 16),
(void *)offsetof(redirect_router_options_block, bit_options) },
+ { "forbid_exim_filter", opt_bit | (RDON_EXIM_FILTER << 16),
+ (void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_file", opt_bool,
(void *)offsetof(redirect_router_options_block, forbid_file) },
{ "forbid_filter_existstest", opt_bit | (RDON_EXISTS << 16),
@@ -65,6 +67,8 @@
(void *)offsetof(redirect_router_options_block, bit_options) },
{ "forbid_pipe", opt_bool,
(void *)offsetof(redirect_router_options_block, forbid_pipe) },
+ { "forbid_sieve_filter",opt_bit | (RDON_SIEVE_FILTER << 16),
+ (void *)offsetof(redirect_router_options_block, bit_options) },
{ "hide_child_in_errmsg", opt_bool,
(void *)offsetof(redirect_router_options_block, hide_child_in_errmsg) },
{ "ignore_eacces", opt_bit | (RDON_EACCES << 16),
Index: 002
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/confs/002,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 002 8 Oct 2004 14:49:15 -0000 1.1
+++ 002 4 Nov 2004 10:42:11 -0000 1.2
@@ -482,6 +482,8 @@
forward:
driver = redirect
allow_filter
+ forbid_exim_filter
+ forbid_sieve_filter
caseful_local_part
check_ancestor
check_local_user
Index: 001
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/001,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 001 8 Oct 2004 14:50:13 -0000 1.1
+++ 001 4 Nov 2004 10:42:11 -0000 1.2
@@ -461,6 +461,7 @@
file =
file_transport =
no_forbid_blackhole
+no_forbid_exim_filter
no_forbid_file
no_forbid_filter_existstest
no_forbid_filter_logwrite
@@ -472,6 +473,7 @@
no_forbid_filter_run
no_forbid_include
no_forbid_pipe
+no_forbid_sieve_filter
no_hide_child_in_errmsg
no_ignore_eacces
no_ignore_enotdir
@@ -548,6 +550,7 @@
file = $home/.forward
file_transport =
no_forbid_blackhole
+no_forbid_exim_filter
no_forbid_file
no_forbid_filter_existstest
no_forbid_filter_logwrite
@@ -559,6 +562,7 @@
no_forbid_filter_run
no_forbid_include
no_forbid_pipe
+no_forbid_sieve_filter
no_hide_child_in_errmsg
no_ignore_eacces
no_ignore_enotdir
Index: 002
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/002,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 002 8 Oct 2004 14:50:13 -0000 1.1
+++ 002 4 Nov 2004 10:42:11 -0000 1.2
@@ -466,6 +466,7 @@
file =
file_transport = dummy
forbid_blackhole
+no_forbid_exim_filter
no_forbid_file
no_forbid_filter_existstest
no_forbid_filter_logwrite
@@ -477,6 +478,7 @@
no_forbid_filter_run
forbid_include
no_forbid_pipe
+no_forbid_sieve_filter
hide_child_in_errmsg
no_ignore_eacces
no_ignore_enotdir
@@ -553,6 +555,7 @@
file = /some/file
file_transport =
no_forbid_blackhole
+no_forbid_exim_filter
no_forbid_file
no_forbid_filter_existstest
no_forbid_filter_logwrite
@@ -564,6 +567,7 @@
no_forbid_filter_run
no_forbid_include
no_forbid_pipe
+no_forbid_sieve_filter
no_hide_child_in_errmsg
no_ignore_eacces
no_ignore_enotdir
@@ -640,6 +644,7 @@
file = //.forward2
file_transport = dummy
forbid_blackhole
+forbid_exim_filter
no_forbid_file
forbid_filter_existstest
no_forbid_filter_logwrite
@@ -651,6 +656,7 @@
forbid_filter_run
no_forbid_include
no_forbid_pipe
+forbid_sieve_filter
hide_child_in_errmsg
no_ignore_eacces
no_ignore_enotdir
@@ -773,6 +779,7 @@
file =
file_transport = dummy
no_forbid_blackhole
+no_forbid_exim_filter
forbid_file
no_forbid_filter_existstest
no_forbid_filter_logwrite
@@ -784,6 +791,7 @@
no_forbid_filter_run
no_forbid_include
forbid_pipe
+no_forbid_sieve_filter
hide_child_in_errmsg
no_ignore_eacces
no_ignore_enotdir