Ian Jackson writes ("Re: Untrusted users setting the return-path"):
> Ian Jackson writes ("Untrusted users setting the return-path"):
> > I need to allow my users to set the return-path on their messages, but
> > of course I still want traceability of mail in case of problems, spam,
> > etc. Exim 3.12 doesn't seem to support this (I'm using Debian's
> > 3.12-10), so I constructed the attached patch.
> >
> > Firstly, is this patch correct ? [...]
>
> Well, it appears not :-/. The resulting binary segfaults sometimes.
This patch seems to work somewhat better.
Ian.
Only in exim-3.12: Local
Only in exim-3.12: build
Only in exim-3.12: build-Linux-i386
Only in exim-3.12/debian: files
Only in exim-3.12/debian: rules~
Only in exim-3.12/debian: substvars
Only in exim-3.12/debian: tmp
diff -ru orig/exim-3.12/src/accept.c exim-3.12/src/accept.c
--- orig/exim-3.12/src/accept.c Wed Dec 8 09:57:03 1999
+++ exim-3.12/src/accept.c Tue Aug 29 20:09:18 2000
@@ -1023,7 +1023,8 @@
) &&
regex_match_and_setup(regex_From, next->text, 0, -1))
{
- if ((trusted_caller || filter_test != NULL) && !sender_address_forced)
+ if ((trusted_caller || use_untrusted_return_path ||
+ filter_test != NULL) && !sender_address_forced)
{
char *uucp_sender = expand_string(uucp_from_sender);
if (uucp_sender == NULL)
diff -ru orig/exim-3.12/src/exim.c exim-3.12/src/exim.c
--- orig/exim-3.12/src/exim.c Wed Dec 8 09:57:05 1999
+++ exim-3.12/src/exim.c Tue Aug 29 20:09:19 2000
@@ -2509,8 +2509,8 @@
(which might involve tests on the sender in the drivers). */
if ((sender_address == NULL && !smtp_input) ||
- (!trusted_caller && filter_test == NULL && !verify_only &&
- !address_test_mode))
+ (!(trusted_caller || use_untrusted_return_path) && filter_test == NULL &&
+ !verify_only && !address_test_mode))
{
sender_local = TRUE;
sender_address = user_login;
diff -ru orig/exim-3.12/src/globals.c exim-3.12/src/globals.c
--- orig/exim-3.12/src/globals.c Wed Dec 8 09:57:05 1999
+++ exim-3.12/src/globals.c Tue Aug 29 20:09:19 2000
@@ -650,6 +650,7 @@
int store_pool = POOL_MAIN;
BOOL strip_excess_angle_brackets = FALSE;
BOOL strip_trailing_dot = FALSE;
+BOOL use_untrusted_return_path = TRUE;
transport_instance *transports = NULL;
diff -ru orig/exim-3.12/src/globals.h exim-3.12/src/globals.h
--- orig/exim-3.12/src/globals.h Wed Dec 8 09:57:05 1999
+++ exim-3.12/src/globals.h Tue Aug 29 20:09:19 2000
@@ -479,6 +479,7 @@
extern int store_pool; /* Current pool number */
extern BOOL strip_excess_angle_brackets; /* Surrounding route-addrs */
extern BOOL strip_trailing_dot; /* Remove dots at ends of domains */
+extern BOOL use_untrusted_return_path; /* Use untrusted callers' r-p's */
/* Ditto for system filter */
diff -ru orig/exim-3.12/src/readconf.c exim-3.12/src/readconf.c
--- orig/exim-3.12/src/readconf.c Wed Dec 8 09:57:09 1999
+++ exim-3.12/src/readconf.c Tue Aug 29 20:09:19 2000
@@ -233,6 +233,7 @@
{ "trusted_users", opt_uidlist, &trusted_users },
{ "unknown_login", opt_stringptr, &unknown_login },
{ "unknown_username", opt_stringptr, &unknown_username },
+ { "use_untrusted_return_path",opt_bool, &use_untrusted_return_path },
{ "uucp_from_pattern", opt_stringptr, &uucp_from_pattern },
{ "uucp_from_sender", opt_stringptr, &uucp_from_sender },
{ "warnmsg_file", opt_stringptr, &warnmsg_file }
Only in exim-3.12/util: convert4r3
Only in exim-3.12/util: exigrep
Only in exim-3.12/util: eximstats
Only in exim-3.12/util: exiqsumm
Only in exim-3.12/util: transport-filter.pl