Frank Richter

Chemnitz Linux User Group


Holm Sieber

Chemnitzer Linux User Group


mgetty+sendfax unter Linux


Vortrag auf dem Chemnitzer Linux Stammtisch

9. Mai 1997

Kopieren des Vortrages

Dieses Dokument und alle im Text genannten Dateien können als gepackte Datei geladen werden:
Download (ca. 25 kByte)

Überblick

1 Allgemeines und Installation

1.1 Serielle Schnittstellen

1.2 Hinweise zu Modems

1.3 Informationen

1.4 Übersetzen

1.5 Verzeichnisse

1.6 Logdateien

1.7 Anpassungen

2 Einsatz von mgetty

2.1 Terminal-Server

2.2 PPP-Server

2.3 UUCP-Server

2.4 Faxen

2.5 Voice-Nutzung

2.6 Probleme

1 Allgemeines und Installation

Dieser Text basiert auf Erfahrungen, die bei der Installation und beim Test von mgetty in den Versionen 1.1.2 und 1.1.5 gesammelt worden. Die aktuelle Version von mgetty ist via FTP von
ftp.leo.org zu beziehen.

Für die Tests standen die Modems Highscreen 14400, Sportster Voice und Zyxel 1496 zur Verfügung.

1.1 Serielle Schnittstellen

Externe Modems werden über eine serielle Schnittstelle mit dem Computer verbunden, weshalb kurz auf diese eingegangen werden soll.

Unterschieden werden Schnittstellen ohne FIFO (UART 16450) und mit FIFO (UART 16550). Der Typ der Schnittstelle wird beim Start des Linux-Kernels ausgegeben. Die Ausgaben können mit dem Befehl dmesg angezeigt werden. Sie sehen ähnlich folgendem aus:

  tty00 at 0x03f8 (irq = 4) is a 16550A
  tty01 at 0x02f8 (irq = 3) is a 16550A
  
Schnittstellen ohne FIFO sollten mit maximal 19200 bps betrieben werden. Da die Geschwindigkeit auf der seriellen Schnittstelle höher sein sollte als zwischen den Modems, ist für schnelle Modems eine Schnittstelle mit FIFO erforderlich.

Um Geschwindigkeiten über 38400 bps zu nutzen, muss mit setserial /dev/ttyS1 speed die zu nutzende Datenrate eingestellt werden. Ist das Modem nicht an COM 2 angeschlossen, ist ttyS1 entsprechend zu ändern. Für speed ist dabei spd_normal, spd_hi oder spd_vhi entsprechend für 38400 bps, 57600 bps oder 115200 bps zu setzen. Anstatt 38400 bps wird dann die eingestellte Geschwindigkeit benutzt.

Unter /sbin/init.d/ findet sich meist ein Skript, welches dafür benutzt werden kann. Ein Beispielskript serial befindet sich hier.

1.2 Hinweise zu Modems

Eigene Tests wurden mit einem Modem Highscreen 14400 (baugleich GVC, Rockwell-Chipsatz), einem Sportster Voice von US Robotics (33600 bps) und einem Zyxel 1496 durchgeführt.

Von Gert Döring, dem Autor von mgetty stammen die folgenden Erfahrungen zu Modems:

Trotz der genannten Kritik ist eine Arbeit mit Rockwell basierten Modems und mit dem Sportster möglich. Allerdings ist im Detail immer mit Problemen zu rechnen.

1.3 Informationen

Die Diskussionen zu mgetty finden in den Netnews in der Gruppe de.alt.comm.mgetty statt.

Ein ausführlicher Bericht zu Modems findet sich in der Zeitschrift c't in der Ausgabe 2/97 ab Seite 152.

1.4 Übersetzen

Die Installation von mgetty gestaltet sich recht einfach:

1.5 Verzeichnisse

Die Installationsverzeichnisse werden im Makefile festgelegt. Im Folgenden werden die hier benutzten Verzeichnisse angegeben:

1.6 Logdateien

Die Namen und Pfade der Logdateien werden in policy.h eingestellt. Hier sind die folgenden Namen benutzt worden:

1.7 Anpassungen

Im Folgenden werden eine Reihe eigene Anpassungen und Konfigurationen vorgestellt:

2 Einsatz von mgetty

Im Folgenden werden die Nutzung von mgetty als Terminal-Server, zum Senden und Empfangen von Faxen und als Voice-Mailbox beschrieben.

2.1 Terminal-Server

Wenn mgetty auf eingehende Anrufe an das Modem reagieren soll, muss das Programm mgetty laufen. Dazu ist im File /etc/inittab folgende Zeile einzufügen:
  mo:23:respawn:/usr/sbin/mgetty -i /etc/issue.mgetty ttyS1
  
Standardmäßig können damit gleichzeitig Daten- und Fax-Anrufe entgegen genommen werden. mgetty, genauer gesagt das Modem, erkennt den Typ des Anrufs automatisch.

Wird das Modem jetzt angerufen, erscheint auf dem Terminal des Anrufers ein Login-Prompt. Soll das Login über Modem nur ausgewählten Personen ermöglicht werden, ist das in der Datei /usr/etc/mgetty+sendfax/login.config einzurichten.

2.2 PPP-Server

PPP-Logins können ermöglicht werden, indem spezielle Nutzer eingerichtet werden, die als Shell das Programm pppd eingetragen bekommen. mgetty bietet alternativ eine wesentlich elegantere Lösung.

Das Feature heißt AutoPPP. Dazu ist im Makefile die Option -DAUTO_PPP zu ergänzen und in der Datei /usr/etc/mgetty+sendfax/login.config die entsprechende Zeile zu aktivieren. Erfolgt nun ein Anruf mit PPP, wird automatisch auf dem Server der PPP-Dämon gestartet. Die Authorisierung erfolgt dann mittels PAP oder CHAP.

Als Beispiel ist hier eine Konfiguration für PAP zu sehen:

2.3 UUCP-Server

Für UUCP gilt das zu PPP gesagte. Zum einen können für die Nutzer von UUCP spezielle Logins angelegt werden, die anstatt einer Loginshell das Programm uucico starten. Eleganter ist es, dies direkt durch mgetty zu erledigen. In
/usr/etc/mgetty+sendfax/login.config kann eingestellt werden, dass bei einem Login-Namen, der mit einem großen U beginnt, automatisch uucico gestartet wird. Die Authorisation muss dann durch uucico erfolgen.

2.4 Faxen

Zur Konfiguration der Faxfunktionen siehe den Abschnitt 1.7

Um mittels mgetty Faxe zu empfangen, genügt in /etc/inittab ein Eintrag der Form:

  mo:23:respawn:/usr/sbin/mgetty ttyS1
  
mgetty, genauer gesagt das Modem, erkennt automatisch, ob es sich bei dem Anruf um eine Datenverbindung oder ein Fax handelt. Sollen nur Faxe empfangen werden, so geschieht dies mit folgendem Aufruf:
  mo:23:respawn:/usr/sbin/mgetty -F ttyS1
  
Für die Behandlung neu angekommener Faxe ist ein Programm
/usr/lib/mgetty+sendfax/new_fax verantwortlich. Der Name des Programms wird in policy.h eingestellt.

Zu den Quellen von mgetty gehören einige Beispiele für so ein Skript. Als Beispiel ist hier das Skript angegeben, welches unter samples/new_fax.all/ zu finden ist. Die Module wurden teilweise leicht geändert. Die Konfiguration des Skriptes erfolgt komfortabel im File faxlist und erlaubt in Abhängigkeit vom Sender verschiedene Reaktionen auf das Fax auszulösen.

Unabhängig vom Empfang von Faxen erfolgt ihr Versand. Durch den Aufruf von

  faxspool nr datei(en)
  
