• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

FaxDispatcher

Hallo,

nach dem ich mir nun aus diversen HowTo`s ne Lösung zusammengebastelt habe hier noch eine letzte Frage...

Ich habe Hylafax / AVM FritzCard und ne FaxDispatcher Lösung die sieht folgendermaßen aus:
__________________________________________________
case "$7" in 3xx830) SENDTO="p.tester"; FILETYPE=pdf;;
esac

case "$7" in 3xx544) SENDTO="percy"; FILETYPE=pdf;;
esac

case "$7" in *) SENDTO="percy"; FILETYPE=pdf;;
esac

/usr/bin/tiff2ps -a $FILE | lpr
MIMENCODE=/var/spool/hylafax/bin/uuencode_it;
_____________________________________________________

Funktioniert auch prima... die Faxe werde ins PDF gewandelt und per Postfix nach Cyrus ausgeliefert.. Prima Horde Frontend machst dann noch nett zugänglich.

ABER.. musste ja was kommen
Beim Test ist mir aufgefallen das bestimmte Faxe, keine Zielrufnummer Hylafax übergeben... wie auch immer. Unten ein Beispiel: Das erste Fax habe ich über die andere ISDN Leitung mit nem normalen Faxgerät an die Faxnummer geschickt.. (nicht intern) . Im Log sieht man unten das das prima empfangen wurde und die $7 erkannt wurde.. Die Weiterleitung per Mail funktionierte so....

Nun der zweite Test.. Log weiter unten.. Ein Fax aus dem 1und1 Kundenbereich.. für 24Cent Kommt auch an aber im LOG erkennt man das die MSN nicht angegeben wird.. daher wohl auch keine Auswertungsmöglichkeit für den FaxDispatch`er... Somit auch keine Mail sondern nur ein Fax im SambaShare.

Meine Frage nun:

Kann man es so einrichten das alle "nichterkannten" an eine "Sammelmail" gehen.. zB FaxMaster.. wichtig hierbei: nur die "nichterkannten" ??

oder

Liegt hier meinerseits ein Konfigurationfehler wegen der "Nichterkennung" vor.

Oben in der Fettgedruckten Zeile mein Versuch mit "case 7$ in *)" ... klappt aber nicht.. jemand ne Idee??




[ 3704]: c2faxrecv - INFO: SESSION END
[ 7714]: c2faxrecv - INFO: Connection established.
[ 7714]: c2faxrecv - INFO: StationID = 05xxxxxxxx
[ 7714]: c2faxrecv - INFO: BaudRate = 9600
[ 7714]: c2faxrecv - INFO: Write fax in path /var/spool/hylafax to file recvq/fax00001.tif.
[ 7714]: c2faxrecv - INFO: Page 1 was received. - Last Page!
[ 7714]: c2faxrecv - INFO: Fax received and calling '/var/spool/hylafax/bin/faxrcvd "recvq/fax00001.tif" "faxCAPI" "00000001" "" "05xxxxxxxx" "" "3xx830"'.
[ 7714]: c2faxrecv - INFO: Connection is droped with reason 0x3400 (No additional information).
[ 7714]: c2faxrecv - INFO: SESSION END
[ 7714]: c2faxrecv - INFO: SESSION BEGIN 00000007 +49.5xxx.3xx830
[ 7714]: c2faxrecv - INFO: Incoming speech call on controller 1 to 3xx830.
[ 3704]: c2faxrecv - INFO: SESSION BEGIN 00000008 +49.5xxx.3xx830
[ 3704]: c2faxrecv - INFO: Incoming speech call on controller 1 to 3xx830.
[ 3704]: c2faxrecv - INFO: Connection is droped with reason 0x3304 (Another application got that call).
[ 3704]: c2faxrecv - INFO: SESSION END
[ 7714]: c2faxrecv - INFO: Connection established.
[ 7714]: c2faxrecv - INFO: StationID = +49
[ 7714]: c2faxrecv - INFO: BaudRate = 14400
[ 7714]: c2faxrecv - INFO: Flags = HighRes, MMR_compr
[ 7714]: c2faxrecv - INFO: Write fax in path /var/spool/hylafax to file recvq/fax00002.tif.
[ 7714]: c2faxrecv - INFO: Page 1 was received. - Last Page!
[ 7714]: c2faxrecv - INFO: Fax received and calling '/var/spool/hylafax/bin/faxrcvd "recvq/fax00002.tif" "faxCAPI" "00000007" "" "+49'.
[ 7714]: c2faxrecv - INFO: Connection is droped with reason 0x3400 (No additional information).
[ 7714]: c2faxrecv - INFO: SESSION END




