romeofox

Faxservice mit Samba

Philosophisches

„Warum laufen Nasen, während Füße riechen?”

Webhosting by Domain Hosting

Faxservice mit Samba

Samba ist eine File- und Printserversoftware für Unix. Mit Hilfe von Samba ist es möglich Verzeichnisse und Drucker eines Unix-Systems für Windows-Clients nutzbar zu machen. Der Unix-Rechner taucht hierbei in der Netzwerkumgebung eines Windows-Rechners auf, als wäre er ein ganz normaler Windows-Rechner.

Genauso ist es möglich, den Windows-Clients einen Faxservice zur Verfügung zu stellen. Hierzu ist zusätzlich zu Samba ein installiertes mgetty+sendfax-Paket und natürlich ein Faxmodem notwendig.

Ein Script, dass das Versenden von Faxen aus beliebigen Windowsanwendungen heraus ermöglicht, möchte ich hier vorstellen. Das Script setzt einen funktionierenden Samba-Server mit funktionierendem sendfax voraus (mgetty selbst ist nicht unbedingt nötig, da es hierbei nicht um den Empfang von Faxen geht).

Um das Versenden der Faxe so einfach wie möglich zu gestalten, extrahiert das Script die im Faxtext vorhandene Faxnummer. Diese muß also nicht noch einmal in einem seperaten Dialog eingegeben werden. Damit das Script die Nummer erkennen kann muß dieser der Text "Fax-Nr:" voran gestellt sein (Leerzeichen zw. ":" und der Nummer sind erlaubt, aber keine Tabs). Die Nummer darf Klammern sowie Schräg- und Bindestriche enthalten, Leerzeichen sind hier nicht erlaubt.

Das Script basiert auf einer Mail von Michael A. Meiszl <mam@werries.de> (Im mgetty+sendfax-Paket zu finden unter /frontends/windows/) und einem Text von Gerhard Zuber <zuber@berlin.snafu.de> (siehe mgetty+sendfax-Paket /frontends/winword).

Funktionsweise:

Das Fax wird als Postscript an ein "Fax-Drucker" auf dem Samba-Rechner gedruckt. Samba speichert das Fax in einem Spoolverzeichnis und startet daraufhin das Script und übergibt dabei den Namen der Spooldatei, den Namen des Users und des Windows-Clients. Das Script sucht nach dem Text "Fax-Nr:" und extrahiert die Faxnummer. Die o.g. Zeichen werden entfernt und die Nummer wird geprüft. Nun wird faxspool mit der Spooldatei und der extrahierten Nummer aufgerufen. Der Anwender bekommt eine Bestätigung für die Annahme oder eine Fehlermeldung per Winpopup o.ä. (Winpopup muß natürlich gestartet sein). Mit dem nächten Lauf von faxrunq wird das Fax verschickt.
Der User erhält von faxrunq einen Erfolgs- oder Fehlerbericht per Mail zugestellt, sofern dies entsprechend eingerichtet ist,(siehe hierzu die Man-Page von faxspool und faxrunq).

Download:

Das Script kann in einer deutschen oder englischen Version heruntergeladen werden:

Installation:

Voraussetzung sind ein funktionsfähiges Samba-Paket, eine funktionierende sendfax Einrichtung inkl. faxspool und faxrunq.

In der smb.conf wird folgendes eingetragen:

      [Fax]
        path = /usr/spool/samba
        read only = true
        printable = true
        public = true
        comment = Samba Fax-Service
        print command = /usr/local/samba/bin/do_fax %s %U %m
    

Wenn Samba motzt, das der Drucker Fax nicht existiert, ist es ggf. nötig, das Folgende zusätzlich einzufügen:

        lpq command = /usr/bin/lpq -Plp
    

Das bei path angegebene Spool-Verzeichnis muß angelegt werden.
Wichtig: Die User müssen Schreibrechte auf das Spool-Verzeichnis haben und Sie müssen den Faxservice auch benutzen dürfen (siehe man faxspool und /etc/mgetty+sendfax/fax.allow)! Dies ist auch abhängig von der Einstellung "security" in der smb.conf!
Beispiel:

    cd /var/spool/
    mkdir -m 775 samba
    chgrp users samba
    

Das Script selbst wird im Verzeichnis /usr/local/samba/bin/ als do_fax installiert:

    cd /
    tar xvzf do_fax_de.tgz
    

Natürlich sind auch andere Verzeichnisse möglich, die Einträge in der smb.conf müssen dann entsprechend angepasst werden.

Als Letztes muss auf dem Windows-Client noch ein Postscript-Drucker-Treiber installiert werden (z.B. Apple Laserwriter NTX) und mit der Netzwerkdruckerwarteschlange "Fax" auf dem Samba-Rechner verbunden werden.

Nun kann von einer beliebigen Windowsanwendung ein Fax "gedruckt" werden.

Bekannte Probleme:

Statt der angegeben Nummer wird immer 181 gewählt:
Zwischen dem String "Fax-Nr:" und der Nummer dürfen keine Tabs stehen sondern nur Leerzeichen.
Bei MS-Word wird die Faxnummer nicht erkannt:
MS-Word positioniert beim Ausdruck in Postscript jedes Zeichen einzeln. Somit ist das Script nicht in der Lage den String "Fax-Nr:" zu erkennen. Um dieses Problem zu umgehen muss man Word "austricksen". Wie das geht finden Sie hier. Es gibt eine deutsche Word97-Vorlage, bei der der Workaround eingebaut ist, siehe bei Download)