werden ein oder mehrere Faxe an Nummer nr in eine Queue unter /var/spool/fax/outgoing/ geschrieben. Die Dateien können dabei weitesgehend ein beliebiges Format besitzen, speziell ist der Versand von Text-, DVI- und PS-Dateien möglich. Durch den Aufruf von faxrunq als Nutzer root werden alle Faxe, die sich in der Queue befinden gesendet.

Der Versand kann automatisiert werden, wenn faxrunq via Cron gestartet wird. Der Eintrag

  7 2,3,4 * * 1-5  /usr/bin/faxrunq >> /var/log/faxrunq.log
  
im File /var/cron/tabs/root bewirkt zum Beispiel von Montag bis Freitag den Start des Programms um 02:07 Uhr, 03:07 Uhr und 04:07 Uhr.

Beim Versand von DVI-Dateien werden bessere Ergebnisse erzielt, wenn die Datei erst in ein Postscriptfile konvertiert wird, welches dann mit faxspool gesendet wird.

Eine Reihe nützlicher Zusatzprogramme finden sich unter den Quellen von mgetty im Verzeichnis frontends/ und auf dem FTP-Server ftp.leo.org:

Zum Versenden und Empfangen von Faxen gibt es unter UNIX mit Hylafax eine freie Alternative zu mgetty:

2.5 Voice-Nutzung

Sollen die Voice-Funktionen des Modems genutzt werden, ist anstatt von mgetty das Programm vgetty zu benutzen. In /etc/inittab ist dann eine Zeile ähnlich
  mo:23:respawn:/usr/sbin/vgetty ttyS1
  
einzutragen.

Die einfachste Nutzung ist die als Anrufbeantworter. Mit dem Programm vm kann über das Modem eine Nachricht aufgenommen werden:

  vm record -i -c 1 ansage.rmd
  
Alternativ kann eine zum Beispiel im WAV-Format vorliegende Nachricht in das Modem spezifische Format konvertiert werden. Die Nachricht wird dann unter
  /var/spool/voice/messages/standard.rmd
  
abgelegt. Wird das Modem jetzt angerufen, hebt vgetty ab, spielt die eingestellte Ansage ab und nimmt anschließend eine Nachricht auf. Diese wird unter
  /var/spool/voice/incoming/
  
abgelegt. Mit dem Programm vm kann sie später abgespielt werden:
  vm play -s va00280.rmd
  
Ein Beispiel für ein Skript, welches neue Nachrichten komfortabel anzeigt und abspielt, findet sich
hier.

Von vgetty wird die Unterscheidung von Sprach-, Daten- und Faxanrufen durch das Modem unterstützt. Der Rechner kann damit gleichzeitig auf Datenanrufe reagieren, Faxe empfangen und Personen, die aus Versehen die Nummer wählen, einen Hinweistext ansagen.

Voice-Modems erkennen die DTMF-Codes (Tonsignale) der Tasten eines Telefons. Diese Eigenschaft wird auch von vgetty unterstützt, was prinzipiell weitere mögliche Nutzungen erlaubt:

Die Dokumentation der entsprechenden Funktionen fehlt teilweise noch und die einzelnen Funktionen sind auch noch nicht lange implementiert, was dieses Gebiet zum Experimentierfeld macht.

Jede Art der Nutzung benötigt Möglichkeiten zur Manipulation der aufgenommen Sounds. Speziell die Umwandlung des Modem eigenen Formates in ein Format, welches über die Soundkarte abgespielt werden kann, ist von Interesse. Die folgenden Programme können dabei genutzt werden:

Zum Schluss sollen noch einige Erfahrungen bei der Nutzung der Voice-Funktionen des Sportster Voice angegeben werden:

2.6 Probleme


Holm Sieber, E-Mail: h.sieber@mathematik.tu-chemnitz.de