Grüsse
Percy
 
Hallo Percy,

Wir sind momentan auch dabei auf den Frosch aufzuspringen.
wenn ich dich Richtig verstehe willst du alle unbekannten Faxe an ein bestimmtes ziel senden.

Dies wird bei uns so realisert, dass die Datei /var/spool/hylafax/etc/FaxDispatch vor der Case anweisung die Variable "SENDTO=FAXMASTER" füllt! so werden Standardmäßig alle Faxe an den FAXMASTER gesendet.
Da nach dem Füllen der Variablen SENDTO aber noch die case Anweisung durchlaufen wird, kann in Fall einer Übereinstimmung die Variable SENDTO überschrieben werden.

In der bin/faxrcvd wird die Variable CIDNAME mit $7 gefüllt

Auszug aus der FaxDispatch

SENDTO=FaxMaster
FILETYPE=tif

CASE "$CIDNAME" in ...........
 
Hallo Percy

Kann es sein, das c2faxrecv die werte unvollständig übergibt?

nach meiner meinung fehlt mir hinter der "+49' die Anführungszeichen!!

Bei dir im log:
c2faxrecv - INFO: Fax received and calling '/var/spool/hylafax/bin/faxrcvd "recvq/fax00002.tif" "faxCAPI" "00000007" "" "+49'.


nach meiner Meinung:
c2faxrecv - INFO: Fax received and calling '/var/spool/hylafax/bin/faxrcvd "recvq/fax00002.tif" "faxCAPI" "00000007" "" "+49"'.
 
Hallo,

habe bei mir das gleiche Problem. Bzw. habe bei mir in der FaxDispatch nur FILETYPE=pdf; SENDTO=faxmaster; zu stehen, also keinerlei Bedingungen.
Wenn jetzt ein Fax reinkommt, mit übermittelter Faxnummer, dann funktioniert der Dispatcher und in den Logs erscheint der vollständige Befehlsaufruf:

Code:
Fax received and calling '/var/spool/hylafax/bin/faxrcvd "recvq/fax00003.tif" "faxCAPI" "0000
0003" "" "+49 30 absendernummer" "" "zielnummer"'

wenn jedoch keine nummer übermittelt wird, dann erscheint sie, wie schon oben abgehackt und es wird keine pdf erzeugt und auch keine mail verschickt.

Code:
Fax received and calling '/var/spool/hylafax/bin/faxrcvd "recvq/fax00007.tif" "faxCAPI" "0000
0007" "" "+49'.

Grüße
mogli
 
Kann das sein, dass FaxCAPI eine falsche Konfiguration hat?
Denn wie ich das sehe wird faxrcvd schon falsch aufgerufen!! da fehlt ein "
 
ja genau und das passiert, wenn der gegenüber keine stationID, bzw. MSN mitsendet, dann kommt dieser abgehackte aufruf und es passiert nix weiter, außer das das Fax abgeleget wird im recv-Ordner.
Wenn aber alles mitgesendet wird, dann erscheint bei mir der Aufruf komplett, mit abschließendem " und es wird auch ein pdf erzeugt und eine mail verschickt.
Liegt das dann an der faxCAPI oder an dem Programm c2faxrcv selbst, welches den Aufruf von faxrecvd startet?
Hab auch schon mal spaßeshalber eine andere Version von c2faxrcv getestet...aber nur die kompilierte version der datei ausgetauscht, mit der installierten version, aber dann erscheint beim starten nur der Fehler " faxCAPI modem wedged" o.ä.
Komplett alles aus den Sourcen zu basteln hab ich noch nich getestet.
Das beste aber ist, das das so schon mal bei mir funktioniert hat, also bei allen Faxen die ankamen und erst seitdem ich bei meinem Debian ein Upgrade gemacht habe, tritt das jetzt auf.
Welche Versionen habt ihr denn von capi4hylafax, bzw. hylafax, etc. ?
Ich hab hier folgende Versionen:
hylafax: 4.2.1-5sarge3
capi4hylafax: 01.02.03-10
fritz: fcpci-suse93-3.11-07.tar.gz
 
hallo,

habe das gleiche Problem - die eingehende Faxe kommen auf dem Server an und liegen auch unter /recvq.
Leider werden diese Faxe nicht per email wie in der /etc/users definiert an die entsprechende email-adr. versendet?

versuche das ganze derzeit auf einem SuSE 10.1, Hylafax 4.2.5-14, kernel 2.6.16.21-0.13-smp

