On Thu, Mar 11, 2010 at 02:50:49PM -0500, Michael Alan Dorman wrote: > I manage a high-volume mail installation, using an after-queue content > filter for spam filtering. > > We use an ldap transport map (actually a couple of them) to direct each > recipient's email to it's appropriate final destination. > > I recently got some errors about timeouts in the transport map lookup, > which seemed weird, since we're really not delivering all that much > mail---95%+ of the stuff that comes in goes into the filter and never > comes back out. > > I was startled (make fun of me if you wish :) when I realized that each > accepted message is causing a lookup on the transport_map, *even though* > the system knows it's just going to send them to the after-queue content > filter.
SMTP server access control requires that each user be resolvable to an an address class, transport, nexthop and standard-form email address. For example, even with content filters, recipients that resolve to the "error" transport are rejected even if the message may be subject to a content filter. The resolving of addresses to an address class and related data is done by the trivial-rewrite service. The trivial-rewrite service only sees the address in question. > This seems counter-intuitive to me: if the nexthop (content_filter) for > that message has already been determined for all practical purposes, > why bother to consult the transport map? The Postfix internal design is more intricate than your mental model of it. > I looked around for a way to turn off transport map consultation just > for the externally-facing smtpd instances, but since it happens in the > trivial-rewrite stage, that seems a non-starter, though I might have > missed something. > So, is there any way, short of running multiple instances---the > solution I will undertake should no one have other suggestions---that I > can have my transport map ignored for emails destined for the > after-queue content filter? If possible, don't use LDAP for the transport table. And do use "proxy:ldap:" rather than "ldap:" for virtual_alias_maps, and other tables that are used by smtpd and cleanup. Maintain a simple (indexed file) transport table that routes domains, not users. If you must use LDAP for transport lookups, consult a highly available low latency LDAP service, a dedicated replica if necessary. -- Viktor. P.S. Morgan Stanley is looking for a New York City based, Senior Unix system/email administrator to architect and sustain our perimeter email environment. If you are interested, please drop me a note.