Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!math.fu-berlin.de!fub!heiko From: heiko@methan.chemie.fu-berlin.de (Heiko Schlichting) Newsgroups: comp.mail.sendmail Subject: strange behavior of smail 3.1.20 Message-ID: Date: 23 Mar 91 02:57:52 GMT Reply-To: admin@methan.chemie.fu-berlin.de Organization: Free University of Berlin, Organic Chemistry Lines: 181 Hello, we noticed a *very* strange behavior of smail 3.1.20 using the options "-bt -d" with in 50 to 99. With our routers-File (see below) we get the following answers: echo "test@test" | smail -bt -d49 : smail> rtd_gethostbyaddr called smail> rtd_uuname called smail> rtd_gethostbyname called smail> rtd_pathalias called smail> bsearch_lookup: looking for smail> bsearch_lookup: looking for <.test> smail> rtd_smarthost called smail> test@test: test matched by smart_host: smail> use default transport smtp for test@test smail> routed test@test --> test@test at unido.informatik.uni-dortmund.de smail> host: unido.informatik.uni-dortmund.de user: test@test transport: smtp This seems absolutly normal because unido.informatik... is our smarthost. But look at the difference when I use debug-level 50 instead of 49: echo "test@test" | smail -bt -d50 : smail> preparse_address(test@test) entry: smail> preparse address returns: test@test smail> parse_address called: address=test@test smail> parse_address: MAILBOX: target=test, remainder=test smail> route_remote_addrs called smail> rtd_gethostbyaddr called smail> rtd_uuname called smail> rtd_gethostbyname called smail> test@test: test matched by inet_hosts: smail> rtd_pathalias called smail> rtd_smarthost called smail> parse_address called: address=test smail> parse_address: LOCAL: remainder=test smail> user: test transport: local THIS looks very abnormal... and it appears *only* if the length of the username is equal to the length of the hostname. If I try this with tes@test or test@testing the mail is delivered to the smarthost. But why does the inet_hosts-router (=gethostbyname, see below) match? Especially when there is a parameter "required=fu-berlin.de". Unnecessary to mention that there is no host "test[.chemie].fu-berlin.de" in the nameserver and that we have a "domain chemie.fu-berlin.de" in our /etc/resolv.conf. What is the difference between debug-level 49 and 50? And here is our routers-Configuration File (which is not unusual, I think): (excuse the *German* comments ;-) --- cut here --- # # /usr/local/lib/smail/routers - Smail 3.1 routing festlegen # # Aenderung: 28.02.91 (hs) uucp_neighbors fuer {host}.direct # eingefuehrt. Gute Moeglichkeit, um # neue UUCP-Verbindungen zu testen. # Zur Zeit nur fuer Transport UUX # geeignet, das methods wird absichtlich # nicht beachtet. # Routing-Reihenfolge: # 1. numerische Internetadressen # 2. Direkt angeschlossene UUCP-Sites (nur fuer Testzwecke!) # 3. Rechner auf dem lokalen Netzwerk der FU # 4. Routen nach den Angaben im Pathalias-Output # 5. Smart Host # 1. numerische Internetadressen # # Adressen wie user@[130.133.2.81] werden zuerst behandelt, weil # die eckigen Klammern die anderen Router verwirren (siehe Smail-Doku). inet_addrs: driver = gethostbyaddr, # router to match IP domain literals transport = smtp; # deliver using SMTP over TCP/IP fail_if_error, # fail malformed domain literal addrs check_for_local # see if this is really the local host # 2. Direkt angeschlossene UUCP-Sites (nur fuer Testzwecke!) # # Nur fuer Testzwecke in das Routers-File genommen! # Es wird nur benutzt, wenn der Hostname als "host.direct" eingetippt # wird. Zum Beispiel wird "neon.direct" in das Spoolverzeichnis von # neon geschrieben, auch wenn wir eigentlich tmp.mbx.sub.org!utopia!neon # routen. uucp_neighbors: driver = uuname, # use a program which returns neighbors # method = methods, # Ausnahmsweise keine Methods benutzen, # sondern IMMER uux! transport = uux; cmd = /usr/bin/uuname, # specifically, use the uuname program required = direct, domain = direct # 3. Rechner auf dem lokalen Netzwerk der FU # # Nur Rechner die ein "fu-berlin.de" in der Adresse haben werden in # jedem Fall direkt zugestellt. Moeglicherweise sollte man hier spaeter # auch die MX-Records auswerten. Da es zur Zeit kaum MX-Records an # der FU gibt, kann man sich das auch schenken (Minimierung der # Fehlerquellen und weniger Netzzugriffe) inet_hosts: driver = gethostbyname, transport = smtp; required = fu-berlin.de # 4. Routen nach den Angaben im Pathalias-Output # # Der Pathalias-Output (steht bei uns in /usr/local/lib/smail/paths) # wird als Grundlage fuer das Routing genommen. Zahlreiche SMTP- # Verbindungen sind in /usr/spool/uumaps/u.sub.smtp eingetragen, wie # zum Beispiel die Verbindung methan... mit opal... und die direkte # Verbindung von methan... mit uunet... # Auszuege der DNet-Map findet man in /usr/spool/uumaps/u.sub.x, damit # die an Unido haengenden Rechner auch ueber unido geroutet werden. Damit # kommt es dann zum Beispiel zu einem Pfad unido...!uka!smurf. # Direktes Einliefern bei uka ist nicht moeglich, weil uka unseren # Rechner ablehnt, solange kein Reversed Mapping moeglich ist. # WICHTIG: Der Pathalias-Output muss sortiert sein (proto = bsearch), # sonst muss man proto = lsearch setzen! # Mit der Datei /usr/local/lib/smail/methods/methods wird festgelegt, # ob wir mit dem entsprechenden Rechner Mails per uux, smtp oder # batched-smtp ("uursmtp") Mails austauschen. Default ist uux, also # muessen alle Rechner, mit denen wir per SMTP austauschen wollen, # ausdruecklich eingetragen werden (bei weltweitem Internetzugriff # ist das nicht mehr sinnvoll, da ist dann ein MX beachtender # Router vom Typ "bind" zu verwenden). paths: driver = pathalias, method = methods, # Transportart ist in methods festgelegt: # entweder uux, smtp oder uursmtp transport = uux; # default ist uux, steht zusaetzlich noch # als '*' in methods file = paths, # Name der Datenbasis, ohne absoluten Pfad # wird das Smail-Libdir angenommen. proto = bsearch, # alphabetisch sortiert, sonst lserach, dbm... # optional, # optional auskommentiert = wenn keine # Pathalias-Datenbasis vorhanden ist, # terminiert smail mit einer Eintragung # im paniclog. domain = uucp # ".uucp" wird vor dem Nachschauen in # der Pathalias-Datenbasis entfernt. # 5. Smart Host # # Wenn nichts funktioniert hat, wird die Mail per SMTP zu unido geschickt. # Bei 'path' kann auch ein laengerer (Bang)-Pfad stehen, zum Beispiel # opal.cs.tu-berlin.de!uunet.uu.net oder aehnliches. # Natuerlich darf der Smart_Host-Router nur als letzter Router angegeben # werden. smart_host: driver = smarthost, transport = smtp; path = unido.informatik.uni-dortmund.de # Ende. --- cut here --- Bye, Vera and Heiko. -- |~| Heiko Schlichting | Freie Universitaet Berlin / \ heiko@fub.uucp | Institut fuer Organische Chemie /FUB\ heiko@methan.chemie.fu-berlin.de | Takustrasse 3 `---' phone +49 30 838-2677; fax ...-5163 | D-1000 Berlin 33 Germany