Anleitung: Hylafax mit Asterisk
Asterisk
Da Asterisk selber keine ausreichende native Unterstützung von Fax mitbringt, wird der Faxserver Hylafax oft über
virtuelle Modems an Asterisk angebunden.
Die Kommunikation zwischen den beiden wird durch das virtuelle Modem IAXmodem
hergestellt, das sich als IAX-Endgerät an Asterisk anmeldet.
Endsprechend sind die folgenden Einträge je Modem in der /etc/asterisk/iax.conf
vorzunehmen.
[general]
bindport=4569
bindaddr=127.0.0.1
iaxcompat=yes
minregexpire = 40
maxregexpire = 3600
disallow=all
allow=alaw
autokill=yes
[iaxmodem0]
type=friend
secret=Passwort
port=4570
host=dynamic
context=fax-out
requirecalltoken=no
…
Da jedes Modem nur jeweils ein Fax zur Zeit abarbeiten kann, müssen für mehrere simultane Faxe
eine entsprechende Anzahl an virtuellen Modems (mit unterschiedlichen Ports)
installiert werden.
In der /etc/asterisk/extensions.conf
werden die Anrufe
an die Modems mit den jeweiligen Rufnummern weitergeleitet, um
davon abhängig die Faxe zu weiterzuleiten.
[fax-in]
exten=>_X.,1,NoOp(Fax Kontext entered)
exten=>_X.,n,Dial(IAX2/iaxmodem0/${EXTEN},15,r)
exten=>_X.,n,Dial(IAX2/iaxmodem1/${EXTEN},15,r)
exten=>_X.,n,Congestion()
exten=>_X.,n,Hangup()
[fax-out]
exten => _X.,1,Set(CALLERID(num)=XXXXXX)
exten => _X.,n,SetTransferCapability(3K1AUDIO)
exten => _X.,n,Dial(WOOMERA/g1/${EXTEN})
IAXmodem
Die entsprechenden Modems werden durch entsprechende Files in
/etc/iaxmodem/
konfiguriert.
Das File für das erste Modem sollte ttyIAX0
heißen und folgendes beinhalten:
device /dev/ttyIAX0
owner uucp:uucp
mode 660
port 4570
refresh 50
server 127.0.0.1
peername iaxmodem0
secret Passwort
codec alaw
Die angegebenen Daten (insb. peername
,
secret
und port
)
müssen mit denen aus der iax.conf
übereinstimmen.
Damit iaxmodem
(und HylaFAX) ordentlich beim Booten gestartet wird,
sollte die /etc/inittab
um ein paar Zeilen ergänzt werden.
ia0:23:respawn:/usr/bin/iaxmodem ttyIAX0
ia1:23:respawn:/usr/bin/iaxmodem ttyIAX1
…
hy0:23:respawn:/usr/sbin/faxgetty ttyIAX0
hy1:23:respawn:/usr/sbin/faxgetty ttyIAX1
…
/etc/init.d/hylafax restart
HylaFAX
HylaFAX kann nun die — von iaxmodem
bereitgestellten —
(virtuellen) seriellen Modems mit dem Namen ttyIAX0
bzw.
ttyIAX1
ansprechen.
Empfangene Faxe werden automatisch per E-Mail verschickt, sofern die
Variable SENDTO
in der Datei /var/spool/hylafax/etc/FaxDispatch
entsprechend gesetzt wird.
Für eine individuelle Zustellung kann die Variable $CALLID4
verwendet werden,
welche die an iaxmodem
übermittelte Rufnummer beinhaltet.
Damit lässt sich bspw. die zu einer Rufnummer gehörende E-Mail aus einem Text-File
emails.txt
herauslesen:
LANG=de_DE
DEST_EMAIL=$(/bin/grep $CALLID4 /etc/hylafax/emails.txt | /bin/sed -e 's/^.* \(.*\)$/\1/g')
if [ $DEST_EMAIL == "NIL" ];
then
SENDTO=defaultFax@
voiscout.de
FILETYPE=pdf
else
SENDTO=$DEST_EMAIL
FILETYPE=pdf
fi
Das File emails.txt
beinhaltet die Rufnummern und E-Mails der Personen
82242457 ifax@
voiscout.de
85105679 ifax@ voiscout.com
ISDN-Karte
Wird Asterisk an einem Anlagenanschluss mit unterschiedlich langen Rufnummern betrieben, so werden möglicherweise analog anwählende Faxe nicht empfangen, weil die vollständige Rufnummer nicht erkannt wird. Dieses Problem kann (bei Sangoma-Karten) gelöst werden, indem man (an geeigneter Stelle) in der/etc/wanpipe/smg_bri.conf
die Nachwahl von Ziffern aktiviert:
;num_digits=8
in_calls_behaviour=TRANSPARENT_OVERLAP_RCV
in_calls_behaviour=VOICE_ALERT_RQ
In der /etc/asterisk/extensions.conf
sollte man dann bei
zu kurzen Rufnummern einfach auf die Nachwahl warten. Dies kann beispielsweise wie
folgt aussehen:
exten => _XXXXXZ,1,NoOp(Es fehlen 2 Stellen)
exten => _XXXXXZ,n,Wait(25)
exten => _XXXXXZX,1,NoOp(Es fehlt 1 Stelle)
exten => _XXXXXZX,n,Wait(25)
exten => _XXXXXZXX,1,NoOp(Rufnummer komplett)
Sofern die Zuordnung als Fax über die angewählte Nummer erfolgt,
sollte die Fax-Erkennung auf der ISDN-Karte ausgeschaltet sein.
Diese bewirkt nämlich lediglich, dass bei einem eingehenden Fax zu der Extension
fax
gesprungen wird, welches aber aufgrund der
seperaten Rufnummer unerwünscht ist.