New file `auth-sender.conf' lists extra allowed senders for users.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 5 Apr 2014 08:58:02 +0000 (09:58 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 5 Apr 2014 08:58:02 +0000 (09:58 +0100)
This is an escape hatch I'm not using yet.

base.m4
lists.m4
local.m4

diff --git a/base.m4 b/base.m4
index d312eb5..90e20f2 100644 (file)
--- a/base.m4
+++ b/base.m4
@@ -270,6 +270,15 @@ mail_check_auth:
        ## 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} \
index 2c458c7..39f2ee4 100644 (file)
--- a/lists.m4
+++ b/lists.m4
@@ -55,6 +55,7 @@ localpartlist dom_users = ${expand:KV(users, {$value}{*})}
 localpartlist dom_locals = ${expand:KV(locals, {$value}{+user_extaddr})}
 localpartlist user_extaddr = ^CONF_user_extaddr_regexp
 addresslist user_extaddr = ^CONF_user_extaddr_regexp
+addresslist value = $value
 
 ## All of the `standard' local parts which ought to be provided by a domain.
 localpartlist required = postmaster : abuse
index 52398aa..f3b5e9f 100644 (file)
--- a/local.m4
+++ b/local.m4
@@ -47,6 +47,10 @@ addresslist wrong_local = ! +user_extaddr
 addresslist wrong_domain = ! *@+public
 addresslist wrong_address = +wrong_local : +wrong_domain
 untrusted_set_sender = : \
+       ${if exists {CONF_sysconf_dir/auth-sender.conf} \
+            {${lookup {$sender_ident} \
+                      lsearch {CONF_sysconf_dir/auth-sender.conf} \
+                      {$value}}}} : \
        ${LOOKUP_DOMAIN($sender_address_domain,
                {${if and {{match_local_part {$sender_ident} {+dom_users}} \
                           {match_local_part {$sender_address_local_part} \