Fax-over-IP: Hylafax mit t38modem und einer FritzBox am SIP-Anschluß nutzen

Update

Die unten beschriebene Lösung mit t38modem hat sich leider doch als recht unzverlässig gezeigt: das T38-Modem war oft nach mehreren Faxen für HylaFax nicht mehr ansprechbar. Deshalb habe ich umgestellt: HylaFaX kommunitiert nun mittels iaxmodem mit einem auf dem selben Rechner installiertem Asterisk-Server. Da SIP hinter NAT oft ein Problem darstellt, habe ich auf der FritzBox ein Telefoniegerät als LAN/WLAN-Telefon konfiguriert: dann dient die FritzBox als SIP-Server, an den sich der Asterisk-Server anmeldet und die Faxe versenden kann.

Hylafax und Asterisk (Debian Wheezy) laufen neben ein paar anderen Diensten auf einem kleinen A7-Cortex-Board (und dürften damit wunderbar sparsam sein.

... wie ich es ursprünglich versucht habe ...

Telefonanschlüsse für Normalhaushalte werden zunehmend als VoIP-Anschlüsse geschaltet, der eigentliche Verbindungsaufbau geschieht also über Internet-Protokolle. Der Versand von Faxen ist bei dem Verfahren oft etwas problematisch. Ich nutze für das lokale Netzwerk einen Hylafax-Server; lange wurde der mit einem USB-Modem an das Telefonnetz beziehungsweise an die FritzBox angeschlossen. Um den Verkabelugsaufwand kleiner zu halten und weil es mir eleganter erschien habe ich auf eine Lösung mit t38modem umgestellt.

.

Werbung: Bei der Bestellung von 1&1-Produkten freue ich über die Nutzung meines Profiseller Shops. Danke.

Voraussetzungen oder: Hardware und Software für meinen Aufbau

Einstellungen an der FritzBox

Vorbereitung der FritzBox: Unter "Telefonie", "Telefoniegeräte" auf den Button "neues Gerät einrichten" auswählen. Um diese Menüpunkte sichtbar zu machen muß unter Umständen die "Experten-Ansicht" an der FritzBox eingestellt sein.

Im Einrichtungsdialog nun ein mit der FritzBox verbundenes Telefon auswählen und im nächsten Dialog-Fenster "LAN/WLAN (IP-Telefon)" auswählen, einen Beliebigen Namen auswählen (etawa "Fax") und im nächsten Schritt das Passwort festlegen; angezeigt wird der bei der Anmeldung an der FritzBox zu benutzende Username ("620" in meinem Fall). Zuletzt ist noch die Telefonnummer zu wählen, über die ausgehende Faxe gesendet werden sollen. Vermutlich ist eine Nummer, bei der der Provider eine T38-Unterstütung bietet von Vorteil.

Nach Abschluß dieses Schrittes ist die FritzBox so eingerichtet, daß sie als SIP-Server fungiert, an dem sich SIP-Clients im lokalen Netzwerk mit Nutzername und Passwort anmelden können.

Einrichtung von t38modem

Start und Einrichtung von t38modem erfolgt über ein Init-Script /etc/init.d/t38modem und die Konfigurationsdatei /etc/default/t38modem. In der Konfigurationsdatei müssen Benutzername ("SIPUSER") und das dazugehörige Passwort ("SIPPASS") zur Anmeldung an der FritzBox ("SIPSERVER") gesetzt werden. Diese Datei sollte deshalb auch nur für root lesbar sein.

Wird das init-Script-gestartet, erstellt t38modem ein (oder mehrer) Modem-Devices, die von Hylafax zum Versenden der Faxe genutzt werden. Der Name des Devices lautet /dev/ttyT38-0. Durch setzen des entsprechenden Parameters in der Konfigurationsdatei können mehrere Modem-Devices erzeugt werden und von Hylafax genutzt werden. Dies könnte bei hohem Fax-Aufkommen sinnvoll sein, da Faxe parallel versendet werden können. Es ist dann aber notwendig, daß überhaupt zwei parallele SIP-Anmeldungen erfolgen können. Ich habe das weder bei der FritzBox noch bei 1und1 getestet.

/etc/init.d/t38modem

#!/bin/bash
#
# This script start and stop t38modem .
# It is driven by a configuration file sourced by this shell
# and called /etc/default/t38modem.

### BEGIN INIT INFO
# Provides:          t38modem
# Required-Start:    $syslog $network
# Required-Stop:     $syslog $network
# Should-Start:      $local_fs 
# Should-Stop:       $local_fs 
# X-Start-Before:    hylafax
# X-Stop-After:	     hylafax
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop the T38 Fax-oder-IP modems
# Description:       Start  t38modem. 
### END INIT INFO



# read the configuration
. /etc/default/t38modem


 
case "$1" in
          start)
                    COUNTER=0
                    CURRENT_PORT=${START_PORT}
 
                    while [  $COUNTER -lt $T38_PROCESSES ]; do
                              COMMAND="/usr/bin/t38modem -tt --no-h323 --sip-register $SIPUSER@$SIPSERVER,$SIPPASS --sip-old-asn --ptty +/dev/ttyT38-$COUNTER --route modem:.*=sip:@${SIPSERVER} --route sip:.*=modem:" 
 
                              exec $COMMAND > /dev/null 2>&1 &
 
                              PID=$!
 
                              echo "Starting t38modem /dev/ttyT38-$COUNTER with pid $PID (pidfile /var/run/t38modem/$COUNTER)"
 
                              echo $PID > /var/run/t38modem/$COUNTER
 
                              COUNTER=$[ COUNTER + 1 ]
                              CURRENT_PORT=$[ CURRENT_PORT + 1 ]
                    done
          ;;
          stop)
                    echo -n "Stopping t38modem pids: "
 
                    for pidfile in `ls /var/run/t38modem`
                    do
                              _PID=`cat /var/run/t38modem/$pidfile`
                              kill -9 $_PID
                              rm /var/run/t38modem/$pidfile
                              echo -n $_PID" "
                    done
                    echo " Done"
          ;;
          restart|force-reload)
          $0 stop
          $0 start
          ;;

          *)
                    echo "Usage: $0 {start|stop}" >&2
                    exit 1
          ;;
