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

[gelöst] Hylafax an Postfix-Mailserver anbinden

Hi,

ich habe einen Hylafax-Server und einen Mailserver (Postfix+CyrusIMAP) auf jeweils unterschiedlichen Suse10.1-Rechnern im Netzwerk.
Nun möchte ich den Hylafax an den Mailserver anbinden, sodass ich per eMail Faxe senden und empfangen kann.
Ich habe dazu zwar schon etliche Anleitungen gelesen, aber da wurde leider immer nur beschrieben, was zu tun ist, wenn Fax-und Mailserver auf ein und derselben Maschine installiert sind. Bei mir sind diese 2 Server aber getrennt voneinander.

Spezifikationen:
Faxserver-IP 10.0.0.8 (Suse10.1; Hylafax)
Mailserver-IP 10.0.0.1(Suse10.1; Postfix+CyrusIMAP, inkl. LDAP)
Beide befinden sich in der Domaine firma.local

Gibts für mein Szenario eine Anleitung:
1. Wie ich Postfix vom Hylafax mitteilen soll?ß
2. Wie der Faxversand/-Empfang per Mail mit 2 getrennten Servern zu konfigurieren ist?ß
3. Wie ich die Faxnummer <-----> Mailadresse -Zuordnung konfigurieren muss?

Danke und Gruß


PS: Der Hylafax schickt bei einem Faxeingang immer eine Mail an root auf dem Faxserver. Hierfür habe ich eigentlich gar nichts konfiguriert (ist wohl standardmäßig so?!)!
Code:
Jul  8 08:29:13 lto postfix/pickup[7106]: 9DDB2258E4: uid=33 from=<fax>
Jul  8 08:29:13 lto postfix/cleanup[7339]: 9DDB2258E4: message-id=<20080708062913.9DDB2258E4@lto.firma.local>
Jul  8 08:29:13 lto postfix/qmgr[3572]: 9DDB2258E4: from=<fax@lto.firma.local>, size=687, nrcpt=1 (queue active)
Jul  8 08:29:13 lto postfix/local[7341]: 9DDB2258E4: to=<root@lto.firma.local>, orig_to=<FaxMaster>, relay=local, delay=0, status=sent (delivered to mailbox)
Jul  8 08:29:13 lto postfix/qmgr[3572]: 9DDB2258E4: removed
In der /var/spool/fax/etc/users habe ich schonmal einen (LDAP)User angegeben, der eine Mail bekommen soll... aber es fehlt hierfür wahrscheinlich noch die korrekte Postfix-Anbindung?
 

whois

Ultimate Guru
Hi

Puh das habe ich auch noch nicht gemacht und da muss ich mich erst rein denken.

Sieh dir mal Punkt 4-6(Client Zugriff ermöglichen) an.

FAQ
 
OP
M

magic_halli

Hacker
whois schrieb:
Hi

Puh das habe ich auch noch nicht gemacht und da muss ich mich erst rein denken.

Sieh dir mal Punkt 4-6(Client Zugriff ermöglichen) an.

FAQ

ABer ist mein Vorhaben erstmal generell machbar mit meiner Systemlandschaft???

Zusätzliche Frage: Für Suse10.1 sieht meine /var/spool/fax/etc/hosts.hfaxd so aus, um erstmal generell jedem Client Zugriff auf den Hylafax zu gewähren:
Code:
localhost
127.0.0.1
10.0.0.1
10.0.0.8
^.*@.*
 
OP
M

magic_halli

Hacker
magic_halli schrieb:
whois schrieb:
Hi

Puh das habe ich auch noch nicht gemacht und da muss ich mich erst rein denken.

Sieh dir mal Punkt 4-6(Client Zugriff ermöglichen) an.

FAQ

ABer ist mein Vorhaben erstmal generell machbar mit meiner Systemlandschaft???

Zusätzliche Frage: Für Suse10.1 sieht meine /var/spool/fax/etc/hosts.hfaxd so aus, um erstmal generell jedem Client Zugriff auf den Hylafax zu gewähren: (gibt doch sicherlich syntaktische Unterschiede zw. Debian und Suse?!)
Code:
localhost
127.0.0.1
10.0.0.1
10.0.0.8
^.*@.*
 

whois

