OTRS - Faxgateway (fax2mail & mail2fax)

Howto's zu OTRS Themen. Keine neuen Topics mit Fragen in diesem Forum!
Post Reply
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

OTRS - Faxgateway (fax2mail & mail2fax)

Post by Andre Bauer »

OTRS - Faxgateway (Ubuntu Server 9.10 / OTRS 2.4.7)

Folgendes Howto dient dazu, Faxe mittels Hylafax als PDF in das OTRS
einzupflegen und auch damit zu verschicken. Außerdem ist es damit
möglich, Briefe über ein firmeninternes Faxgerät in eine eigene
"Briefqueue" einzupflegen. Das ganze läuft bei mir Ubuntu Server 7.10
und OTRS 2.2.4. (Zeichensatz UTF8), lässt sich aber sicher auch auf
andere Distributionen übertragen.

1.) Als erstes werden alle nötigen Packete installiert:

Code: Select all

apt-get install hylafax-server hylafax-client a2ps imagemagick fetchmail recode metamail mailtextbody
Ubuntus Apt löst die nötigen Abhängigkeiten selbst auf. Gegebenen
Falls musst du das bei einer anderen Distribution selbst machen.
Falls einige Pakete noch konfiguriert werden müssen, sollten die
Standardwerte die richtige Wahl sein. Bei mir war nur das Papierformat
einzustellen, welches aber schon richtig auf "A4" stand.


2.) Danach muss das Faxsetup aufgerufen werden:

Code: Select all

faxsetup
Falls ein paar Warnhinweise kommen, das einige Dateien fehlen, könnt
Ihr diese erstmal ignorieren und die gestellten Fragen alle mit "yes"
beantworten.


3.) Das Faxsetup ruft nun automatisch das Modemsetup auf, wenn vorher alle
Fragen mit "yes" beantwortet wurden. Als erstes wird der Port
abgefragt, an den euer Modem angeschlossen ist. Ich habe hier den
vorgeschlagenen COM1 (ttyS0) verwendet. Als nächstes kommt der Country
Code, der in Deutschland "49" ist. Danach kommt der Area Code. Nehmt
für diesen eure Vorwahl, ohne die führende 0. Als nächstes muss
nochmal die komplette Nummer mit Ländercode und Vorwahl eingegeben
werden. Orintiert euch einfach am vorgegebenen Beispiel. Nun wird der
Absendername abgefragt. Hier kann etwas beliebiges eingetragen werden,
wie z.B. "Support". Die nächsten Abfragen können alle mit "Enter"
bestätigt werden, bis die Abfrage kommt, ob ein weiteres Modem
konfiguriert werden soll. Diese und die nächste Abfrage sollte mit "no"
beantwortet werden.
In den Tabellen unter folgendem Link sind nochmal alle Optionen genau
erklärt: http://www.easylinux.de/Artikel/ausgabe ... 016-faxen/


4.) Als nächstes muss die Datei "/var/spool/hylafax/etc/FaxDispatch"
angelegt werden, in der die Einstellungen zum Faxverssand an das OTRS
gespeichert werden. In die Datei kommt nun noch folgender Inhalt:

Code: Select all

FROMADDR=fax@domain.de;
SENDTO=otrs@domain.de;
TOADDR=otrs@domain.de;
FILETYPE=pdf;
NOTIFY_FAXMASTER=never;

#case "$SENDER" in
#03012345678) FROMADDR=brief@domain.de;;
#esac
Die ersten 4 Zeilen sollten selbsterklärend sein. Der Teil danach ist
optional und daher erstmal auskommentiert. Er ist dafür zuständig, dass
Faxe die von einer bestimmten Nummer kommen eine andere "From" Adresse
bekommen und somit später anders vom OTRS gefiltert werden können.
Dies kann dazu verwendet werden, um z.B. Briefe als PDF in das OTRS
einzupflegen. Wenn man so ein Fax von einer internen Nummer schickt
entstehen dadurch natürlich auch keine Kosten durch Telefongebühren.


