logo Homepage Wolfgang Wilhelm :: v 0.9.1 21.02.2006 :: (v.0.9 __ 14.04.03)  
 
impressum :: feedback ::  Rubiks Magic ::  aktuelles   
Startseite
 LINKWEG ::: inhalt / ISDN Services / ISDN Faxserver


Linux als ISDN Faxserver

 

starttls  ISDN Faxserver mit unter hylafax

anker AVM Hardware Treiber
anker capi4linux
anker capi4hylafax
anker Hylafax
anker Verteilung der Faxe anhand der MSN | DDI

 

AVM Hardware treiber  
seitenanfang
 
avm

Vorraussetzung: * extern Kernelquellen, die extern Hardwaretreiber von AVM sind nur für SuSE kompiliert
(in aktuellen Distributionen sollte die CAPI-Unterstützung bereits eingebaut sein)

The complete driver architecture for active AVM ISDN-Controllers consists of a hardware driver module (e.g. b1pci.o) and the following list of modules: capi.o, capiutils.o, kernelcapi.o and capifs.o. The source code for all these modules is part of the linux kernel in directory /usr/src/linux/drivers/isdn/avmb1 and will be compiled with the kernel if the following settings are found in the kernel configuration:

        CONFIG_EXPERIMENTAL=y

        CONFIG_ISDN_CAPI=m
        CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
        CONFIG_ISDN_CAPI_MIDDLEWARE=y
        CONFIG_ISDN_CAPI_CAPI20=m
        CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
        CONFIG_ISDN_CAPI_CAPIFS=m
        CONFIG_ISDN_CAPI_CAPIDRV=m

        CONFIG_ISDN_DRV_AVMB1_B1ISA=m
        CONFIG_ISDN_DRV_AVMB1_B1PCI=m
        CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
        CONFIG_ISDN_DRV_AVMB1_T1ISA=m
        CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
        CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
        CONFIG_ISDN_DRV_AVMB1_T1PCI=m
        CONFIG_ISDN_DRV_AVMB1_C4=m

Dies bedeutet einen neuen Kernel zu übersetzen, im Konfigurationsmenü unter ISDN subsystem, Active cards:

        ...
        <M> CAPI2.0 support
            [*]   Verbose reason code reporting (kernel size +=7K)
            [*]   CAPI2.0 Middleware support (EXPERIMENTAL)
            <M>   CAPI2.0 /dev/capi support 
            [*]     CAPI2.0 filesystem support
            <M>   CAPI2.0 capidrv interface support
            <M>   AVM B1 ISA support 
            <M>   AVM B1 PCI support 
            [*]     AVM B1 PCI V4 support 
            <M>   AVM T1/T1-B ISA support 
            <M>   AVM B1/M1/M2 PCMCIA support 
            <M>   AVM B1/M1/M2 PCMCIA cs module
            <M>   AVM T1/T1-B PCI support 
            <M>   AVM C4/C2 support
        ...

auswählen. Ein Kernel-Howto ist unter der Adresse der extern Linux Documentation Project zu finden. Damit alle Konfigurationsmöglichkeiten angezeigt werden sollte noch Prompt for development and/or incomplete code/drivers unter dem Punkt Code maturity level options selektiert sein.
Nach der Installation sind dir CAPI Modules unter /lib/modules/`uname -r`/kernel/drivers/isdn/avmb1/ zu finden. Zum Betrieb wird noch eine /etc/capi.conf nach folgendem Schema erstellt.

download /etc/capi.conf
  # card          file    proto   io      irq     mem     cardnr  options
  #b1isa          b1.t4   DSS1    0x150   7       -       -       P2P
  #b1pci          b1.t4   DSS1    -       -       -       -
  #c4             c4.bin  DSS1    -       -       -       -
  #c4             -       DSS1    -       -       -       -
  #c4             -       DSS1    -       -       -       -       P2P
  #c4             -       DSS1    -       -       -       -       P2P
  #t1isa          t1.t4   DSS1    0x340   9       -       0
  #t1pci          t1.t4   DSS1    -       -       -       -
  #fcpci          -       -       -       -       -       -
  #fcclassic       -       -       0x340   5       -       -
  #                               -----   --
  # 1) Insert I/O address here _______|   |
  # 2) Insert IRQ number here ___________/
  # 3) Remove '#' in front of "fcclassic" 

