Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Testen Ihrer Konfiguration

Der Befehl m4 verarbeitet die Makrodefinitionsdateien nach seinen eigenen Syntaxregeln, ohne überhaupt etwas von korrekter sendmail-Syntax zu verstehen. Er gibt daher auch keine Fehlermeldungen aus, wenn Sie in Ihrer Makrodefinitionsdatei etwas falsch gemacht haben. Aus diesem Grund ist es sehr wichtig, daß Sie Ihre Konfiguration gründlich testen. Zum Glück macht es uns sendmail hier relativ leicht.

sendmail unterstützt einen “Adressentest”-Modus, mit dem wir unsere Konfiguration testen und Fehler aufspüren können. In diesem Betriebsmodus rufen wir sendmail von der Befehlszeile auf. Es fragt uns dann nach einer Regelsatzspezifikation und einer Ziel-Mail-Adresse. sendmail verarbeitet dann diese Zieladresse mit den angegebenen Regeln und gibt dabei die Ergebnisse der abgearbeiteten Rewrite-Regeln aus. Um sendmail in diesen Modus zu versetzen, rufen wir es mit dem Argument –bt auf:

# /usr/sbin/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
>

Die verwendete Standard-Konfigurationsdatei ist /etc/mail/sendmail.cf. Sie können auch eine alternative Konfigurationsdatei angeben, indem Sie das Argument –C benutzen. Um unsere Konfiguration zu testen, müssen wir eine Anzahl von Adressen auswählen, die uns darüber Auskunft geben, ob alle unsere mailbezogenen Anforderungen eingehalten werden. Zur Veranschaulichung arbeiten wir uns durch einen Test unserer etwas komplizierteren UUCP-Konfiguration, die in Tabelle 18.2 dargestellt ist.

Zuerst testen wir, ob sendmail in der Lage ist, Mails an die lokalen Benutzer des Systems zuzustellen. Bei diesen Tests erwarten wir, daß alle Adressen für den local-Mailer auf dieser Maschine umgeschrieben werden:

# /usr/sbin/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> 3,0 isaac 
rewrite: ruleset   3   input: isaac 
rewrite: ruleset  96   input: isaac 
rewrite: ruleset  96 returns: isaac 
rewrite: ruleset   3 returns: isaac 
rewrite: ruleset   0   input: isaac 
rewrite: ruleset 199   input: isaac 
rewrite: ruleset 199 returns: isaac 
rewrite: ruleset  98   input: isaac 
rewrite: ruleset  98 returns: isaac 
rewrite: ruleset 198   input: isaac 
rewrite: ruleset 198 returns: $# local $: isaac 
rewrite: ruleset   0 returns: $# local $: isaac

Die Ausgabe zeigt uns, wie sendmail auf diesem System an isaac adressierte Mail verarbeitet. Jede Zeile zeigt uns die Informationen, die einem Regelsatz übergeben wurden, oder die durch Abarbeitung einem Regelsatz erzeugte Ausgabe. Wir haben sendmail angewiesen, die Regelsätze 3 und 0 zur Adressenverarbeitung einzusetzen. Regelmenge 0 wird normalerweise aufgerufen, Regelsatz 3 haben wir hier ausdrücklich angegeben, da er nicht standardmäßig getestet wird. Die letzte Zeile zeigt schließlich, daß das Ergebnis des Regelsatzes 0 tatsächlich Mail an isaac an den local-Mailer leitet.

Als nächstes testen wir die an unsere SMTP-Adresse isaac@vstout.vbrew.com adressierten Mails. Hier sollten wir dasselbe Endresultat wie in unserem letzten Beispiel erhalten:

# /usr/sbin/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> 3,0 isaac@vstout.vbrew.com 
rewrite: ruleset   3   input: isaac @ vstout . vbrew . com 
rewrite: ruleset  96   input: isaac < @ vstout . vbrew . com > 
rewrite: ruleset  96 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset   3 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset   0   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 199   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 199 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset  98   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset  98 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 198   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 198 returns: $# local $: isaac 
rewrite: ruleset   0 returns: $# local $: isaac

