virtual domain mailbox cross contamination

Andrew Morgan morgan at orst.edu
Mon Aug 13 15:37:20 EDT 2007


On Mon, 13 Aug 2007, Adam D wrote:

> Sorry in my haste and excitement I totally forgot to include the log
> output when it worked.
>
>
> Working settings
>
>    main.cf:
>    virtual_transport = cyrus:unix:/var/run/cyrus/socket/lmtp
>    mailbox_transport = cyrus:unix:/var/run/cyrus/socket/lmtp
>
>    master.cf:
>    lmtp      unix  -       -       n       -       -       lmtp
>    cyrus     unix  -       n      n       -       -       lmtp
>
>
>    log output:
> postfix/lmtp[13234]: A09EB3142: to=<user at domain2.tld>,
> relay=host.domain2.tld[/var/run/cyrus/socket/lmtp], delay=1047,
> delays=1047/0/0/0.02, dsn=2.1.5, status=sent (250 2.1.5 Ok)
>
>
> I have noticed in another setting using
> main.cf
> virtual_transport = cyrus
> mailbox_transport = cyrus
>
> master.cf
> cyrus     unix  -       n       n       -       -       pipe
>  flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -r${sender} -m
> ${extension} ${user}
>
> log output
> postfix/pipe[13248]: E56476E010: to=<user at domain1.tld>,
> orig_to=<user1 at host.domain1.tld>, relay=cyrus, delay=0.6,
> delays=0.3/0.25/0/0.05, dsn=2.0.0, status=sent (delivered via cyrus service)
>
> The end 'status=sent...' is quite different.  I am assuming it is
> because the different protocols used to deliver the message to cyrus?

>From the manpage for Postfix's pipe(8):

               ${extension}
                      This  macro expands to the extension part of
                      a recipient address.  For example,  with  an
                      address  user+foo at domain  the  extension  is
                      foo.

               ${mailbox}
                      This  macro  expands  to  the complete local
                      part of a recipient address.   For  example,
                      with  an address user+foo at domain the mailbox
                      is user+foo.

               ${recipient}
                      This macro expands to the complete recipient
                      address.

               ${user}
                      This macro expands to the username part of a
                      recipient address.   For  example,  with  an
                      address user+foo at domain the username part is
                      user.

When you used the original service definition for "cyrus" provided with 
Postfix, it does not pass the domain/realm to cyrdeliver because it is 
only using ${user}.

If you want to continue using cyrdeliver, you can replace ${user} with 
${recipient}.

However, the recommended delivery method for Cyrus with Postfix is "lmtp". 
Postfix's lmtp client will correctly transmit the full user at domain to 
Cyrus.  You may run into problems with delivery to the local lmtp socket 
due to permissions or the Postfix chroot, but these problems can be 
resolved in a few different ways.

It looks like you have already managed to get it working...

 	Andy


More information about the Info-cyrus mailing list