--- In post...@yahoogroups.com, mouss <mo...@...> wrote: > > jeff_homeip a écrit : > > --- In postfix-us...@yahoogroups.com, Victor Duchovni > > <Victor.Duchovni@> wrote: > >> On Sun, Feb 08, 2009 at 09:50:16PM -0800, Jeff Weinberger wrote: > >> > >>> I am trying to figure out the best way to map one domain to > > another with > >>> the same users...precisely the behavior I am trying to achieve is: > > when > >>> mail is sent (from outside, or from another user within my postfix > >>> installation) to user@ I want it redirected to user@ > >>> - in otherwords, the user is preserved, but the domain is > >>> translated/rewritten. To be more specific: > >>> > >>> user1@ gets re-routed to user1@ > >>> user2@ gets re-routed to user2@ > >> - Are you looking to rewrite just the envelope recipient, or also > > message > >> From/To/Cc headers? > > > > It's only important to rewrite the envelope sender. > > you mean the envelope recipient.
yes, sorry, my typo. if so, use virtual_alias_maps. however, > don't use "wildcard" virtual aliases. instead, generate one mapping for > each user: > > us...@... us...@... > ... > that creates some complications...and might be too difficult but why not use wildcard virtual aliases? You noted below that they break recipient validations. Do you mean that smtp_recipient_restrictions won't work? at all or parts? Wildcard virtual aliases seems like the best way....but I want to understand the implications on everything esle before I proceed. Thanks! > > The reason is that if you use > @example.com @example.org > then this breaks recipient validation: smtpd will accept > anything^example.com, then at delivery time, the user won't be found and > a bounce will be generated. in short, you become a source of backscatter > (you send bounces to innocents whose addresses were forged by spammers) Unless I don't bounce unknown addresses.... > > you can generate the individual mappings with a script. alternatively, > if you store users in sql, you can use sql statements to generate these > "on the fly". examples have been posted multiple times to the list (a > long time ago, that said, but you may be lucky...). > > it would be something like: if (%d='domain1.com') then select %...@domain2..com from virtual_alias else select alias from virtual_alias where address=%s (that's not quite right in the syntax, but you get the idea). This wont' work, as I'd have to write a special select clause for each domain I want to work this way. > > The result I want > > is that the message is delivered to *...@domain2.tld - if it has the > > original To/Cc header that's fine, and probably desireable. > > > > so you want virtual_alias_maps (yes, these apply to _all_ domains. don't > confuse with virtual_alias_domains). > > >> - Is all mail first passed through an SMTP content_filter? > > > > Yes. All mail coming from outside my server is passed through > > amavisd-new for spam/virus checking. Mail originating from my server > > is passed through a specialized content filter. (via the submission > > service) > > > > you must disable rewrite except in one smtpd in a chain. see the FILTER > README (look for no_address_mappings) or amavisd-new README.postfix. > > if you don't, then virtual aliases will be expanded twice (before and > after the filter), which may result in duplicate mail (think of a "foo > -> foo, bar", which becomes "foo -> foo, foo, bar" if expanded twice). > I already do that..thanks > > It is important that this rewrite apply to messages coming from > > outside as well as those originating on my server. > > > > virtual_alias_maps apply to all mail. > > >> - Are all the original and rewritten recipients delivered to another > > host > >> via SMTP, or is some of the mail delivered locally (local, > > virtual, ...)? > > > > I'm not completely sure this answers your question, but the message > > may be only to u...@... or to a number of addresses including > > u...@... Only the "copy" of the message to u...@... > > should get rerouted to u...@... > > > > both domain1.tld and domain2.tld are mine and my postfix instance is > > the MX for them. domain1.tld is an alias domain and domain2.tld is a > > virtual domain. > > > >> > >>> My initial guess is to use recipient_canonical_maps and use a pcre > > map: > >>> /^(.*)@domain1.tld/ {$1)@domain2.tld > >> This guess is wrong for many reasons, but I think it best to first > >> understand what problem you are really trying to solve, before we > >> tear apart the wrong answer to potentially the wrong question. > > > > Thank you...but I would also like to know if I can impose on your > > time, what is wrong with this - it will help me better solve this and > > future problems. > > > > see above. wildcard virtual aliases and canonical break recipient > validations. > > > >[snip] >