PRDR: Introduce $prdr_requested flag variable. Bug 1712
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 3 Nov 2015 14:40:56 +0000 (14:40 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Tue, 3 Nov 2015 14:41:15 +0000 (14:41 +0000)
doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog
src/src/expand.c
test/confs/5500
test/log/5500
test/mail/5500.userx
test/scripts/5500-PRDR/5500
test/stdout/5500

index 5254fb8a26efd1fe54d191b32b81ec8d2a3dd085..b0b1585fe5c2e08abc4ec6c5bf1a5dd3c506ceeb 100644 (file)
@@ -11989,6 +11989,13 @@ a single-component name, Exim calls &[gethostbyname()]& (or
 qualified host name. See also &$smtp_active_hostname$&.
 
 
+.new
+.vitem &$prdr_requested$&
+.cindex "PRDR" "variable for"
+This variable is set to &"yes"& if PRDR was requested by the client for the
+current message, otherwise &"no"&.
+.wen
+
 .vitem &$prvscheck_address$&
 This variable is used in conjunction with the &%prvscheck%& expansion item,
 which is described in sections &<<SECTexpansionitems>>& and
@@ -27393,8 +27400,12 @@ for some or all recipients.
 PRDR may be used to support per-user content filtering.  Without it
 one must defer any recipient after the first that has a different
 content-filter configuration.  With PRDR, the RCPT-time check
-for this can be disabled when the MAIL-time $smtp_command included
-"PRDR".  Any required difference in behaviour of the main DATA-time
+.new
+.cindex "PRDR" "variable for"
+for this can be disabled when the variable &$prdr_requested$&
+is &"yes"&.
+.wen
+Any required difference in behaviour of the main DATA-time
 ACL should however depend on the PRDR-time ACL having run, as Exim
 will avoid doing so in some situations (e.g.  single-recipient mails).
 
index cea29eeb3d2d7d19a27433fec9ebd31140fb089d..4e5663fab1774cb68699fe3462c92b970a08241f 100644 (file)
@@ -68,6 +68,11 @@ JH/12 Bug 1706: percent and underbar characters are no longer escaped by the
 
 JH/13 Bug 1708: avoid misaligned access in cached lookup.
 
+JH/14 Change header file name for freeradius-client.  Relevant if compiling
+      with Radius support; from the Gentoo tree and checked under Fedora.
+
+JH/15 Bug 1712: Introduce $prdr_requested flag variable
+
 
 Exim version 4.86
 -----------------
index 2c3c8a4a55adf19718b7c00f3d2d8d490a72d7d7..fbbc68154c94811386734dd377736a14632df5fd 100644 (file)
@@ -606,6 +606,9 @@ static var_entry var_table[] = {
   { "parent_domain",       vtype_stringptr,   &deliver_domain_parent },
   { "parent_local_part",   vtype_stringptr,   &deliver_localpart_parent },
   { "pid",                 vtype_pid,         NULL },
+#ifndef DISABLE_PRDR
+  { "prdr_requested",      vtype_bool,        &prdr_requested },
+#endif
   { "primary_hostname",    vtype_stringptr,   &primary_hostname },
 #ifdef EXPERIMENTAL_PROXY
   { "proxy_host_address",  vtype_stringptr,   &proxy_host_address },
index 6b9e328baa9dd47aabad7907cf18e81399accc09..bbdd696f967535bb0d843736645ed0259d7fe688 100644 (file)
@@ -22,6 +22,7 @@ trusted_users = CALLER
 
 prdr_enable = true
 
+acl_smtp_mail = mail_acl
 acl_smtp_rcpt = accept
 acl_smtp_data_prdr = prdr_acl
 acl_smtp_data = data_acl
@@ -30,6 +31,9 @@ acl_smtp_data = data_acl
 
 begin acl
 
+mail_acl:
+  accept logwrite = prdr_requested: <$prdr_requested>
+
 prdr_acl:
   defer        local_parts = usery
   deny local_parts = userz
@@ -56,10 +60,4 @@ r0:
   driver = accept
   transport = t1
 
-# ----- Retry -----
-
-begin retry
-
-*                *   F,5d,5m
-
 # End
index ef5372cd145800390dba2e7090640d4a8e18c1e2..997a32e3160e1a27363f99778cacb131bb14289d 100644 (file)
@@ -1,17 +1,26 @@
 1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
+1999-03-02 09:44:33 prdr_requested: <yes>
 1999-03-02 09:44:33 10HmaY-0005vi-00 PRDR R=<userx@test.ex> acceptance
 1999-03-02 09:44:33 10HmaY-0005vi-00 PRDR R=<usery@test.ex> temporary refusal
 1999-03-02 09:44:33 10HmaY-0005vi-00 PRDR R=<userz@test.ex> refusal
 1999-03-02 09:44:33 10HmaY-0005vi-00 <= <> H=(rhu.barb) [127.0.0.1] P=esmtp PRDR S=sss
 1999-03-02 09:44:33 10HmaY-0005vi-00 => userx <userx@test.ex> R=r0 T=t1
 1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 prdr_requested: <yes>
 1999-03-02 09:44:33 10HmaX-0005vi-00 PRDR R=<userp@test.ex> acceptance
 1999-03-02 09:44:33 10HmaX-0005vi-00 PRDR R=<userq@test.ex> acceptance
 1999-03-02 09:44:33 10HmaX-0005vi-00 H=(rhu.barb) [127.0.0.1] F=<> rejected after DATA
+1999-03-02 09:44:33 prdr_requested: <yes>
 1999-03-02 09:44:33 10HmaZ-0005vi-00 <= <> H=(rhu.barb) [127.0.0.1] P=esmtp S=sss
 1999-03-02 09:44:33 10HmaZ-0005vi-00 => user1 <user1@test.ex> R=r0 T=t1
 1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
+1999-03-02 09:44:33 prdr_requested: <yes>
 1999-03-02 09:44:33 10HmbA-0005vi-00 PRDR R=<usery@test.ex> temporary refusal
 1999-03-02 09:44:33 10HmbA-0005vi-00 PRDR R=<usery@test.ex> temporary refusal
+1999-03-02 09:44:33 prdr_requested: <yes>
 1999-03-02 09:44:33 10HmbB-0005vi-00 PRDR R=<userz@test.ex> refusal
 1999-03-02 09:44:33 10HmbB-0005vi-00 PRDR R=<userz@test.ex> refusal
+1999-03-02 09:44:33 prdr_requested: <no>
+1999-03-02 09:44:33 10HmbC-0005vi-00 <= <> H=(rhu.barb) [127.0.0.1] P=esmtp S=sss
+1999-03-02 09:44:33 10HmbC-0005vi-00 => userx <userx@test.ex> R=r0 T=t1
+1999-03-02 09:44:33 10HmbC-0005vi-00 Completed
index c46897f8dad00985bc0342e6bda901a459b677ba..59fd89bbac979b030350b7f0bf5267d6389f3fc0 100644 (file)
@@ -5,3 +5,11 @@ Received: from [127.0.0.1] (helo=rhu.barb)
 Sender: sender@some.where
 
 
+From MAILER-DAEMON Tue Mar 02 09:44:33 1999
+Received: from [127.0.0.1] (helo=rhu.barb)
+       by myhost.test.ex with esmtp (Exim x.yz)
+       id 10HmbC-0005vi-00
+       for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000
+Sender: sender@some.where
+
+
index 567b0008596467213a2c2204fffba6a04fec1506..1c6c344fe53d0895107e7cfb978443addd3db7da 100644 (file)
@@ -35,7 +35,7 @@ Sender: sender@some.where
 quit
 ??? 221
 ****
-sleep 1
+millisleep 500
 #
 #
 # 2: traditional data acl should be called, resulting in an overall reject
@@ -65,7 +65,7 @@ Sender: sender@some.where
 quit
 ??? 221
 ****
-sleep 1
+millisleep 500
 #
 #
 # 3: PRDR should be avoided for a single-recipient message
@@ -91,7 +91,7 @@ Sender: sender@some.where
 quit
 ??? 221
 ****
-sleep 1
+millisleep 500
 #
 # 4: double temp-reject
 client 127.0.0.1 PORT_D
@@ -120,7 +120,7 @@ Sender: sender@some.where
 quit
 ??? 221
 ****
-sleep 1
+millisleep 500
 #
 # 5: double reject
 client 127.0.0.1 PORT_D
@@ -149,7 +149,31 @@ Sender: sender@some.where
 quit
 ??? 221
 ****
-sleep 1
+millisleep 500
+#
+# 6: no PRDR request
+client 127.0.0.1 PORT_D
+??? 220
+ehlo rhu.barb
+??? 250-
+??? 250-
+??? 250-
+??? 250-
+??? 250-PRDR
+??? 250
+mail from:<>
+??? 250
+rcpt to:<userx@test.ex>
+??? 250
+data
+??? 354
+Sender: sender@some.where
+.
+??? 250
+quit
+??? 221
+****
+millisleep 500
 #
 killdaemon
 #
index d5efef741a2995a2fdce5d201327ef05ef0fbdcb..37294c24b64fdcccecf74e1d3c15ef9df4010466 100644 (file)
@@ -204,3 +204,36 @@ Connecting to 127.0.0.1 port 1225 ... connected
 ??? 221
 <<< 221 myhost.test.ex closing connection
 End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 220
+<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+>>> ehlo rhu.barb
+??? 250-
+<<< 250-myhost.test.ex Hello rhu.barb [127.0.0.1]
+??? 250-
+<<< 250-SIZE 52428800
+??? 250-
+<<< 250-8BITMIME
+??? 250-
+<<< 250-PIPELINING
+??? 250-PRDR
+<<< 250-PRDR
+??? 250
+<<< 250 HELP
+>>> mail from:<>
+??? 250
+<<< 250 OK
+>>> rcpt to:<userx@test.ex>
+??? 250
+<<< 250 Accepted
+>>> data
+??? 354
+<<< 354 Enter message, ending with "." on a line by itself
+>>> Sender: sender@some.where
+>>> .
+??? 250
+<<< 250 OK id=10HmbC-0005vi-00
+>>> quit
+??? 221
+<<< 221 myhost.test.ex closing connection
+End of script