habe aktuell einen Hylafax-Sever unter SuSE 9.0 am laufen.
Funktioniert auch ohne Prob.

kann leider derzeit nicht richtig erkennen wo der Fehler liegt.
Wenn ich in der /bin/faxrcvd eine richtige email-Adr. bei SENDTO eintrage, kommt das fax auch als email an.

Hoffe mir kann jemand helfen?

Danke.

Gruss
 
morbus schrieb:
hallo,

habe das gleiche Problem - die eingehende Faxe kommen auf dem Server an und liegen auch unter /recvq.
Leider werden diese Faxe nicht per email wie in der /etc/users definiert an die entsprechende email-adr. versendet?

versuche das ganze derzeit auf einem SuSE 10.1, Hylafax 4.2.5-14, kernel 2.6.16.21-0.13-smp

habe aktuell einen Hylafax-Sever unter SuSE 9.0 am laufen.
Funktioniert auch ohne Prob.

kann leider derzeit nicht richtig erkennen wo der Fehler liegt.
Wenn ich in der /bin/faxrcvd eine richtige email-Adr. bei SENDTO eintrage, kommt das fax auch als email an.

Hoffe mir kann jemand helfen?

Danke.

Gruss

bei mir muss man die email SENDTO Vaiable in /var/spool/hylafax/etc/FaxDispatch füllen dann funktioniert das auch!! wenn das nicht laufen sollte würde ich mal deine faxrcvd posten.
 
die SENTO Variable im FaxDispatch wird doch wenn ich es richtig verstanden habe von der /etc/users gefüllt.

verwende ich das alte faxrcvd-Script von SuSE 9.0 funktioniert die Zustellung per email.

Hier mal ein Auszug aus der faxrcvd, aber es ist nicht geändert bis auf die Umstellung auf pdf-Anhang

Code:
#
# faxrcvd file devID commID error-msg
#

