\input texinfo @c -*-texinfo-*- @c %**start of header @c %W %E% (c) 1993-1997 Gert Doering und Klaus Weidner @setfilename mgetty.info @settitle mgetty + sendfax @c %**end of header @finalout @ifinfo Dies ist die Online-Dokumentation von Softwarepaket mgetty + sendfax. Copyright @copyright{} 1993-1997 Gert Doering @end ifinfo @titlepage @sp 6 @center @titlefont{mgetty+sendfax} @sp 4 @center Version 1.1.0 @sp 1 @center Januar 1997 @sp 5 @center Gert Doering @center gert@@greenie.muc.de @center gert@@space.net @vskip 0pt plus 1 filll @c Copyright @copyright{} 1993-1997 Gert Doering @end titlepage @ifinfo @node Top, Intro, (dir), (dir) @top mgetty + sendfax Dies ist die Online-Dokumetation fuer das Softwarepaket mgetty+sendfax, geschrieben von Gert Doering. @menu * Intro:: Einfuehrung * mgetty:: Benutzung von @code{mgetty} * Fax:: Fax-Operationen * voice:: Voice-Operationen (Anrufbeantworter) * Problems:: Bekannte Probleme und Loesungen (TROUBLESHOOTING) * Thanks:: Danksagung @end menu @end ifinfo @c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @node Intro, mgetty, Top, Top @chapter Einfuehrung @code{mgetty} erlaubt die optimale Ausnutzung eines Modems oder Fax-Modems in einer UNIX-Umgebung. @code{mgetty} bearbeitet ankommende Anrufe, ohne dabei nach Aussen gehende Rufe zu stoeren. Falls das Modem Faxstandard Class-2 oder 2.0 beherrscht, kann @code{mgetty} Faxe empfangen. @code{sendfax} ist ein unabhaengiges Backend-Programm zum Faxe verschicken. Dieses Manual erklaert, wie das Programm auf verschiedenen Betriebssystemen und mit verschiedenen Modemtypen zu installieren, zu konfigurieren und zu benutzen ist. @menu * Copying:: Copyright und (Nicht-)Haftung * Overview:: Features von @code{mgetty} und @code{sendfax} * Supported:: Unterstuetzte Systeme und Modems * Install:: Konfiguration und Installation * intro-runtime:: Laufzeit-Konfiguration: Ein Ueberblick @end menu @node Copying, Overview, Intro, Intro @section Copyright und (Nicht-)Haftung @cartouche @strong{WARNUNG:} Dieses Programm ist immernoch BETA-Software. Verwendung ist auf eigenes Risiko, es existieren @strong{keinerlei} Haftungsansprueche. Sollte das Programm alle Daten auf der Festplatte loeschen, Hardware zerstoeren oder Ihren Hund umbringen, ist das einzig und allein Ihr Risiko. Jedenfalls funktioniert es bei mir und einer ganzen Reihe anderer Menschen. @end cartouche Das @code{mgetty+sendfax} Paket ist Copyright @copyright{} 1993-1997 Gert Doering. Es ist erlaubt @code{mgetty+sendfax} frei zu verbreiten, zu modifizieren, in anderen Paketen zu inegrieren, @dots{}, solange aus dem Verkauf von @code{mgetty} kein direkter Gewinn gemacht wird (siehe unten), der komplette @code{mgetty} Source-Code eingefuegt wird und mein Name nicht entfernt wird. Falls eine modifizierte Version vertrieben werden soll, oder @code{mgetty}-Code in anderen Projekten verwendet werden sollte, ist er klar als solcher zu markieren (``@dots{} @emph{derived} from @code{mgetty+sendfax} by Gert Doering'')! Sollte das Programm zu Ihrer Zufriedenheit funktionieren und Sie moechten meine Bemuehungen honorieren, geben Sie so viel, wie Sie fuer richtig halten@dots{} Was ich mit ``solange aus dem Verkauf von @code{mgetty} kein direkter Gewinn gemacht wird'' meine, ist: es ist voellig in Ordnung, wenn Sie fuer @code{mgetty}-Support bezahlt werden, oder wenn Sie @code{mgetty} in Verbindung mit anderen Tools zusammen auf einer CD-ROM oder was auch immer verkaufen, aber wenn Sie @code{mgetty} im Bundle mit einem faxmodem anbieten als ``UNIX FAX Packet'' oder ``...mit UNIX Software!'', oder @code{mgetty} mit minimalen Veraenderungen fuer Geld verkaufen, will ich beteiligt werden. Im Zweifelsfalle fragen Sie einfach bei mir nach. Falls Sie die Bedingungen dieser Lizenz aus irgendwelchen Gruenden nicht akzeptieren koennen, kontaktieren sie mich und wir koennen versuchen einen Kompromiss auszuarbeiten. Diese Lizenz laeuft zwei Jahre nach dem Veroeffentlichungsdatum ab, jede veroeffentlichte Release von @code{mgetty+sendfax} faellt unter Public Domain, und jedermann ist absolut frei mit dem Code zu tun, was er will. @node Overview, Supported, Copying, Intro @section Features von @code{mgetty} und @code{sendfax} Dieses Paket beinhaltet zwei Hauptprogramme: @code{mgetty} und @code{sendfax}. Dies ist mit @code{sendfax} moeglich, falls Sie ein Class 2 Faxmodem besitzen: @itemize @bullet @item Faxe direkt versenden oder Shell-Scripte dazu verwenden @item ``Fax-Polling'', d.h. Sie koennen die Wetterstation anrufen und sich von dort ein Fax mit der aktuellen Wetterkarte abrufen. (Nicht alle Modemhersteller implementieren dieses Feature in Ihren Produkten!) @item eine ``Fax-Queue'' generieren, ausgehende Faxe werden automatisch gesendet, der Benutzer wird per EMail ueber den Erfolg informiert. @end itemize @code{mgetty} erlaubt eine einzelne Modemleitung fuer ausgehende und ankommende Anrufe zu nutzen. @itemize @bullet @item @code{mgetty} sind ``smart'' Modems bekannt, und stellt sicher, dass sich das Modem immer in einem definierten Zustand befindet (spezielle Initialisierung des Modems ist moeglich). @item Einkommende Anrufe werden manuell beantwortet (@code{RING} -> @code{ATA} -> @code{CONNECT}) statt auto-answer zu verwenden (@samp{ATS0=1}), dadurch wird das Modem nicht abheben, wenn die Maschine ausgeschalten oder kein Einloggen erlaubt ist. @item @code{mgetty} verwendet alle Features von uugetty: es reagiert auf @file{LCK.*} Files, die von @code{uucico} und anderen Programmen generiert wurden. Dadurch werden Dial-Outs waehrend jemand die Leitung nutzt unterbunden und es stoert es nicht, wenn andere Programme die Leitung nutzen. @item @code{mgetty} kann Faxe empfangen (wenn Ihr Modem Fax-Standard Class 2 oder 2.0 unterstuetzt). @item @code{mgetty} hat weitreichende logging / debugging Funktionen @item @code{mgetty} beherrscht ``fax poll sending'', d.h. Sie koennen Ihre Maschine als Fax-Poll-Server konfigurieren, um Faxe an ``Fax-Poll''-Anrufer zu senden. (Informationen ueber die Maschine verschicken, die aktuellen Wetterdaten, ...). Seien Sie gewarnt, nur sehr wenige Modems unterstuetzen diese Funktionen. @item @code{mgetty} kann selektiv ankommende Anrufe aufgrund ihrer CallerID ablehnen, falls das Modem dies unterstuetzt, und Sie den Service in anspruch nehmen. CallerID wird ebenfalls gelogged. @item @code{mgetty} bietet die Moeglichkeit ankommende Faxe abzulehnen, wenn nicht genug Plattenplatz zur Verfuegung steht. @end itemize Falls Sie Bugreports oder Vorschlaege haben, bitte wenden sie sich an gert@@greenie.muc.de (oder, wenn [und nur wenn!] das nichts nutzt an gert@@space.net). Ausserdem habe ich eine mgetty Mailingliste zur Diskussion von Problemen und Vorschlaegen gegruendet. Sie koennen sich subscriben, indem Sie eine Anfrage an mgetty-request@@muc.de (forwarded an Crynwr.com zur Verarbeitung) senden und Sie koennen Beitraege an die Liste schicken, indem Sie sie an mgetty@@muc.de senden. Bitte stellen Sie sicher, dass Ihre Emailadresse, die Sie mir angeben korrekt ist - ich bin es leid, dass alle Beitraege der Liste zu mir bouncen, nur weil eine falsche Adresse dabei war. Die Mailingliste wird derzeit bidirektional in die Newsgruppe de.alt.comm.mgetty gegated. Obwohl die Gruppe in der deutschsprachigen Hierarchie ist, ist die offizielle Sprache innerhalb der Gruppe Englisch. Beitraege auf Deutsch sollten ignoriert werden. Die Mailing liste wird auf einer WWW-Site archiviert: @file{http://eli.wariat.org/mgarc/index.html} (many thanks to Robert J. Brown, rj@@eli.wariat.org) @node Supported, Install, Overview, Intro @section Unterstuetzte Systeme und Modems Mgetty wurde bereits erfolgreich uf folgenden Systemen installiert und getestet: @display @display SCO Unix 3.2.1 (ODT 1.0) (gut getestet) SCO Unix 3.2.4 (ODT 2.0 + 3.0) (sehr gut getestet) SCO Open Server 5.0 (gut getestet) Linux (everything from 0.99pl1 up) (sehr gut getestet) ISC Unix 3.0 (getestet) SVR4 Unix (gut getestet) SVR4.2 Unix (benoetigt mehr Tests) AT&T 3B1 3.51m (gut getestet) HP-UX 8.x and 9.x (gut getestet) AIX 3.2.5 and 4.2 (gut getestet) SunOS 4 (gut getestet) Solaris 2.x (gut getestet) NetBSD / FreeBSD (gut getestet) @end display Es sollte moeglich sein mgetty auf jedem anderen UNIX mit @file{termio.h} or @file{termios.h} zum Laufen zu bringen. Um beste Ergebnisse zu erziehlen, empfehle ich die Verwendung der Library-Funktionen @code{select(S)} oder @code{poll(S)}, es existiert aber auch ein Workaround, falls auf dem System keine von Beiden existiert. (Warnung: unter Unix SVR3.1 oder frueher, @emph{kein poll() verwenden}, es wird nicht fuer tty-devices funkltionieren.) Bisher wurde es erfolgreich mit folgenden Modems (unvollstaendige Liste) im Fax-Mode verwendet: @display ZyXEL U1496 (verschiedene ROM releases) (sehr gut getestet, einige Probleme bestehen, abhaengig von der ROM release) MultiTech (verschiedene Modelle) (getestet, funktioniert sehr gut, sehr gute Fax-Implementierung) SupraFAX v32bis (getestet, funktioniert gut, kein Faxpolling verfuegbar) GVC FM144/+ (getestet, funktioniert gut, kein Faxpolling verfuegbnar) TKR DM-24VF+ (Deltafax) (getestet, funktioniert zufriedenstellend) Zoom V.FAST 24K/28K (getestet, funktioniert, einige Probleme mit fax/data Erkennung) @end display Es @emph{sollte} mit allen Class 2 Faxmodems funktionieren. Moeglicher Weise muss fuer alte Class-2 Modems das DC2-Zeichen, welches am Anfang einer Seite von @file{faxrec.c} gesendet wird, zu XON abgeaendert werden (sehr alte Versionen des Standards sind implementiert). @xref{Modems}. Im Data-Modus arbeitet es mit allen Hayes-kompatiblem Modems. @node Install, intro-runtime, Supported, Intro @section Konfiguration und Installation Das Kompilieren des Paketes sollte problemlos vor sich gehen. Copieren Sie file{policy.h-dist} nach @file{policy.h} und editieren Sie es, um einige lokale Policy-Optionen zu setzen, lesen Sie dazu die Kommentare im File. Danach editieren Sie das @file{Makefile} um Installatioons-Pfade, einige System-Einstellungen und einige systemabhaengige Libraries anzugeben (an den entsprechenden Stellen erklaert). Danach sollte ein @samp{make} die Programm erstellen und @samp{make install} sollte sie installieren. Falls Ihr Compiler die @code{#ident}-Zeilen, die ich fuer @file{SCCS} benoetige, nicht annehmen sollte, verwenden Sie bitte @code{make noident}, das wird auf diese Zeilen Ruecksicht nehmen. Sollten Sie beim Linken die Fehlermeldung ``unresolved symbols'' erhalten, muessen sie dem Paket mitteilen, ob Sie select(S) oder poll(S) System-Aufrufe benoetigen. Dies geschieht, indem Sie @code{-DUSE_SELECT} oder @code{-DUSE_POLL} Flags im @file{Makefile} setzen. (Falls Sie nicht wissen, was Ihr System verwendet, versuchen Sie beides, bis die Fehlermeldung verschwindet). Ruehrt die Fehlermeldung nicht von @code{select} oder @code{poll} her, lesen Sie bitte in den System-Man-Pages nach, welche Libraries Sie hinzulinken muessen und fuegen Sie passende @code{-l} Statements zu @code{LIBS} hinzu. Verfuegt Ihr System weder ueber den select(S)-, noch den poll(S)-Aufruf, kann mgetty nicht vollstaendig genutzt werden---diese Funktionen sind die einzige Moeglichkeit mgetty daran zu hindern einzelne Characters zu verschlucken, waehrend andere Prozesse versuchen nach Draussen zu waehlen. Sie koennen mgetty deswegen trotzdem benutzen, indem Sie @code{-DUSE_READ} im Makefile angeben, aber denken Sie daran: damit wird mgetty mindestens ein Zeichen der Antwort des Modems verschlucken, wenn ein anderes Programm versucht Rauszuwaehlen. Dies kann zu katastrophalen Fehlern fuehren, wenn z.B. der @samp{CONNECT} String kaputt ist. Aber meistens ist der Buchstabe, den @file{mgetty} verschluckt ein @code{cr} oder @code{nl} oder Teil eines vom Modem geechoten Kommandos. Sollten Sie irgendwelche Schwierigkeiten haben, mgetty und sendfax zu kompilieren (auf einem UNIX-aehnlichen System---Ich unterstuetze kein MS-DOS und Windows!), nehmen Sie Kontakt mit mir auf. @emph{Aber stellen Sie sicher, dass Sie vorher die Dokumentation gelesen haben!}. @node intro-runtime, , Install, Intro @section Laufzeit-Konfiguration: Ueberblick Wenn @code{mgetty} oder @code{sendfax} "so wie sie sind" gestartet werden, verwenden sie ihre Defaults aus @file{policy.h}. Existieren die Konfigurationsfiles @file{mgetty.config} (@xref{runtime-mgetty}) und @file{sendfax.config} (@xref{runtime-sendfax}) (und sind sie lesbar), nehmen beide Programme ihre Laufzeitkonfigurationen von dort. Dort nicht angegebene Einstellungen werden dann aus der voreingestellten Standard-Konfiguratin geholt. Kommandozeilen-Angaben ueberschreiben in jedem Fall diese Einstellungen. Die Konfigurationsfiles befinden sich normaler Weise in @file{/usr/local/etc/mgetty+sendfax/}. Wenn Sie Commando-Zeilen-Argumente verwenden (siehe dazu auch die mgetty(1) und sendfax(8) man Pages), werden beide, die compiled-in und Konfig-File-Defaults ueberschrieben. @c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @node mgetty, Fax, Intro, Top @chapter Benutzung von @code{mgetty} Sie koennen @code{mgetty} nicht einfach aus einem Shell-Script (wie @file{/etc/rc}) oder interaktiv aufrufen, da sonst kein logging moeglich ist, ausser mgetty wird direkt vom @code{init}-Prozess aus aufgerufen. Der naechste Abschnitt erklaert, wie man das macht. @menu * How:: Wie @code{mgetty} funktioniert * Inittab:: Der @file{/etc/inittab}-Eintrag * Devices:: Das richtige Device auswaehlen * Logs:: Logfiles * Deny:: Verweigern von Logins (und Scheduling) * Direct:: Direct serial lines * Interaction:: Zusammenarbeit zwischen @code{mgetty} und anderen Programmen * Caller-ID:: Caller-ID zum selektiven Ablehnen oder Annehmen von Anrufen verwenden * runtime-mgetty:: Laufzeit-Konfiguration: @file{mgetty.config} @end menu @node How, Inittab, mgetty, mgetty @section Wie @code{mgetty} funktioniert Um Ihnen naeherzubringen, wie mgetty funktioniert, ist hier ein Beispiel mit was unter verschiedenen Umstaenden passiert, wenn man mgetty verwendet um ein Modem an einer Seriellen Leitung zu kontrollieren, z.B. file{/dev/tty2a}. Wenn der Computer gebootet ist, startet das Betriebssystem den @code{init}-Prozess, der dafuer zustaendig ist sicherzustellen, dass gettys am fuer sie vorgesehenen I/O-Device laufen, z.B. virtuelle Terminals, Sereille Leitungen und Modems. @code{init} liest sein Konfigurations-File, @file{/etc/inittab} (unter System V), welches mitteilt, dass die Leitung @file{/dev/tty2a} von mgetty kontrolliert werden soll. Dann macht das System einen Eintrag in @file{/etc/utmp} (@code{login} benoetigt diesen, deshalb kann man nicht einloggen, wenn man versucht mgetty per Hand zu starten), und forkt einen neuen @code{mgetty}-Prozess, indem es die angegebene Kommandozeile ausfuehrt. Wenn mgetty gestartet ist, ueberprueft es als aller erstes, ob ein gueltiges Lockfile von einem anderen Prozess existiert. Wenn dem so ist, bedeutet das, dass der Port gerade benutzt wird und mgetty wartet so lange, bis das Lockfile verschwunden ist. Ungueltige Lockfiles von z.B. nicht existierenen Prozessen (``state'' locks), werden ignoriert. Wenn der Port einmal frei ist, erstellt mgetty sein eigenes Lockfile, initialisiert das Modem und loescht sein Lockfile wieder. Dann wartet es, bis etwas auf dem Port passiert. Beachten Sie, dass mgetty keinerlei Zeichen @emph{read}, es ueberprueft lediglich, ob welche vorhanedn waeren, indem es @code{poll()} oder @code{select()} verwendet. Es gibt zeri Moeglichkeiten, dass einmal Zeichen ankommen. entweder hat ein anderes Programm (z.B. @code{uucico}) angefangen nach aussen zu waehlen oder das Modem hat ein @samp{RING} geschickt. Im ersten Fall sollte mgetty den Port unbeachtet lassen. Dies ist einfach @emph{wenn} das nach Aussen waehlende Programm ein gueltiges Lockfile angelegt hat: mgetty wird es finden, darauf warten, dass es wieder verschwindet, und sich beenden (was @code{init} dazu veranlassen wird einen neuen code{mgetty}-Prozess zu starten, der dann auf den naechsten Anruf warten wird). Im zweiten Fall existiert kein Lockfile, mgetty schliesst daraus, dass das Telephone klingelt, erstellt ein Lockfile und liest die ankommenden Zeichen. Wenn es ein @samp{RING} findet, hebt es das Telephone ab, indem es ein @samp{ATA} sendet und wartet auf die @samp{CONNECT}-Meldung. Ist der Anrufer eine Faxmaschine, speichert es das Fax im directory @file{FAX_SPOOL_IN} (normaler Weise @file{/usr/spool/fax/incoming}) und beendet sich. Handelt es sich um ein Modem, sendet es @file{/etc/issue} und gibt einen login-Prompt aus. Hat es einen Login-Strin erhalten, ruft es @code{/bin/login} auf und laesst es Dinge von dort bearbeiten. @code{login} wird das Passwort lesen und dann des Users login Shell starten, @code{uucico}, eine Dialup SLIP Verbindung oder was auch immer, aber mgetty kuemmert sich nicht darum. Das Lockfile bleibt, damit kein anderes Programm versucht auf das Modem zuzugreifen, waehrend noch jemand eingeloggt ist. (Wenn die @file{login.config}-Konfiguration verwendet wird, kann mgetty auch andere Login-Programme als @code{/bin/login} aufrufen. Siehe unten fuer naehere Detaills). Wenn mgetty, aus welchen Gruenden auch immer, terminiert, wird @code{init} den Port wieder initialisieren (deshalb wartet mgetty darauf, dass Lockfiles weggehen anstatt sich sofort zu beenden) und startet dann einen neuen @code{mgetty}-Prozess, der uebriggebliebene Lockfiles vom letzten login entfernt. Die Lock-File-Handhabung ist trickreich, aber sehr interessant. Es ist zwingende Voraussetzung, dass @emph{alle} Programme, die das Modem verwenden, sich an ein und das Selbe Lockong-Protokoll halten, andernfalls merrkt ein Programm nicht, dass das Modem benutzt wird und versucht trotzdem rauszuwaehlen. Ein typisches Lockfile ist ein File namens @file{/usr/spool/uucp/LCK..ttyxx}, welches die Prozess-ID (PID) des Prozesses, der das modem gerade verwendet, enthaelt. Andere Prozesse koennen es lesen und bekanntgeben, ob das Lockfile zu einem existierenden Prozess gehoert, oder ob es ``stale'' ist und geloescht werden kann. Dies funktioniert offensichtlich nicht, wenn die Prozesse an verschiedenen Stellen nach ihren Lockfiles suchen oder wenn eines von ihnen seine PID in ASCII hineinschreibt und ein anderes es als Binaerzahl zu lesen (aehrend mgetty und sendfax sich nicht daran stoeren, ob Lockfiles in ASCII oder Binaercode geschrieben sind, stoert es andere Programme durchaus! mgetty kann manchmal dieses Problem erkennen und logt dann eine Warnung). @node Inittab, Devices, How, mgetty @section Der @file{/etc/inittab}-Eintrag Ein typischer @file{inittab}-Eintrag fuer @code{mgetty} sieht wie folgt aus (auf System-V-artigen Systemen): @example :rlevel::/usr/local/sbin/mgetty [options] @end example @samp{tt} ist eine Kurzform des @samp{device}-Namens, der von @code{init} und @code{who} fuer interne Zwecke verwendet wird. Normaler Weise ist dies etwas der Art @samp{S0} oder @samp{2A} oder so. @samp{rlevel} gibt den Runlevel an mit dem das Kommando im vierten Feld laeuft, das kann zum Beispiel @samp{23} oder @samp{56} oder so sein. Lesen Sie dazu @code{man init} und die vorhandene @file{/etc/inittab} auf Ihrem System durch! Das naechste Feld teilt @code{init} mit, ob der Eintrag aktiv (@code{respawn}) ist, oder nicht (@code{off}) und das vierte Feld gibt den kompletten Pfad des zu startenden Programmes an. Die folgenden Optionen sind verfuegbar fuer @code{mgetty}: @samp{-x @var{}} setzt das Debugging-Level. Dies ist sehr wichtig um Probleme zu diagnostizieren, da mit hoeheren Leveln @code{mgetty} sehr detaillierte Informationen ueber seinen internen Ablauf in sein Logfile schreibt. @samp{-s @var{}} setzt die Port-Geschwindigkeit. Ist nichts angegeben, werden die Defaultwerte aus @file{policy.h} (definiert @code{DEFAULT_PORTSPEED}) verwendet. @samp{-k @var{}} setzt die minimale Menge benoetigter KiloBytes im incoming Fax Spool directory. Ist dort nicht mehr so viel Platz wird die Verrbindung beendet. Voreingestellt ist 1 Megabyte. @samp{-m @var{'expect send ...'}} setzt die Modem-Initialisierungs-Sequenze. @samp{-r} fuer direct lines (keinerlei Kommunikation mit dem modem wird betireben) @samp{-p @var{}} setzt den Login Prompt (verschiedene Escape-Sequenzen sind erlaubt) @samp{-n @var{}} setzt die Anzahl der @code{RING}s, die gesendet werden muessen, bevor @code{ATA} gesendet wird um den Anruf entgegen zu nehmen. Voreinstellung ist ein @code{RING}. @samp{-R @var{}} bringt mgetty dazu ``ring-back'' oder ``ring-twice'' Modus zu aktivieren. Dies bedeutet, dass mgetty einen Anruf nicht sofort annimt, aber der Anrufer muss nach dem ersten Klingeln wieder auflegen und innerhalb der naechsten @var{} Sekunden zurueckrufen. @samp{-i @file{/etc/issue}} gibt das File an, dessen Inhalt vor dem Login-Prompt ausgegeben werden soll. @samp{-S @file{}} gibt an, welche(s) Dokument(e) an pollende Faxmaschinen zu senden sind (volle Pfadangabe noetig), @file{} muss im G3-Format vorliegen (fuer @code{sendfax}), oder als Textfile, in dem G3 Fax-Files aufgelistet sind (eines pro Zeile). Ein beispiel-Eintrag in @file{/etc/inittab} koennte wie folgt aussehen: @example F1a:23:respawn:/usr/local/sbin/mgetty -x 3 tty2a @end example Fuer detailliertere Erklaerungen der Optionen lesen Sie bitte in der @file{mgetty(1)} man page nach. @node Devices, Logs, Inittab, mgetty @section Das richtige Device waehlen Manche Betriebssysteme bieten fuer jede serielle Leitung zwei gesonderte Devices an, eines davon ist speziell fuer getties gedacht. Dies ist @emph{KEINE} gute Idee, weil das nicht mit @code{mgetty} funktioniert. Es ist fuer Modems im Auto-Answer-Modus gedacht. @code{mgetty} hebt das Telephone perr Hand ab, was nur dann funktioniert, wenn man @emph{das selbe} Device wie fuer Dialouts verwendet. (Einige Leute legen einen Symlink @file{/dev/modem dann dafuer an, aber dann muss man konsistent bleiben und das fuer @emph{alle} comm-Programme tun - ansonsten bekommt man Probleme mit den Lock-Files). Hier sind einige Beispiele fuer verschiedene Systeme: @itemize @bullet @item SV Unix Systeme, die den FAS-Treiber verwenden: Verwenden Sie @code{ttyF01} etc., (minor number 80+(port number). Verwenden Sie emph{nicht}@code{ttyFMxxx}---mgetty wird das Device trotzdem oeffnen, aber dann wird ein Oeffnen des ``normalen'' Ports (ohne Carrier detect) blockieren. @item SCO Unix System ,mit dem Hauseigenen seriellen Treiber: Verwenden Sie den Modem-Controll Port (@code{tty2A}), @emph{nicht} @code{tty2a}, weil Hardware Flow Control und Carrier Detection nicht auf ``lowercase''tty Devices funktionieren. Das Gleiche gilt fuer ``smart'' Serielle Boards, wie Specialix, Digiboard, @dots{}, da diese das Verhalten des SCO-Treibers immitieren. @item Linux: Verwenden Sie @file{/dev/ttyS*}, @emph{nicht} @file{/dev/cua*}. @xref{Linux} @item SunOS, FreeBSD, NetBSD: Verwenden Sie @file{/dev/cua*}, nicht @file{/dev/ttyS*}. Fragen Sie mich nicht warum es so ist, anders herum finktioniert es einfach nicht. (Auf SunOS oder Solaris koennen Sie einige Details dazu in der @code{man zs} Manpage finden) @end itemize @node Logs, Deny, Devices, mgetty @section Logfiles @code{mgetty} schreibt normaler Weise alle Aktionen ein Logfile: @file{LOG_PATH.@var{}} (LOG_PATH ist definiert in @file{policy.h}), z.B. @file{/var/log/mgetty.ttyxx}, so koennen Sie einfach sehen, was in Ihrem System passiert. (Wenn ein fatal error passiert, wird die Fehlermeldung zusatzlich auf die Konsole geschrieben und wenn dies nicht moglich ist, an @samp{ADMIN} gemailt). Der Name des Logfiles can in @file{policy.h} geaendert werden. Wenn @code{mgetty} mit @code{-DSYSLOG} kompiliert wurde, gehen auditing und error Logmeldungen auch nach @code{syslog} (falls Ihr System dies unterstuetzt). @node Deny, Direct, Logs, mgetty @section Verweigern von Logins (und Scheduling) .