ph10 2005/02/16 16:28:37 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src globals.c spool_in.c
exim-test-orig/AutoTest/log 574
exim-test-orig/AutoTest/mail 574.ph10
exim-test-orig/AutoTest/stderr 119 468 549
exim-test-orig/AutoTest/stdout 001
Added files:
exim-test-orig/AutoTest/confs 602
exim-test-orig/AutoTest/log 602
exim-test-orig/AutoTest/mail 602.ph10
exim-test-orig/AutoTest/scripts 602
exim-test-orig/AutoTest/stderr 602
exim-test-orig/AutoTest/stdout 602
Log:
Fix problems with the spool file that arise when the local username
contains a space. Also, ensure that the Received: line item is
appropriately quoted in this circumstance.
Revision Changes Path
1.80 +9 -0 exim/exim-doc/doc-txt/ChangeLog
1.16 +1 -1 exim/exim-src/src/globals.c
1.7 +16 -4 exim/exim-src/src/spool_in.c
1.1 +35 -0 exim/exim-test-orig/AutoTest/confs/602 (new)
1.2 +6 -6 exim/exim-test-orig/AutoTest/log/574
1.1 +5 -0 exim/exim-test-orig/AutoTest/log/602 (new)
1.2 +6 -6 exim/exim-test-orig/AutoTest/mail/574.ph10
1.1 +10 -0 exim/exim-test-orig/AutoTest/mail/602.ph10 (new)
1.1 +14 -0 exim/exim-test-orig/AutoTest/scripts/602 (new)
1.3 +7 -3 exim/exim-test-orig/AutoTest/stderr/119
1.3 +5 -3 exim/exim-test-orig/AutoTest/stderr/468
1.4 +7 -3 exim/exim-test-orig/AutoTest/stderr/549
1.1 +21 -0 exim/exim-test-orig/AutoTest/stderr/602 (new)
1.6 +1 -1 exim/exim-test-orig/AutoTest/stdout/001
1.1 +26 -0 exim/exim-test-orig/AutoTest/stdout/602 (new)
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- ChangeLog 16 Feb 2005 15:24:21 -0000 1.79
+++ ChangeLog 16 Feb 2005 16:28:36 -0000 1.80
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.79 2005/02/16 15:24:21 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.80 2005/02/16 16:28:36 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -374,6 +374,15 @@
earlier. On busy systems, this bug wouldn't be noticed because something
else would have woken the daemon, and it would have reaped the completed
process earlier.
+
+80. If a message was submitted locally by a user whose login name contained one
+ or more spaces (ugh!), the spool file that Exim wrote was not re-readable.
+ It caused a spool format error. I have fixed the spool reading code. A
+ related problem was that the "from" clause in the Received: line became
+ illegal because of the space(s). It is now covered by ${quote_local_part.
+
+81. Included the latest eximstats from Steve (adds average sizes to HTML Top
+ tables).
----------------------------------------------------
Index: globals.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/globals.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- globals.c 25 Jan 2005 14:16:33 -0000 1.15
+++ globals.c 16 Feb 2005 16:28:36 -0000 1.16
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/globals.c,v 1.15 2005/01/25 14:16:33 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/globals.c,v 1.16 2005/02/16 16:28:36 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -788,7 +788,7 @@
uschar *received_header_text = US
"Received: "
"${if def:sender_rcvhost {from $sender_rcvhost\n\t}"
- "{${if def:sender_ident {from $sender_ident }}"
+ "{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}"
"${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}"
"by $primary_hostname "
"${if def:received_protocol {with $received_protocol}} "
Index: spool_in.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/spool_in.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- spool_in.c 25 Jan 2005 14:16:33 -0000 1.6
+++ spool_in.c 16 Feb 2005 16:28:36 -0000 1.7
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/spool_in.c,v 1.6 2005/01/25 14:16:33 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/spool_in.c,v 1.7 2005/02/16 16:28:36 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -230,7 +230,7 @@
int rcount = 0;
long int uid, gid;
BOOL inheader = FALSE;
-uschar originator[64];
+uschar *p;
/* Reset all the global variables to their default values. However, there is
one exception. DO NOT change the default value of dont_deliver, because it may
@@ -325,9 +325,21 @@
if (Ufgets(big_buffer, big_buffer_size, f) == NULL) goto SPOOL_READ_ERROR;
-if (sscanf(CS big_buffer, "%s %ld %ld", originator, &uid, &gid) != 3)
- goto SPOOL_FORMAT_ERROR;
-originator_login = string_copy(originator);
+p = big_buffer + Ustrlen(big_buffer);
+while (p > big_buffer && isspace(p[-1])) p--;
+*p = 0;
+if (!isdigit(p[-1])) goto SPOOL_FORMAT_ERROR;
+while (p > big_buffer && isdigit(p[-1])) p--;
+gid = Uatoi(p);
+if (p <= big_buffer || *(--p) != ' ') goto SPOOL_FORMAT_ERROR;
+*p = 0;
+if (!isdigit(p[-1])) goto SPOOL_FORMAT_ERROR;
+while (p > big_buffer && isdigit(p[-1])) p--;
+uid = Uatoi(p);
+if (p <= big_buffer || *(--p) != ' ') goto SPOOL_FORMAT_ERROR;
+*p = 0;
+
+originator_login = string_copy(big_buffer);
originator_uid = (uid_t)uid;
originator_gid = (gid_t)gid;
Index: 602
====================================================================
# Exim test configuration 602
# 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 -----
# This overrides, as we are in test harness
unknown_login = joe bloggs
# ----- Routers -----
begin routers
r1:
driver = accept
transport = t1
# ----- Transports -----
begin transports
t1:
driver = appendfile
file = DIR/test-mail/$local_part
user = CALLER
# End
Index: 602
====================================================================
1999-03-02 09:44:33 10HmaX-0005vi-00 <= "joe bloggs"@??? U=joe bloggs P=local S=291
1999-03-02 09:44:33 Start queue run: pid=pppp
1999-03-02 09:44:33 10HmaX-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
Index: 574
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/log/574,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 574 8 Oct 2004 14:49:31 -0000 1.1
+++ 574 16 Feb 2005 16:28:36 -0000 1.2
@@ -1,21 +1,21 @@
-1999-03-02 09:44:33 10HmaX-0005vi-00 <= "abc@??? U=abc@xyz P=local S=275
+1999-03-02 09:44:33 10HmaX-0005vi-00 <= "abc@??? U=abc@xyz P=local S=277
1999-03-02 09:44:33 10HmaX-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 10HmaY-0005vi-00 <= a.b@??? U=a.b P=local S=265
1999-03-02 09:44:33 10HmaY-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
-1999-03-02 09:44:33 10HmaZ-0005vi-00 <= ".a.b"@??? U=.a.b P=local S=269
+1999-03-02 09:44:33 10HmaZ-0005vi-00 <= ".a.b"@??? U=.a.b P=local S=271
1999-03-02 09:44:33 10HmaZ-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
-1999-03-02 09:44:33 10HmbA-0005vi-00 <= "a.b."@??? U=a.b. P=local S=269
+1999-03-02 09:44:33 10HmbA-0005vi-00 <= "a.b."@??? U=a.b. P=local S=271
1999-03-02 09:44:33 10HmbA-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmbA-0005vi-00 Completed
-1999-03-02 09:44:33 10HmbB-0005vi-00 <= "a\"b"@??? U=a"b P=local S=268
+1999-03-02 09:44:33 10HmbB-0005vi-00 <= "a\"b"@??? U=a"b P=local S=271
1999-03-02 09:44:33 10HmbB-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmbB-0005vi-00 Completed
-1999-03-02 09:44:33 10HmbC-0005vi-00 <= "abc@??? U=abc@xyz P=local S=287
+1999-03-02 09:44:33 10HmbC-0005vi-00 <= "abc@??? U=abc@xyz P=local S=289
1999-03-02 09:44:33 10HmbC-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmbC-0005vi-00 Completed
-1999-03-02 09:44:33 10HmbD-0005vi-00 <= "abc%xyz"@??? U=abc@xyz P=local S=275
+1999-03-02 09:44:33 10HmbD-0005vi-00 <= "abc%xyz"@??? U=abc@xyz P=local S=277
1999-03-02 09:44:33 10HmbD-0005vi-00 => ph10 <ph10@???> R=r1 T=t1
1999-03-02 09:44:33 10HmbD-0005vi-00 Completed
Index: 602.ph10
====================================================================
From "joe bloggs"@??? Tue Mar 02 09:44:33 1999
Received: from "joe bloggs" by myhost.test.ex with local (Exim x.yz)
id 10HmaX-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmaX-0005vi-00@???>
From: Philip Hazel <"joe bloggs"@???>
Date: Tue, 2 Mar 1999 09:44:33 +0000
Testing
Index: 574.ph10
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/mail/574.ph10,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 574.ph10 8 Oct 2004 14:49:42 -0000 1.1
+++ 574.ph10 16 Feb 2005 16:28:37 -0000 1.2
@@ -1,5 +1,5 @@
From "abc@??? Tue Mar 02 09:44:33 1999
-Received: from abc@xyz by myhost.test.ex with local (Exim x.yz)
+Received: from "abc@xyz" by myhost.test.ex with local (Exim x.yz)
id 10HmaX-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmaX-0005vi-00@???>
@@ -17,7 +17,7 @@
From ".a.b"@??? Tue Mar 02 09:44:33 1999
-Received: from .a.b by myhost.test.ex with local (Exim x.yz)
+Received: from ".a.b" by myhost.test.ex with local (Exim x.yz)
id 10HmaZ-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmaZ-0005vi-00@???>
@@ -26,7 +26,7 @@
From "a.b."@??? Tue Mar 02 09:44:33 1999
-Received: from a.b. by myhost.test.ex with local (Exim x.yz)
+Received: from "a.b." by myhost.test.ex with local (Exim x.yz)
id 10HmbA-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmbA-0005vi-00@???>
@@ -35,7 +35,7 @@
From "a\"b"@??? Tue Mar 02 09:44:33 1999
-Received: from a"b by myhost.test.ex with local (Exim x.yz)
+Received: from "a\"b" by myhost.test.ex with local (Exim x.yz)
id 10HmbB-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmbB-0005vi-00@???>
@@ -44,7 +44,7 @@
From "abc@??? Tue Mar 02 09:44:33 1999
-Received: from abc@xyz by myhost.test.ex with local (Exim x.yz)
+Received: from "abc@xyz" by myhost.test.ex with local (Exim x.yz)
id 10HmbC-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
From: x@y
@@ -54,7 +54,7 @@
From "abc%xyz"@??? Tue Mar 02 09:44:33 1999
-Received: from abc@xyz by myhost.test.ex with local (Exim x.yz)
+Received: from "abc@xyz" by myhost.test.ex with local (Exim x.yz)
id 10HmbD-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmbD-0005vi-00@???>
Index: 602
====================================================================
0 local user name containing space
exim -odq ph10
Testing
.
****
0
exim -d -bp
****
0
exim -Mvh $msg1
****
0
exim -q
****
Index: 602
====================================================================
Exim version x.yz uid=1169 gid=1169 pid=pppp D=fbb95cfd
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
Fixed never_users: 0
changed uid/gid: forcing real = effective
uid=0 gid=1169 pid=pppp
auxiliary group list: <none>
configuration file is /source/exim4/AutoTest/confs/602
log selectors = xxxxxxxx xxxxxxxx
admin user
changed uid/gid: privilege not needed
uid=42 gid=42 pid=pppp
auxiliary group list: <none>
set_process_info: 21680 listing the queue
reading spool file 10HmaX-0005vi-00-H
user=joe bloggs uid=1169 gid=1169 sender="joe bloggs"@???
sender_local=1 ident=joe bloggs
Non-recipients:
Empty Tree
---- End of tree ----
recipients_count=1
body_linecount=1 message_linecount=0
Index: 119
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stderr/119,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- 119 17 Dec 2004 14:52:44 -0000 1.2
+++ 119 16 Feb 2005 16:28:37 -0000 1.3
@@ -3057,11 +3057,15 @@
---0 Rst ** 32792
---0 Get 104
---0 Rst ** 32792
----0 Get 424
----0 Get 384
+---0 Get 440
+---0 Get 408
---0 Rst ** 32792
+---0 Get 384
---0 Get 360
----0 Get 344
+---0 Get 336
+---0 Rst ** 32792
+---0 Get 104
+---0 Rst ** 32792
---0 Rst ** 32792
---0 Get 296
---0 Rst ** 32792
Index: 468
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stderr/468,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- 468 19 Oct 2004 14:31:15 -0000 1.2
+++ 468 16 Feb 2005 16:28:37 -0000 1.3
@@ -45,7 +45,9 @@
skipping: result is not used
condition: def:sender_ident
result: true
-expanding: from $sender_ident
+expanding: $sender_ident
+ result: ph10
+expanding: from ${quote_local_part:$sender_ident}
result: from ph10
condition: def:sender_helo_name
result: false
@@ -54,7 +56,7 @@
result: (helo=)
skipping: result is not used
-expanding: ${if def:sender_ident {from $sender_ident }}${if def:sender_helo_name {(helo=$sender_helo_name)
+expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)
}}
result: from ph10
condition: def:received_protocol
@@ -76,7 +78,7 @@
for
skipping: result is not used
expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost
- }{${if def:sender_ident {from $sender_ident }}${if def:sender_helo_name {(helo=$sender_helo_name)
+ }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)
}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} ${if def:tls_cipher {($tls_cipher)
}}(Exim $version_number)
id $message_id${if def:received_for {
Index: 549
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stderr/549,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- 549 21 Dec 2004 14:38:02 -0000 1.3
+++ 549 16 Feb 2005 16:28:37 -0000 1.4
@@ -29855,11 +29855,15 @@
---0 Rst ** 32800
---0 Get 104
---0 Rst ** 32800
----0 Get 424
----0 Get 384
+---0 Get 440
+---0 Get 408
---0 Rst ** 32800
+---0 Get 384
---0 Get 360
----0 Get 344
+---0 Get 336
+---0 Rst ** 32800
+---0 Get 104
+---0 Rst ** 32800
---0 Rst ** 32800
---0 Get 296
---0 Rst ** 32800
Index: 602
====================================================================
0m 291 10HmaX-0005vi-00 <"joe bloggs"@???>
ph10@???
10HmaX-0005vi-00-H
joe bloggs 1169 1169
<"joe bloggs"@???>
ddddddddd 0
-ident joe bloggs
-received_protocol local
-body_linecount 1
-auth_id joe bloggs
-auth_sender joe bloggs@???
-allow_unqualified_recipient
-allow_unqualified_sender
-deliver_firsttime
-local
XX
1
ph10@???
148P Received: from "joe bloggs" by myhost.test.ex with local (Exim x.yz)
id 10HmaX-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
047I Message-Id: <E10HmaX-0005vi-00@???>
049F From: Philip Hazel <"joe bloggs"@???>
038 Date: Tue, 2 Mar 1999 09:44:33 +0000
Index: 001
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/001,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- 001 4 Jan 2005 16:36:28 -0000 1.5
+++ 001 16 Feb 2005 16:28:37 -0000 1.6
@@ -125,7 +125,7 @@
queue_run_max = 5
queue_smtp_domains =
receive_timeout = 0s
-received_header_text = Received: ${if def:sender_rcvhost {from $sender_rcvhost\n\t}{${if def:sender_ident {from $sender_ident }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} ${if def:tls_cipher {($tls_cipher)\n\t}}(Exim $version_number)\n\tid $message_id${if def:received_for {\n\tfor $received_for}}
+received_header_text = Received: ${if def:sender_rcvhost {from $sender_rcvhost\n\t}{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} ${if def:tls_cipher {($tls_cipher)\n\t}}(Exim $version_number)\n\tid $message_id${if def:received_for {\n\tfor $received_for}}
received_headers_max = 30
recipient_unqualified_hosts =
recipients_max = 0