englisch | deutsch

Qualifizierter Fax-Sendebericht im PDF-Format mit HylaFAX

Faxen am VOIP-Anschluss mit Asterisk und HylaFAX unter Debian Wheezy auf einem Dockstar

III. Installation des HylaFAX-Servers mit IAXmodem und Exim

Auch der HylaFAX-Server (Version 6.0.6) ließ sich problemlos über die Paketverwaltung installieren und dank umfangreicher Dokumentation leicht einrichten. Lediglich die Installation von IAXmodem (Version 1.2.0) über den Paketmanager führte zu Problemen, weshalb IAXmodem aus den Quellen kompiliert werden sollte. Exim ist unter Debian in der Regel vorinstalliert und wird für den Versand von Faxbenachrichtigungen per E-Mail verwendet.

3.1 Installation von IAXmodem

Die Installation von IAXmodem über den Debian-Paketmanager mittels

$ apt-get install iaxmodem

führte bei meinen ersten Versuchen zunächst zu einem scheinbar funktionierenden Ergebnis.

Das IAXmodem ließ sich fehlerfrei einrichten und mit HylaFAX und Asterisk verbinden. Es meldete einen unauffälligen Online-Status und schien erreichbar und faxbereit zu sein. Beim Versuch, Faxe über das Modem zu versenden, kam es jedoch jedes Mal zu einem unerklärlichen "No carrier"-Fehler, der darauf hindeutet, dass kein Faxsignal von der Gegenseite erkannt wird. Audio-Mitschnitte zeigten, dass sich die Fax-Gegenseite korrekt meldete.

Das Problem konnte schließlich durch das Kompilieren von IAXmodem aus den Quellen gelöst werden. Das Modem funktionierte danach fehlerfrei und der 'No carrier'-Fehler trat nicht mehr auf.

$ apt-get install install g++ libtiff-tools libtiff4 libtiff4-dev
$ cd /usr/src/
$ wget https://downloads.sourceforge.net/iaxmodem/iaxmodem-1.2.0.tar.gz
$ tar -xvzf iaxmodem-1.2.0.tar.gz
$ cd iaxmodem-1.2.0
$ ./configure && make
$ cp iaxmodem /usr/bin/

Dabei wird die Binary-Datei aus der Paketinstallation einfach mit der selbst kompilierten Datei überschrieben. Die vorherige Installation über den Paketmanager hat dabei den Vorteil, dass u.a. ein passendes init.d-Skript angelegt wird und man sich darum nicht mehr selber kümmern muss.

Nach der Installation muss IAXmodem konfiguriert werden. Hierzu wird eine Konfigurationsdatei neu angelegt:

$ touch /etc/iaxmodem/ttyIAX0

Das Modem wird mit den folgenden Angaben eingerichtet:

device /dev/ttyIAX0 owner uucp:uucp mode 660 port 4570 refresh 60 server 127.0.0.1 peername iaxmodem secret passwmod codec ulaw nojitterbuffer

Als 'owner' wird der Benutzer angegeben unter dem HylaFAX ausgeführt wird. Als Port wird der bei der Asterisk-Einrichtung gewählte Port '4570' eingestellt. Auch das Passwort ('passwmod') wird auf den in Asterisk eingestellten Wert gesetzt. Als Codec wird nur ulaw zugelassen, da es bei der Verwendung von alaw zu Verbindungsproblemen (typischerweise in Form von 'Congestion'-Fehlern) des Modems kommen kann. Das Modem erneuert seine Anmeldung am Asterisk alle 60 Sekunden.

Wenn der Server fertig eingerichtet ist, ist es wichtig, dass IAXmodem vor dem Start von HylaFAX geladen wird. Dies sollte bei der Einrichtung der init.d-Skripte durch den Paketmanager im Normalfall automatisch berücksichtigt werden. Überprüfen kann man das mit einem Blick in das Verzeichnis:

/etc/rc2.d/

Hier sollte, nachdem die Einrichtung des Faxservers abgeschlossen ist, IAXmodem vor HylaFAX stehen, also eine kleinere Startziffer haben, z.b. 'S03iaxmodem' versus 'S04hylafax'.

Die '2' in 'rc2.d' steht für den Runlevel 2. Betreibt man den Server in einem anderen Runlevel, so schaut man in das entsprechende Verzeichnis mit der passenden Ziffer.