5.) Wenn man im Betreff der erzeugten Mail später nur die Telefonnummer
des Absenders haben möchte, sollte man das Template der verwendeten
Landessprache ändern. Dies ist zu empfehlen, da die Ticket ID schon
viel Platz weg nimmt und es sonst passieren könnte, dass die Nummer
im OTRS nicht komplett angezeigt wird.

In "/var/spool/hylafax/etc/templates/en/faxrcvd-success.txt"

Suche nach:

Code: Select all

Subject: Fax receivd from $SENDER
Ersetz durch:

Code: Select all

Subject: $SENDER
Es muss also eine E-Mail Adresse eingerichtet werden, über die das Fax
an das OTRS gesendet wird. Die entsprechenden Teile der Datei müssen
natürlich an eure Gegebenheiten angepasst werden. Die Datei muss die
Dateirechte "0400" haben und dem User "uucp" gehören.

Damit sollte euer Server schonmal Fax empfangen können und in das OTRS
einpflegen. Ihr braucht dazu nur noch einen Postmasterfilter
einrichten, der nach der E-Mail Adresse filtert und in die Faxqueue
sortiert.


6.) Damit Ihr aus dem OTRS auch Faxe versenden könnt, ist es nötig,
dass die mit dem OTRS versendeten Faxantwortmails von Fetchmail abgeholt
werden. Fetchmail führt dann nach dem Empfang aller Mails ein Script
aus, welches die empfangene Mail in ein faxbares Format umwandelt und
letztendlich an die entsprechende Nummer faxt.

Achtung! OTRS darf die Mails nicht base64 codiert senden, damit es
funktioniert.

Als erstes muss also eine Datei "/root/.fetchmailrc" angelegt werden, die
folgenden Inhalt haben muss:

Code: Select all

poll mail.domain.de
        proto pop3
        user "fax"
        pass "yourpass"
        is faxmaster
        postconnect "/var/spool/hylafax/bin/mail2fax.sh"
Die Variablen "user", "pass" und "poll" müssen natürlich wieder nach
euren Gegebenheiten angepasst werden.

Damit man Fetchmail nicht manuell aufrufen muss sollte es im Daemon
Mode aufgerufen werden oder ein Cronjob angeelgt werden der das aller
10 Minuten für euch übernimmt. Für den Daemon Mode gebt folgendes auf
der Shell ein:

Code: Select all

fetchmail -d 600 -L syslog -f /root/.fetchmailrc
Um es per Cronjob zu erledigen, müsst Ihr folgende Zeile zu der Datei
" /var/spool/cron/crontabs/root" hinzufügen:

Code: Select all

0,10,20,30,40,50 * * * * fetchmail -L syslog -f /root/.fetchmailrc

7.) Das Script welches von Fetchmail aufgerufen wird, habe ich unter
"/var/spool/hylafax/bin/mail2fax.sh" abgelegt. Es hat folgenden
Inhalt:

Code: Select all

#!/bin/bash
#
# Mail2fax for OTRS
#
# by monotek
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

#config
OTRS_MAIL="support@domain.de"
AUTH_MAIL="(support|sales)@domain.de"
FAX_MAIL="faxsupport@domain.de"
MAILBOX="/var/mail/faxmaster"
FIRMFAX="03012345689"
DIALPREFIX="0"
TEMP_DIR="/tmp/faxtmp"
FAX_BACKUP="yes"
BACKUP_DIR="/var/spool/hylafax/backup"
HOLD="30"
SENDMAIL="/usr/sbin/sendmail"
DATE=`date '+%G%m%d%H%M%S'`

function send_errormail (){
    (echo "To: ${OTRS_MAIL}"
    if [ -z "${3}" ]; then
        echo "From: Fax Server <${FAX_MAIL}>"
    else
        echo "From: ${3}"
    fi
    echo "X-Loop: yes"
    echo "Subject: ${1}"
    echo ""
    echo ""
    echo "      !!! ACHTUNG FEHLER !!! "
    echo ""
    echo "      ${2}"
    echo ""
    ) | 2>&1 ${SENDMAIL} -oi ${OTRS_MAIL}
}



