ph10 2005/03/15 11:37:21 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src acl.c route.c
exim-src/src/routers redirect.c
Added files:
exim-test-orig/AutoTest/confs 603
exim-test-orig/AutoTest/paniclog 603
exim-test-orig/AutoTest/scripts 603
exim-test-orig/AutoTest/stderr 603
Log:
Forbid both "unseen" and "one_time" on redirect routers.
Revision Changes Path
1.89 +6 -0 exim/exim-doc/doc-txt/ChangeLog
1.24 +16 -16 exim/exim-src/src/acl.c
1.5 +0 -2 exim/exim-src/src/route.c
1.6 +7 -1 exim/exim-src/src/routers/redirect.c
1.1 +25 -0 exim/exim-test-orig/AutoTest/confs/603 (new)
1.1 +2 -0 exim/exim-test-orig/AutoTest/paniclog/603 (new)
1.1 +3 -0 exim/exim-test-orig/AutoTest/scripts/603 (new)
1.1 +2 -0 exim/exim-test-orig/AutoTest/stderr/603 (new)
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -r1.88 -r1.89
--- ChangeLog 9 Mar 2005 14:41:00 -0000 1.88
+++ ChangeLog 15 Mar 2005 11:37:21 -0000 1.89
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.88 2005/03/09 14:41:00 tom Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.89 2005/03/15 11:37:21 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -24,6 +24,12 @@
old-format file, and it generates new data and writes a new file. This
means that you can't go back to an older release without removing the
file.
+
+PH/03. A redirect router that has both "unseen" and "one_time" set does not
+ work if there are any delivery delays because "one_time" forces the
+ parent to be marked "delivered", so its unseen clone is never tried
+ again. For this reason, Exim now forbids the simultaneous setting of
+ these two options.
A note about Exim versions 4.44 and 4.50
Index: acl.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/acl.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- acl.c 9 Mar 2005 14:36:54 -0000 1.23
+++ acl.c 15 Mar 2005 11:37:21 -0000 1.24
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/acl.c,v 1.23 2005/03/09 14:36:54 tom Exp $ */
+/* $Cambridge: exim/exim-src/src/acl.c,v 1.24 2005/03/15 11:37:21 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -94,12 +94,12 @@
US"demime",
#endif
#ifdef EXPERIMENTAL_DOMAINKEYS
- US"dk_domain_source",
- US"dk_policy",
- US"dk_sender_domains",
- US"dk_sender_local_parts",
- US"dk_senders",
- US"dk_status",
+ US"dk_domain_source",
+ US"dk_policy",
+ US"dk_sender_domains",
+ US"dk_sender_local_parts",
+ US"dk_senders",
+ US"dk_status",
#endif
US"dnslists", US"domains", US"encrypted",
US"endpass", US"hosts", US"local_parts", US"log_message", US"logwrite",
@@ -149,12 +149,12 @@
TRUE, /* demime */
#endif
#ifdef EXPERIMENTAL_DOMAINKEYS
- TRUE, /* dk_domain_source */
- TRUE, /* dk_policy */
- TRUE, /* dk_sender_domains */
+ TRUE, /* dk_domain_source */
+ TRUE, /* dk_policy */
+ TRUE, /* dk_sender_domains */
TRUE, /* dk_sender_local_parts */
- TRUE, /* dk_senders */
- TRUE, /* dk_status */
+ TRUE, /* dk_senders */
+ TRUE, /* dk_status */
#endif
TRUE, /* dnslists */
FALSE, /* domains */
@@ -205,12 +205,12 @@
FALSE, /* demime */
#endif
#ifdef EXPERIMENTAL_DOMAINKEYS
- FALSE, /* dk_domain_source */
- FALSE, /* dk_policy */
- FALSE, /* dk_sender_domains */
+ FALSE, /* dk_domain_source */
+ FALSE, /* dk_policy */
+ FALSE, /* dk_sender_domains */
FALSE, /* dk_sender_local_parts */
- FALSE, /* dk_senders */
- FALSE, /* dk_status */
+ FALSE, /* dk_senders */
+ FALSE, /* dk_status */
#endif
FALSE, /* dnslists */
FALSE, /* domains */
Index: route.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/route.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- route.c 11 Jan 2005 15:51:02 -0000 1.4
+++ route.c 15 Mar 2005 11:37:21 -0000 1.5
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/route.c,v 1.4 2005/01/11 15:51:02 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/route.c,v 1.5 2005/03/15 11:37:21 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1888,8 +1888,6 @@
yield = exp_bool(addr, r->name, US"unseen", r->unseen, r->expand_unseen,
&unseen);
if (yield != OK) goto ROUTE_EXIT;
-
-
/* Debugging output recording a successful routing */
Index: redirect.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/routers/redirect.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- redirect.c 17 Feb 2005 11:58:27 -0000 1.5
+++ redirect.c 15 Mar 2005 11:37:21 -0000 1.6
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/routers/redirect.c,v 1.5 2005/02/17 11:58:27 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/routers/redirect.c,v 1.6 2005/03/15 11:37:21 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -185,7 +185,10 @@
"%sone of \"file\" or \"data\" must be specified",
rblock->name, (ob->file == NULL)? "" : "only ");
-/* Onetime aliases can only be real addresses. Headers can't be manipulated. */
+/* Onetime aliases can only be real addresses. Headers can't be manipulated.
+The combination of one_time and unseen is not allowed. We can't check the
+expansion of "unseen" here, but we assume that if it is set to anything other
+than false, there is likely to be a problem. */
if (ob->one_time)
{
@@ -194,6 +197,9 @@
log_write(0, LOG_PANIC_DIE|LOG_CONFIG_FOR, "%s router:\n "
"\"headers_add\" and \"headers_remove\" are not permitted with "
"\"one_time\"", rblock->name);
+ if (rblock->unseen || rblock->expand_unseen != NULL)
+ log_write(0, LOG_PANIC_DIE|LOG_CONFIG_FOR, "%s router:\n "
+ "\"unseen\" may not be used with \"one_time\"", rblock->name);
}
/* The defaults for check_owner and check_group depend on other settings. The
Index: 603
====================================================================
# Exim test configuration 603
# Macros are set externally in order to get the path
# of the Exim that is being tested, and the directory
# in which the test data lives.
exim_path = EXIM_PATH
primary_hostname = myhost.test.ex
spool_directory = DIR/spool
# ----- Main settings -----
# ----- Routers -----
begin routers
r1:
driver = redirect
local_parts = orig
data = new@???
unseen = $something
one_time
# End
Index: 603
====================================================================
1999-03-02 09:44:33 Exim configuration error for r1 router:
"unseen" may not be used with "one_time"
Index: 603
====================================================================
1 "unseen" combined with "one_time"
exim -q
****
Index: 603
====================================================================
1999-03-02 09:44:33 Exim configuration error for r1 router:
"unseen" may not be used with "one_time"