Alternativ kann man auch durch das Anlegen zweier Einträge in

/etc/inittab

sicherstellen, dass IAXmodem beim Systemstart mitgestartet wird, und einen getty-Prozess einrichten, der auf Verbindungen am IAXmodem achtet:

IA00:23:respawn:/usr/bin/iaxmodem ttyIAX0
mo00:23:respawn:/usr/local/sbin/faxgetty ttyIAX0

Dies hat den Nachteil, dass für jedes zusätzlich eingerichtete Faxmodem manuell ein weiterer Eintrag in 'inittab' ergänzt werden muss. Wählt man diesen Weg, sollte man außerdem das Autostart-Skript

etc/init.d/iaxmodem

entfernen, da sonst überzählige Instanzen von IAXmodems gestartet werden, die dann u.a. abweichende Ports wählen. Dies fällt z.B. auf, wenn man im Asterisk-CLI die IAX-Geräte abfragt:

asterisk*CLI> iax2 show peers

Hier sollte das eingerichtete Modem mit der korrekten Adresse und dem richtigen Port erscheinen:

Name/Username    Host                 Mask             Port          Status
iaxmodem         127.0.0.1       (D)  255.255.255.255  4570          OK (1 ms)
1 iax2 peers [1 online, 0 offline, 0 unmonitored]

An dieser Stelle würde man auch sehen, wenn bei der IAX-Einrichtung die Calltokens nicht deaktiviert wurden. Das IAXmodem kann sich dann nicht korrekt am Asterisk-Server anmelden und wird in der Liste der IAX-Geräte ohne korrekte IP-Adresse angezeigt.

Schließlich werden noch zwei Logfiles für das Modem und ein Ordner für ältere Logfiles angelegt:

$ mkdir /var/log/iaxmodem
$ mkdir /var/log/iaxmodem/old
$ cd /var/log/iaxmodem/
$ touch ttyIAX0
$ touch iaxmodem

Damit ist die Installation des Modems abgeschlossen. Mittels eines System-Neustarts wird überprüft, ob das Modem beim Start des Servers ordnungsgemäß mitgeladen wird. Ansonsten lässt sich IAXmodem auch wie folgt neustarten:

$ /etc/init.d/iaxmodem restart

Die Installation und Konfiguration von IAXmodem wird auch in dem bereits erwähnten Asterisk-Buch von Stefan Wintermeyer detailliert beschrieben und erläutert, auf das ich daher hier noch einmal hinweise.

3.2 Installation von HylaFAX

Für die Installation des HylaFAX-Servers über den Debianpaketmanager mittels

$ apt-get install HylaFAX-server

und die anschließende Einrichtung über

$ faxsetup

empfehle ich ebenfalls einen Blick in das Asterisk-Buch von Stefan Wintermeyer. Der detaillierte Ablauf der Installation ist dort ausführlich dargestellt und erläutert.

Wesentlich sind bei der Konfiguration des Faxmodems mittels 'faxsetup' die korrekte Angabe des seriellen Ports, an dem das Modem betrieben wird (hier 'ttyIAX0') und die passende Einstellung der eigenen Rufnummer und Vorwahlen. Abgesehen davon können die von der Setup-Routine vorgeschlagenen Standardwerte übernommen werden. Das Faxmodem sollte bei der Einrichtung als Class-1-Modem erkannt werden. Dies ist u.U. noch einmal manuell zu bestätigen.

Damit sind HylaFAX und IAXmodem im Prinzip fertig eingerichtet und es kann ein erstes Fax versendet werden:

$ sendfax -n -d +4912349988773 /etc/hosts

Mit dem HylaFAX-Befehl 'sendfax' würde in diesem Beispiel der Inhalt der Datei '/etc/hosts' an die Rufnummer +49 (1234) 9988773 gesendet; durch das Argument '-n' ohne die automatische Erstellung eines Deckblattes.

Sollen weitere IAXmodems eingerichtet werden, geht man für die zusätzlichen Modems wie zuvor beschrieben vor und legt jeweils einen Eintrag in 'iax.conf' (Asterisk) und eine IAXmodem-Konfigurationsdatei (z.B. ttyIAX1, ttyIAX2, ...) an. Desweiteren richtet man für jedes Modem eine passende HylaFAX-Konfigurationsdatei ein (z.B. config.ttyIAX1, config.ttyIAX2, ...). In dem Verzeichnis

