summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Hazel <ph10@hermes.cam.ac.uk>2007-06-14 14:18:19 +0000
committerPhilip Hazel <ph10@hermes.cam.ac.uk>2007-06-14 14:18:19 +0000
commit93655c46a6d1c1931c50fe6e17fd711578d4f07e (patch)
tree657156e172d33c9fa62f0a921cadbe908d6418bf
parent2b85bce7b396f5bdcb873a9faef7d54ea33ce26f (diff)
Added $dnslist_matched.
-rw-r--r--doc/doc-txt/ChangeLog4
-rw-r--r--doc/doc-txt/NewStuff21
-rw-r--r--src/ACKNOWLEDGMENTS5
-rw-r--r--src/src/expand.c3
-rw-r--r--src/src/globals.c3
-rw-r--r--src/src/globals.h3
-rw-r--r--src/src/verify.c4
-rw-r--r--test/confs/00231
-rw-r--r--test/confs/01394
-rw-r--r--test/mail/0139.userx4
-rw-r--r--test/stderr/01394
-rw-r--r--test/stdout/00232
12 files changed, 43 insertions, 15 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 099f5e0ea..6a8e4d1e1 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.511 2007/06/14 13:27:11 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.512 2007/06/14 14:18:19 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -48,6 +48,8 @@ MH/02 The dsearch lookup now uses lstat(2) instead of stat(2) to look for
PH/03 The body_linecount and body_zerocount variables are now exported in the
local_scan API.
+PH/04 Added the $dnslist_matched variable.
+
Exim version 4.67
-----------------
diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff
index 3de7f6366..a63027364 100644
--- a/doc/doc-txt/NewStuff
+++ b/doc/doc-txt/NewStuff
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.147 2007/06/14 13:27:11 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.148 2007/06/14 14:18:19 ph10 Exp $
New Features in Exim
--------------------
@@ -14,6 +14,23 @@ Version 4.68
1. The body_linecount and body_zerocount C variables are now exported in the
local_scan API.
+ 2. When a dnslists lookup succeeds, the key that was looked up is now placed
+ in $dnslist_matched. When the key is an IP address, it is not reversed in
+ this variable (though it is, of course, in the actual lookup). In simple
+ cases, for example:
+
+ deny dnslists = spamhaus.example
+
+ the key is also available in another variable (in this case,
+ $sender_host_address). In more complicated cases, however, this is not
+ true. For example, using a data lookup might generate a dnslists lookup
+ like this:
+
+ deny dnslists = spamhaus.example/<|192.168.1.2|192.168.6.7|...
+
+ If this condition succeeds, the value in $dnslist_matched might be
+ 192.168.6.7 (for example).
+
Version 4.67
------------
@@ -26,7 +43,7 @@ Version 4.67
2. When an item in a dnslists list is followed by = and & and a list of IP
addresses, the behaviour was not clear when the lookup returned more than
one IP address. This has been solved by the addition of == and =& for "all"
- rather than the defaule "any" matching.
+ rather than the default "any" matching.
3. Up till now, the only control over which cipher suites GnuTLS uses has been
for the cipher algorithms. New options have been added to allow some of the
diff --git a/src/ACKNOWLEDGMENTS b/src/ACKNOWLEDGMENTS
index 899c346b0..3eb64b9aa 100644
--- a/src/ACKNOWLEDGMENTS
+++ b/src/ACKNOWLEDGMENTS
@@ -1,4 +1,4 @@
-$Cambridge: exim/src/ACKNOWLEDGMENTS,v 1.76 2007/03/13 11:06:48 ph10 Exp $
+$Cambridge: exim/src/ACKNOWLEDGMENTS,v 1.77 2007/06/14 14:18:19 ph10 Exp $
EXIM ACKNOWLEDGEMENTS
@@ -20,7 +20,7 @@ relatively small patches.
Philip Hazel
Lists created: 20 November 2002
-Last updated: 13 March 2007
+Last updated: 14 June 2007
THE OLD LIST
@@ -67,6 +67,7 @@ THE NEW LIST
Alexander Alekseev Use of function attribute checks in gcc
Justo Alonso Suggested patch for maildir++ maildirsize file support
Anton Altaparmakov Patches to get cyrus_sasl fully working
+Simon Arlott Patch for $dnslist_matched.
Claus Assmann Example code for OpenSSL CRL support
Robert Bannocks Patch for LDAP reference problem on Solaris
Ian Bell Analysis of a bug and an infelicity in clock tick code
diff --git a/src/src/expand.c b/src/src/expand.c
index 1fdb93218..abff94996 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/expand.c,v 1.85 2007/05/11 08:48:31 tom Exp $ */
+/* $Cambridge: exim/src/src/expand.c,v 1.86 2007/06/14 14:18:19 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -414,6 +414,7 @@ static var_entry var_table[] = {
{ "dk_testing", vtype_dk_verify, NULL },
#endif
{ "dnslist_domain", vtype_stringptr, &dnslist_domain },
+ { "dnslist_matched", vtype_stringptr, &dnslist_matched },
{ "dnslist_text", vtype_stringptr, &dnslist_text },
{ "dnslist_value", vtype_stringptr, &dnslist_value },
{ "domain", vtype_stringptr, &deliver_domain },
diff --git a/src/src/globals.c b/src/src/globals.c
index 83c37b09e..7b14f7b93 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/globals.c,v 1.72 2007/04/13 15:13:47 ph10 Exp $ */
+/* $Cambridge: exim/src/src/globals.c,v 1.73 2007/06/14 14:18:19 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -521,6 +521,7 @@ uschar *dns_ipv4_lookup = NULL;
int dns_retrans = 0;
int dns_retry = 0;
uschar *dnslist_domain = NULL;
+uschar *dnslist_matched = NULL;
uschar *dnslist_text = NULL;
uschar *dnslist_value = NULL;
tree_node *domainlist_anchor = NULL;
diff --git a/src/src/globals.h b/src/src/globals.h
index e8bcdec88..ce43922c0 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/globals.h,v 1.53 2007/06/14 13:27:11 ph10 Exp $ */
+/* $Cambridge: exim/src/src/globals.h,v 1.54 2007/06/14 14:18:19 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -298,6 +298,7 @@ extern uschar *dns_ipv4_lookup; /* For these domains, don't look for AAAA
extern int dns_retrans; /* Retransmission time setting */
extern int dns_retry; /* Number of retries */
extern uschar *dnslist_domain; /* DNS (black) list domain */
+extern uschar *dnslist_matched; /* DNS (black) list matched key */
extern uschar *dnslist_text; /* DNS (black) list text message */
extern uschar *dnslist_value; /* DNS (black) list IP address */
extern tree_node *domainlist_anchor; /* Tree of defined domain lists */
diff --git a/src/src/verify.c b/src/src/verify.c
index 23f63d803..4b4044507 100644
--- a/src/src/verify.c
+++ b/src/src/verify.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/verify.c,v 1.50 2007/05/08 13:08:22 ph10 Exp $ */
+/* $Cambridge: exim/src/src/verify.c,v 1.51 2007/06/14 14:18:19 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -3031,6 +3031,7 @@ while ((domain = string_nextinlist(&list, &sep, buffer, sizeof(buffer))) != NULL
if (rc == OK)
{
dnslist_domain = string_copy(domain_txt);
+ dnslist_matched = string_copy(sender_host_address);
HDEBUG(D_dnsbl) debug_printf("=> that means %s is listed at %s\n",
sender_host_address, dnslist_domain);
}
@@ -3065,6 +3066,7 @@ while ((domain = string_nextinlist(&list, &sep, buffer, sizeof(buffer))) != NULL
if (rc == OK)
{
dnslist_domain = string_copy(domain_txt);
+ dnslist_matched = string_copy(keydomain);
HDEBUG(D_dnsbl) debug_printf("=> that means %s is listed at %s\n",
keydomain, dnslist_domain);
return OK;
diff --git a/test/confs/0023 b/test/confs/0023
index 17c88ff6a..4f79a87b5 100644
--- a/test/confs/0023
+++ b/test/confs/0023
@@ -156,6 +156,7 @@ acl_29_29_29:
acl_30_30_30:
deny message = domain=$dnslist_domain\n\
value=$dnslist_value\n\
+ matched=$dnslist_matched\n\
text="$dnslist_text"
dnslists = test.ex=V4NET.0.0.1,127.0.0.2/$sender_address_domain
accept
diff --git a/test/confs/0139 b/test/confs/0139
index 2f844b5f0..5327de987 100644
--- a/test/confs/0139
+++ b/test/confs/0139
@@ -41,9 +41,9 @@ check_mail:
warn dnslists = rbl4.test.ex&0.0.0.6
warn dnslists = rbl4.test.ex&127.0.0.3
warn dnslists = rbl4.test.ex!&0.0.0.7
- add_header = DNSlist: $dnslist_domain $dnslist_text
+ add_header = DNSlist: $dnslist_domain $dnslist_text $dnslist_matched
warn dnslists = rbl5.test.ex,rbl4.test.ex=127.0.0.128
- add_header = DNSlist: $dnslist_domain $dnslist_text
+ add_header = DNSlist: $dnslist_domain $dnslist_text $dnslist_matched
accept
check_recipient:
diff --git a/test/mail/0139.userx b/test/mail/0139.userx
index f527841d2..cf8d04bff 100644
--- a/test/mail/0139.userx
+++ b/test/mail/0139.userx
@@ -7,8 +7,8 @@ Received: from [V4NET.11.12.22] (ident=CALLER)
(envelope-from <postmaster@exim.test.ex>)
id 10HmaX-0005vi-00
for userx@exim.test.ex; Tue, 2 Mar 1999 09:44:33 +0000
-DNSlist: rbl4.test.ex This is a test blacklisting4 message
-DNSlist: rbl5.test.ex This is a test blacklisting5 message
+DNSlist: rbl4.test.ex This is a test blacklisting4 message V4NET.11.12.22
+DNSlist: rbl5.test.ex This is a test blacklisting5 message V4NET.11.12.22
test data
diff --git a/test/stderr/0139 b/test/stderr/0139
index 42ebd686d..00e8d2645 100644
--- a/test/stderr/0139
+++ b/test/stderr/0139
@@ -205,8 +205,8 @@ LOG: H=[V4NET.11.12.15] F=<postmaster@exim.test.ex> rejected RCPT <userx@exim.te
>>> using result of previous DNS lookup
>>> DNS lookup for 20.12.11.V4NET.rbl4.test.ex succeeded (yielding 127.0.0.6)
>>> => that means V4NET.11.12.20 is listed at rbl4.test.ex
->>> check add_header = DNSlist: $dnslist_domain $dnslist_text
->>> = DNSlist: rbl4.test.ex
+>>> check add_header = DNSlist: $dnslist_domain $dnslist_text $dnslist_matched
+>>> = DNSlist: rbl4.test.ex V4NET.11.12.20
>>> warn: condition test succeeded
>>> processing "warn"
>>> check dnslists = rbl5.test.ex,rbl4.test.ex=127.0.0.128
diff --git a/test/stdout/0023 b/test/stdout/0023
index 266184af0..74ef7a0f6 100644
--- a/test/stdout/0023
+++ b/test/stdout/0023
@@ -322,6 +322,7 @@
250 OK
550-domain=test.ex
550-value=V4NET.0.0.1
+550-matched=ten-1
550 text=""
250 Reset OK
250 OK
@@ -330,6 +331,7 @@
250 OK
550-domain=test.ex
550-value=127.0.0.2
+550-matched=13.12.11.V4NET.rbl
550 text="This is a test blacklisting message"
221 myhost.test.ex closing connection