if [ $# -lt 4 ]; then
    echo "Usage: $0 file devID commID error-msg [ callID-1 [ callID-2 [ ... [ callID-n ] ] ] ]"
    exit 1
fi

test -f etc/setup.cache || {
    SPOOL=`pwd`
    cat<<EOF


FATAL ERROR: $SPOOL/etc/setup.cache is missing!

The file $SPOOL/etc/setup.cache is not present.  This
probably means the machine has not been setup using the faxsetup(8C)
command.  Read the documentation on setting up HylaFAX before you
startup a server system.

EOF
    exit 1
}

# These settings may not be present in setup.cache if user upgraded and
# didn't re-run faxsetup; we set them before calling setup.cache for
# backward compatibility.
ENCODING=base64
MIMENCODE=mimencode
TIFF2PDF=bin/tiff2pdf
TTYCMD=tty

. etc/setup.cache

INFO=$SBIN/faxinfo
FAX2PS=$TIFFBIN/fax2ps
TIFF2PS=tiff2ps
TOADDR=FaxMaster
FROMADDR=fax
TIFFINFO=tiffinfo
NOTIFY_FAXMASTER=always
PS2PDF=ps2pdf

#
# Redirect errors to a tty, if possible, rather than
# dev-nulling them or allowing them to creep into
# the mail.
#
if $TTYCMD >/dev/null 2>&1; then
    ERRORSTO=`$TTYCMD`
else
    ERRORSTO=/dev/null
fi

#
# Permit various types of attachment types: ps, tif, pdf
# Note that non-ASCII filetypes require an encoder.
# pdf requires tiff2ps and tiff2pdf
#
# FILETYPE=ps #Default-Eintrag
FILETYPE=pdf
SENDTO=

#
# There is no good portable way to find out the fully qualified
# domain name (FQDN) of the host or the TCP port for the hylafax
# service so we fudge here.  Folks may want to tailor this to
# their needs; e.g. add a domain or use localhost so the loopback
# interface is used.
#
HOSTNAME=`hostname`                     # XXX no good way to find FQDN
PORT=4559                               # XXX no good way to lookup service

FILE="$1"; shift;
DEVICE="$1"; shift;
COMMID="$1"; shift;
MSG="$1"; shift;
COUNT=1
while [ $# -ge 1 ]; do
    # The eval has $1 set yet, and this forces a variable-to-variable
    # assignment, allowing us to not need to do escaping
    eval CALLID$COUNT='$1'
    shift
    COUNT=`expr $COUNT + 1`
done
CIDNUMBER="$CALLID1"
CIDNAME="$CALLID2"

FILENAME=`echo $FILE | $SED -e 's/\.tif//' -e 's/recvq\///'`
SENDER="`$INFO $FILE | $AWK -F: '/Sender/ { print $2 }' 2>$ERRORSTO | $SED 's/^.//'`"
SUBADDR="`$INFO $FILE | $AWK -F: '/SubAddr/ { print $2 }' 2>$ERRORSTO | $SED 's/^.//'`"

#
# Apply customizations.  All customizable variables should
# be set to their non-customized defaults prior to this.
#
if [ -f bin/FaxDispatch ]; then
    . bin/FaxDispatch           # NB: FaxDispatch sets SENDTO
fi

#
# Produce mailable encoding for binary files.
#
encode()
{
    if [ -x "$MIMENCODE" ]; then
        $MIMENCODE < $1 2>$ERRORSTO
    elif [ -x "$UUENCODE" ]; then
        if [ "$ENCODING" = "base64" ]; then
            $UUENCODE -m $1 $1 | grep -E -v "^begin|^====$" 2>$ERRORSTO
        else
            $UUENCODE $1 $1 | grep -E -v "^begin|^====$" 2>$ERRORSTO
        fi
    else
        # Do not use "-x" for backward compatibility; even if it fails
        # this is last chance to encode data, so there's nothing to lose.
        $MIMENCODE < $1 2>$ERRORSTO
    fi
}

if [ -f $FILE ]; then
    #
    # Don't send FaxMaster duplicates, and FaxMaster may not even
    # want a message at all, depending on NOTIFY_FAXMASTER.
    #
    case $NOTIFY_FAXMASTER$MSG in
        never*)         NOTIFY_FAXMASTER=no;;
        errors)         NOTIFY_FAXMASTER=no;;
        *)              NOTIFY_FAXMASTER=yes;;
    esac
    if [ "$TOADDR" != "$SENDTO" -a "$NOTIFY_FAXMASTER" != "no" ]; then
        (echo "To: $TOADDR"
         echo "From: The HylaFAX Receive Agent <$FROMADDR>"
         echo "Subject: Facsimile received from $SENDER";
         echo ""
         echo "$FILE (ftp://$HOSTNAME:$PORT/$FILE):"; $INFO -n $FILE
        echo "ReceivedOn: $DEVICE"
        if [ "$MSG" ]; then
            echo ""
            echo "The full document was not received because:"
            echo ""
            echo "    $MSG"
            echo ""
            echo "    ---- Transcript of session follows ----"
            echo ""
            if [ -f log/c$COMMID ]; then
                $SED -e '/-- data/d' \
                 -e '/start.*timer/d' -e '/stop.*timer/d' \
                 log/c$COMMID
            elif [ -n "$COMMID" ]; then
                echo "    No transcript available (CommID c$COMMID)."
            else
                echo "    No transcript available."
            fi
        else
            echo "    CommID: c$COMMID (ftp://$HOSTNAME:$PORT/log/c$COMMID)"
        fi
        if [ -n "$SENDTO" ]; then
            echo ""
            echo "The facsimile was automatically dispatched to: $SENDTO."
        fi
        ) 2>$ERRORSTO | $SENDMAIL -f$FROMADDR -oi $TOADDR
    fi

...
 
morbus schrieb:
die SENTO Variable im FaxDispatch wird doch wenn ich es richtig verstanden habe von der /etc/users gefüllt.

verwende ich das alte faxrcvd-Script von SuSE 9.0 funktioniert die Zustellung per email.

Hier mal ein Auszug aus der faxrcvd, aber es ist nicht geändert bis auf die Umstellung auf pdf-Anhang
Nein Die Variable SENDTO in der dem Script faxrcvd gefüllt.
Das Script faxrcvd zieht and er Stelle:
if [ -f bin/FaxDispatch ]; then
. bin/FaxDispatch # NB: FaxDispatch sets SENDTO
fi
die Datei /var/spool/hylafax/etc/FaxDispatch herran. Vorrausgesetzt sie ist vorhanden.

Du musst also deine E-mail zuordnungen direkt inder faxrcvd eintragen oder in die datei FaxDisptach.
 
Wir haben ein Perl script erstellt das von faxrcvd aufgerufen wird und die email addresse zu der rufnummer ausgibt.

Installationsanleitung:

1. das Script ind nach /var/spool/hylafax/etc/getemail kopieren !!! Wichtig die Default addresse MAX@Mustermann gegen die richtige Default addresse austauschen!!!

2. chmod 755 /var/spool/hylafax/etc/getemail

