chiark / gitweb /
spam.m4: Rename X-SpamAssassin-* headers to X-Distorted-SpamAssassin-*.
[exim-config] / base.m4
diff --git a/base.m4 b/base.m4
index 807c57a42f3d48f6ab5b45e84616a1a4d80dd30b..8f962bb4462f44f7bbe6d39ab24426938a65ed77 100644 (file)
--- a/base.m4
+++ b/base.m4
@@ -26,6 +26,7 @@
 
 SECTION(global, priv)m4_dnl
 admin_groups = CONF_admin_groups
+trusted_groups = CONF_trusted_groups
 prod_requires_admin = false
 
 SECTION(global, logging)m4_dnl
@@ -39,7 +40,7 @@ syslog_timestamp = false
 
 SECTION(global, daemon)m4_dnl
 local_interfaces = <; CONF_interfaces
-extra_local_interfaces = <; 0.0.0.0 ; ::
+extra_local_interfaces = <; 0.0.0.0 ; ::0
 
 SECTION(global, resource)m4_dnl
 deliver_queue_load_max = 8
@@ -84,6 +85,7 @@ SECTION(global, process)m4_dnl
 extract_addresses_remove_arguments = false
 headers_charset = utf-8
 qualify_domain = CONF_master_domain
+untrusted_set_sender = *
 
 SECTION(global, bounce)m4_dnl
 delay_warning = 1h : 24h : 2d
@@ -150,8 +152,14 @@ SECTION(acl, mail)m4_dnl
 mail:
 
        ## If we stashed a warning header about HELO from earlier, we should
-       ## add it now.
+       ## add it now.  Only don't bother if the client has authenticated
+       ## successfully for submission (because we can't expect mobile
+       ## clients to be properly set up knowing their names), or it's one of
+       ## our own satellites (because they're either properly set up anyway,
+       ## or satellites using us as a smarthost).
        warn     condition = $acl_c_helo_warning
+               !condition = ${if eq{$acl_c_mode}{submission}}
+               !hosts = +allnets
                 add_header = :after_received:X-Distorted-Warning: \
                        BADHELO \
                        Client's HELO doesn't match its IP address.\n\t\
@@ -166,7 +174,7 @@ mail:
 
        ## If this is directly from a client then hack on it for a while.
        warn     condition = ${if eq{$acl_c_mode}{submission}}
-                control = submission
+                control = submission/sender_retain
 
        ## Insist that a local client connect through TLS.
        deny     message = Hosts within CONF_master_domain must use TLS
@@ -300,34 +308,6 @@ mail_check_auth:
        deny     message = Sender not authenticated
                 condition = ${if !def:acl_c_user}
 
-       ## Make sure that the local part is one that the authenticated sender
-       ## is allowed to claim.
-       deny     message = Sender address forbidden to calling user
-               !condition = \
-                       ${if exists {CONF_sysconf_dir/auth-sender.conf} \
-                            {${lookup {$acl_c_user} \
-                                      lsearch \
-                                      {CONF_sysconf_dir/auth-sender.conf} \
-                                      {${if match_address \
-                                            {$sender_address} \
-                                            {+value}}} \
-                                      {false}}}}
-               !condition = ${LOOKUP_DOMAIN($sender_address_domain,
-                              {${if and {{match_local_part \
-                                           {$acl_c_user} \
-                                           {+dom_users}} \
-                                         {match_local_part \
-                                           {$sender_address_local_part} \
-                                           {+dom_locals}}}}},
-                              {${if and {{match_local_part \
-                                           {$sender_address_local_part} \
-                                           {+user_extaddr}} \
-                                         {or {{eq {$sender_address_domain} \
-                                                  {}} \
-                                              {match_domain \
-                                                {$sender_address_domain} \
-                                                {+public}}}}}}})}
-
        ## All done.
        accept
 
@@ -377,6 +357,22 @@ $1:
        verify = no
        FILTER_TRANSPORTS<::>$4:>)
 
+DIVERT(null)
+###--------------------------------------------------------------------------
+### Common routers.
+
+SECTION(routers, alias)m4_dnl
+## Look up the local part in the address map.
+alias:
+       driver = redirect
+       allow_fail = true
+       allow_defer = true
+       user = CONF_filter_user
+       FILTER_TRANSPORTS
+       local_parts = nwildlsearch; CONF_alias_file
+       data = ${expand:$local_part_data}
+SECTION(routers, alias-opts)m4_dnl
+
 DIVERT(null)
 ###--------------------------------------------------------------------------
 ### Some standard transports.