esac
 
exit 0

/etc/default/t38modem

T38_PROCESSES=1
START_PORT=6060
SIPSERVER=fritz.box
SIPUSER=620
SIPPASS=top-secret

Einrichtung von Hylafax

Wurde t38modem per Init-Script gestartet, kann mit der Einrichtung von Hylafax begonnen werden. Der Befehl

faxaddmodem /dev/ttyT38-0

richtet das von t38modem simulierte Modem zur Benutzung in Hylafax ein. Die Dialoge sind meist selbsterklärend, als Wahlregeln stelle ich etc/dialrules.europe ein. Nach einem Neustart von Hylafax sollte der Faxversand über SIP funktionieren.

Damit hylafax erst startet, nachdem t38modem läuft, habe ich t38modem unter "Should-Start" im Init-Script von hylafax ergänzt:

### BEGIN INIT INFO
# Provides:          hylafax
# Required-Start:    $syslog $remote_fs
# Required-Stop:     $syslog $remote_fs
# Should-Start:      $local_fs $network t38modem
# Should-Stop:       $local_fs $network t38modem
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop the hylafax server
# Description:       Start hylafax daemons. Otherwise stop all
#                    hylafax daemons except for daemon started
#                    by init.
### END INIT INFO

Links

Feedback

Anregungen? Verbesserungsvorschläge? Ich freue mich über eine Rückmeldung.


Sebastian Niehaus
Home

Sebastian Niehaus

Last modified: Tue Jul 22 21:13:18 CEST 2014
$Id: Hylafax-t38modem-AVM-FritzBox--Debian-Squeeze.html,v 1.4 2014/07/22 19:13:43 niehaus Exp $