ph10 2005/04/06 16:26:52 BST
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src/transports smtp.c
Added files:
exim-test-orig/AutoTest/confs 606
exim-test-orig/AutoTest/log 606
exim-test-orig/AutoTest/rejectlog 606
exim-test-orig/AutoTest/scripts 606
Log:
Fix logging bug when two addresses to the same host list go to different
hosts with different TLS usage within the same delivery process.
Revision Changes Path
1.117 +10 -0 exim/exim-doc/doc-txt/ChangeLog
1.9 +5 -2 exim/exim-src/src/transports/smtp.c
1.1 +63 -0 exim/exim-test-orig/AutoTest/confs/606 (new)
1.1 +13 -0 exim/exim-test-orig/AutoTest/log/606 (new)
1.1 +1 -0 exim/exim-test-orig/AutoTest/rejectlog/606 (new)
1.1 +15 -0 exim/exim-test-orig/AutoTest/scripts/606 (new)
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -r1.116 -r1.117
--- ChangeLog 6 Apr 2005 14:40:23 -0000 1.116
+++ ChangeLog 6 Apr 2005 15:26:52 -0000 1.117
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.116 2005/04/06 14:40:23 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.117 2005/04/06 15:26:52 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -179,6 +179,16 @@
PH/29 Installed patch from the Sieve maintainer that adds the options
sieve_useraddress and sieve_subaddress to the redirect router.
+PH/30 In these circumstances:
+ . Two addresses routed to the same list of hosts;
+ . First host does not offer TLS;
+ . First host accepts first address;
+ . First host gives temporary error to second address;
+ . Second host offers TLS and a TLS session is established;
+ . Second host accepts second address.
+ Exim incorrectly logged both deliveries with the TLS parameters (cipher
+ and peerdn, if requested) that were in fact used only for the second
+ address.
A note about Exim versions 4.44 and 4.50
Index: smtp.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/transports/smtp.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- smtp.c 22 Mar 2005 15:45:35 -0000 1.8
+++ smtp.c 6 Apr 2005 15:26:52 -0000 1.9
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.8 2005/03/22 15:45:35 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.9 2005/04/06 15:26:52 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1020,8 +1020,11 @@
for (addr = addrlist; addr != NULL; addr = addr->next)
{
- addr->cipher = tls_cipher;
- addr->peerdn = tls_peerdn;
+ if (addr->transport_return == PENDING_DEFER)
+ {
+ addr->cipher = tls_cipher;
+ addr->peerdn = tls_peerdn;
+ }
}
}
}
Index: 606
====================================================================
# Exim test configuration 606
# 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 -----
acl_smtp_rcpt = check_rcpt
log_selector = +tls_peerdn
tls_advertise_hosts = ::::1
tls_certificate = DIR/aux/cert1
tls_privatekey = DIR/aux/cert1
# ----- ACLs -----
begin acl
check_rcpt:
accept local_parts = philip
defer local_parts = hazel
hosts = 127.0.0.1
accept
# ----- Routers -----
begin routers
r0:
driver = accept
condition = ${if !eq {$sender_host_address}{}}
transport = t2
r1:
driver = accept
transport = t1
# ----- Transports -----
begin transports
t1:
driver = smtp
hosts = 127.0.0.1 : ::::1
port = 1225
allow_localhost
t2:
driver = appendfile
file = /dev/null
user = CALLER
# End
Index: 606
====================================================================
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225 (IPv6 and IPv4)
1999-03-02 09:44:33 10HmaX-0005vi-00 <= ph10@??? U=ph10 P=local S=242
1999-03-02 09:44:33 H=localhost (myhost.test.ex) [127.0.0.1] U=exim F=<ph10@???> temporarily rejected RCPT <hazel@???>
1999-03-02 09:44:33 10HmaX-0005vi-00 SMTP error from remote mailer after RCPT TO:<hazel@???>: host 127.0.0.1 [127.0.0.1]: 451 Temporary local problem - please try later
1999-03-02 09:44:33 10HmaY-0005vi-00 <= ph10@??? H=localhost (myhost.test.ex) [127.0.0.1] U=exim P=esmtp S=436 id=E10HmaX-0005vi-00@???
1999-03-02 09:44:33 10HmaZ-0005vi-00 <= ph10@??? H=localhost (myhost.test.ex) [::1] P=esmtps X=TLSv1:AES256-SHA:256 S=442 id=E10HmaX-0005vi-00@???
1999-03-02 09:44:33 10HmaY-0005vi-00 => philip <philip@???> R=r0 T=t2
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
1999-03-02 09:44:33 10HmaZ-0005vi-00 => hazel <hazel@???> R=r0 T=t2
1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
1999-03-02 09:44:33 10HmaX-0005vi-00 => philip@??? R=r1 T=t1 H=127.0.0.1 [127.0.0.1]
1999-03-02 09:44:33 10HmaX-0005vi-00 => hazel@??? R=r1 T=t1 H=::1 [::1] X=TLSv1:AES256-SHA:256 DN="/C=UK/L=Cambridge/O=University of Cambridge/OU=Computing Service/CN=Philip Hazel"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
Index: 606
====================================================================
1999-03-02 09:44:33 H=localhost (myhost.test.ex) [127.0.0.1] U=exim F=<ph10@???> temporarily rejected RCPT <hazel@???>
Index: 606
====================================================================
0 logging of TLS parameters for 2 different recipients
exim -DSERVER=server -bd -oX 1225
****
0
sleep 1
****
0
exim -odi philip hazel
****
0
sleep 1
****
0
killdaemon
****