Ultimate Guru
magic_halli schrieb:
ABer ist mein Vorhaben erstmal generell machbar mit meiner Systemlandschaft???
Ich denke ja, aber wie gesagt da muss ich mich erst rein fühlen das habe ich so noch nicht in Angriff genommen.
magic_halli schrieb:
Zusätzliche Frage: Für Suse10.1 sieht meine /var/spool/fax/etc/hosts.hfaxd so aus, um erstmal generell jedem Client Zugriff auf den Hylafax zu gewähren:
Code:
localhost
127.0.0.1
10.0.0.1
10.0.0.8
^.*@.*
Das ist auch OK so.
Wie gesagt gib mir ein bisschen Zeit das ist neu für mich.
Im Moment habe ich beruflich zuviel im Kopf um dafür Platz zu schaffen. :wink:
 
OP
M

magic_halli

Hacker
So, ich habe inzwischen bisl rumprobiert... leider noch ohne Erfolg. Ich berichte aber mal mein bisheriges vorgehen:

Auf dem Mailserver (10.0.0.1)
1. hylafax-client installiert, damit Programm faxmail vorhanden ist
2. User fax (Gruppen: uucp,dialout) angelegt
3. /etc/postfix/master.cf erweitert:
Code:
fax   unix   -   n   n   -   1   pipe
  flags=R user=fax argv=/usr/bin/faxmail -d -n ${user}
4. /etc/postfix/main.cf erweitert:
Code:
fax_destination_recipient_limit = 1
5. /etc/postfix/transport erweitert:
Code:
lto.firma.local   fax:10.0.0.8
(--> lto ist der Name vom Faxserver; firma.local die interne Domain; 10.0.0.8 ist die IP vom Faxserver; habe hier auch bereits verschiedenste Kombinationen mit *.firma.local versucht...)
6. # postmap /etc/postfix/transport
7. # rcpostfix restart

8. eMail an '046011@lto.firma.local' aus der Groupware heraus, welche ja direkt an den Mailserver angebunden ist, verschickt.
Hier erhalte ich jedoch im mail.log vom Mailserver eine Fehlermeldung:
"ul 8 13:24:53 v1 postfix/pipe[6693]: 01EF13F9EF: to=<046011@lto.firma.local>, relay=fax, delay=0, status=bounced (Command died with status 255: "/usr/bin/faxmail". Command output: faxmail: Can not reach server at host "localhost", port 4559.. )"
Mh, faxmail soll ja auchnicht den localhost, sondern den Faxserver ( 10.0.0.8 ) erreichen! :?

Soviel zu meinen ersten Gehversuchen der Anbindung von Hylafax und Postfix auf jeweils 2 getrennten Servern... vielleicht trägt das ja schonmal produktiv zu Problemlösung bei?!

Gruß
 

pft

Advanced Hacker
Hallo magic_halli

ich denke postfix und faxmail nur auf separaten Servern wird nicht gehen. faxmail nimmt (lt. man page) input über stdin entgegen und das ist ja keine netzwerkfähige Schnittstelle.

Du könntest aber auf dem hylafax server einen postfix installieren, der nur die Mails vom eigentlichen Mailserver per smtp annimmt und lokal an faxmail weiterreicht.

Ich meine das brauchst Du ohnehin um die Faxquittungen und die Eingangsmeldungen zu versenden, oder?

Du müsstest nur die beiden Mailserver richtig aufeinander abstimmen. Dein Ansatz war ja schon ganz viel versprechend.
 
OP
M

magic_halli

Hacker
Du könntest aber auf dem hylafax server einen postfix installieren, der nur die Mails vom eigentlichen Mailserver per smtp annimmt und lokal an faxmail weiterreicht.

Ich meine das brauchst Du ohnehin um die Faxquittungen und die Eingangsmeldungen zu versenden, oder?

Du müsstest nur die beiden Mailserver richtig aufeinander abstimmen. Dein Ansatz war ja schon ganz viel versprechend.

Das leuchtet mir ein - beide Postfix´ für Faxempfang/Faxsenden aneinander anbinden. Die große Frage ist nur... welche Einstellungen muss ich in den 2 Postfix´ jeweils vornehmen, damit nur bei Faxen eine Kommunikation stattfindet?!?!
Gibts dazu evtl. ne FAQ/HowTo etc.?

Auf dem Hylafax (10.0.0.8) habe ich einen Postfix installiert und in der main.cf die Einstellung:
Code:
relayhost = 10.0.0.1
erstmal hinzugefügt, um an den eigentlichen Mailserver (10.0.0.1) den Trafic weiterzuleiten. Somit wäre das Tor doch erstmal pauschal offen?!
Fragt sich nur, wie die master.cf entsprechend zu bearbeiten ist!

