On Wednesday, April 6, 2016 4:42 PM, Viktor Dukhovni 
<postfix-us...@dukhovni.org> wrote:
>On Wed, Apr 06, 2016 at 01:38:46PM +0000, chaouche yacine wrote:

>
>> maildrop  unix  -      n      n      -      -      pipe
>> flags=DRhu user=vmail argv=/var/vmail/maildropwrapper -V9 -d ${recipient}
> 
> 
>    http://www.postfix.org/pipe.8.html
> 
>      user=username:groupname
>              Execute the external command with the user ID and  group  ID  of
>              the  specified  username.  The software refuses to execute com-
>              mands with root privileges, or with the privileges of  the  mail
>              system owner. If groupname is specified, the corresponding group
>              ID is used instead of the group ID of username.
> 
>Note, that pipe(8) is not the "login" program and does not execute
>programs with all the group memberships of the specified user.
>Only the primary group, or the explicitly selected "groupname" is
>available.
> 
>-- 
>    Viktor.
Thanks Viktor. I tried running it as vmail:daemon and honestly I had no idea 
what would that do. The program could finally connect to the socket, as the 
strace shows : 

connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/courier/authdaemon/socket"}, 
110) = 0
but it still failed to deliver the email, this time for another error : 

connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/courier/authdaemon/socket"}, 
110) \
= 0
fcntl(3, F_SETFL, O_RDONLY)             = 0
select(4, NULL, [3], NULL, {10, 0})     = 1 (out [3], left {9, 999998})
write(3, "PRE . login a.chaouche@algerian-"..., 41) = 41
select(4, [3], NULL, NULL, {30, 0})     = 1 (in [3], left {29, 999402})
read(3, "UID=113\nGID=1002\nHOME=/var/vmail"..., 8191) = 157
write(2, "maildrop: authlib: groupid=", 27maildrop: authlib: groupid=) = 27
write(2, "1002\0", 51002^@)                   = 5
write(2, "\n", 1)                       = 1
setgroups(1, [1002])                    = -1 EPERM (Operation not permitted)
setgid(1002)                            = -1 EPERM (Operation not permitted)
dup(2)                                  = 4
fcntl(4, F_GETFL)                       = 0x8401 (flags 
O_WRONLY|O_APPEND|O_LARGEFILE)
close(4)                                = 0
write(2, "setgid: Operation not permitted\n", 32setgid: Operation not 
permitted) = 32
close(2)                                = 0
close(1)                                = 0
exit_group(1)

I thought that since vmail is part of the daemon group the linux file 
permission checking subsystem (or whatever that is) would allow the vmail user 
to access that directory because he is a member of the daemon group. I still 
don't understand why the groupid is important to set and I understand this is a 
topic that is outside of postfix.

I ended up changing master.cf back as it was before (just user=vmail) and 
changing the file permissions of the directory /var/run/courier/authdaemon like 
this :
root@messagerie[10.10.10.20] /var/run/courier # chmod o+xr authdaemon/

So now I have 

root@messagerie[10.10.10.20] /var/run/courier # ls
total 16K
drwxr-xr-x 2 daemon daemon 100 Apr  5 14:22 authdaemon
-rw-r--r-- 1 root   root     5 Apr  5 14:22 imapd.pid
-rw------- 1 root   root     0 Mar  7 16:39 imapd.pid.lock
-rw-r--r-- 1 root   root     5 Apr  5 14:22 imapd-ssl.pid
-rw------- 1 root   root     0 Mar  7 16:39 imapd-ssl.pid.lock
-rw-r--r-- 1 root   root     5 Apr  5 14:22 pop3d.pid
-rw------- 1 root   root     0 Mar  7 16:39 pop3d.pid.lock
-rw-r--r-- 1 root   root     5 Apr  5 14:22 pop3d-ssl.pid
-rw------- 1 root   root     0 Mar  7 16:39 pop3d-ssl.pid.lock
root@messagerie[10.10.10.20] /var/run/courier # 


(authdaemon is world readable and executable)

Now maildrop finally works but at the cost of exposing this directory to the 
world. I will be sending an e-mail to the cyrus mailing list and probably cc to 
courier-imap for maildrop support to request comments about this.





 

Reply via email to