Home       Servicebereich  Projekte  Kontakt  

Faxe verschicken


Operationen des Client-Programms

Der Client übermittelt die zu faxende Datei per Netzwerk an den HylaFAX-Server. Die Kommunikation zwischen Client und Server wird per TCP mit einem erweiterten FTP Protokoll durchgeführt. Der Standard-Port für die Kommunikation ist 4559. Die Ports der Datenkommunikation werden wie beim FTP Protokoll während der Verbindung ausgehandelt. Der Client übermittelt dabei die Datei und weitere notwendige Daten wie z.B. die Empfänger MSN.

Der Server erwartet die zu verschickende Datei im PostScript oder TIFF Format. Falls die Datei nicht in einem dieser Formate vorliegt, muss der Client die Konvertierung übernehmen. Das Programm sendfax führt eine automatische Konvertierung durch.

Nachdem die Verbindung zum Server aufgebaut wurde, muss sich der Client mit Benutzername und Passwort am Server authentisieren. In der Standard-Installation sind alle Übermittlungen vom lokalen Host direkt autorisiert, so dass hier keine Abfrage nach Benutzername / Passwort notwendig ist.
Der Client teilt dem Server die Faxnummer des Empfängers, den Typ der übermittelten Datei sowie Angaben zum Absender (E-Mail), zur Zahl der maximalen Wahlversuche, etc. mit. Dann wird die Datei zum Sender übertragen.

Der HylaFAX-Daemon hfaxd

Prozessschema beim Versand eines Faxes Versand eines Faxes

Der HylaFAX-Daemon startet beim Connect des Clients einen Kindprozess. Dieser liest die Konfigurationsdateien aus /etc/hylafax neu ein, übernimmt die Kommunikation mit dem Client und führt einen chroot(2) in das neue Root-Verzeichnis /var/spool/hylafax durch.

Die übermittelte Datei wird zuerst nach $ROOT/tmp/doc.<JobNummer>.<Suffix> geschrieben. Als nächstes wird eine Kontrolldatei nach $ROOT/sendq/q<JobID> geschrieben. Diese Datei enthält die vom Client übermittelten Angaben, Angaben des Servers zum Faxjob und einen Verweis auf die zu faxende Datei in $ROOT/docq. Die JobID wird in der Datei sendq/seqf ermittelt.
Nachdem die Kontrolldatei geschrieben ist, wird die Faxdatei aus /tmp nach /docq/doc<JobID>.<Suffix> verschoben. Dem Client wird jetzt der erfolgreiche Empfang der Datei mitgeteilt und die Verbindung zum Client geschlossen.

Hfaxd kommuniziert mit dem Queue Handler faxq mit Hilfe von FIFOs. Der faxq Daemon liest aus der Named Pipe $ROOT/FIFO, die er beim Start zum Lesen geöffnet hat. Über dieses Kommunikationskanal teilt der hfaxd Daemon die Jobnummer des neuen Jobs (in der Sende-Queue im Verzeichnis sendq) und den Namen einer FIFO-Datei in /client mit, aus der er Statusmeldungen vom faxq entgegennimmt.

Der Queue Manager faxq

Nachdem faxq den neuen Job informiert wurde liest dieser das Controlfile für den Job aus /sendq ein und teilt dem Hylafax-Daemon die erfolgreiche Annahme des Jobs über den zweiten FIFO mit.

Dann wird gegebenenfalls die faxq Konfigurationsdatei /etc/config neu eingelesen. Die Daten aus der Jobkontrolldatei /sendq/q<JobID> werden mit den Daten aus der Konfiguration abgeglichen und die Kontrolldatei mit den aktuellen Daten neu geschrieben.

Vor dem ersten Versuch die Datei zu verschicken wird diese mit Hilfe von tiff2fax in eine G3 Faxdatei umgewandelt. Dann wird der erste Sendeversuch gestartet und die Datei gegebenenfalls sofort verschickt. Nach dem Versand wird eine Datei /info/<MSN-der-Gegenstelle> erstellt bzw. überschrieben, in der die aktuellen Daten der Gegenstelle festgehalten sind.

Bei Misserfolg des Versands wird je nach Fehlerursache und Konfiguration des Queue Managers wird der Anwahlversuch mehrfach wiederholt.

Nach Abschluss des Jobs wird für diesen eine Datei /doneq/q<JobID> erstellt. In dieser werden die Daten den Jobs einschliesslich des Status festgehalten.


< zurück  | weiter >