# script
sleep 20
test -d ${TEMP_DIR} || rm -r ${TEMP_DIR}
if [ -e ${MAILBOX} ]; then
    mkdir -p ${TEMP_DIR}
    csplit -f ${TEMP_DIR}/mail_ -n 3 -k -s -z ${MAILBOX} '/^From .*@.*\..*/' '{*}'

    for COUNT in `ls ${TEMP_DIR} | grep mail_\[0-9\] | sed 's/mail_//'`; do

        # check if sender is allowed to send mail
        if [ -z "`egrep "^From:.*${AUTH_MAIL}>$" < ${TEMP_DIR}/mail_${COUNT}`" ]; then
            send_errormail "Fax auth error" "
                Faxsender ist nicht zum versenden autorisiert!

                Original From:
                `egrep "^From " < ${TEMP_DIR}/mail_${COUNT}`

                Original Subject:
                `egrep "^Subject: " ${TEMP_DIR}/mail_${COUNT}`

                Origianl Body:
                `sed '1,/^$/d' < ${TEMP_DIR}/mail_${COUNT}`" "`egrep "^From: .*@.*\..*" < ${TEMP_DIR}/mail_${COUNT} | sed 's/^From: //g'`"
        else
            # check if mail contains attachment
            if [ -n "`egrep "^Content-Type: multipart/mixed" < ${TEMP_DIR}/mail_${COUNT}`" ]; then
                send_errormail "`egrep "^Subject: " < ${TEMP_DIR}/mail_${COUNT} | sed 's/^Subject: //g'`" "
                    Das Fax wurde nicht versandt!

                    Ein Fax darf keine Attachments enthalten!

                    Das Fax bitte ohne Attachment erneut versenden!"
            else
                  # create fax
                 /var/spool/hylafax/bin/appendheaders.pl < ${TEMP_DIR}/mail_${COUNT} | sed -n '/^MIME-Version:/,$p' | mailtextbody | recode -p UTF-8..ISO-8859-15 | sed '/^.*HylaFAX Agent <.*@.*\..*>.*:/,$d' > ${TEMP_DIR}/fax_${COUNT}
            fi

            # get fax number from subject
            NR=`egrep "^Subject: " ${TEMP_DIR}/fax_${COUNT} | sed -e 's/Subject:.*\[.*\]//' -e 's/^\+*/00/' -e 's/[^[:digit:]]//g' -e 's/\(^0*490\|^0*49\|^000\)/0/'`

            # check if fax number is internal fax
            if [ "${NR}" = "${FIRMFAX}" ]; then
                send_errormail "`egrep "^Subject: " < ${TEMP_DIR}/fax_${COUNT} | sed 's/^Subject: //g'`" "
                    Das FAX wurde nicht versandt, da dies ein Brief ist!

                    Bitte Adresse des Kunden aus dem Fax entnehmen und per Briefpost antworten!"
            else
                if [ -n "`echo ${NR} | egrep ^[[:digit:]]\{3,\}$`" ]; then
                    # send fax
                    a2ps -1 -c -q -B --borders=no -o - < ${TEMP_DIR}/fax_${COUNT} | sendfax -d ${DIALPREFIX}${NR}
                else
                    # send error mail
                    send_errormail "`egrep "^Subject: " < ${TEMP_DIR}/fax_${COUNT} | sed 's/^Subject: //g'`" "
                        Das FAX wurde nicht versandt!

                        Bitte Fax-Nummer im Betreff prüfen und erneut versenden!

                        Die Faxnummer muss hinter der Ticketnummer stehen!

                        Die Nummer muss mindestens 3 Stellen haben."
                fi
            fi
        fi
    done

    # faxbackup
    if [ "${FAX_BACKUP}" = yes ]; then
        test -d ${BACKUP_DIR}/${DATE} || mkdir -p ${BACKUP_DIR}/fax_${DATE}
        cat ${MAILBOX} >> ${BACKUP_DIR}/faxbackup
        cp ${TEMP_DIR}/fax* ${BACKUP_DIR}/fax_${DATE}
        find ${BACKUP_DIR} -type d -mtime +${HOLD} -regex ^${BACKUP_DIR}/fax_[0-9]*$ -exec rm -r {} \;
    fi
    rm -r ${TEMP_DIR} ${MAILBOX}