@whois:
Ich finde im Moment auch kein Werkzeug das zu umgehen. :?
Nur ich meine ich hätte schon mal davon gelesen.
Schade dass Du´s nicht findest - wäre natürlich super, wenns da auchnoch ne andere Möglichkeit geben würde.

Gruß
 
OP
M

magic_halli

Hacker
Zwischenbericht:
Bei einem Faxeingang(am 10.0.0.8) erhalte ich jetzt eine eMail am Mailserver(10.0.0.1) mit dem Fax als pdf im Anhang! Also der Postfix auf dem Faxserver hat nun durch die Eintragung von 'relayhost=10.0.0.1' erstmal Zugang zum eigentlichen Mailserver.
Allerdings funktioniert diese Mailweiterleitung aber leider statisch, d.h. die Mailadresse, die ich in der /var/spool/fax/bin/faxrcvd bei 'SENDTO' eintrage, dorthin wird auch eine Mail mit dem Fax als pdf im Anhang geschickt.

Ich dachte eigentlich, das durch das Zusammenspiel von
/var/spool/fax/etc/users
/var/spool/fax/bin/FaxDispatch
/var/spool/fax/bin/faxrcvd
diese Art der Faxweiterleitung per Mail, in Abhängigkeit der eingehenden Fax-MSN, zu lösen sei?!
Hier mal meine var/spool/fax/etc/users:
Code:
ich@firma.de 15
Hier meine /var/spool/fax/bin/FaxDispatch:
Code:
if [ "$7" != "" ]; then
    PHONEMATCH=$7\$
    USERENTRY=`grep -v "^#" etc/users | grep "$PHONEMATCH"`
    if [ "$USERENTRY" != "" ]; then
	USERNAME=`echo $USERENTRY | awk '{print $1}'`
	FILETYPE=pdf
	SENDTO="$USERNAME"
    fi
fi
Hier der relevante Auszug meiner /var/spool/fax/bin/faxrcvd:.
Code:
# 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=/usr/bin/tiff2pdf
TTYCMD=tty

. etc/setup.cache

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

#
# 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
FILETYPE=pdf
SENDTO=<hier irgendeine interne Adresse>@firma.de
Die letzte Zeile aus dem Auszug meiner faxrcvd ist ausschlaggebend dafür, an wen das Fax per Mail mit dem pdf als Anhang geht - unäbhängig von den User-MSN-Zuordnungen aus fax/.../users oder der fax/.../FaxDispatch!

Mh, doch diese 3 Dateien sind doch, denke ich, der richtige Weg für die Faxnummer-Mailadress-Zuordnung/Versendung, oder?! Wenn ich dies gelöst bekomme, dann funktioniert zumindest schonmal der Fax2Mail-Mechanismus!

Wie muß ich was korrekt einstellen, damit in Abhängigkeit der MSN an die entsprechende Mailadresse verschickt wird???

Gruß


PS: Im capifax.log ist bei einem eingehend Fax ja bereits die richitige MSN ersichtlich (hier die '15')
Code:
c2faxrecv - INFO: Incoming analog call on controller 1 from xxxxx46011 to 15
...verstehe deshalb nicht ganz, wieso die entsprechende Eintragung in der Datei users nicht berücksichtigt wird! :?
 

pft

Advanced Hacker
Eigentlich sollte FaxDispatch die SENDTO variable überschreiben. Somit wäre es egal was Du reinschreibst bzw. es würde nur angewandt, wenn in FaxDispatch was schief geht:

aus faxrvcd (bzw. faxrcvd.sh.in aus dem hylafax 4.3 source paket um genau zu sein)
Code:
#
# Apply customizations.  All customizable variables should
# be set to their non-customized defaults prior to this.
#
if [ -f etc/FaxDispatch ]; then
    . etc/FaxDispatch		# NB: FaxDispatch sets SENDTO
fi
 
OP
M

magic_halli

Hacker
Eigentlich sollte FaxDispatch die SENDTO variable überschreiben.
...die SENDTO-Variable in der faxrcvd?!

