Der Hylafax-Daemon hfaxd ist für die Kommunikation mit den Clients zuständig. Die Clients kontaktieren den Daemon über den TCP-Port 4559 und übermitteln das Dokument und die notwendigen Informationen für den Versand des Faxes.
Der Queue-Manager faxq steuert den Versand der Faxe. Die anderen Prozesse kommunizieren mit faxq über named pipes. Faxq öffnet hierfür die Datei FIFO in seinem Rootverzeichnis.
Das Programm faxsend übernimmt die Kommunikation mit dem Modem. Faxsend wird von faxq für den Versand eines Faxdokuments aufgerufen und und leitet den Sendevorgang ein. Die Kommunikation zwischen faxq und faxsend erfolgt über die named pipes FIFO und FIFO.<DeviceID>.
Welches Programm für den eigentlichen Versand des Faxes
gestartet wird, kann in der Datei /etc/config mit dem
Parameter SendFaxCmd:
festgelegt. Für analoge Modems
ist dieses in der Regel faxsend, bei ISDN/CAPI Installationen wird
hier c2faxsend eingetragen.
Der Prozess faxgetty überwacht die (serielle) Schnittstelle an der das Modem angeschlossen ist. Beim Start schickt dieser Prozess eine entsprechende Nachricht über /FIFO an faxq und registriert "sein" Modem damit beim Queue-Manager.
Das faxgetty Programm selbst wird über die named pipe /FIFO.<ModemID> gesteuert.
Beim Einsatz von internen ISDN-Karten, erfolgt die Kommunikation über eine Emulation der seriellen Schnittstelle, die vom CAPI Layer bereitgestellt wird. In diesem Fall wird für jede ISDN Karte anstatt von faxgetty ein c2faxrecv Prozess mit den entsprechenden Parametern gestartet. Dieses Programm registriert das "Modem" nicht automatisch bei faxq. Die Registrierung erfolgt mit Hilfe des Programmaufrufs faxmodem <ModemID> und kann per init-Script erfolgen:
... start) echo -n "Starting HylaFAX daemons:" echo -n " faxq" start-stop-daemon --start --exec /usr/sbin/faxq echo -n " hfaxd" start-stop-daemon --start --exec /usr/sbin/hfaxd -- -i 4559 -o 4557 -s 444 sleep 1; /usr/sbin/faxmodem faxCAPI echo -n " faxmodem (faxCAPI)" ...
Das Programm faxstat kommuniziert mit hfaxd ermittelt den Status des Hylafax Servers und der Faxjobs.
Sendfax ist das Clientprogramm zum Verschicken eines Faxes. Es kontaktiert hfaxd und übermittelt die Faxe und die entsprechenden Parameter für den Versand, wie z.B. die Faxnummer des Empfängers oder den Zeitpunkt, wenn das Fax verschickt werden soll.
Sendfax übermittelt Faxdokumente im PostScript oder TIFF-Format direkt. Andere Formate werden mit Hilfe von konfigurierbaren Filtern nach PostScript konvertiert.
Mit faxrm lassen sich Faxjobs aus der Queue löschen. Die Nummer des Faxjobs kann mit faxstat ermittelt werden.
Das Clientprogramm faxalter dient dazu, die Parameter von Jobs in der Sendequeue zu ändern.
Dieses Script wird per Voreinstellung aufgerufen, wenn ein Fax
eingegangen ist. Es wandelt das eingegangene Fax in PostScript oder
PDF um und schickt es per E-Mail an einen voreingestellten Account.
Faxrcvd liegt nicht im Standard Suchpfad, sondern unter
/var/spool/hylafax/bin
.
Der Name des aufzurufenden Scriptes kann mit der
Konfigurationsoption FaxRcvdCmd
geändert
werden. Hier kann z.B. ein Script eingesetzt werden, welches die
Empäfangeradresse anhand der Sender MSN aus einer Datenbank
ermittelt und das Fax entsprechend weiterleitet.