fi
Dieses Bash Script ist das Herzstück des Faxversands. Die oberen
Config-Zeilen müssen noch an eure Bedürnisse angepasst werden.

Die Variable "OTRS_MAIL" ist eure Otrs E-Mail Adresse, von der Ihr
Mails mit dem OTRS versendet.

Die Variable "FAX_MAIL" ist die Adresse an die Mails geschickt werden,
die in Faxe umgewandelt werden sollen.

Wenn ihr Briefe mit eurem Firmenfaxgerät digitalisieren wollt, die
dann auch ins Otrs eingepflegt werden, müsst Ihr bei der Variable
"FIRMFAX" die Faxnummer eures Firmenfaxgerätes eintragen. Dies ist
nötig, da die Agenten im OTRS öfters vergessen, das Sie den Brief mit
der Briefpost beantworten müssen. Sie bekommen dann eine Antwort, dass
das Ganze mit der Briefpost raus muss.

Das Script ist außerdem so abgesichert, dass nur Faxe versendet
werden, die von der unter der Variablen "OTRS_MAIL" angegebenen Adresse
verschickt werden. Wenn jemand versucht von einer anderen E-Mail
Adresse ein Fax abzusetzen, wird dies Mail, mit dem Betreff "Fax auth
error", in das OTRS umgeleitet, so dass ihr auch keine Mail verpasst.
Das Ganze ist also gleichzeitg eine Art Spamschutz.

Außerdem können die versendeten Faxe gebackupt werden, wenn Ihr das
wollt (Variable "FAX_BACKUP").

Das Script fängt außerdem ab, wenn die ermittelte Telefonnummer
"unlogisch" ist. Unlogisch bedeutet die Nummer ist kürzer als 3
Stellen. Der Agent der die Mail versendet bekommt dann ne Mail in das
Ticket im OTRS, mit der Aufforderung die Nummer zu prüfen.

Es wird davon nicht abgefangen, wenn z.B. 12 mal besetzt oder der
Anschluss nicht erreichbar ist. Solche Faxe wandern weiterhin ins
Nirvana. Man kann das nur anhand der Hylafax Sendqueue mittels der
Shell oder dem Webmin Modukl sehen. Also sollte man da ab und zu mal
reinsehen....


8.)Das Mail2fax.sh Script ruft außerdem noch ein Perlscript auf, welches
die Header der Mail noch dem Text vorstellt, so das der Kunde die
Ticket ID aus dem Betreff und die Absenderadresse bekommt, um später
auch per Mail auf ein Fax antworten zu können. Das Perlscript muss
unter "/var/spool/hylafax/bin/appendheaders.pl" abgelegt werden und
hat den folgenden Inhalt:

Code: Select all

#!/usr/bin/perl
# Martin Domig - Wed Aug  7 16:49:19 CEST 2002

$textplain = 0;
$appendhdr = 0;

while(<STDIN>) {
        print $_;

        if(/^From:/) { ($from)=(/From: (.*)/); }
        if(/^To:/) { ($to)=(/To: (.*)/); }
        if(/^Subject:/) { ($subject)=(/Subject: (.*)/); }
        if(/^Date:/) { ($date)=(/Date: (.*)/); }
        if(/^Cc:/) { ($cc)=(/Cc: (.*)/); }

        if(/^Content\-Type: text\/plain/) {
                # headers ausgeben nur wenn content type text/plain
                $textplain = 1;
        }

        if(/^\s*$/) {
                # Leerzeile
                if(($appendhdr == 0) && ($textplain != 0)) {
                        # Headers ausgeben

#                       print("--- APPENDED HEADERS\n");
                        if($from) { print("From: $from\n"); }
#                       if($to) { print("To: $to\n"); }
                        if($subject) { print("Subject: $subject\n"); }
                        if($date) { print("Date: $date\n"); }
                        print("\n");
                        print("\n");
                        print("\n");
#                       if($cc) { print("Cc: $cc\n"); }
#                       print("--- APPENDED HEADERS END\n");

                        # ...und zwar nur ein mal
                        $appendhdr = 1;
                }
        }

}


