diff -uN qmail-1.03/qmail-remote.c qmail-1.03-qmtproutes/qmail-remote.c
--- qmail-1.03/qmail-remote.c	Mon Jul 30 17:22:58 2001
+++ qmail-1.03-qmtproutes/qmail-remote.c	Mon Jul 30 18:21:51 2001
@@ -42,7 +42,9 @@
 
 stralloc helohost = {0};
 stralloc routes = {0};
+stralloc qroutes = {0};
 struct constmap maproutes;
+struct constmap qmaproutes;
 stralloc host = {0};
 stralloc sender = {0};
 
@@ -435,6 +437,14 @@
     case 1:
       if (!constmap_init(&maproutes,routes.s,routes.len,1)) temp_nomem(); break;
   }
+  switch(control_readfile(&qroutes,"control/qmtproutes",0)) {
+    case -1:
+      temp_control();
+    case 0:
+      if (!constmap_init(&qmaproutes,"",0,1)) temp_nomem(); break;
+    case 1:
+      if (!constmap_init(&qmaproutes,qroutes.s,qroutes.len,1)) temp_nomem(); break;
+  }
 }
 
 void main(argc,argv)
@@ -448,6 +458,7 @@
   unsigned long prefme;
   int flagallaliases;
   int flagalias;
+  int flagqmtp = 1;
   char *relayhost;
  
   sig_pipeignore();
@@ -461,6 +472,23 @@
   relayhost = 0;
   for (i = 0;i <= host.len;++i)
     if ((i == 0) || (i == host.len) || (host.s[i] == '.'))
+      if (relayhost = constmap(&qmaproutes,host.s + i,host.len - i))
+        break;
+  if (relayhost && !*relayhost) relayhost = 0;
+ 
+  if (relayhost) {
+    i = str_chr(relayhost,':');
+    if (relayhost[i]) {
+      scan_ulong(relayhost + i + 1,&smtp_port);
+      relayhost[i] = 0;
+    }
+    if (!stralloc_copys(&host,relayhost)) temp_nomem();
+  }
+  
+  if (!relayhost) {
+  flagqmtp = 0;
+  for (i = 0;i <= host.len;++i)
+    if ((i == 0) || (i == host.len) || (host.s[i] == '.'))
       if (relayhost = constmap(&maproutes,host.s + i,host.len - i))
         break;
   if (relayhost && !*relayhost) relayhost = 0;
@@ -473,7 +501,7 @@
     }
     if (!stralloc_copys(&host,relayhost)) temp_nomem();
   }
-
+  }
 
   addrmangle(&sender,argv[2],&flagalias,0);
  
@@ -525,7 +553,7 @@
     smtpfd = socket(AF_INET,SOCK_STREAM,0);
     if (smtpfd == -1) temp_oserr();
  
-    if (qmtp_priority(ip.ix[i].pref)) {
+    if (flagqmtp || qmtp_priority(ip.ix[i].pref)) {
       if (timeoutconn(smtpfd,&ip.ix[i].ip,(unsigned int) qmtp_port,timeoutconnect) == 0) {
 	tcpto_err(&ip.ix[i].ip,0);
 	partner = ip.ix[i].ip;
