On Wed, Apr 10, 2013 at 07:55:53AM -0700, Quanah Gibson-Mount wrote:

> >This said, I would take a different approach:
>       ...
> 
> Thanks Viktor, this looks interesting.
> 
> I'm assuming I can do all of this via LDAP rather than flat files?

Why do you need to assume?  All examples using indexed files are
a mechanism to demonstrate the required table contents.  You should
know by now that all tables are logically equivalent provided they
return the same results for the same lookup keys.

> We have customers with thousands of domains, and number of which may
> be aliases for various of the defined domains, which is why we query
> all of this information from LDAP.  Any solution that requires using
> flat files is a nonstarter.

This said, not all tables are operationally equivalent.  All the
hoops jumped in my preferred configuration are designed to avoid
having an LDAP *transport* table.  The transport table should
ideally be small, static and "indexed" (generated as a CDB or
similar local database in a file).

By rewriting users to mailstore-specific mailbox addresses, you
at most need transport table entries for each mail store, not
for each user.  You can even do away with per-mailstore transport
entries if you set:

        virtual_transport = lmtp
        # Adjust if necessary
        lmtp_tcp_port = 24

and ensure that all the mailstore-specific domain-parts resolve
in DNS.  To that end you can rewrite users to:

        lu...@example.com       lu...@imap1.example.com
        lus...@example.com      lus...@imap2.example.com
        ...

and avoid the "invalid" TLD if that's preferred.  You can still
disallow remote injection directly into the server domains, by
various mechanisms (mostly make sure to not include them in
relay_domains via parent_domain_matches_subdomains).

Lots of ways to skin this cat...  I am not a fan of LDAP with
transport_maps, since this impacts queue-manager reliability
and performance.  Also rewriting is more robust against loops.
Where-as forwarding the same address around based on transport
tables risks inconsistent configuration leading to loops.
If the per-user transport end-point is LMTP, the loop issue is
less of a concern, since LMTP servers are not expected to ever
forward mail.

-- 
        Viktor.

Reply via email to