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);
 }

