#=================================================================
#
# OPT_FAXMAILPRO v0.4
#
# Thomas Klingler 2003-04-10
#
#=================================================================

Das OPT-Faxmailpro dient dazu, per ISDN empfangene Faxe per
E-Mail weiterzuleiten.
Leistungsmerkmale:
	sofortiger Versand eingegangener Faxe per Mail
	Konvertierung ins PNG-Format zur direkten Anzeige des Fax im Mail-Klient
	Konvertierung ins PDF-Format zum  massstabsgetreuen Ausdruck
	Fehlgeschlagene Sendeversuche werden periodisch wiederholt
	

Voraussetzungen:
================
FLI4L 2.0.x-2.0.7 (mit hoeheren Versionen nicht getestet)
CRON-Paket
OPT_ISDN4AVM
OPT_FAXRCV
Festplatten-Installation mit "genuegend" freiem Speicher
(temporaerer Bedarf fuer eine Konvertierung bis zu 10-20
MB, je nach Umfang des Faxes)
Hauptspeicher mind. 24 MB, davon ca. 200 bis 500 kB frei in /dev/ram

optional:
die vom Paket opt_httpd bzw. dem telmond verwendete Telefonbuchdatei
opt/etc/phonebook
Falls diese Datei nicht existiert, muesst Ihr zumindest eine leere Datei
gleichen Namens anlegen!


Hinweis:
========
Damit diese Weiterleitung automatisch sofort nach dem
Empfang eines Faxes angestossen wird, muessen verschiedene
Dateien aus dem Paket "opt_faxrcv" von Felix Eckhofer 
entsprechend angepasst werden.

Datei "/check/faxrcv.txt"
------------------------------
Einfuegen der Zeile an beliebiger Stelle im Skript
FAXRCV_NOTIFY		OPT_FAXRCV		-			NOTEMPTY


Datei "/config/faxrcv.txt"
-------------------------------
Einfuegen der Zeilen an beliebiger Stelle im Skript
#--------------------------------------------------------------------------
#Erweiterung opt_faxmailpro
#
FAXRCV_NOTIFY='/usr/local/bin/faxmailpro.sh'
	#Skript, das immer dann ausgefuehrt wird, wenn ein neues
	#Fax aufschlaegt
#--------------------------------------------------------------------------

Datei /opt/etc/rc.d/rc.faxrcv"
-------------------------------------
Eine entsprechend angepasste Version dieses Skripts findet
sich im Verzeichnis /opt_faxmailpro/opt/etc/rc.d/patches/rc900.faxrcv".
BITTE unbedingt die Hinweise in /opt_faxmailpro/opt/etc/rc.d/patches/README.txt" lesen!


Beschreibung der Parameter:
===========================
OPT_FAXMAILPRO='yes'
    aktiviert das OPT-Paket

FAXMAILPRO_SMTP_PORT='25'
    Port, auf dem der SMTP-Server laeuft

FAXMAILPRO_SMTP_HOST='smtp.mydomain.de'
    IP-Adresse oder DNS-Name des Rechners, auf dem der
SMTP-Server laeuft

FAXMAILPRO_FROM='faxdaemon'
    Absender-Adresse, die in der Mail auftauchen soll

FAXMAILPRO_DOMAIN='mydomain.de'
    Domaenen-Name, der benutzt werden soll, um die
Mail-Adresse zu bilden

FAXMAILPRO_REPLY_TO='root'
    Antwort-Adresse. Hier sollte der zustaendige Sysadmin
angegeben werden, wenn der Benutzer z.B. irgendwelche
Fehler melden will. Ohne Reply-To wuerde in diesem Fall an
$FAXMAILPRO_FROM gesendet, den virtuellen FAXMAIL-Daemon, der
wohl in den seltensten Faellen auf eine Mail antworten wird
:-)

FAXMAILPRO_IMAGE_WIDTH='864'
    auf diese Breite in Pixel wird das Fax zur Anzeige im
Mail-Klient skaliert. Empfehlenswert ist die Skalierung um
den Faktor 0.5, das entspricht bei einem DIN A4-Fax einer
Breite von 864 Pixeln

FAXMAILPRO_BASE_DIR='/data/fax'
    Basisverzeichnis, in dem die Faxe von capifaxrcvd
abgelegt werden. Sollte auf Grund der Groesse der Dateien
IMMER auf ein Verzeichnis der gemounteten Festplatte verweisen!


