have a pointer to the host item that succeeded; local deliveries can have a
pointer to a single host item in their host list, for use by the transport. */
+#ifdef EXPERIMENTAL_DBL
+ dbl_delivery_ip = NULL; /* presume no successful remote delivery */
+#endif
+
s = reset_point = store_get(size);
log_address = string_log_address(addr, (log_write_selector & L_all_parents) != 0, TRUE);
if(addr->p.srs_sender)
s = string_append(s, &size, &ptr, 3, US" SRS=<", addr->p.srs_sender, US">");
#endif
-#ifdef EXPERIMENTAL_DBL
- dbl_delivery_ip = NULL; /* presume no successful remote delivery */
-#endif
/* You might think that the return path must always be set for a successful
delivery; indeed, I did for some time, until this statement crashed. The case
fprintf(f, " Experimental_PRDR");
#endif
#ifdef EXPERIMENTAL_DBL
- fprintf(f, " EXPERIMENTAL_DBL");
+ fprintf(f, " Experimental_DBL");
#endif
fprintf(f, "\n");
/* Not receiving messages, don't need to parse the ACL data */
+#ifndef EXPERIMENTAL_DBL
if (skip)
{
DEBUG(D_acl) debug_printf("skipping ACL configuration - not needed\n");
while ((p = get_config_line()) != NULL);
return;
}
+#endif
/* Read each ACL and add it into the tree. Macro (re)definitions are allowed
between ACLs. */
--- /dev/null
+# Exim test configuration 5700
+
+exim_path = EXIM_PATH
+host_lookup_order = bydns
+rfc1413_query_timeout = 0s
+spool_directory = DIR/spool
+log_file_path = DIR/spool/log/%slog
+gecos_pattern = ""
+gecos_name = CALLER_NAME
+
+# ----- Main settings -----
+
+acl_smtp_rcpt = accept
+acl_smtp_data = accept
+
+dbl_delivery_query = ${acl {a_logger}}
+
+
+# ----- ACL -----
+
+begin acl
+
+a_logger:
+ require logwrite = \
+ A \
+ 1 <$dbl_delivery_ip> \
+ 2 <$dbl_delivery_port> \
+ 3 <$dbl_delivery_fqdn> \
+ 4 <$dbl_delivery_local_part> \
+ 5 <$dbl_delivery_domain> \
+ 6 <$dbl_delivery_confirmation> \
+ 7 <$dbl_defer_errno> \
+ 8 <$dbl_defer_errstr> \
+ 9 <$router_name> \
+ 10 <$transport_name>
+
+
+# ----- Routers -----
+
+begin routers
+
+others:
+ driver = manualroute
+ route_list = domain1 127.0.0.1 byname
+ self = send
+ transport = smtp
+ no_more
+
+
+# ----- Transports -----
+
+begin transports
+
+smtp:
+ driver = smtp
+ port = PORT_S
+
+# End
--- /dev/null
+1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss
+1999-03-02 09:44:33 Start queue run: pid=pppp -qqf
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaX-0005vi-00 A 1 127.0.0.1 2 1224 3 127.0.0.1 4 userx 5 domain1 6 250 OK 7 0 8 9 10
+1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 End queue run: pid=pppp -qqf
--- /dev/null
+# Arbtirary expansion after transport
+# (EXPERIMENTAL_BDL - database logging)
+#
+need_ipv4
+#
+exim -odq userx@domain1
+Test message 1
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL
+250 OK
+RCPT
+250 OK
+DATA
+354 More...
+.
+250 OK
+QUIT
+220 OK
+****
+exim -d+deliver+expand+acl -qqf
+****
--- /dev/null
+support Experimental_DBL
--- /dev/null
+
+******** SERVER ********
+Listening on port 1224 ...
+Connection request from [127.0.0.1]
+220 ESMTP
+EHLO the.local.host.name
+250-OK
+250 HELP
+MAIL FROM:<CALLER@the.local.host.name>
+250 OK
+RCPT TO:<userx@domain1>
+250 OK
+DATA
+354 More...
+Received: from CALLER by the.local.host.name with local (Exim x.yz)
+ (envelope-from <CALLER@the.local.host.name>)
+ id 10HmaX-0005vi-00
+ for userx@domain1; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmaX-0005vi-00@the.local.host.name>
+From: CALLER_NAME <CALLER@the.local.host.name>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+Test message 1
+.
+250 OK
+QUIT
+220 OK
+End of script