Auch dieser Test war erfolgreich. Nun testen wir Mails an unsere UUCP-Adresse vstout!isaac.

# /usr/sbin/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> 3,0 vstout!isaac 
rewrite: ruleset   3   input: vstout ! isaac 
rewrite: ruleset  96   input: isaac < @ vstout . UUCP > 
rewrite: ruleset  96 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset   3 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset   0   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 199   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 199 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset  98   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset  98 returns: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 198   input: isaac < @ vstout . vbrew . com . > 
rewrite: ruleset 198 returns: $# local $: isaac 
rewrite: ruleset   0 returns: $# local $: isaac

Dieser Test hat auch geklappt. Diese Tests bestätigen, daß wir Mails für die lokalen Benutzer unserer Maschine korrekt zustellen können, egal wie die Adressen formatiert sind. Wenn Sie für Ihre Maschinen irgendwelche Aliase definiert haben, wie z.B. virtuelle Hosts, sollten Sie diese Tests für alle alternativen Namen wiederholen, unter denen der Host bekannt ist, um sicherzustellen, daß sie auch korrekt funktionieren.

Im nächsten Test überprüfen wir, ob Mails, die an andere Hosts in der Domain vbrew.com adressiert sind, vom SMTP-Mailer direkt an diese Hosts zugestellt werden:

# /usr/sbin/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> 3,0 isaac@vale.vbrew.com 
rewrite: ruleset   3   input: isaac @ vale . vbrew . com 
rewrite: ruleset  96   input: isaac < @ vale . vbrew . com > 
rewrite: ruleset  96 returns: isaac < @ vale . vbrew . com . > 
rewrite: ruleset   3 returns: isaac < @ vale . vbrew . com . > 
rewrite: ruleset   0   input: isaac < @ vale . vbrew . com . > 
rewrite: ruleset 199   input: isaac < @ vale . vbrew . com . > 
rewrite: ruleset 199 returns: isaac < @ vale . vbrew . com . > 
rewrite: ruleset  98   input: isaac < @ vale . vbrew . com . > 
rewrite: ruleset  98 returns: isaac < @ vale . vbrew . com . > 
rewrite: ruleset 198   input: isaac < @ vale . vbrew . com . > 
rewrite: ruleset 198 returns: $# smtp $@ vale . vbrew . com . / 
    $: isaac < @ vale . vbrew . com . > 
rewrite: ruleset   0 returns: $# smtp $@ vale . vbrew . com . / 
    $: isaac < @ vale . vbrew . com . >

Bei diesem Test sehen wir, daß die Nachricht an den SMTP-Mailer gerichtet wird, um sie direkt an den Host vale.vbrew.com weiterzuleiten und an den Benutzer isaac zuzustellen. Dieser Test bestätigt uns, daß unsere LOCAL_NET_CONFIG-Definition ordnungsgemäß funktioniert. Damit dieser Test überhaupt erfolgreich verläuft, muß der Name des Zielhosts korrekt aufgelöst werden können; es ist daher ein Eintrag entweder in unserer /etc/hosts-Datei oder in unserem lokalen DNS vonnöten. Was passiert, wenn der Hostname nicht aufgelöst werden kann, sehen wir, wenn wir absichtlich einen unbekannten Hostnamen angeben:

