On 2013.10.22 09.56, Noel Jones wrote:
On 10/22/2013 8:41 AM, btb wrote:
On 2013.10.21 17.54, Noel Jones wrote:
On 10/21/2013 3:53 PM, btb wrote:
i have a scenario in which certain email is sent using envelope
senders that contain host names that are known only on the local
lan/network, and unknown on the internet. most mail expressing that
characteristic stays local, but occasionally, some is legitimately
destined for the public internet. to that end, with such mail, i'd
like to change the sender domain part to @example.com, but only if
the recipient domain part does not end in example.com [both the
sender and recipient domain part may be @example.com,
@foo.example.com, @bar.foo.example.com, etc].
what is the right method for doing this? given
ADDRESS_REWRITING_README, it seem to possibly be a fit for either
masquerade_domains or smtp_generic_maps, but i'm not certain, and
i'm not sure how to apply selectively.
-ben
smtp_generic_maps will do that nicely. Add the rewriting on the
"smtp" outgoing transport in master.cf to limit rewriting to
non-local recipient domains only.
#master.cf
# find the existing "smtp unix ... smtp" transport and add to it:
-o smtp_generic_maps=regexp:/etc/postfix/generic.regexp
# generic.regexp
/^(.*)@some\.fantasy\.invalid$/ $1...@example.com
thanks. wrt limit rewriting to non-local recipient domains only, by "stays
local", i meant local in terms of the local network, not in terms of postfix.
postfix is responsible for only systems.example.com:
virtual_mailbox_domains = ldap:$table_directory/virtual_mailbox_domains.cf
postmap -q 'systems.example.com' ldap:./tables/virtual_mailbox_domains.cf
systems.example.com
while everything else leaves via smtp and is delivered via mx records - some of
which is for other recipients ending in @example.com or .example.com [delivered
to other hosts on the local network], and the rest of course out onto the
internet. how can i apply smtp_generic_maps selectively, for only certain
recipient domains [ones not ending in @example.com or .example.com] leaving via
smtp - the goal being to rewrite the sender to @example.com for mail destined
for the internet?
-ben
Postfix doesn't have a specific feature to rewrite the sender based
on the recipient.
Arrange for internal network traffic to use a specific transport,
such as the "relay" transport, and let internet traffic use the
default "smtp" transport.
thanks for this guidance. i have what [given my testing so far] appears
to be a setup working as desired, but would appreciate any critiques or
feedback wrt considerations i may have overlooked.
# transport used by mail leaving the local network
smtp unix - - - - - smtp
-o smtp_helo_name=msa.example.com
-o smtp_generic_maps=regexp:$table_directory/generic.regexp
# transport used by mail not leaving the local network
example-internal unix - - - - - smtp
-o syslog_name=postfix/example-internal
>cat transports
# handled by postfix virtual(8)
foo.example.com :
# valid/known on the internet
bar.example.com :
example.com example-internal:
.example.com example-internal:
>cat generic.regexp
# rewrite everything that ends in .example.com, except bar.example.com
if !/^(.*)@bar\.example\.com$/
/^(.*)@.*\.example\.com$/ $1...@example.com
endif
-ben