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