# /usr/sbin/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> 3,0 isaac@vXXXX.vbrew.com 
rewrite: ruleset   3   input: isaac @ vXXXX . vbrew . com 
rewrite: ruleset  96   input: isaac < @ vXXXX . vbrew . com > vXXXX.vbrew.com: Name server timeout 
rewrite: ruleset  96 returns: isaac < @ vXXXX . vbrew . com > 
rewrite: ruleset   3 returns: isaac < @ vXXXX . vbrew . com > 
== Ruleset 3,0 (3) status 75 o
rewrite: ruleset   0   input: isaac < @ vXXXX . vbrew . com > 
rewrite: ruleset 199   input: isaac < @ vXXXX . vbrew . com > 
rewrite: ruleset 199 returns: isaac < @ vXXXX . vbrew . com > 
rewrite: ruleset  98   input: isaac < @ vXXXX . vbrew . com > 
rewrite: ruleset  98 returns: isaac < @ vXXXX . vbrew . com > 
rewrite: ruleset 198   input: isaac < @ vXXXX . vbrew . com > 
rewrite: ruleset  95   input: < uucp-new : moria > isaac </ 
    @ vXXXX . vbrew . com > 
rewrite: ruleset  95 returns: $# uucp-new $@ moria $: isaac </ 
    @ vXXXX . vbrew . com > 
rewrite: ruleset 198 returns: $# uucp-new $@ moria $: isaac </ 
    @ vXXXX . vbrew . com > 
rewrite: ruleset   0 returns: $# uucp-new $@ moria $: isaac </ 
    @ vXXXX . vbrew . com >

Dieses Ergebnis sieht nun ganz anders aus. Erstens liefert Regelsatz 3 eine Fehlermeldung, daß der Hostname nicht aufgelöst werden konnte. Zweitens greifen wir für solche Fälle auf eine andere wichtige Einrichtung unserer Konfiguration zurück, nämlich den Smart Host. Dieser kümmert sich um jede Mail, die auf andere Weise nicht zugestellt werden kann. Der Hostname, den wir in diesem Test spezifiziert haben, kann nicht aufgelöst werden, und die Regelsätze entscheiden sich daher, die unzustellbare Mail über den uucp-new-Mailer an unseren Smart Host moria in die Schuhe zu schieben. Unser Smart Host könnte ja bessere Verbindungen haben und weiß schon, was er mit der Adresse anfangen soll.

Unser letzter Test stellt nun sicher, daß jede Mail, die an einen Host außerhalb unserer Domain adressiert ist, bei unserem Smart Host abgeliefert wird. Das Ergebnis sollte in etwa dem vorigen Beispiel entsprechen:

# /usr/sbin/sendmail -bt 
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) 
Enter <ruleset> <address> 
> 3,0 isaac@linux.org.au 
rewrite: ruleset   3   input: isaac @ linux . org . au 
rewrite: ruleset  96   input: isaac < @ linux . org . au > 
rewrite: ruleset  96 returns: isaac < @ linux . org . au . > 
rewrite: ruleset   3 returns: isaac < @ linux . org . au . > 
rewrite: ruleset   0   input: isaac < @ linux . org . au . > 
rewrite: ruleset 199   input: isaac < @ linux . org . au . > 
rewrite: ruleset 199 returns: isaac < @ linux . org . au . > 
rewrite: ruleset  98   input: isaac < @ linux . org . au . > 
rewrite: ruleset  98 returns: isaac < @ linux . org . au . > 
rewrite: ruleset 198   input: isaac < @ linux . org . au . > 
rewrite: ruleset  95   input: < uucp-new : moria > isaac </ 
    @ linux . org . au . > 
rewrite: ruleset  95 returns: $# uucp-new $@ moria $: isaac </ 
    @ linux . org . au . > 
rewrite: ruleset 198 returns: $# uucp-new $@ moria $: isaac </ 
    @ linux . org . au . > 
rewrite: ruleset   0 returns: $# uucp-new $@ moria $: isaac </ 
    @ linux . org . au . >

Das Ergebnis dieses Tests zeigt, daß der Hostname resolviert werden konnte und die Nachricht trotzdem noch über unseren Smart Host läuft. Das beweist, daß unsere LOCAL_NET_CONFIG-Definition richtig funktioniert und beide Fälle korrekt behandelt. Unser gesamter Test ist also ein Erfolg, und wir können voller Zuversicht davon ausgehen, daß unsere Konfiguration korrekt ist, und sie daher benutzen.





vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag