#=================================================================
#
# OPT_FAXMAILPRO v0.5.1
#
# Thomas Klingler 2003-07-12
#
#=================================================================

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.8 (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!

Neues in Version 0.5.1:
=======================
Die Verzeichnistiefe, in der die Faxe abgelegt werden mssen, ist jetzt frei waehlbar.
Die Beschrnkung auf eine Ordnertiefe von drei wurde aufgehoben, d.h. die Faxe koennen
ab jetzt an einer beliebigen Stelle im Verzeichnisbaum liegen, allerdings
muessen nach wie vor fuer jeden Benutzer getrennte Verzeichnisse
existieren, die alle den gleichen Basispfad besitzen. Die Laenge des Basispfades
ist jedoch beliebig.

Beispiel:
- bis Version 0.5
  /data/fax/user1
  /data/fax/user2
- ab Version 0.5.1
  /hd/data/fax/user1
  /hd/data/fax/user2
  - oder -
  /faxe/user1
  /faxe/user2

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'
    Adresse, die als Absender der Mail erscheinen 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:
====================
Das opt_faxmailpro funktioniert zur Zeit nur, wenn die Fax-Eingangsordner fuer die einzelnen
Benutzer alle unter dem gleichen Basispfad, dem sog. FAXMAILPRO_BASE_DIR, liegen.
Unterhalb dieses Basisverzeichnisses schliessen sich fuer jeden zu unterscheidenden Benutzer
weitere Verzeichnisse an, wobei deren Name direkt mit der Mailadresse korreliert, an die
die Faxe verschickt werden sollen.

Beispiel:
Der Basispfad lautet "/hd/fax". Es sollen zwei Benutzer "fritz" und "emil" unterschieden werden.
Dann hat die Variable FAXMAILPRO_BASE_DIR den Inhalt "/hd/fax" und die Verzeichnisstruktur sieht
folgendermaen aus:
  /hd/fax/fritz 
und
  /hd/fax/emil

Faxe im Unterverzeichnis von /hd/fax/fritz werden an die Adresse "fritz@$FAXMAILPRO_DOMAIN",
Faxe im Unterverzeichnis von /hd/fax/emil  werden an die Adresse  "emil@$FAXMAILPRO_DOMAIN"
geschickt.
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.


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