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.
/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!)
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.
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 **************************************************
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:\Temp\whfc\fax"
& 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.
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.
--------------------------------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:\SuSEFax\SuSEFax : alle .class-Dateien
X:\SuSEFax\images: alle .gif-Dateien
X:\SuSEFax\META-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:\java11\bin;r:\susefax\susefax'
'set beginlibpath=c:\java11\dll;r:\susefax\susefax;'
'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----------------------------------------------