Code:
#!/usr/bin/perl
#
# getemail
# filtert die Email-dds aufgrund der angegebenen Rufnunmer aus
# der route.tbl
#
use warnings;
use strict;

my @adresses = ();      # alle gefundenen Adressen
my $defaultadresse = "Max@mustermann.de";

my $routetbl = "/var/spool/hylafax/etc/route.tbl";
my $Rufnummer = shift || die "Keine Rufnummer :$?\n";;

my @route;
open(ROUTE,"<$routetbl")|| die "Keine route.tbl :$?\n";
@route=<ROUTE>;
close ROUTE;


#foreach (grep /^$Rufnummer\s+/,@route) { push @adresses,m/(?<=NTS:)([-.\w]+\@[-.\w]+)/g }


if (my @liste = grep /^$Rufnummer\s+/,@route) {
        foreach (@liste) { push @adresses,m/(?<=NTS:)([-.\w]+\@[-.\w]+)/g; }
}else {
        push @adresses, $defaultadresse;

}


print join "," ,@adresses if exists $adresses[0];


3. Folgende Zeilen in die datei /var/spool/hylafax/etc/FaxDispatch eintragen:

Code:
FILETYPE=tif;                                   # in TIF format
SENDTO=`/var/spool/hylafax/etc/getemail ${CIDNAME}`

4. chmod 666 /var/spool/hylafax/etc/FaxDispatch
Damit sie der Faxuser uucp auch lesen kann

4. Die /var/spool/hylafax/etc/route.tbl erstellen!

Sie hat folgende Syntax:

DID-Rufnummer NTS: EMAIL1, NTS:EMAIL2, NTS:Email3

Code:
1002      NTS:Max@musterman.de, NTS:susi@musterman.de

die route.tbl muss für uucp lesbar sein
5. chmod 755 /var/spool/hylafax/etc/route.tbl
 
also ich habe das so verstanden,
faxrcvd übergibt Variable "$3" an FaxDispatch
anschliessend schaut die FaxDispatch in die etc/users und holt sich dort die email-adr. an die gesendet werden soll.

Das Problem ist aber wohl, dass die Variable $3 beim Test leer ist.
# ./bin/faxrcvd -f bin/FaxDispatch outgoingMSN targetMSN

Aendert man die FaxDispatch wie folgt kommt die entsprechende email-adr. zurück.

Code:
#
# Dispatch fax to email depending on own MSN or extention (ISDN lines)
# sourced from faxrcvd
#
if [ "$MSG" != "" ]; then
    PHONEMATCH=$MSG\$
    USERENTRY=`grep -v "^#" etc/users | grep "$PHONEMATCH"`
    if [ "$USERENTRY" != "" ]; then
        USERNAME=`echo $USERENTRY | awk '{print $1}'`
        SENDTO="$USERNAME"
        echo "sendto = $SENDTO"
    fi
fi
 
hallo,

hat den jemand noch eine Idee, weshalb die Uebergabe mit der Variablen $3 an FaxDispatch nicht funktioniert?

Gruss
 
Hallo,

also wie schon vermutet liegt es nicht an der faxrecvd sondern an der capi4hylafax, von der aus der faxrecvd Aufruf gestartet wird. Es lag auch nicht an der nicht gesendeten MSN, sondern (so scheint es zumindest bei den meisten zu sein), wenn die MSN nicht komplett übertragen wird, wie in dem folgenden xferfaxlog zu sehen ist. Der erste Eintrag so wie es richtig ist und der zweite am Beispiel von web.de wo statt Zahlen Sonderzeichen übertragen werden.

Code:
08/08/06 14:47  RECV    00000006        faxCAPI         ""      fax     "ZielMSN"      "SenderMSN"      267     1       0:25    0:16
08/08/06 18:33  RECV    00000010        faxCAPI         ""      fax     "ZielMSN"      "+49^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@" 267     1

Diese Sonderzeichen haben capi4hylfax aus dem Tritt gebracht. Dank dem debianforum und dem Maintainer von capi4hylafax gibts jetzt aber einer Version, die nicht mehr auf Sonderzeichen reagiert und den faxrecvd-Aufruf trotzdem korrekt ausgibt.
Klappt bei mir wunderbar. Zu bekommen ist die neue Version hier:

http://people.debian.org/~lmamane/capi4hylafax/

Das Paket ist für Debian gebastelt, aber evtl. ist es ja auch anpassbar oder mit alien umwandelbar in ein rpm. Kann ich aber hier nicht testen, evtl. hilfts aber jemanden weiter.

Grüße
mogli
 
Oben