|
Arbeitskreis "sendmail hacking"
Leitung: Bernard Steiner vom Fachbereich Informatik der Uni Dortmund Bevor ich auf die Ergebnisse des Arbeitskreises komme, moechte ich auf ein paar ganz grundlegende Fragen eingehen, und damit etwas in die nicht unkomplexe Materie der Mailuebertragung auf heterogenen Netzwerken einfuehren. "Sendmail" - kann man das essen ??? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Im allgemeinen nicht. Sendmail ist ein Programm, dessen Aufgaben klar werden, wenn man einen Ueberblick hat, wie die Mail auf UNIX-Systemen von Editor ins Netzwerk gelangt. Grundsaetzlich gibt es drei Stationen: Einen UA (User Agent), einen MTA (Message Transfer Agent) und einen Mailer. Der UA kann global galaktisch als Benutzerschnittstelle zum Mail-System bezeichnet werden. Er ermoeglicht das einfache Lesen und Verschicken der Mail, ohne dasz man die Syntax des MTA kennt (auf den ich gleich kommen werde) und ohne dasz man andere Unix-Befehle kennen musz. Es gibt mittlerweile sehr komfortable UA, die z.B. unter X-Windows laufen und das Mail-Handling fuer den Anwender sehr einfach gestalten. Ein weiterer, recht komfortabler UA waere z.B. "elm". Der MTA ist so eine Art Postamt, das die Adressen interpretiert und auf ein bestimmtes internes Format bringt. "sendmail" ist z.B. ein MTA. Wie ein richtiges Postamt hat "sendmail" noch einige andere Aufgaben, wie z.B. das Mail rerouting und die Message delivery und noch ein paar andere nette Kleinigkeiten. Zu guter Letzt bleibt noch der (oder die) Mailer uebrig, die den eigentlichen Transport der Mail ueber das Netzwerk uebernehmen. Es kann verschiedene Mailer auf einem System geben, da je nach Adressat eine bestimmte Uebertragungsart gewaehlt werden musz (z.B. TCP oder NCP). Fuer jede Uebertragungsmethode existiert ein eigener Mailer. Als User interessiert einen der Mailer relativ wenig, da dessen Auswahl unser elektronisches Postamt "sendmail" erledigt. Ist "sendmail" Lebensnotwendig oder nur ganz angenehm ??? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "sendmail" ist eingentlich beides. In der Einleitung sprach ich von heterogenen Netzwerken, d.h. es sind viele verschiedenartige Netzwerke koexistent, man denke z.B. an ARPAnet und UUCP. So lange man sich Mail nur in einem Netzwerk bewegt, ist alles noch relativ einfach: Das Mailsystem kann einfache HOST/USER- NAME Adressen verwenden, um die Mail zu verschicken. Da die Verwaltungsformen unterschiedlich sein koennen, lassen wir sie der Einfachheit halber weg. Die Adressen haben eine bestimmte Syntax und die Semantik bleibt auch gleich. Schoen. Die Probleme fangen dann an, wenn die Mail zwischen zwei voellig ver- schiedenen Netwerken ausgetauscht werden soll. Dann kann es vorkommen, dasz so gut wie gar nichts mehr passt. Wenn man sich dieses Problems als Otto-Normal- Mailschreiber widmen muesste, wuerde man hoechstwarscheinlich mehr Zeit damit verbringen, das richtige Adressformat zu finden, als die Mail zu schreiben. An dieser Stelle setzt "sendmail" an und setzt die verschiedenen Adressformate der einzelnen Netzwerke in ein allgemeinverstaendliches um. Keine leichte Auf- gabe, wie man sich vorstellen kann, da es recht unterschiedliche gibt. In soweit ist "sendmail" lebensnotwendig. Aber "sendmail" macht dem Anwender auch das Leben etwas leichter. An dieser Stelle waere das bereits oben erwaehnte Mail-rerouting zu nennen. "sendmail" vereint drei verschiedne Arten des Reroutings in sich: Aliasing, Forwarding und Inclusion. Unter Aliasing ver- steht man das Umsetzen von Namen nach Adressen nach einer Liste. Forwarding ist das internetzwerkweite Umleiten von Mail. Ein Beispiel soll den praktischen Nutzen kurz erlaeutern: Angenommen ein Stuttgarter User ist auf einem Kon- gress in Berlin und ihm steht dort ein lokaler Host zur Verfuegung. Jetzt kann er seine Mail automatisch von Stuttgart nach Berlin umleiten lassen, auch wenn der Berliner Host nicht im selben Netzwerk eingebunden ist, wie sein Stutt- garter Host. Inclusion ist das weiterleiten von Mail an Adressen, die in einem bestimmten File stehen. Man kann so relativ einfach eingehende Mail an mehrere Leute (z.B. an ein ganzes Projekt-Team) verteilen. "sendmail" hat zudem auch noch andere, im parktischen Gebrauch recht nuetzliche Features, wie z.B. die Rueckleitung von Mail an den Absender im Falle eines Fehlers. "sendmail" hilft auch, die Kosten des Mailverkehrs drastisch zu senken. Man stelle sich vor, es wird wegen jeder Mail, die von irgendeinem User auf einem Host geschrieben wird, extra eine Telefonverbindung aufgebaut. "sendmail" unterstuetzt sogenanntes "Batching", worunter man sich ein "ansammeln" der Mail vorstellen kann, welche dann auf einen Rutsch versendet wird. Toll, und wie funktioniert "sendmail" eigentlich ??? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nun, die Sache ist nicht trivial. Nach den Design-Zielsetzungen von "sendmail" soll das Programm nur in wenigen Faellen (z.B. wenn der Prozessortyp oder das Betriebssystem gewechselt werden soll) neu kompilliert werden muessen. Um dennoch ein hohes Masz an Flexibilitaet zu erreichen, greift "sendmail" beim Start auf ein Konfigurationsfile zu, das im Klartext auf der Platte steht. Wenn sich eine Aenderung (z.B. im Mail-Routing) ergeben sollte, kann die entsprechende Information dort geaendert werden. In diesem File (im Folgenden CF-File genannt) sind auch die Informationen abgelegt, die "sendmail" zur Adressumsetzung braucht. Dazu sind in diesem File um die 30 Regelsaetzte (sog. rulesets) untergebracht, mit denen das Routing festgelegt wird, welcher Mailer verwendet werden musz, und wie die Adressumsetzung nach de Breukelen Konvention geschieht und vieles andere mehr. Hier beginnen die Probleme fuer viele Mail-Administratoren. Die Rulesets sind recht kryptisch und nicht einfach zu verstehen. Wenn nun etwas geaendert werden soll, steht man vor recht groszen Problemen, da man kaum auf Anhieb weisz, was geaendert werden musz, um etwas bestimmtes zu erreichen. Ich moechte kurz mal so ein Ruleset als Beispiel anfuehren, wie es in real existierenden CF-File vorkommt, wobei ich aber an- merken will, dasz es sich um ein relativ kleines Exemplar handelt: ##################################################################### # Ruleset 21 -- recipient re-writing for smartuucp and etherm # ##################################################################### S21 # compress and Breukelen rule R$+ $:$>22$>29$1 Breukelen rule R$+@$- $@$1@$2.$U add .uucp R$+ $@$1 Uebrigens kann so ein Ruleset auch andere Rulesets aufrufen (gibt manchmal schoene Schleifen :-) ) und Makros koennen auch definiert werden. Auszer den rulesets sind im CF-File auch noch das Mail-Header-Format de- finiert und noch so ein paar Kleinigkeiten. Ich hoffe, ich konnte die Problematik der "sendmail"-Konfiguration etwas rueberbringen. Und was war jetzt in diesem Arbeitskreis los ??? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nun, wie schon gesagt, es sollte hauptsaechlich um "sendmail" gehen. Leider war ich nicht von Anfang an dabei, da meine persoenliche Zeitplanung aufgrund einer ungeplanten Verlaengerung der Ruhephase zum Timing der Workshop-Leute divergent war, kurz: Ich hatte verpennt. Aber ich glaube trotzdem einen Ueberblick geben zu koennen, in was fuer einem Rahmen sich das ganze bewegt hat. Viele Arbeitskreisteilnehmer hatten weniger mit "sendmail", als vielmehr mit der Adressierung selber groeszere Probleme. Die Vielfalt der Adressierungs- moeglichkeiten in den verschiedenen Netzen hat trotz einer kurzen Einfuehrung am Vortag groeszere Verwirrung gestiftet. Vor allem mit der relativ neuen Domain-Adressierung [siehe Artikel ueber IP-Dienste von PI in dieser Ausgabe] standen nicht wenige auf Kriegsfusz, so dasz erst auf diesem Gebiet die Klar- heiten ausgeraeumt werden muszten. Die zweite groeszere Gruppe hoffte, in diesem Arbeitskreis die Erleuchtung in punkto CF-File und dessen Rulesets zu erlangen. Allerdings war es in der kurzen Zeit nicht moeglich, alle Moeglichkeiten und Meriten des CF-Files voll auszukosten. Aber dennoch wurde von Bernard Steiner ein recht guter Einblick in den Sinn der Rulesets gegeben und deren Wirkung an einem UNIX-Rechner, der zu Verfuegung stand, in der Praxis gezeigt. Richtige "Hacks" mit "sendmail" wurden nicht gezeigt, wohl aus mangel an Zeit. Aber das ist wohl das uebliche Problem bei solchen Arbeitskreisen: Der unter- schiedliche Level der Teilnehmer. Da dauert es einfach viel zu lange, bis alle auf etwa dem gleichen Niveau sind. Zwar wurden durchaus auch Hints fuer solche Leute gegeben, die schon etwas naeher mit der Materie "sendmail" vertraut waren, aber allgemein bewegte sich der Arbeitskreis mehr auf Einsteigerlevel. Wer mehr ueber "sendmail" und Mailsysteme unter UNIX wissen will, dem sei die einschlaegige Dokumentation empfohlen. term%complx@nadia.UUCP ------------------------------------------------------------------------------ |
[Contrib]
[Chalisti]
[08]
Arbeitskreis "sendmail hacking"