Einfach die entsprechende Zeile auskommentieren. Wenn eine aktive ISDN Karte benutzt wird muss noch die Firmware (b1.t4,c4.bin,t1.t4) nach /usr/lib/isdn kopiert werden. Die Firmware ist aus dem aktuellen AVM SuSE Treiber RPM zu extrahieren. Ich habe ein Paket mit der download Firmware vom 18. Juni 2003 geschnürt.
In /etc/modules.conf noch

  alias char-major-43 capidrv 
  alias char-major-44 capidrv 
  alias char-major-45 capidrv 

eintragen und mit /sbin/depmod -a aktualisieren. Somit ist der Hardwareseitige Teil der Installation abgeschlossen

 

capi4linux  
seitenanfang
 
in-berlin

extern capi4kutils entpacken und per make ( Menueconfig) und make install installieren.

*note: Soll die ISDN Verbindung auch zum normalen Surfen über den pppd genutzt werden muss in der graphischen Konfiguration noch der untereste Menüpunkt [*] pppdcapiplugin ausgewählt sein.

Um die Capischnittstelle zu initialisieren wird
  capiinit start
  modprobe capidrv
  chmod 660 /dev/capi20
  chgrp uucp /dev/capi20

ausgeführt. Die Berechtigungen für das Interface werden für den späteren Hylafaxdienst erweitert, die Gruppe uucp benötigt Schreibzugriff auf das Device.

  • Das Modul capidrv.o ist sozusagen die Zwischenschicht zwischen der CAPI und dem Isdn4linux-System.
  • Die capi4k-utils sollten IMHO nicht mehr nötig sein, da isdn4linux alles nötige mitbringt.
  • Bei den capi4k-utils wird das pppd-capiplugin mitgeliefert. Mit diesem kann man sich auch sehr einfach ins Internet einwählen, beispieldateien sind ebenfalls vorhanden.

Die Ausgabe von /sbin/lsmod sollte ähnlich aussehen:

  capidrv                26612   4
  isdn                   97696   3 [capidrv]
  b1isa                   3932   1
  b1                     18080   0 [b1isa]
  capi                   18048   6
  capifs                  4000   1 [capi]
  kernelcapi             30272   6 [capidrv b1isa capi]
  capiutil               15488   0 [capidrv kernelcapi]

Ein /usr/bin/capiinfo zeigt den Controller an, beispielsweise für eine AVM B1 (Auszug):

  Number of Controllers : 1
  Controller 1:
  Manufacturer: AVM GmbH
  CAPI Version: 2.0
  Manufacturer Version: 3.100-02  (49.2)
  Serial Number: 0510624
  BChannels: 2
  Global Options: 0x00000039
   internal controller supported
   DTMF supported
   Supplementary Services supported
   channel allocation supported (leased lines)
  B1 protocols support: 0x4000001f
   64 kbit/s with HDLC framing
   64 kbit/s bit-transparent operation
   V.110 asynconous operation with start/stop byte framing
   V.110 synconous operation with HDLC framing
   T.30 modem for fax group 3
   ...

 

capi4hylafax  
seitenanfang
 
avm

extern capi4hylafax ist auf dem AVM FTP Server zu finden.
ich rate die Software vom AVM FTP Server zu beziehen, die Versionen auf ftp.in-berlin.de sind meist etwas älter und benötigen noch den Hylafax Quellcode zum kompilieren.Ein simples

  ./configure --with-hylafax-spooldir=/var/spool/fax/
  make
  make install

verrichtet seinen Dienst. Die Hylafaxsoftware muss ebenfalls mit /var/spool/fax als Spoolverzeichniss übersetzt werden, während des Buildprozesses wird dies abgefragt. Im Prinzip funktioniert der Faxempfang im Stand alone Betrieb, es muss nur noch die beigepackte config.faxCAPI editiert und nach /var/spool/fax/etc kopiert werden. Es soll aber erst das Faxpaket fertiggestellt werden und im Zusammenspiel mit der Faxsoftware Hylafax gebracht werden.

 