/var/spool/hylafax/

muss außerdem für jedes weitere Modem eine passende FIFO-Datei (z.B. FIFO.ttyIAX1, FIFOttyIAX2, ...) angelegt werden. Dies kann über den Aufruf von

$ faxaddmodem

oder (am Beispiel 'ttyIAX1') wie folgt umgesetzt werden:

$ mkfifo /var/spool/hylafax/FIFO.ttyIAX1

Anschließend lädt man die Asterisk-Konfiguration neu ein und startet IAXmodem und HylaFAX neu:

$ asterisk -r

asterisk*CLI> reload
asterisk*CLI> exit

$ /etc/init.d/iaxmodem restart
$ /etc/init.d/hylafax restart

Für den Betrieb mehrerer Modems unter HylaFAX verweise ich ansonsten auf die HylaFAX-Dokumentation.

HylaFAX bietet nun eine Fülle von Anpassungsmöglichkeiten. Zunächst wenden wir uns aber dem MTA (Mail Transfer Agent) zu, über den HylaFAX u.a. die Faxbestätigungen versenden soll. Hier kommt Exim (Version 4.80) zum Einsatz.

3.3 Einrichten von Exim

Exim ist unter Debian in der Regel bereits installiert, kann ansonsten jedoch über den Paketmanager nachinstalliert werden:

$ apt-get install exim4

Die Konfiguration von Exim erfolgt durch den Aufruf von:

$ dpkg-reconfigure exim4-config

Mit diesem Befehl können auch später die Einstellungen angepasst und neu eingelesen werden. Die eigentliche Konfigurationsdatei von Exim befindet sich unter:

/var/lib/exim4/config.autogenerated

Diese wird in der Regel nicht von Hand editiert, sondern automatisch aus Templates erstellt. Wird bei der Einrichtung ausgewählt, dass eine einzige Datei für die Einstellungen genutzt werden soll, so liegt das passende Template unter:

/etc/exim4/exim4.conf.template

In dieser Datei kann man bei Bedarf individuelle Anpassungen vornehmen. Es wird bei der Erstellung der Konfigurationsdatei außerdem die Datei

/etc/exim4/update-exim4.conf.conf

eingebunden, in der die Angaben aus dem Aufruf von 'dpkg-reconfigure exim4-config' gespeichert werden. Weitere Makros können in der Datei

/etc/exim4/exim4.conf.localmacros

hinterlegt werden. Auch diese wird beim Erstellen der Konfigurationsdatei berücksichtigt.

Ich habe für Exim den E-Mailversand über einen Smarthost gewählt und hierfür ein eigenes Mail-Postfach eingerichtet. Für den Mailversand benötigt Exim daher die Zugangsdaten zum Smarthost-Konto. Diese werden in der Datei

/etc/exim4/passwd.client

eingetragen. Diese Datei, in der das Passwort im Klartext gespeichert wird, wird mittels

$ chown root:Debian-exim /etc/exim4/passwd.client
$ chmod 640 /etc/exim4/passwd.client

so gut wie möglich abgesichert.

Möchte man sinnvollerweise nur verschlüsselten Mail-Transport zulassen und ein Fallback auf unverschlüsselte Verbindungen verhindern, so fügt man in 'exim4.conf.template' unter den beiden 'transports' "remote_smtp" und "remote_smtp_smarthost" nach dem Eintrag 'driver = smtp' folgene Zeilen hinzu und ergänzt ggf. fehlende Zertifikate:

hosts_require_tls = * # requires tls for all hosts
tls_tempfail_tryclear = false # prevents fallback to unencrypted transfer
tls_verify_certificates = /etc/ssl/certs/ca-certificates.crt

Anschließend muss die Exim-Konfigurationsdatei neu erstellt und Exim neu gestartet werden. dies kann über einen erneuten Aufruf des eingangs erwähnten Konfigurationsprogramms oder folgendermaßen erfolgen:

$ update-exim4.conf
$ /etc/init.d/exim4 restart

Mehr gibt es an dieser Stelle zu Exim nicht zu sagen.

Anfang | zurück | vor | Ende