Change originator_xxx fields in the daemon when it gives up root so that
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Wed, 14 Mar 2007 12:15:56 +0000 (12:15 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Wed, 14 Mar 2007 12:15:56 +0000 (12:15 +0000)
the -H files are always consistent.

doc/doc-txt/ChangeLog
src/src/daemon.c
test/runtest
test/stdout/0035
test/stdout/3415

index 9140b63c7381b9b0c5b3fbddaa1c581fb0c18f3e..bbaa500dc1d76666571a3f54d92b24471ff9a917 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.495 2007/03/14 11:22:23 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.496 2007/03/14 12:15:56 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -175,6 +175,13 @@ PH/39 In a list of hosts for manualroute, if one item (either because of multi-
       from the list, along with the local host and any following hosts (which
       is what is supposed to happen).
 
       from the list, along with the local host and any following hosts (which
       is what is supposed to happen).
 
+PH/40 When Exim receives a message, it writes the login name, uid, and gid of
+      whoever called Exim into the -H file. In the case of the daemon it was
+      behaving confusingly. When first started, it used values for whoever
+      started the daemon, but after a SIGHUP it used the Exim user (because it
+      calls itself on a restart). I have changed the code so that it now always
+      uses the Exim user.
+
 
 Exim version 4.66
 -----------------
 
 Exim version 4.66
 -----------------
index 4c6c90878a2dee901624b6416e0973f85104ca31..e844403a440e0b53e842a0507c1f59646d98a48a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/daemon.c,v 1.22 2007/01/23 14:34:02 ph10 Exp $ */
+/* $Cambridge: exim/src/src/daemon.c,v 1.23 2007/03/14 12:15:56 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -881,6 +881,7 @@ There are no arguments to this function, and it never returns. */
 void
 daemon_go(void)
 {
 void
 daemon_go(void)
 {
+struct passwd *pw;
 int *listen_sockets = NULL;
 int listen_socket_count = 0;
 ip_address_item *addresses = NULL;
 int *listen_sockets = NULL;
 int listen_socket_count = 0;
 ip_address_item *addresses = NULL;
@@ -1453,6 +1454,14 @@ cannot do this. */
 
 exim_setugid(exim_uid, exim_gid, geteuid()==root_uid, US"running as a daemon");
 
 
 exim_setugid(exim_uid, exim_gid, geteuid()==root_uid, US"running as a daemon");
 
+/* Update the originator_xxx fields so that received messages as listed as
+coming from Exim, not whoever started the daemon. */
+
+originator_uid = exim_uid;
+originator_gid = exim_gid;
+originator_login = ((pw = getpwuid(exim_uid)) != NULL)?
+  string_copy_malloc(US pw->pw_name) : US"exim";
+
 /* Get somewhere to keep the list of queue-runner pids if we are keeping track
 of them (and also if we are doing queue runs). */
 
 /* Get somewhere to keep the list of queue-runner pids if we are keeping track
 of them (and also if we are doing queue runs). */
 
index 4e511dc36410cd5eef19ece2ee2921f222c5c23c..472aeaf78f9e45531db33f137c346af598e73ff9 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/perl -w
 
 #! /usr/bin/perl -w
 
-# $Cambridge: exim/test/runtest,v 1.24 2007/02/08 15:16:19 ph10 Exp $
+# $Cambridge: exim/test/runtest,v 1.25 2007/03/14 12:15:56 ph10 Exp $
 
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
 
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
@@ -463,9 +463,10 @@ while(<IN>)
 
 
   # ======== Exim's login ========
 
 
   # ======== Exim's login ========
-  # For bounce messages, this will appear on the U= lines in logs and also
-  # after Received: and in addresses. In one pipe test it appears after
-  # "Running as:". It also appears in addresses, and in the names of lock
+  # For messages received by the daemon, this is in the -H file, which some
+  # tests inspect. For bounce messages, this will appear on the U= lines in
+  # logs and also after Received: and in addresses. In one pipe test it appears
+  # after "Running as:". It also appears in addresses, and in the names of lock
   # files.
 
   s/U=$parm_eximuser/U=EXIMUSER/;
   # files.
 
   s/U=$parm_eximuser/U=EXIMUSER/;
@@ -482,6 +483,8 @@ while(<IN>)
   s/\buid=$parm_exim_uid\b/uid=EXIM_UID/g;
   s/\bgid=$parm_exim_gid\b/gid=EXIM_GID/g;
 
   s/\buid=$parm_exim_uid\b/uid=EXIM_UID/g;
   s/\bgid=$parm_exim_gid\b/gid=EXIM_GID/g;
 
+  s/^$parm_eximuser $parm_exim_uid $parm_exim_gid/EXIMUSER EXIM_UID EXIM_GID/;
+
 
   # ======== General uids, gids, and pids ========
   # Note: this must come after munges for caller's and exim's uid/gid
 
   # ======== General uids, gids, and pids ========
   # Note: this must come after munges for caller's and exim's uid/gid
index dfc44ed51abf584ab70f658e4003158f81974041..15cac0b0f7b46653fcdea3280cbc1aec9546d5e9 100644 (file)
@@ -135,7 +135,7 @@ Connecting to 127.0.0.1 port 1225 ... connected
 <<< 221 myhost.test.ex closing connection
 End of script
 10HmaX-0005vi-00-H
 <<< 221 myhost.test.ex closing connection
 End of script
 10HmaX-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <notsubmit@y>
 ddddddddd 0
 -helo_name rhu.barb
 <notsubmit@y>
 ddddddddd 0
 -helo_name rhu.barb
@@ -154,7 +154,7 @@ dddP Received: from [127.0.0.1] (helo=rhu.barb)
        id 10HmaX-0005vi-00
        for x@y; Tue, 2 Mar 1999 09:44:33 +0000
 10HmaY-0005vi-00-H
        id 10HmaX-0005vi-00
        for x@y; Tue, 2 Mar 1999 09:44:33 +0000
 10HmaY-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
@@ -176,7 +176,7 @@ dddP Received: from [127.0.0.1] (helo=rhu.barb)
 dddF From: a@y
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmaZ-0005vi-00-H
 dddF From: a@y
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmaZ-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <>
 ddddddddd 0
 -helo_name rhu.barb
 <>
 ddddddddd 0
 -helo_name rhu.barb
@@ -196,7 +196,7 @@ dddP Received: from [127.0.0.1] (helo=rhu.barb)
 047I Message-Id: <E10HmaZ-0005vi-00@myhost.test.ex>
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbA-0005vi-00-H
 047I Message-Id: <E10HmaZ-0005vi-00@myhost.test.ex>
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbA-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <notsubmit@y>
 ddddddddd 0
 -helo_name rhu.barb
 <notsubmit@y>
 ddddddddd 0
 -helo_name rhu.barb
@@ -216,7 +216,7 @@ dddP Received: from [127.0.0.1] (helo=rhu.barb)
        for x@y; Tue, 2 Mar 1999 09:44:33 +0000
 dddS Sender: sender@some.where
 10HmbB-0005vi-00-H
        for x@y; Tue, 2 Mar 1999 09:44:33 +0000
 dddS Sender: sender@some.where
 10HmbB-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
@@ -239,7 +239,7 @@ ddd* Sender: sender@some.where
 dddF From: a@y
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbC-0005vi-00-H
 dddF From: a@y
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbC-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
@@ -262,7 +262,7 @@ dddS Sender: sender@some.where
 dddF From: a@y
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbD-0005vi-00-H
 dddF From: a@y
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbD-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
 <a@y>
 ddddddddd 0
 -helo_name rhu.barb
index 8cfc49d37e7c843450b58e8c2cc1b665d847e7e7..bc9555c02281f862055baf9cf6b231ff329d0e3a 100644 (file)
@@ -144,7 +144,7 @@ Connecting to 127.0.0.1 port 1225 ... connected
 <<< 221 myhost.test.ex closing connection
 End of script
 10HmaX-0005vi-00-H
 <<< 221 myhost.test.ex closing connection
 End of script
 10HmaX-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <username@myhost.test.ex>
 ddddddddd 0
 -helo_name rhu.barb
 <username@myhost.test.ex>
 ddddddddd 0
 -helo_name rhu.barb
@@ -169,7 +169,7 @@ dddF From: a@y
 dddS Sender: username@myhost.test.ex
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmaY-0005vi-00-H
 dddS Sender: username@myhost.test.ex
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmaY-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <>
 ddddddddd 0
 -helo_name rhu.barb
 <>
 ddddddddd 0
 -helo_name rhu.barb
@@ -192,7 +192,7 @@ dddP Received: from [127.0.0.1] (helo=rhu.barb)
 dddF From: username@myhost.test.ex
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmaZ-0005vi-00-H
 dddF From: username@myhost.test.ex
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmaZ-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <>
 ddddddddd 0
 -helo_name rhu.barb
 <>
 ddddddddd 0
 -helo_name rhu.barb
@@ -215,7 +215,7 @@ dddP Received: from [127.0.0.1] (helo=rhu.barb)
 dddF From: username@another.domain
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbA-0005vi-00-H
 dddF From: username@another.domain
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbA-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <>
 ddddddddd 0
 -helo_name rhu.barb
 <>
 ddddddddd 0
 -helo_name rhu.barb
@@ -238,7 +238,7 @@ dddP Received: from [127.0.0.1] (helo=rhu.barb)
 dddF From: username@auth.id.domain
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbB-0005vi-00-H
 dddF From: username@auth.id.domain
 038  Date: Tue, 2 Mar 1999 09:44:33 +0000
 10HmbB-0005vi-00-H
-CALLER UID GID
+EXIMUSER EXIM_UID EXIM_GID
 <>
 ddddddddd 0
 -helo_name rhu.barb
 <>
 ddddddddd 0
 -helo_name rhu.barb