Faxempfang mit efax.

ArticleCategory:

SystemAdministration

AuthorImage:

[Mark]

TranslationInfo:

original in en Mark Nielsen

en to de Marcus Franke

AboutTheAuthor:

Mark Nielsen arbeitet fürAudioBoomerang.com. Die Firma vertreibt Systeme für personalisierte Multimedia email, Web- und Newsletter Werbekampagnien. Er selbst arbeitet dort als Berater für die Kunden von AudioBoomerang.com. Er ist zuständig für die statistischen Analysen, die dann als Ausgangsmaterial genutzt werden für demographische und psychologische Profile für weitere Kampagnien. In seiner leider spärlichen Freizeit schreibt er Artikel über Freie Software (GPL) oder Freie Literatur (FDL), ausserdem ist er beteiligt an der Arbeit des gemeinnützigen Lernzentrums eastmont.net.

Abstract:

Das Aufsetzen von Efax zum Empfangen und Versenden von Faxen unter RedHat 7.2.

ArticleIllustration:[This is the title picture for your article]

[illustration]

ArticleBody:

Die Zielsetzung

Ich wollte einen Fax Server aufsetzen. Zuerst wollte ich HylaFax benutzen, doch auf meinem System ist bereits mgetty installiert und beim Versuch das rpm von Hylafax einzuspielen, musste ich feststellen, dass sich diese beiden Programme nicht miteinander vertragen. Es scheint, dass, wenn ich es richtig anstellen würde, ich mgetty benutzen könnte, um sowohl logins und Sprachdienste als auch Faxdienste zu realisieren. Aber fürs erste wollte ich nur Faxe empfangen mit der Standardinstallation von RedHat 7.2, ohne zusätzliche Software zu installieren.

Efax und fax sind in Wirklichkeit dasselbe Ding. 'fax' ist nur ein Script, das Efax aufruft.

Die Konfigurationsdateien

Es gibt insgesamt zwei Dateien, die man editieren muss, um das System zum Laufen zu kriegen: /usr/bin/fax und /etc/inittab.

Kopieren Sie /usr/bin/fax als /usr/bin/fax_custom zur Sicherung, danach passen Sie bitte die folgenden Zeilen an, ich habe bei mir folgendes eingetragen:

FAXDIR=/var/spool/fax/incoming
NAME="AudioBoomerang.com Computer Fax Server"
FROM="+1 111 222 3333"
ANSFNAME="fax_%Y%m%d_%H%M%S"

In der /etc/inittab habe ich die folgenden Zeilen verändert:

S0:2345:respawn:/bin/sh /usr/bin/fax_custom answer

Efax und fax -- Im Einzelbetrieb

Um ein Fax zu empfangen, wenn gerade jemand versucht, Ihnen eines zu übermitteln, führen die den folgenden Befehl aus:
efax -d /dev/ttyS0 -l "268 1162"  -c 1,5 -r reply
oder
fax answer

Wenn Sie nicht wünschen, dass fax im Hintergrund darauf wartet, das nächste Fax empfangen zu können, dann führen Sie bitte die Veränderung an /etc/inittab nicht durch, die ich in der Sektion "Die Konfigurationsdateien" vorgeschlagen habe.

Efax und fax -- Im Automatikbetrieb

Wenn Sie die Datei /etc/inittab wie von mir beschrieben verändert haben, dann starten Sie jetzt bitte den Rechner neu und Ihr Computer wird mit Hilfe des Modems ganz automatisch Faxe annehmen und im Verzeichnis /var/spool/fax/incoming ablegen.

Wenn Sie den folgenden Befehl eingeben:

ps auxw | grep efax
sehen Sie das efax Programm, wie es im Hintergrund auf ankommende Faxe wartet:
root 1698 0.0 0.4 1576 616 ? S< 21:47 0:00 /usr/bin/efax -v -v chewmainrxtf -d/dev/modem -iZ -i&FE&D2S7=120 -i&

Ein nettes Feature durch den Eintrag in der Inittab ist, dass, wenn Sie den Prozess mit der ID "1698" mit kill -9 beenden, das Programm neu gestartet wird und dabei seine Konfigurationsdateien erneut einliest. Wenn Sie also an den Einstellungen etwas verändert haben, so brauchen Sie nur den laufenden efax Prozess beenden, um die neuen Einstellungen geltend zu machen.

Was tun nach dem Emfpang eines Faxes?

Installieren Sie z.B. einen cron Job, der die eingegangenen Faxe sortiert und sie vielleicht in ein PDF umwandelt, um sie auf dem Intranetserver darzustellen, oder die Faxe einfach wie ein Standgerät einfach ausdruckt.

Wenn Sie die eingegangen Dokumente ausdrucken wollen, dann können Sie efix benutzen:

efix -ops fax_20020606_014847.001 | lpr

Meine Empfehlung lautet, die eingegangenen Dokumente auszudrucken und die dazugehörigen Dateien in einem Ablageverzeichnis zu speichern.

Faxe selber verschicken

Den Druckservice einzurichten, war viel schwieriger, als ich mir das eigentlich vorgestellt hatte. Als erstes sollte man tun, was einem die Manpage vorschreibt (mit einigen Abänderungen):
  1. ln /usr/bin/fax /usr/bin/faxlpr
    
  2. In der Datei /etc/printcap.local die folgende Zeile anpassen
       fax:lp=/dev/null:sd=/var/spool/fax:if=/usr/bin/faxlpr_perl:
    
  3.     mkdir /var/spool/lpd/fax
        touch /var/spool/lpd/fax/lock
    
  4. /etc/rc.d/init.d/lpd restart
    

Meine persönlichen Veränderungen sind wie folgt:

  1. In /usr/bin/faxlpr veränderte ich die Zeile
    l=`$FAX send "$num" fax$$`
    in
    
    `gs -q -sDEVICE=tiffg3 -dNOPAUSE -sOutputFile=fax_out fax$$ </dev/null`
    l=`efax -t $num fax_out`
    `rm fax_out`
    
    zusätzlich habe ich die folgenden drei Zeilen in der faxlpr Sektion verändert:
      num=` echo "$cfile" | sed -e /^[^J]/d -e s/..//`
      host=`echo "$cfile" | sed -e /^[^H]/d -e s/..//`
      user=`echo "$cfile" | sed -e /^[^P]/d -e s/..//`
    
  2. Ich habe dann ein Perl Script in /usr/bin/faxlpr_perl angelgt und diesem dann die Dateirechte 755 gegeben mit: chmod 755 /usr/bin/faxlpr_perl:
    #!/usr/bin/perl
    
    my $String = "";
    foreach my $Arg (@ARGV)
      {
      if ($Arg =~ /\-j/)
        {
        my $Copy = $Arg;
        $Copy =~ s/\-j//;
        open(FILE,">lock"); print FILE "hfA$Copy"; close FILE;
        }
      }
    my $Command = "/usr/bin/faxlpr";
    system ($Command, @ARGV);
    print 1;
    
  3. Den nun folgenden Teil hasse ich wirklich, denn, um dem Benutzer, unter dessen Rechten der lpr Dienst läuft, den Zugriff auf das Modem zu ermöglichen, musste ich ein "chmod 666 /dev/ttyS1" durchführen.

Das Perl Script ist so konzipiert, dass faxlpr die Prozess-ID herausfinden kann, um dann den "fax" Befehl in "efax" abändern zu können. Dieses war notwendig, weil das Programm versucht, ein Lock-File anzulegen, das ich nicht haben wollte.

Ich glaube, dass meine Methode, die Faxe zu verschicken, den Lock-File Mechanismus aushebelt. Es könnte daher sein, dass sich das System verschlucken könnte, wenn man versucht, ein Fax zu versenden, wenn man gerade ein Fax empfängt.

Nach all der Qual und den Entbehrungen muss das Programm, das die Faxe drucken soll, in der Lage sein, die Option "-J" für einen Aufruf wie den folgenden 'lpr -P fax -J "555 1212" file.ps' zu nehmen. Ansonsten müssen Sie ihr Dokument erst in eine Datei drucken und diese dann im zweiten Schritt erst versenden.

Eine andere Möglichkeit ist es, den efax Befehl zu nutzen, um ein Fax direkt zu versenden, ohne den Druckersystem zu nutzen. Dann muss allerdings gs (Ghostscript) verwendet werden, um das Dokument vorher zu konvertieren, allerdings ist diese Methode auch nicht ganz benutzerfreudlich.

Zum Abschluss,

Wann immer ich die Chance bekomme, werde ich versuchen, ob ich diese Dinge hinkriegen kann:

Efax ist nur eine temporäre Lösung. Solange bis ich herausgefunden habe, wie ich mgetty zum Laufen bekommen habe. Einmal bin ich schon gescheitert. Der einzige Grund warum ich nicht HylaFax benutze, ist, dass es zu Abhängigkeitskonflikten kam, als ich das RPM Archiv einspielen wollte und dann begann ich mich für mgetty und seine Möglichkeiten zu interessieren und darüber kam ich dann zu efax. Ich werde versuchen, mgetty in der Zukunft zu nutzen, denn ich würde gerne Voice- und Loginsessions mit dem gleichen Modem nutzen. Es scheint, als wenn es möglich sein müsste, sogar noch den Faxdienst dieser Liste hinzuzufügen. Allerdings haben einige Modems Probleme damit, eingehende Fax-, Sprach- und Loginsessions richtig zu unterscheiden, denn das Empfangen und Versenden von Faximiles mit efax ist noch nicht wirklich der Weisheit letzter Schluss. Ich habe die Hoffnung, dass mgetty einige dieser Probleme lösen wird, auf die ich gestossen bin.

Referenzen

  1. Der einfache Fax Server!
  2. A Linux Fax Server for a Windows Network
  3. Linux Fax for Dummies
  4. Hylafax

Artikel Version 1.2 : Datum der letzten ÄnderungThu Jun 13 04:17:31 2002