diff -uNr postfix-1.1.2.orig/src/trivial-rewrite/resolve.c postfix-1.1.2.new/src/trivial-rewrite/resolve.c --- postfix-1.1.2.orig/src/trivial-rewrite/resolve.c Sat Nov 3 00:51:23 2001 +++ postfix-1.1.2.new/src/trivial-rewrite/resolve.c Tue Jan 29 16:01:33 2002 @@ -196,7 +196,7 @@ * transport maps cannot return zero-length hostnames. */ if (*var_transport_maps - && transport_lookup(strrchr(STR(nextrcpt), '@') + 1, channel, nexthop)) { + && transport_lookup(STR(nextrcpt), channel, nexthop)) { /* void */ ; } diff -uNr postfix-1.1.2.orig/src/trivial-rewrite/transport.c postfix-1.1.2.new/src/trivial-rewrite/transport.c --- postfix-1.1.2.orig/src/trivial-rewrite/transport.c Tue Nov 20 19:58:22 2001 +++ postfix-1.1.2.new/src/trivial-rewrite/transport.c Tue Jan 29 20:26:19 2002 @@ -117,8 +117,24 @@ * Specify if a key is partial or full, to avoid matching partial keys with * regular expressions. */ - for (name = low_domain; /* void */; name = next) { - if ((value = maps_find(transport_path, name, maps_flag)) != 0) { + /* eed to strip to domain 1st. */ + name = low_domain; + if ((value = maps_find(transport_path, name, maps_flag)) != 0) { + found = 1; + } else { + name = strchr(name,'@'); + for (name = name+1; name != 0; name = strchr(name + 1, '.')) { + if ((value = maps_find(transport_path, name, maps_flag)) != 0) { + found = 1; + break; + } else if (dict_errno != 0) { + msg_fatal("transport table lookup problem"); + } + maps_flag = PARTIAL; + } + } + + if ( found !=0 ) { saved_value = mystrdup(value); if ((host = split_at(saved_value, ':')) == 0 || *host == 0) host = domain; @@ -131,17 +147,9 @@ VAR_DEF_TRANSPORT, var_def_transport); vstring_strcpy(nexthop, host); myfree(saved_value); - found = 1; - break; - } else if (dict_errno != 0) { - msg_fatal("transport table lookup problem"); + } else { + transport = var_def_transport; } - if ((next = strchr(name + 1, '.')) == 0) - break; - if (transport_match_parent_style == MATCH_FLAG_PARENT) - next++; - maps_flag = PARTIAL; - } myfree(low_domain); return (found); }