Add authenticated_sender_force to the smtp transport.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 28 Feb 2006 12:42:47 +0000 (12:42 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 28 Feb 2006 12:42:47 +0000 (12:42 +0000)
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
doc/doc-txt/OptionLists.txt
src/src/transports/smtp.c
src/src/transports/smtp.h
test/confs/0001
test/confs/0215
test/log/0215
test/scripts/0000-Basic/0215
test/stdout/0215

index bbf590a1eac9af03ac496de3cf373c091515da27..c508ee5454f516c254706964e549f333413f30cf 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.314 2006/02/28 11:25:40 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.315 2006/02/28 12:42:47 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -239,6 +239,8 @@ PH/45 When the plaintext authenticator is running as a client, the server's
 PH/46 Messages that are created by the autoreply transport now contains a
       References: header, in accordance with RFCs 2822 and 3834.
 
 PH/46 Messages that are created by the autoreply transport now contains a
       References: header, in accordance with RFCs 2822 and 3834.
 
+PH/47 Added authenticated_sender_force to the smtp transport.
+
 
 Exim version 4.60
 -----------------
 
 Exim version 4.60
 -----------------
index 04fedd63344575ae2c1582b5f3396e4eeb94322a..d99a1347bea08cbbce0c0bc10f9dc8ce705f6e75 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.91 2006/02/28 11:25:40 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.92 2006/02/28 12:42:47 ph10 Exp $
 
 New Features in Exim
 --------------------
 
 New Features in Exim
 --------------------
@@ -98,6 +98,10 @@ PH/14 Messages created by the autoreply transport now contain a References:
       and then the final 11 are copied, before adding the message ID of the
       incoming message.
 
       and then the final 11 are copied, before adding the message ID of the
       incoming message.
 
+PH/15 The smtp transport has a new option called authenticated_sender_force.
+      When set true, it allows the authenticated_sender option's value to be
+      used, even if Exim has not authenticated as a client.
+
 
 Version 4.60
 ------------
 
 Version 4.60
 ------------
index 5e5815b421440bcc423f315ebf312989e9c317ce..d4c27305a91fa66c7d7e6b0cc41d381d84ff1a57 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/OptionLists.txt,v 1.18 2006/02/23 12:41:22 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/OptionLists.txt,v 1.19 2006/02/28 12:42:47 ph10 Exp $
 
 LISTS OF EXIM OPTIONS
 ---------------------
 
 LISTS OF EXIM OPTIONS
 ---------------------
@@ -83,6 +83,7 @@ allow_symlink                        boolean         false         appendfile
 allow_utf8_domains                   boolean         false         main              4.14
 auth_advertise_hosts                 host list       "*"           main              4.00
 authenticated_sender                 string*         unset         smtp              4.14
 allow_utf8_domains                   boolean         false         main              4.14
 auth_advertise_hosts                 host list       "*"           main              4.00
 authenticated_sender                 string*         unset         smtp              4.14
+authenticated_sender_force           boolean         false         smtp              4.61
 authenticate_hosts                   host list       unset         smtp              3.13
 auto_thaw                            time            0s            main
 av_scanner                           string*         +             main              4.50 with content scan
 authenticate_hosts                   host list       unset         smtp              3.13
 auto_thaw                            time            0s            main
 av_scanner                           string*         +             main              4.50 with content scan
index 93cbd221f425385828f56de3144cf48618786865..345fb951b94e712c50a076a1a2581a4bebb02ddc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/smtp.c,v 1.22 2006/02/23 12:41:23 ph10 Exp $ */
+/* $Cambridge: exim/src/src/transports/smtp.c,v 1.23 2006/02/28 12:42:47 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -25,6 +25,8 @@ optionlist smtp_transport_options[] = {
       (void *)offsetof(smtp_transport_options_block, allow_localhost) },
   { "authenticated_sender", opt_stringptr,
       (void *)offsetof(smtp_transport_options_block, authenticated_sender) },
       (void *)offsetof(smtp_transport_options_block, allow_localhost) },
   { "authenticated_sender", opt_stringptr,
       (void *)offsetof(smtp_transport_options_block, authenticated_sender) },
+  { "authenticated_sender_force", opt_bool,
+      (void *)offsetof(smtp_transport_options_block, authenticated_sender_force) },
   { "command_timeout",      opt_time,
       (void *)offsetof(smtp_transport_options_block, command_timeout) },
   { "connect_timeout",      opt_time,
   { "command_timeout",      opt_time,
       (void *)offsetof(smtp_transport_options_block, command_timeout) },
   { "connect_timeout",      opt_time,
@@ -158,6 +160,7 @@ smtp_transport_options_block smtp_transport_option_defaults = {
   5,                   /* hosts_max_try */
   50,                  /* hosts_max_try_hardlimit */
   FALSE,               /* allow_localhost */
   5,                   /* hosts_max_try */
   50,                  /* hosts_max_try_hardlimit */
   FALSE,               /* allow_localhost */
+  FALSE,               /* authenticated_sender_force */
   FALSE,               /* gethostbyname */
   TRUE,                /* dns_qualify_single */
   FALSE,               /* dns_search_parents */
   FALSE,               /* gethostbyname */
   TRUE,                /* dns_qualify_single */
   FALSE,               /* dns_search_parents */
@@ -1310,7 +1313,8 @@ if (smtp_use_size)
 
 /* Add the authenticated sender address if present */
 
 
 /* Add the authenticated sender address if present */
 
-if (smtp_authenticated && local_authenticated_sender != NULL)
+if ((smtp_authenticated || ob->authenticated_sender_force) &&
+    local_authenticated_sender != NULL)
   {
   string_format(p, sizeof(buffer) - (p-buffer), " AUTH=%s",
     auth_xtextencode(local_authenticated_sender,
   {
   string_format(p, sizeof(buffer) - (p-buffer), " AUTH=%s",
     auth_xtextencode(local_authenticated_sender,
index cd6f396c6506e8aca2bf7d2853e543e6a75616ec..05f02bc00ed8c4ea817584f88d2371df23a4cb6d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/smtp.h,v 1.7 2006/02/07 11:19:03 ph10 Exp $ */
+/* $Cambridge: exim/src/src/transports/smtp.h,v 1.8 2006/02/28 12:42:47 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -34,6 +34,7 @@ typedef struct {
   int     hosts_max_try;
   int     hosts_max_try_hardlimit;
   BOOL    allow_localhost;
   int     hosts_max_try;
   int     hosts_max_try_hardlimit;
   BOOL    allow_localhost;
+  BOOL    authenticated_sender_force;
   BOOL    gethostbyname;
   BOOL    dns_qualify_single;
   BOOL    dns_search_parents;
   BOOL    gethostbyname;
   BOOL    dns_qualify_single;
   BOOL    dns_search_parents;
index 049cd1787bfafa8f77d8304e9005bacb20fcd8ee..aa07ef0536ade52b35742f0e8b2fb8c3b4155228 100644 (file)
@@ -574,6 +574,7 @@ appendfile4:
 smtp:
   driver = smtp
   authenticated_sender = abcde
 smtp:
   driver = smtp
   authenticated_sender = abcde
+  authenticated_sender_force = true
   no_allow_localhost
   command_timeout = 5m
   connect_timeout = 0s
   no_allow_localhost
   command_timeout = 5m
   connect_timeout = 0s
index b513fcd6c18148fe2b7d6ee195083a3638e4b23e..102fd0ada4d8db25fd61ce8495e0b1f8b051e720 100644 (file)
@@ -1,6 +1,8 @@
 # Exim test configuration 0215
 
 IGNORE_QUOTA=false
 # Exim test configuration 0215
 
 IGNORE_QUOTA=false
+AUTHS=
+AUTHF=
 
 exim_path = EXIM_PATH
 host_lookup_order = bydns
 
 exim_path = EXIM_PATH
 host_lookup_order = bydns
@@ -45,6 +47,8 @@ lmtp:
   port = PORT_S
   protocol = LMTP
   lmtp_ignore_quota = IGNORE_QUOTA
   port = PORT_S
   protocol = LMTP
   lmtp_ignore_quota = IGNORE_QUOTA
+  AUTHS
+  AUTHF
 
 
 # ----- Retry -----
 
 
 # ----- Retry -----
index 9e9b5bba8e8abd99347bc8b5dcfc8fee7fba1e3b..9dc3aaf9054a24f867a0af172bd54e774365b244 100644 (file)
@@ -45,3 +45,7 @@
 1999-03-02 09:44:33 10HmbF-0005vi-00 -> userxy@myhost.test.ex F=<CALLER@myhost.test.ex> R=smartuser T=lmtp H=127.0.0.1 [127.0.0.1]
 1999-03-02 09:44:33 10HmbF-0005vi-00 -> userxz@myhost.test.ex F=<CALLER@myhost.test.ex> R=smartuser T=lmtp H=127.0.0.1 [127.0.0.1]
 1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
 1999-03-02 09:44:33 10HmbF-0005vi-00 -> userxy@myhost.test.ex F=<CALLER@myhost.test.ex> R=smartuser T=lmtp H=127.0.0.1 [127.0.0.1]
 1999-03-02 09:44:33 10HmbF-0005vi-00 -> userxz@myhost.test.ex F=<CALLER@myhost.test.ex> R=smartuser T=lmtp H=127.0.0.1 [127.0.0.1]
 1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
+1999-03-02 09:44:33 10HmbG-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbG-0005vi-00 == userx@myhost.test.ex R=smartuser T=lmtp defer (-44): SMTP error from remote mail server after RCPT TO:<userx@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 450 LATER
+1999-03-02 09:44:33 10HmbH-0005vi-00 <= CALLER@myhost.test.ex U=CALLER P=local S=sss
+1999-03-02 09:44:33 10HmbH-0005vi-00 == userx@myhost.test.ex R=smartuser T=lmtp defer (-44): SMTP error from remote mail server after RCPT TO:<userx@myhost.test.ex>: host 127.0.0.1 [127.0.0.1]: 450 LATER
index ab108bc8778a8b6fa9046e15712fe00fdad822a7..47f1f1cc8e922c5273dfbfc5be317833a15da393 100644 (file)
@@ -189,4 +189,34 @@ QUIT
 exim -odi -DIGNORE_QUOTA=true userxx userxy userxz
 This is a test message.
 ****
 exim -odi -DIGNORE_QUOTA=true userxx userxy userxz
 This is a test message.
 ****
+# Tests for authenticated_sender forcing: this one doesn't do it
+server PORT_S
+220 ESMTP
+LHLO
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+450 LATER
+QUIT
+250 OK
+****
+exim -odi -DAUTHS=authenticated_sender=xxx@yyy userx
+Another test message.
+****
+# Tests for authenticated_sender forcing: this one does it
+server PORT_S
+220 ESMTP
+LHLO
+250 OK
+MAIL FROM:
+250 Sender OK
+RCPT TO:
+450 LATER
+QUIT
+250 OK
+****
+exim -odi -DAUTHS=authenticated_sender=xxx@yyy -DAUTHF=authenticated_sender_force userx
+Another test message.
+****
 no_msglog_check
 no_msglog_check
index a562016e0d837161b7bf219f9b79923b5341f4c1..d6d06cfe6986cebeffe56e9a33fe78acfe5d7c90 100644 (file)
@@ -217,3 +217,27 @@ This is a test message.
 QUIT
 250 OK
 End of script
 QUIT
 250 OK
 End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 ESMTP
+LHLO myhost.test.ex
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex>
+250 Sender OK
+RCPT TO:<userx@myhost.test.ex>
+450 LATER
+QUIT
+250 OK
+End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 ESMTP
+LHLO myhost.test.ex
+250 OK
+MAIL FROM:<CALLER@myhost.test.ex> AUTH=xxx@yyy
+250 Sender OK
+RCPT TO:<userx@myhost.test.ex>
+450 LATER
+QUIT
+250 OK
+End of script