On Wed, Jan 30, 2013 at 1:29 PM, Viktor Dukhovni <postfix-us...@dukhovni.org
> wrote:

> On Wed, Jan 30, 2013 at 11:34:13AM -0300, Peter von Nostrand wrote:
>
> > query_filter = (&(objectclass=Person)(|(mail=%s)(proxyAddresses=%s)))
>
> This query is perhaps wrong, the "proxyAddresses" field in AD usually
> contains address forms with <protocol>: prefixes, thus for SMTP addresses
> the content is usually "smtp:localpart@domain" not "localpart@domain".
>
>
I don't have AD integrated with an Exchange so there is a field for
proxyaddress without the use of the prefixes SMTP and smtp.


> You should also set the "domain = " attribute in the map definition so
> that lookups are always for full addresses and don't waste cycles with
> addresses in domains that never have entries in AD.
>
>
> > result_attribute = sAMAccountName
> > result_format = %u/Maildir/
>
> The sAMAccountName attribut is username not email address valued, so
> there is no need to use %u here, use "%s".
>
> > scope= sub
> > bind = yes
> > bind_dn = intranet\ldap
> > bind_pw = somepassword
> >
> > And the result:
> >
> > #postmap -q diego@real.domain ldap:/etc/postfix/ldap-users.cf
> > diego.maradona/Maildir/
> >
> > But when I try to deliver a mail to diego@real.domain, Dovecot tries to
> > deliver it to the mail address and not the username. Returning with a
> "user
> > unknown" message. It works OK if I edit a file with virtual aliases,
> > mapping addresses to usernames, but I need to have all integrated on the
> AD.
>
> Since you're using Dovecot, the virtual_mailbox_maps table is only
> used for recipient validation, not for delivery, since that's done
> by Dovecot. Since you want to rewrite the envelope (Dovecot user
> address), you should use virtual_alias_maps instead, just change the
> result to:
>
>         result_attribute = sAMAccountName
>         result_format = %s@dovecot.invalid
>
> with this the virtual_mailbox_domain is now a virtual_alias_domain,
> since all valid addresses are rewritten to
> <samaccountname>@dovecot.invalid.
> Use the resulting table in virtual_alias_maps, leaving virtual_mailbox_maps
> empty, since you're not using virtual(8) to do the deliveries and no longer
> using virtual_mailbox_domains.
>
> Then map the "dovecot.invalid" domain to the dovecot transport in
> transport_maps.
>
>     transport:
>         dovecot.invalid         dovecot
>
> > master relevant line:
> >
> > dovecot unix - n n - - pipe
> >   flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f
> > ${sender} -d ${recipient}
>
> This will pass the user's rewritten email address to dovecot with
> an @dovecot.invalid suffix. See pipe(8) for instructions on passing
> just the localpart.
>
> --
>         Viktor.
>


OK, it worked. Changed {recipient} for {user}. And thx Wietse for his
sarcasm.
I've tried that change before but using virtual_mailbox_maps instead of
virtual_alias_maps.

Thank you very much, Viktor.
-- 
Peter

Reply via email to