Wo kommt aber die Datei .../fax/etc/users in Spiel? Dort treffe ich ja meine eigentliche/gewünschte Zuordnung von Mailadresse<--->MSN. Diese Mailadresse sollte dann, meines erachtens nach, in SENDTO (in der faxrcvd oder von mir aus auch in FaxDispatched) eingesetzt werden?!
Egal... hauptsache ich komme irgendwie zu meinem gewünschten SENDTO aus der users-Datei.
Die Frage ist halt, warum wird diese Zuordnung in users anscheinend gar nicht berücksichtigt?

Gruß
 

pft

Advanced Hacker
...die SENDTO-Variable in der faxrcvd?!
so ganz blöd bin ich ja auch nicht :)

Natürlich in faxrcvd! Nicht umsonst gibt es dort ein "export SENDTO" und dann kann das in faxrcvd aufgerufene FaxDispatch diese Variable auch verändern. Ich dachte der von mir zitierte Ausschnitt aus faxrcvd wäre da ausdruckskräftig genug.

Warum das bei Dir nicht passiert? Keine Ahnung, musst Du evtl. mal den Ablauf "debuggen".

Möglichkeiten gäb's ja viele. Das fängt an mit so einfachen Dingen wie Speicherort von FaxDispatch und users sowie deren Rechte.

BTW, gib mal die genaue Version deiner hylafax installation. Es scheint da Unterschiede zu geben.
 

whois

Ultimate Guru
pft schrieb:
BTW, gib mal die genaue Version deiner hylafax installation. Es scheint da Unterschiede zu geben.

Es sieht zumindest so aus als wenn er Version 4.25.14 benutzt und da gibt es IMHO keine so grossen Unterschiede zur Vorgänger Version.
 
OP
M

magic_halli

Hacker
@pft
So ganz blöd bist Du auch nicht? ...Nein, so war´s auch nicht gemeint - war eher nochmal eine Rückversicherung meinerseits! :)

Ich bentutze Hylafax Ver. 4.2.5-14.
Nochmal als Nachfrage für mich: Diese Files sind aber schon zuständig dafür, dass, in Abhängigkeit von der angefaxten Nummer die MSN quasi extrahiert und dann der entsprechende User eine eMail mit dem Fax als Anhang bekommt?

Ich hab jetzt mal die Dateien auf volle Berechtigungen gesetzt - leider noch keine Änderung.
Äh sorry, aber was heißt "mal den Ablauf evtl. Debuggen"? Wie soll ich denn hier debugtechnisch noch ansetzen, außer die Logfiles zu studieren?

Danke und Gruß.
 

pft