9.)Um zu verhindern, dass jedes versendete Fax ein Deckblatt bekommt,
müsst Ihr in der Datei "/var/spool/hylafax/etc/hyla.conf" die
folgende Zeile ändern.
Suchen nach:

Code: Select all

# AutoCoverPage:          No
Ersetze mit:

Code: Select all

AutoCoverPage:          No
Außerdem habe ich in dieser Datei gleich noch das Seitenformat, die
Auflösung des Faxes sowie das Datumsformat eingestellt. Fügt dazu
folgendes am Ende der Datei hinzu:

Code: Select all

PageSize:       a4
VRes:   196
DateFormat:     ""%H:%M:%S %d.%m.%y""
Einziger Punkt der jetzt noch beachtet werden sollte ist, dass der Inhalt
von "/var/spool/hylafax/etc" komplett in "/etc/hylafax" kopiert werden
sollte, damit die Dateien den gleichen Inhalt haben. Danach Hylafax noch
mittels "/etc/init.d/hylafax resart" neu starten. Damit sollte nun auch der
Faxversand funktionieren und das Faxgateway komplett eingerichtet sein.


10.) Quellen und weitere Links zum Thema:

http://www.tecchio.net/webmin/hylafax/

Unter dem ersten Link gibt es übrigens noch ein Hylafax Webmin Modul,
mit dem man den Fax Server überwachen kann...

http://www.hylafax.org/

http://www.linuxpunk.org/mail2fax/

http://www.linuxnetmag.com/de/issue8/m8hylafax1.html

http://www.debianhowto.de/de:howtos:sar ... x_avm_isdn

http://wiki.ifax.com

http://www.linux-magazin.de/Artikel/aus ... /capi.html





Ich hoffe man kan mit dem Howto was anfangen :-)
Falls es noch Kritik und Anregungen geben sollte, lasse ich diese gern
noch in das Howto einfließen...
Last edited by Andre Bauer on 16 Jun 2006, 16:10, edited 16 times in total.
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

Post by Andre Bauer »

Ich habe das Ganze jetzt noch so angepasst, dass der Faxversand auch mit Base64 kodierten Mails klar kommt. Das ist der Fall wenn man das OTRS mit dem Zeichensatz UTF-8 betreibt.
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
InFashion
Znuny newbie
Posts: 3
Joined: 20 Jun 2007, 10:42

OTRS - Faxgateway

Post by InFashion »

Das Tutorial ist ja mal eine feine Sache aber:

Wie kann ich dann aus dem OTRS Faxe versenden? Muss OTRS weiter Konfiguriert werden? Habe leider nichts gefunden.

Danke vorab, Jan
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

OTRS - Faxgateway

Post by Andre Bauer »

Steht doch alles da (ab 6.)?
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
InFashion
Znuny newbie
Posts: 3
Joined: 20 Jun 2007, 10:42

OTRS - Faxgateway

Post by InFashion »

Ich meine das wie folgt, ist es nicht möglich bei Ticket

Antwort erstellen (E-Mail):
# empty answer

Kunden kontaktieren (Telefon):
# Anruf

----------------------------------------------------------
Kunden kontaktieren (Fax):
# Bla 1
# Bla 2
----------------------------------------------------------

hinzuzufügen und so ein Fax zu versenden?
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

OTRS - Faxgateway

Post by Andre Bauer »

Nein. Du antwortest einfach auf das eingegangene Fax, so wie auf ne normale E-Mail.
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
InFashion
Znuny newbie
Posts: 3
Joined: 20 Jun 2007, 10:42

OTRS - Faxgateway

Post by InFashion »

Ok dann ist es klar. Na dann werde ich wohl die nötige Erweiterung selbst schreiben müssen.

Danke für die Hilfe
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

OTRS - Faxgateway (fax2mail & mail2fax)

Post by Andre Bauer »

Habe das Howto überarbeitet und auf Ubuntu Server 7.10 angepasst.
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Post Reply