Verzeichnisstruktur:
====================
Aufgrund der geringen Versionsnummer dieses Pakets sind
einige Einschraenkungen hinzunehmen, was die Position der
zu versenden Faxe im Verzeichnisbaum betrifft.
Das opt_faxmailpro funktioniert zur Zeit NUR, wenn:
    die Faxe in der dritten Verzeichnisebene gerechnet von der Wurzel "/" ab liegen
    der Pfadname der ersten und zweiten Ebene entsprechen dem Inhalt von $FAXMAILPRO_BASE_DIR
    der Name der dritten Verzeichnisebene entspricht dem Benutzer, an den das Fax per Mail verschickt werden soll.

Beispiel:
Die Faxe werden im Verzeichnis "/data/fax/mueller" gespeichert.
Dann muss die Variable
    FAXMAILPRO_BASE_DIR
auf
    "/data/fax"
gesetzt werden.

Jedes Fax, das in diesem Verzeichnis abgelegt wird, wird an
den Benutzer "mueller" (=Name der dritten Verzeichnisebene)
in der Domaene $FAXMAILPRO_DOMAIN gesendet.
Soll ein Fax z.B. an mehrere Personen oder gar eine ganze
Abteilung weitergeleitet werden, ist auf Seiten des
SMTP-Servers eine entsprechende Weiterleitungsfunktion
(z.B. in Form einer Mailing-Liste) einzurichten.

Sendewiederholung:
==================
Falls das Versenden fehlgeschlagen ist (z.B. weil der
SMTP-Server nicht erreichbar war), kann mit Hilfe von CRON
eine Wiederholung in periodischen Abstnden veranlasst werden. 
Geeignete Parameter hierzu sind beispielsweise:
	Uhrzeit (Time): "0,30 * * * *"		(=> fehlgeschlagene Versuche werden alle 30 Minuten wiederholt)
	Kommando (Command) "/usr/local/bin/faxmailprocron.sh"



Hinweis:
========
Das Versenden funktioniert leider nicht mit allen
SMTP-Servern. Erfolgreich getestet habe ich mit dem
Hamster-Server, Sambar ab Version 5.3 beta 3 preview 1.
Durch Setzen der Option "-i 1" im netcat-Befehl sollte der
Versand dann zwar mit allen SMTP-Servern funktionieren,
kann sich dann aber schon bei kleineren Faxen ueber mehrere
Stunden (!) hinziehen - also keine wirkliche Alternative. 


Faxnummernaufloesung:
=====================
Zur Aufloesung der Faxnummer in einen Klartextnamen wird die
bereits von opt_httpd und dem telmond verwendete Datei
opt/etc/phonebook benutzt.
Dort sind entsprechend die Faxnummern mit deren zugehoerigen
Klartextnamen einzupflegen.


Funktionsweise von opt_faxmailpro:
==================================
Fuer jedes eingegangene Fax wird das Skript newfaxmailpro.sh
aufgerufen. Als Parameter erwartet es den vollstaendigen
Pfad des Faxfiles. Zunaechst wird ein temporaeres
Arbeitsverzeichnis angelegt und das Faxfile dort
hinkopiert. Damit ist sicher gestellt, dass auch im
Fehlerfall die Originaldatei immer unbeschaedigt bleibt, da
nur auf der Kopie gearbeitet wird.
Das Faxfile wird dann zunaechst ueber den Umweg
"PostScript" nach PDF konvertiert. Die PDF-Variante ist
dazu gedacht, Faxe in optimaler Qualitaet massstabsgetreu
ausdrucken zu koennen. Ausserdem wird das Fax aus dem
SFF-Format ueber den Umweg "PBM" ins PNG-Format
konvertiert. Damit das Fax direkt im Mail-Klient bei einer
Aufloesung von 1024*768 Punkten zumindest in der Breite
vollstaendig dargestellt wird, erfolgt zuvor noch eine
Skalierung um den Faktor 0,5. 

PDF- und PNG-Dateien werden dann uuencoded in eine
RFC2821-konforme Textdatei namens "smtp.cmd" eingebettet,
die dann per netcat an den SMTP-Server versendet wird.

ToDo:
=====

Das Logging der eingegangenen Faxe in einer Log-Datei, wie
von opt_faxrcv gewohnt, ist zur Zeit nicht implementiert.
 

Lob & Tadel:
============
Thomas Klingler
mailto: t_klingl@informatik.uni-kl.de