Advanced Hacker
Ich bentutze Hylafax Ver. 4.2.5-14.
Dann muss ich erst mal sheen dass ich diesen Quellcode auftreibe :-(

Diese Files sind aber schon zuständig dafür...
Hab's noch nicht benutzt, ich denke aber schon

Das mit Shellskript debuggen ist so eine Sache. Ich bin da nicht der Profi und behelfe mir daher mit dem Einbau von Kontrollausgaben. Du kannst aber in google "shell skript debug" eingeben und mal die ersten 5-10 Treffer ansehen.

Zum Beispiel ist "set -x" oder auch "set -v" sicherlich ein erster Ansatz. Bei komplexen Skripten am besten erst kruz vor der kritischen Stelle setzten und danach wieder rücksetzen.

Weitere Details wenn ich den Source code und etwas zeit habe.

Hast Du das Thema mit den beiden Postfixen gelöst? Irgendwo waren da zwischendrin ein paar Fragen die ich zunächst übersehen hatte.
 
OP
M

magic_halli

Hacker
Ich glaube zu wissen, wieso nicht an einen User eine Faxmail gesendet wird:

in der .../fax/etc/users weise ich Mailadr.<-->MSN zu:
Code:
ich@firma.de 15

in der FaxDispatch...
Code:
if [ "$2" != "" ]; then
    PHONEMATCH=$2\$
    USERENTRY=`grep -v "^#" etc/users | grep "$PHONEMATCH"`
    if [ "$USERENTRY" != "" ]; then
	USERNAME=`echo $USERENTRY | awk '{print $1}'`
	SENDTO="$USERNAME"
	FILETYPE=pdf
    fi
fi
...wird SENDTO mit der Mailadresse aus users belegt. Das klappt, denn ich habe per Konsole dies überprüft:.
Code:
lto: ~ # grep -v "^#" users | grep "$PHONEMATCH"  | awk '{print $1}'
Hierbei kommt auch korrekt die in users eingetragen Mailadr. 'ich@firma.de' raus!

Der Fehler liegt in der faxrcvd - dort wird einfach nicht das 'SENDTO' belegt, wenn ich es mit dem Wert aus FaxDispatch füllen will! Die Frage ist nur, warum?
Auszug .../faxrcvd:
Code:
#hier wird doch erstmal die FaxDispatch geladen... also sollte ich im Anschluss daran 'SENDTO' belegen können
#und zwar nicht fix, sondern dynamisch?!
if [ -f bin/FaxDispatch ]; then
    . bin/FaxDispatch		# NB: FaxDispatch sets SENDTO
fi

#SENDTO belegen - sollte doch so geschehen, oder???
SENDTO="$SENDTO"
#somit wäre ab hier SENDTO mit der Mailadr. aus FaxDispatch (welche wiederrum aus users kommt) belegt - dynamisch?!
Wenn ich das so mache, geht nur eine Mail an den Faxmaster (root), aber nicht an 'SENDTO' (ich@firma.de). Wenn ich in der faxrcvd 'SENDTO=ich@firma.de' fix implementiere, geht an den 'Faxmaster' UND an SENDTO das Fax als Mail raus!!!
Wie weise ich denn syntaktisch korrekt der Variablen SENDTO in /faxrcvd den Wert aus der FaxDispatch zu - habe ich vielleicht etwas falsch gemacht???

Gruß
 

pft

Advanced Hacker
Wie weise ich denn syntaktisch korrekt der Variablen SENDTO in /faxrcvd den Wert aus der FaxDispatch zu
Vielleicht so wie es in der man page zu faxrcvd steht?

Die Probleme bei deinem FaxDispatch fangen doch in Zeile 1 an:
if [ "$2" != "" ]; then
Du versuchst die Aufrufparameter von faxrcvd direkt zu verwenden statt der Variablen denen sie zugewiesen wurden. An der Stelle stimmen die Positionsnummern aufgrund vorangegangener Shift Operationen aber nicht mehr.
Außerdem ist es lausiger Stil (sorry). Die diversen Regeln für saubere (Skript-)programmierung haben schon Ihren Sinn :)
Schau Dir mal das aus faxrcvd an:
Code:
...
FILE="$1"; shift;
DEVICE="$1"; shift;
COMMID="$1"; shift;
MSG="$1"; shift;
...
Also benutze $FILE, $DEVICE, $COMMID und $MSG, dafür hat sich der Programmierer die Arbeit ja gemacht.
 

whois

Ultimate Guru
Sorry, aber wäre es nicht besser bevor da was umgeschrieben wird eine andere Version von Hylafax zu testen?
Das ist doch nur ein Gehangel von einem Problem zum nächsten
 

pft

Advanced Hacker
Hatte ich auch schon dran gedacht, bringt aber nix.
Die Stelle von faxrcvd ist unverändert über die verschiedenen Versionen und er soll ja auch nix in faxrcvd ändern, sondern in FaxDispatch und die stammt sowieso von ihm und ist nicht in der Distri.
In der faxrcvd manpage steht folgender Vorschlag:
Code:
Notes

This script can route facsimile directly to the intended receipient. To do this create a shell script etc/FaxDispatch in the spooling area that sets SENDTO to the receiver's electronic mail address. For example,

case "$SENDER" in
*1*510*526*1212*) SENDTO=sam;;          # Sam's test rig in Berkeley
*1*415*390*1212*) SENDTO=raster@asd;;   # 7L Xerox room, used for scanning
*5107811212)      SENDTO=peebles@mti;;  # stuff from home
esac
case "$DEVICE" in
ttyS1)            SENDTO=john;;         # all faxes received on ttyS1
ttyLT0)           SENDTO=mary@home;;    # all faxes received on ttyLT0
esac
case "$CIDNUMBER" in
435*)        SENDTO=lee; FILETYPE=pdf;; # all faxes from area code 435
5059627777)  SENDTO=amy; FILETYPE=tif;; # Amy wants faxes in TIFF
esac

Note that you must match any embedded white space. The facsimile will be sent as a MIME-encoded PostScript document as default.

CIDNAME

    is equivalent to CIDName above. 

CIDNUMBER

    is equivalent to CIDNumber above. 
DEVICE

is equivalent to device above.

FILETYPE

    controls the filetype of the image attachment. Current filetype options are ''ps'', ''tif'', and ''pdf''. 
MSG

is equivalent to error-msg above.

SENDER

is the received TSI of the fax sender.
 
Oben