On Fri, Oct 08, 2010 at 12:50:42PM -0400, Wietse Venema wrote: > Victor Duchovni: > > I avoid the need for such empty relay tables, by making all my > > externally-facing domains (the domains in which users get their > > primary email addresses) be virtual alias domains. All internal > > delivery is to "mailbox" domains that are the result of virtual > > alias rewrites: > > > > main.cf: > > virtual_alias_domains = example.com > > > > indexed = ${default_database_type}:${config_directory}/ > > virtual_alias_maps = ${indexed}virtual > > transport_maps = ${indexed}transport > > > > virtual: > > u...@example.com u...@mbox-domain.example.com > ... > > That is simpler, but I tried to avoid this, because sometimes the > back-end MTA is configured to accept u...@example.com but not > u...@server.example.com.
In many business email systems, the back-end store is MSFT Exchange, in which case, support for non-primary addresses is not difficult, one just populates the mailbox addresses into proxyAddresses: SMTP:joe.u...@example.com proxyAddresses: smtp:ju...@exchange.example.com one also makes the Exchange servers authoritative for the "exchange.example.com" domain, but forward anything unresolved int the parent domain (example.com) to the cross-domain mail hub for routing. This is most useful when multiple mail store environments are present. (Multiple Exchange installations, and/or other non MSFT mailstores). Some people find it easier to rewrite mailbox->primary mail in smtp_generic_maps, so that the backend servers still see the primary address, but the Postfix queue sees mailbox domains, and thereby avoid per-user transport lookups, which typically involve much slower (compared to indexed-file lookups) LDAP or SQL queries and can adversely impact queue manager performance. -- Viktor.