Der Linuxrechner als Faxserver
In den aktuellen Betriebssystemversionen (z.B. Windows 95 und OS/2 Warp) sind meistens Programme enthalten, mit denen Sie vom PC aus Faxe versenden und empfangen können. Bei einem Netzwerk würde das allerdings erfordern, daß an jedem PC ein Faxmodem vorhanden und angeschlossen ist und daß für den Empfang von Faxen die PCs alle ständig in Betrieb sein müßten. Sinnvoller ist es da, nur auf dem Server ein Programm laufen zu lassen, daß mit dem Faxmodem kommuniziert und in der Lage ist, von den anderen Rechnern im Netz Faxaufträge entgegenzunehmen. Genau das ist mit kostenfreier Software möglich.
Konfiguration des Servers
Um den Linuxrechner als Faxserver benutzen zu können, müssen
folgende Voraussetzungen erfüllt sein:
- Sie müssen über ein Modem verfügen, daß in der Lage ist, Faxe zu versenden und zu empfangen (ein sogenanntes Faxmodem). Ein derartiges Modem dürfte für unter 200,- DM im Handel erhältlich sein.
- Das Modem muß am Linuxrechner an einem seriellen Anschluß (unter DOS und Windows z.B. COM1 und COM2) und logischerweise an die Telefonleitung angeschlossen sein.
- Sie müssen auf dem Server das Programmpaket HylaFAX installiert haben. Unter S.u.S.E.-Linux sollten Sie dies entweder bei der Grundinstallation oder zu einem späteren Zeitpunkt mit Hilfe des Setup-Tools YaST durchführen. HylaFAX finden Sie im Paket Netzwerk-Support.
Sie müssen dann, bevor Sie HylaFAX zum ersten Mal benutzen können,
das Skript "faxsetup" starten. Das Skript überprüft das Vorhandensein
diverser Verzeichnisse und fragt dann Details zum verwendeten Modem ab.
Bei meiner Installation fehlten einige Unterverzeichnisse im Verzeichnis
/var/spool/fax. Es müssen dort folgende Verzeichnisse vorhanden sein:
/var/spool/fax/archive
/var/spool/fax/bin
/var/spool/fax/client
/var/spool/fax/config
/var/spool/fax/dev
/var/spool/fax/docq
/var/spool/fax/doneq
/var/spool/fax/etc
/var/spool/fax/info
/var/spool/fax/log
/var/spool/fax/pollq
/var/spool/fax/recvq
/var/spool/fax/sendq
/var/spool/fax/status
/var/spool/fax/tmp
Überprüfen Sie Ihre Verzeichnisstruktur, am besten bevor Sie
faxsetup starten und legen Sie fehlende Verzeichnisse mit mkdir gegebenenfalls
an, das Skript bricht sonst mit der entsprechenden Fehlermeldung wieder
ab. Ein kleiner Tip noch an dieser Stelle. Bei mir tut ein ZyXEL-Modem
seinen Dienst. Es wird offiziell als Modem vom Typ "Class 2.0" bezeichnet.
Aber irgendein Detail in der Implementierung stimmt da wohl nicht, es läßt
sich als Class 2.0-Modem mit HylaFAx nicht zur Arbeit überreden. Das
Modem läuft jedenfalls problemlos als "Class 2"-Modem. Sehen Sie ggf.
in Ihrem Modem-Handbuch nach. Im Verlaufe des Setup-Prozesses erscheint
eine Meldung, die Sie darauf hinweist, daß das HylaFAX client-server
protocoll nicht per inetd gestartet wird und Sie werden gefragt, ob "Should
an entry be added to inetd.conf?". Antworten Sie hier mit "no". Unter S.u.S.E.-Linux
wird HylaFAX anders gestartet (s.u.).
Wenn Sie später ein anderes oder ein zusätzliches Modem anschließen,
können Sie dies tun, indem Sie nur das Skript "faxmodem" starten.
Wenn Sie die obigen Schritte erfolgreich abgeschlossen haben, müssen
Sie in der Datei /etc/rc.config den
Eintrag START_HYLAFAX=no
in START_HYLAFAX=yes ändern.
Ein Hinweis noch: Ich erinnere mich, daß ich zwischenzeitlich
Probleme mit HylaFAX hatte, nachdem ich faxsetup bzw. faxmodem gestartet
hatte. Die Probleme hatten damit zu tun, daß die Dateien FIFO, FIFO.modem
und _FIFO.ttyS1 als Eigentümer dem user fax zugeordnet waren. Überprüfen
Sie dies durch Eingabe von "ls -l /var/spool/fax" und ändern Sie dies
ggf. mit Hilfe des Kommandos chown uucp Datei" für die drei oben genannten
Dateien.
Tragen Sie dann noch die IP-Nummern aller Rechner, die Faxe an HylaFAX
weiterreichen dürfen, in die Datei /var/spool/fax/etc/hosts ein. In
jede Zeile eine IP-Nummer. Bei mir dürfen das alle Rechner des lokalen
Netzes, die Datei hat folgenden Inhalt:
localhost
127.0.0.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
Wenn Sie daran interessiert sind, die Kopfzeile jeder Faxseite selbst
zu gestalten, dann sollten Sie die Datei /var/spool/fax/etc/config.modem
bearbeiten.
In der Zeile
LocalIdentifier: sollten Sie ggf. Ihren Namen
und die Faxnummer eintragen
(z.B. MeinName: +49 meine Nummer) und
wenn Sie Ihre Faxe überwiegend im deutschen
Sprachraum verschicken, sollten Sie die Zeile:
TagLineFormat: ändern in "Von
%%l|%c|Seite %%p von %%t".
Sie müssen den Linuxrechner jetzt neu starten; beim Systemstart
sehen Sie dann am Ende die Startmeldung von HylaFAX.
Wichtiger Hinweis zum Update der Distribution:
Wenn Sie die Linuxdistribution updaten, müssen Sie das Skript faxsetup
auch auf einem System, auf dem HylaFAX bereits erfolgreich gelaufen ist,
anfangs noch einmal laufen lassen. HylaFAX findet sonst das modem nicht
(Hat mich eine schlaflose Nacht gekostet!)
Die Einrichtung eines Windows 95- / Windows NT-Client für Hylafax
Voraussetzung für die Nutzung von HylaFAX unter Windows ist die Installation
des TCP/IP-Protokolls.
In meinen Augen gibt es zur Zeit zwei vernünftige Lösungen
für 32-Bit-Windows. Zum einen den Windows-Hylafax-Client (WHFC) von
Ulrich Eckhardt und das auf Windows portierte SuSEFAX der Firma SuSE. Beide
Programme sind kostenlos.
WHFC
Für Windows 95 und Windows NT gibt es einen kostenlosen Client (WHFC,
Copyright (c) 1996 RGW Express Airfreight GmbH). Sie finden die aktuelle
Version des Programms(seit Ende 1998 dem Alpha-Stdium entwachsen) auf der
WHFC-WWW-Seite.
Das Programm läuft im Hintergrund und wartet darauf, daß
Sie über einen speziell eingerichteten Drucker eine Datei drucken.
Diese wird dann von WHFC an den Faxserver weitergereicht. Zusätzlich
verfügt das Programm noch über ein Telefonbuch. Im Grunde ist
die Installation sehr simpel und auch ausreichend in der README-Datei von
WHFC beschrieben. Deshalb spare ich mir hier weitere Hinweise
Als letztes erstellen Sie eine Verknüpfung mit dem Programm whfc.exe
in der Gruppe Autostart, wenn WHFC automatisch beim Systemstart geladen
werden soll. Wenn Ihr Linuxserver nicht ständig in Betrieb ist, ist
es besser, das Programm nur bei Bedarf zu starten.
Sie können jetzt aus jeder Windows-Anwendung faxen, indem Sie den
Postscriptdrucker auswählen, der mit dem whfc-Port verbunden ist.
Nach dem Drucken werden Sie von WHFC dann jeweils nach der Faxnummer gefragt.
Ich habe mir z.B. für Word für Windows ein Makro gebastelt,
das das aktuelle Dokument auf dem Faxdrucker ausgibt und dann wieder den
Standarddrucker aktiviert. Das Makro habe ich mit einem Button in der Buttonleiste
von Winword verbunden. Damit funktioniert das Faxen dann "auf Knopfdruck".
Das Makro sieht für Word 97 so aus (Sie müssen dann die Einträge
, die im folgenden rot markiert sind entsprechend ihrer Rechnerkonfiguration
anpassen):
'***** Makro FaxDrucken **************************************************
Sub FaxDrucken()
'
' FaxDrucken Makro
' Makro von Detlev Reymann
' Zweck des Makros: Das aktuelle Dokument mittels
' WHFC ausdrucken
'
' Feststellen, ob Hylafax bereits läuft
If Tasks.Exists("WHFC") = False Then
' Wenn nicht, Das Hylafax-Programm starten
Dim Ergebnis As Integer
Ergebnis = -1
' In der folgenden Zeile
ggf. den Installationspfad von whfc anpassen !!!
Ergebnis = Shell("C:ProgrammeHylafaxWhfc.exe",
6)
' Wenn das nicht funktioniert hat, Fehlermeldung
und Makro beenden
If Ergebnis < 0 Then
Ergebnis = MsgBox("Kann
Hylafx-Client nicht starten", vbInformation, "Achtung")
Exit Sub
End If
End If
' Jetzt den Drucker zum aktiven Drucker machen, der mit whfc verbunden
ist
' In der folgenden Zeile muß der Druckername
ggf. angepaßt werden
' Im Zeifelsfall in Word im Dateimenü
Drucken aufrufen und die Liste der
' Drucker überprüfen
ActivePrinter = "Faxdrucker"
' Das ganze Dokument drucken:
Application.PrintOut
FileName:="", Range:=wdPrintAllDocument, Item:=
_
wdPrintDocumentContent, Copies:=1, Pages:="",
PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:=False
' Den Standarddrucker wieder einstellen
' auch hier wieder die eigenen Daten eintragen
' Im Zeifelsfall in Word im Dateimenü
Drucken aufrufen und die Liste der
' Drucker überprüfen
ActivePrinter = "Standarddrucker"
End Sub
'******Ende Makro FaxDrucken********************************
Die OLE-Fähigkeit von WHFC macht es auch möglich, mittels
Word Serienfaxe zu erstellen! Dabei können Sie die vollständigen
Serienbrieffunktionen von Word verwenden! Sie müssen in Word ein Serienbriefhauptdokument
erstellen (Menü: Extras->Seriendruck) und das Hauptdokument mit einer
Datenquelle verbinden. In der Datenquelle muß ein Feld vorhanden
sein, das im Titel den Text Telefax enthält. Es ist
egal, welches Feld (erstes, zweites, letztes ...) dies ist, das Makro sollte
es alleine herausfinden.
Das Makro sorgt dafür, daß für jeden Datensatz, für
den eine Faxnummer definiert ist, ein separates Fax erstellt wird.
Ich habe mir in die Symbolleiste für den Seriendruck einen Button
eingefügt, der mit dem unten stehenden Makro verknüpft ist.
Auch hier sind die Stellen, an denen Sie das Makro ggf. anpassen müssen
rot markiert.
'********Makro SerienfaxDrucken*******************************
Sub SerienFax()
'
' SerienFax Macro
' Dieses Makro erstellt Serienfaxe auf Basis eines Word-Seriendruckdokumentes
' Es basiert auf einem Macro von Keith Gray,
' und wurde angepasst von Detlev Reymann am 22.3.99
'
' Variablen definieren
Dim whfc As Object
Dim OLE_Return As Long
Dim FaxNummer As String
Dim SpoolFile As String
Dim Title As String
Dim WhfcPrinter As String
Dim NbrOfFields As Integer
Dim j As Integer
Dim TelefaxNrFeld As Integer
Dim Ergebnis As Integer
' Damit das Makro funktioniert muß das aktive Dokument ein
Serienbriefhauptdokument sein
' und es muß eine Datei mit den Datensätzen definiert
sein.
' Das wird im folgenden überprüft
If ActiveDocument.MailMerge.State <> wdMainAndDataSource Then
Ergebnis = MsgBox("Kein Seriendruckdokument
oder keine Datenquelle", vbInformation, "Achtung")
Exit Sub
End If
' Feststellen wieviele Faxe geschickt werden sollen
' Dazu Nummer des letzten Datensatzes feststellen
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
NmbOfFaxes = ActiveDocument.MailMerge.DataSource.ActiveRecord
' Ersten Datensatz zum aktiven Datensatz machen
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
' Feststellen, welches Datenfeld die Bezeichnung Telefax enthält
' Das sollte es möglich machen, an beliebiger Stelle ein Feld
' für die Telefaxnummer zu definieren. es muß nur der
Text
' fax in der Feldbezeichnung vorkommen.
' Es müßte also auch Telefax-Nr funktionieren
NbrOfFields = ActiveDocument.MailMerge.DataSource.DataFields.Count
' j speichert die Feldnummer
For j = 1 To NbrOfFields
If InStr(1, ActiveDocument.MailMerge.DataSource.DataFields(j).Name,
"fax") > 0 Then
TelefaxNrFeld = j
Exit For
End If
Next j
' Wenn kein Datenfeld für die Faxnummer gefunden wurde
' das Makro abbrechen
If j > NbrOfFields Then
Ergebnis = MsgBox("Kein Datenfeld für die
Telefaxnummer definiert", vbInformation, "Achtung")
Exit Sub
End If
' OLE-Verbindung zu WHFC herstellen
Set whfc = CreateObject("WHFC.OleSrv")
' Jetzt in einer Schleife die Faxe drucken
For i = 1 To NmbOfFaxes
' Für jedes einzelne
Fax eine temporäre Datei
' Hier muß ggf.
wieder der Pfad angepaßt werden
SpoolFile = "C:Tempwhfcfax"
& i & ".ps"
Title = "WHFC OLE Serienfaxmakro"
' Die aktualisierten Datenfelder anzeigen
' Das ermöglicht die Verwendung der Seriendruckfelder
im Hauptdokument
' und sorgt dafür, daß die korrekten
Werte des aktiven Records
' angezeigt werden
ActiveWindow.View.ShowFieldCodes = False
ActiveWindow.View.MailMergeDataView = True
' Die Faxnummer aus dem Feld nehmen, daß
oben ermittelt wurde
FaxNummer = ActiveDocument.MailMerge.DataSource.DataFields(j)
' Fax nur schicken, wenn Faxnummer eingetragen
ist
If FaxNummer > "" Then
' Einen Postscriptdrucker
als Drucker festlegen
'
Achtung !!!!!!!!!!!!!!!!!!!!!!!!!
' Hier muß ggf. der eigene Postscriptdrucker eingetragen werden
' Ich hatte hier Probleme, den WHFC-Drucker zu verwenden und habe
' extra einen Postscriptdrucker mit Ausgabe in eine Datei definiert
WhfcPrinter = "Apple
Color LW 12/600 PS"
ActivePrinter = WhfcPrinter$
' Jeweils das ganze
Dokument drucken
Application.PrintOut
FileName:="", Range:=wdPrintAllDocument, _
Item:=wdPrintDocumentContent, Copies:=1, Pages:="", _
PageType:=wdPrintAllPages, Collate:=True, Background:=True, _
PrintToFile:=True, OutputFileName:=SpoolFile, Append:=False
' Mit diesem Kommando
wird das jeweilige Fax an WHFC übergeben und von
' diesem an den Faxserver
weitergeleitet.
OLE_Return = whfc.SendFax(SpoolFile,
FaxNummer, True)
' Falls das nicht klappt,
Fehlermeldung
If OLE_Return <=
0 Then
Ergebnis = MsgBox("Fehler bei Verbindung zu WHFC", 16, Titel)
End If
End If
' Nächsten Datensatz holen
ActiveDocument.MailMerge.DataSource.ActiveRecord
= wdNextRecord
Next i
Set whfc = Nothing
' Wieder Standarddrucker einstellen
' Auch hier bitte den eigenen Standarddrucker
eintragen
ActivePrinter = "Standarddrucker"
End Sub
Es gibt damit aus meiner Sicht keinen Grund mehr, kommerzielle Programme
für die Faxerstellung zu verwenden!
Wenn es jemand interessiert, hier finden
Sie die Macros in englischer Sprache.
SuSEFAX unter Windows
Die Firma SuSE hat einen Client für Hylafax in der Programmiersprache
Java programmiert und stellt diesen auch für Windows
95 und Windows NT zur Verfügung. Sie müssen die heruntergeladene
Zip-Datei entpacken und in ein beliebiges Verzeichnis entpacken. Bei meiner
Installation wurde das Unterverzeichnis images fälschlicherweise parallel
zum Verzeichnis bin installiert und nicht unterhalb des Verzeichnisses
bin! Sven Westenberg hat mich darauf hingewiesen, daß dieses Problem
zu beheben ist, wenn SuSEFax über eine Verknüpfung gestartet
wird und bei der Verknüpfung das Arbeitsverzeichnis richtig angegeben
wird.
Anders als WHFC handelt es sich nicht um einen Portmonitor (ein Programm,
das gewissermaßen an einem virtuellen Druckeranschluß lauscht)
sondern um ein Programm, das überprüft, ob eine bestimmte Datei
(Spooldatei) verändert wird. Sie müssen also auch hier einen
Postscriptdurcker im System einrichten, nur daß dieser nicht an einen
Druckeranschluß angeschlossen wird, sondern daß Sie hier eine
Ausgabedatei (eben die Spooldatei von SuSEFax) definieren müssen Im
Unterverzeichnis bin finden Sie das Programm SuSEFax.exe. Unter Einstellungen
müssen Sie dort auch den Server eintragen und die Spooldatei. Entweder
starten sie SuSEFax indem Sie eine Verknüpfung in den Autostart-Ordner
aufnehmen oder Sie starten es, wenn Sie es benötigen.
Die Einrichtung eines Linux-Client
für Hylafax
Unter Linux steht ein freies Programm zur Verfügung, das von der Firma
S.u.S.E. stammt. Es benötigt allerdings die grafische Oberfläche
X-Window. Sie sollten das Programm mit dem Setup-Tool YaST installieren.
Es befindet sich im Paket "Netzwerk-Support" und heißt "susefax".
Achtung!!! Die Version von susefax, die mit der Originalversion 5.0 ausgeliefert
wird, hat noch Fehler - es funktioniert nur auf dem Rechner, auf dem auch
der HylaFAX-Server installiert ist. Wenn HylaFAX wie in unserem Beispiel
auf einem anderen Rechner läuft, müssen Sie die aktualisierte
Version benutzen.. Besorgen Sie sich vom Support-Server der Firma S.u.S.E.
ggf. die aktuelle Version. Nach erfolgter Installation finden Sie im Verzeichnis
/usr/X11R6/bin/ ein Skript mit dem Namen susefax. Susefax bietet einen
ähnlichen Funktionsumfang wie WHFC, nur daß schon eine Serienfax-Funktion
eingebaut ist. Das Programm wird noch als Betaversion bezeichnet, deshalb
ist die Dokumentation wohl auch noch etwas spärlich. Auch susefax
erwartet Postscriptdateien, Sie müssen den Namen der Datei und das
Verzeichnis bei der Konfiguration von susefax angeben (z.B. /tmp/fax.ps).
Soweit ich das ausprobiert habe, muß susefax permanent aktiviert
sein. Wenn Sie dann eine Datei mit diesem Namen erzeugen, fragt susefax
nach der Faxnummer, die dann auch über das Telefonbuch eingegeben
werden kann.
Die Einrichtung eines Windows 3.x
Client für Hylafax
Auch für Windows 3.x gibt es einen freien Client. Leider habe ich
damit keine Erfahrungen.
Die Einrichtung eines OS/2-Client für Hylafax
Stefan Buckmann hat mir Anfang Oktober 98 per Mail beschrieben, wie er
SuSEFax (wenigstens so halbwegs) unter OS/2 zum laufen gebracht hat.
Ich füge seine Beschreibung nachfolgend ein (Sollte noch jemand
etwas über einen Client für OS/2 wissen, wäre ich für
Hinweise dankbar):
--------------------------------Beschreibung von Stefan Buckmann Beginn----------------------------------------------
Software -
IBM OS/2 Warp 4.0 mit aktuellstem Fixpack, deutsch Java 1.1.6
SYSLEVEL.JAV : XR04006 SYSLEVEL.OS2 : XRG4000
SuSEFax in einem Verzeichnisbaum wie folgt installieren: -
X:SuSEFax : faxcover.ps und susefax.cmd (siehe unten)
X:SuSEFaxSuSEFax : alle .class-Dateien
X:SuSEFaximages: alle .gif-Dateien
X:SuSEFaxMETA-INF : MANIFEST.MF extrahiert, ausser faxcover.ps und
susefax.cmd.
Die Umgebungsvariable HOME muss auf ein existierendes Verzeichnis zeigen.
susefax.cmd erzeugen -
(Die Pfadangaben sind entsprechend anpassen)
/* SUSEFAX.CMD Starten von SuSEFax via Java */
'set path=c:os2;c:java11bin;r:susefaxsusefax'
'set beginlibpath=c:java11dll;r:susefaxsusefax;'
'r:'
'cd susefax'
'start /PM java SuSEFax/SuSEFax'
'exit'
Probleme -
- - Braucht viel Speicher
- - Ladezeit sehr lang
- - Beim Beenden der Applikation bleibt JAVA im Speicher
- - Bei jedem Programmstart wird eine neue Instanz von JAVA geladen
- - Der Systemabschluss funktioniert nicht immer korrekt
--------------------------------Beschreibung von Stefan Buckmann Ende----------------------------------------------
|