Hello all,

I was wondering if there was a sane way of working out username given a
numeric user id during the RCPT TO ACL.  There are plenty of ways to do
it vice versa (passwd db lookup, lsearch /etc/passwd).

So far I've come up with either using perl, or running a command.  So
I've got:

-----------8<-----------------------
# This variable contains the user ID of the owner of the vhost directory
set acl_m0  = ${extract{uid}{${stat:/home/${domain}}}}

# This variable then contains the username (or nobody if grep fails, or the
# userid < 1000)
set acl_m1  = ${if <{1000}{$acl_m0}{nobody}\
                {${extract{1}{:}\
                  {${run{ \
                    /bin/egrep "^[^:]+:[^:]+:$acl_m0:" /etc/passwd\
                  }{$value}{nobody}}}\
                }}\
              }
-----------8<-----------------------

which is OK, but not great.  I'd much rather have

-----------8<-----------------------
set acl_m0 = ${extract{username}{\
               ${lookup getpwid{\
                 ${extract{uid}{${stat:/home/${domain}}}}
                }} \
             }}
-----------8<-----------------------

which is marginally neater.  Having had a look at lookup/passwd.c in the
source, I fear patching the code!

Thanks!

-- 
Patrick Cherry

-- 
## List details at http://lists.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to