On Sat, 09 Nov 2013 14:21:51 +0100 Jeroen Geilman <jer...@adaptr.nl> wrote:
> On 11/9/2013 2:13 PM, Simon Effenberg wrote: > > On Sat, 9 Nov 2013 07:54:30 -0500 (EST) > > wie...@porcupine.org (Wietse Venema) wrote: > > > >> transport_maps can use hash tables AND tcp tables. transport_maps > >> queries each table in the specified order, and stops when a result > >> is found. When no result is found, Postfix uses default_transport. > >> > >> Wietse- > > > > > > I got this but so it's impossible to do something like that: > > > > main.cf: > > transport_maps = hash:/etc/postfix/transport, tcp:[127.0.0.1]:2527 > > > > transport: > > > > @domain1.tld smtp:[internal.relay] > > @domain2.tld smtp:[external.relay] > > > > master.cf: > > 127.0.0.1:2527 inet n n n - 0 spawn > > user=nobody argv=/etc/postfix/random.rb > > > > random.rb: > > #!/usr/bin/env ruby > > > > TRANSPORTS = [ 'smtp1:', 'smtp2:', 'smtp3:' ] > > > > while line = STDIN.readline > > puts "200 #{TRANSPORTS[rand(TRANSPORTS.size)]}" > > end > > > > > > If I'll try to send a mail to "x...@domain1.tld" this won't use > > smtp:[internal.relay] but one of 'smtp1:', 'smpt2:' or 'smtp3:' > > > > No. x...@domain1.tld matches the first line in /etc/postfix/transport. > > You seem terminally confused about how maps are used. > Each map type has specific documentation on how it is queried, but no > map determines WHEN it is queried. You define that in transport_maps. That's not how it works in my 2.9 postfix version.. trivial-rewrite is doing the following (regarding to -vv logs): 1. search for x...@domain1.tld 1. in transport which has NO match 2. asking the tcp_table which HAS a match so this wouldn't work.. but if I would change the "random.rb" that is only giving a "200 smtp{1..3}:" if the request is for a "domain" and not for the full email address the following will happen: 1. search for x...@domain1.tld 1. in transport which has NO match 2. asking the tcp_table which has NO match because it is a full address 2. search for domain1.tld 1. in transport which HAS a match => correct transport is used but now.. if I want to send a mail to y...@domain2013.tld this will happen: 1. search for y...@domain2013.tld 1. in transport which has NO match 2. asking the tcp_table which has NO match because it is a full address 2. search for domain2013.tld 1. in transport which has NO match - now postfix is using the "default_transport" because "tcp table" is only asked once and not a second time (see tcp_table(5)) So it looks not good for me, isn't it? Simon --