Fax Versenden mit ISDN/CAPI

In den vorigen Artikeln haben wir gelernt wie man ein Fax empfangen kann, und wir können mittlerweile auch automatisiert anrufen. Schließlich haben wir gelernt unsere Asterisk durch AGI Skripte zu erweitern.
Das alles werden wir jetzt anwenden um Faxe zu versenden.

email2fax

Als erstes braucht Ihr das email2fax Skript von wpkg.org. Darin enthalten ist eine Datei "email2fax", die Ihr nach /usr/local/bin/ kopieren müsst.
Ihr solltet mindestens folgende Zeilen ändern:

FAXMAIL="Asterisk FAX <asterisk@example.com>"
und
CHANNEL="CAPI/ISDN1"
Zusätzlich muss (zumindest bei Debian) noch an drei Stellen "sendmail" durch "/usr/sbin/sendmail" geändert werden.

Sicherheit

Standardmäßig versendet das Skript alle eingehenden Mails. Damit nur autorisierte Benutzer Faxen dürfen, und nicht wildfremde Leute Fax-Spam über unsere Asterisk versenden, akzeptieren wir im folgenden nur Faxe in Mails, die digital signiert wurden, und deren Public Key in unserem Keyring vorhanden und auf trust gesetzt ist.
Das ist zwar immer noch etwas unsicher, da der Anhang und das Subject bei "inline PGP" nicht mitsigniert wird, aber das soll hier ja auch nur eine Anregung sein.

/usr/local/bin/signed-email2fax

#!/bin/sh

# Verwendung auf eigene Gefahr

RAN=${RANDOM}
MAIL=/tmp/txfax.${RAN}

cat > ${MAIL}

/usr/bin/gpg --verify ${MAIL} 2>&1 > /dev/null
sigok=$?

/usr/bin/gpg --verify ${MAIL} 2>&1 |grep WARN >/dev/null
signotrust=$?

if [ "${sigok}" == "0" -a "${signotrust}" == "1" ]; then
cat ${MAIL} | /usr/local/bin/email2fax
fi

rm ${MAIL}

/var/lib/asterisk/.procmailrc

:0fw
* ^From: .*(fax@example.com)
| /usr/local/bin/signed-email2fax

Funktionsweise

Wenn Ihr jetzt eine Mail mit einem PDF- oder TIFF-Anhang an Eure Asterisk sendet und der Absender vorgeblich fax@example.com ist, wird diese Mail via procmail an signed-email2fax weitergeleitet. Dort wird zuerst geprüft, ob die Signatur in Ordnung ist. Im Erfolgsfall wird die Mail schließlich an email2fax weitergereicht. Dort wird der Anhang extrahiert und an die in der Betreff-Zeile angegebene Fax-Nummer gesendet. Hierfür wird in /var/spool/asterisk/outgoing eine Datei angelegt, die die Asterisk zur Anwahl einer Nummer veranlasst und falls die Gegenstelle abhebt, die Application txfax - aus dem Paket asterisk-app-fax - aufruft.

Wie gesagt, um das ganze sicher zu machen, müsste man zumindest die Faxnummer noch signieren. Das könnte man dadurch bewerkstelligen, dass man die Faxnummer in den Body rein kodiert und das Skript etwas umbaut.
Das Attachment signieren ginge mit S/MIME, aber gnupg scheint da noch einen Bug zu haben, jedenfalls war es mir nicht möglich damit eine korrekte Signatur hinzubekommen.

Wenn Euch diese Seite weitergeholfen hat, dann verlinkt sie bitte. Ihr habt ein Problem? Fragen, Anregungen und Kritik bitte an feedback@lilalinux.net
Ihr könnt mich auch per ICQ erreichen: 1028730, sowie mit Jabber/GoogleTalk/XMPP: lilalinux@jabber.net-lab.net