Hylafax  
seitenanfang
 
hylafax

Die extern Hylafax Software muss während des Übersetzens noch an das Spoolverzeichniss angepasst werden.

  HylaFAX configuration parameters (part 1 of 2) are:

  [ 1] Directory for applications:        /usr/local/bin
  [ 2] Directory for lib data files:      /usr/local/lib/fax
  [ 3] Directory for lib executables:     /usr/local/sbin
  [ 4] Directory for system apps:  	  /usr/local/sbin
  [ 5] Directory for manual pages:        /usr/local/man
  [ 6] Directory for HTML documentation:  /var/httpd/htdocs/hylafax
  [ 7] Directory for spooling:            /var/spool/hylafax
  [ 8] Directory for uucp lock files:     /var/lock
  [ 9] Uucp lock file scheme:             ascii
  [10] PostScript imager package:         gs
  [11] PostScript imager program:         /usr/bin/gs
  [12] Manual page installation scheme:   bsd-source-cat
  [13] Default page size:                 ISO A4
  [14] Default vertical res (lpi):        98

Der Menüpunkt 7 entsprechend auf /var/spool/fax setzen, ausserdem habe ich noch die Seitengrösse [13] auf A4 gesetzt. Ein nützliches feature ist die HTML-Dokumentation, die direkt per [6] in ein Dokumentverzeichniss des Webservers installiert werden kann. Nach der Installation durch make install wird noch durch ein Menü geführt um Ortseinstellungen, Vorwahl, LogLevel etc. zu ermitteln. Nähere Angaben zu den Optionen sind in der mitgelieferten Hylafaxdokumentation unter setup-advanced zu finden. Die Einstellungen werden nach /var/spool/fax/etc/config geschrieben. Der Software selbst muss noch mitgeteilt werden das die capi4hylafax zum Senden benutzt werden muss, da ja eine ISDN Karte eingebaut ist. Dazu wird die Option SendFaxCmd mit dem Wert /usr/local/bin/c2faxsend belegt und der Konfigurationsdatei hinzugefügt.

  LogFacility:		daemon
  CountryCode:		49
  AreaCode:		0261
  LongDistancePrefix:	0
  InternationalPrefix:	049
  DialStringRules:	etc/dialrules
  ServerTracing:	527
  MaxDials:		3
  MaxSendPages:		30
  MaxTries:		1
  ModemGroup:		"any:^faxCAPI$"
  SendFaxCmd:		"/usr/local/bin/c2faxsend"
  SessionTracing:	527

Mit /usr/local/sbin/c2faxrecv -f TIFF wird der Dienst für eingehende Faxe gestartet und an Hylafax weitergereicht. Der Stand Alone Mode ist wichtig, da nur _dann_ die MSN der Zielnummer mit durchgereicht wird!
Abschließend noch den Hylafax Dienst selbst starten: /etc/init.d/hylafax start

Note:Nimmt der Hylafax Server ausgehende Faxe an, versendet diese aber nicht (bsp. nach einem Neustart), muss der Software nocheinmal die faxCAPI bekannt gemacht werden, die wird per faxmodem faxCAPI erledigt.

Verteilung der Faxe anhand der MSN | DDI  
seitenanfang
 
msn2mail

System zur automatisierten Faxverteilung:

Das Perlscript verteilt eingehende Faxe anhand der MSN die von c2faxrecv der AVM capi4hylafax Utilities empfangen wurden (im sog. Stand Alone Modus). Es erlaubt ein separates Dateiformat auf Benutzerbasis sowie Gruppenfaxe (kann natürlich auch über Aliase des Mailserver gehandhabt werden). Somit ist eine eigene Faxnummer pro Benutzer möglich, soweit es die MSN-Vergabe oder DDI ermöglichen (bei einer Telephonanlage spielt die Anzahl der MSN eine untergeordnete Rolle). Jedes eingehende Fax wird automatisiert anhand der gewählten Nummer an den konfigurierten Benutzer versandt. Damit die gewählte Nummer übertragen wird muss

  • a) der ISDN-Controler im P2P (Point2Point, Anlagenanschluss) betrieben werden, somit übernimmt die Karte die Kontrolle über einen ganzen Durchwahlblock (DDI).
  • b) oder der c2faxrecv im Standalone Mode gestartet werden. Somit kann auch eine Verteilung im Mehrgeräteanschluss (MSN) gewährleistet werden. Dies ist natürlich auch nur im grüösseren Stil mit einer Telephonanlage sinnvoll.

Der Tarball enthält zwei wichtige Skripte:

faxnotify.capi: trifft ein Facsimile ein wird es von c2faxrecv aufgerufen, es kopiert einfach nur die Eingangsdatei in einen Spoolbereich und legt eine dazugehörige Logdatei an (Absender,Zielnummer,Auflösung etc.). Es muss als ausführendes Skript in der Konfiguration eingetragen werden, das Schlüsselwort lautet FaxRcvdCmd. [/var/spool/fax/etc/config.faxCAPI] ... FaxRcvdCmd: /var/spool/fax/bin/faxnotify.capi distribfax: perlscript, verarbeitet die von faxnotify angelegten info-Dateien, liest die Benutzereinstellungen und versendet das Fax im definierten Format an den Benutzer (e.g. per mail). Abhängig vom Eingangsformat der Faxe (tiff oder sff) wird distribfax ohne beziehungsweise mit der Option -t aufgerufen damit der Dateityp bestimmt ist, der konvertiert und verschickt werden soll.

Software, die im Skript genutzt wird und als Voraussetzung gilt:

Damit die Skripte erfolgreich abgearbeitet werden können werden diese in einer Verzeichnisstruktur erwartet,
die auch distribfax nutzt. Das Wurzelverzeichnis wäre dann /var/spool/fax:

    /---bin/----distribfax
		faxnotify.capi
		fax2ps
		fax2pdf
		convert		# Only if c2faxrecv writes tiff
		sff2misc	# Only if c2faxrecv writes sff files
	etc/
	lib/----num_user
		user_opt
	log/
	info/
	recvq/
	tmp/
	incoming

sff2misc konvertiert die von capifaxrecv geschriebenen sff Dateien in postscript, tiff etc. Es wird von distribfax benötigt falls
c2faxrecv die Eingangsfaxe im sff Format abspeichert ( c2faxrecv -h). Wird c2faxrecv im TIFF Mode betrieben wird convert
aus dem ImageMagick Paket benötigt, fax2ps ist in den tiff-utils enthalten.

num_user und user_opt sind distribfax Konfigurationsdateien, diese bestimmen welches Fax wie zum Benutzer geleitet wird.
Zudem kann jeder Benutzer eine .isdnfax.cfg Datei in $HOME anlegen (readable by uucp) ,die das Dateiformat bestimmt:

Fileformat: PS.GZ

Erlaubt sind PNG, GIF or PS or PSZ (for windows users).

Neu: PDF

Wird der Hylafax Dienst vom Systembenutzer gestartet ändert dieser seine Privilegien auf den Benutzer uucp,daher muss dieser auch Schreibzugriff auf /dev/capi20 haben. Das Skript hat noch einen Schönheitsfehler, daher muss dem Benutzer uucp noch ein Leserecht auf EMail Temporärdateien, die mutt anlegt, gestattet werden. Um dies zu umgehen habe ich sudo installiert und dem Benutzer uucp den Aufruf von mutt als privilegiertem Benutzer gestattet.

 [/etc/sudoers]
 ...
 uucp    ALL=(ALL) NOPASSWD: /usr/bin/mutt
 ...



left  Allgemeines
ISDN Einwahlserver  right
 
Seitenanfang
           © 2003 by Wolfgang Wilhelm • mail:   wwilhelm at rz-online dot de handmade by xemacs   Valid XHTML 1.0!
Last modified: Tuesday, 11-Apr-2006 11:02:42 CEST
counter