ph10 2005/09/13 11:35:52 BST
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src/routers rf_get_errors_address.c
Log:
Added comment about verifying errors_to as a recipient, not a sender.
Revision Changes Path
1.226 +3 -0 exim/exim-doc/doc-txt/ChangeLog
1.5 +15 -2 exim/exim-src/src/routers/rf_get_errors_address.c
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.225
retrieving revision 1.226
diff -u -r1.225 -r1.226
--- ChangeLog 13 Sep 2005 09:54:14 -0000 1.225
+++ ChangeLog 13 Sep 2005 10:35:52 -0000 1.226
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.225 2005/09/13 09:54:14 fanf2 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.226 2005/09/13 10:35:52 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -172,6 +172,9 @@
PH/43 (Again a TF fix): In the dnslookup router, do not apply widen_domains
when verifying a sender address, unless rewrite_headers is false.
+
+PH/44 Wrote a long comment about why errors_to addresses are verified as
+ recipients, not senders.
TF/01 Add missing LIBS=-lm to OS/Makefile-OpenBSD which was overlooked when
the ratelimit ACL was added.
Index: rf_get_errors_address.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/routers/rf_get_errors_address.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- rf_get_errors_address.c 12 Sep 2005 15:09:55 -0000 1.4
+++ rf_get_errors_address.c 13 Sep 2005 10:35:52 -0000 1.5
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/routers/rf_get_errors_address.c,v 1.4 2005/09/12 15:09:55 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/routers/rf_get_errors_address.c,v 1.5 2005/09/13 10:35:52 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -100,10 +100,23 @@
address_expansions_save[i++] = **p++;
address_test_mode = FALSE;
+ /* NOTE: the address is verified as a recipient, not a sender. This is
+ perhaps confusing. It isn't immediately obvious what to do: we want to have
+ some confidence that we can deliver to the address, in which case it will be
+ a recipient, but on the other hand, it will be passed on in SMTP deliveries
+ as a sender. However, I think on balance recipient is right because sender
+ verification is really about the *incoming* sender of the message.
+
+ If this code is changed, note that you must set vopt_fake_sender instead of
+ vopt_is_recipient, as otherwise sender_address may be altered because
+ verify_address() thinks it is dealing with *the* sender of the message. */
+
DEBUG(D_route|D_verify)
debug_printf("------ Verifying errors address %s ------\n", s);
- if (verify_address(snew, NULL, vopt_is_recipient | vopt_qualify, -1, -1, -1,
- NULL, NULL, NULL) == OK) *errors_to = snew->address;
+ if (verify_address(snew, NULL,
+ vopt_is_recipient /* vopt_fake_sender is the alternative */
+ | vopt_qualify, -1, -1, -1, NULL, NULL, NULL) == OK)
+ *errors_to = snew->address;
DEBUG(D_route|D_verify)
debug_printf("------ End verifying errors address %s ------\n", s);