Faxserver
Faxserver
Hallo,
ich suche ein Faxserver mit folgender Anforderung:
- arbeitet mit Modem
- Emailadresse
Man sendet eine Email an fax@domain.de mit der Nummer im Betreff. Desweiteren sollten Tiff Anhänge, oder ähnliches gelesen werden können. Benutzerdatenbank sollte ebenfalls genutzt werden können. Zum Beispiel mit der Sendung der Email über eine SMTP Funktion.
Würde mich über Tipps freuen.
Silvio
ich suche ein Faxserver mit folgender Anforderung:
- arbeitet mit Modem
- Emailadresse
Man sendet eine Email an fax@domain.de mit der Nummer im Betreff. Desweiteren sollten Tiff Anhänge, oder ähnliches gelesen werden können. Benutzerdatenbank sollte ebenfalls genutzt werden können. Zum Beispiel mit der Sendung der Email über eine SMTP Funktion.
Würde mich über Tipps freuen.
Silvio
Der größte Feind der Menschheit ist die Angst, die Angst kommt, weil es Leute gibt die mehr haben wollen als Sie haben.
Re: Faxserver
Ich kann dir für sowas ein fertiges Script liefern, das funktioniert allerdings ein bißchen anders als deine Problembeschreibung.
1. User schickt Mail an 0815-12345@fax
2. Betreff und Mailtext sind unwichtig.
3. Alle ps und pdf Anhänge werden dann gefaxt, der Benutzer bekommt natürlich eine Bestätigung per Mail, wenn das Fax versandt wurde.
1. User schickt Mail an 0815-12345@fax
2. Betreff und Mailtext sind unwichtig.
3. Alle ps und pdf Anhänge werden dann gefaxt, der Benutzer bekommt natürlich eine Bestätigung per Mail, wenn das Fax versandt wurde.
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Hier das Faxscript
und dann noch: /usr/local/sbin/sendfax
Gruß
Jens
Code: Alles auswählen
#!/bin/sh
FAX_NUMBER=$1
FAX_SENDER=$2
FAX_DIR=/tmp/fax_$$/
FAX_USER=$3
OUTPUT="${FAX_DIR}/debug"
MAILFILE="${FAX_DIR}/info"
/bin/mkdir ${FAX_DIR}
/bin/cat >${FAX_DIR}/fax.tmp
/usr/bin/uudeview -i +e .ps +e .pdf -p "${FAX_DIR}/" ${FAX_DIR}/fax.tmp >>${OUTPUT} 2>&1
(
for i in ${FAX_DIR}/*.pdf; do
convert $i $i.ps
done
) >>${OUTPUT} 2>&1
COUNT=`/usr/bin/find ${FAX_DIR} -name "*.ps" | /bin/grep -c ".ps"`
if /usr/bin/test "${COUNT}" -eq "0"; then
(
echo "Anleitung: Um ein Fax zu versenden, schicken Sie eine EMail mit der .PS Datei oder .PDF Datei an folgende EMailadresse:"
echo "<Faxnummer des Empfaengers>@fax. Den Status zu verschickender Faxe kann mit status@fax abgerufen werden."
echo ""
) >${MAILFILE}
TITLE="Anleitung"
else
(
echo "Faxversand"
echo "----------------------------------------------------------"
/usr/bin/sudo /usr/local/sbin/sendfax ${FAX_NUMBER} ${FAX_DIR}/*.ps
) >${MAILFILE}
TITLE="Faxversand"
fi
/bin/cat ${MAILFILE} | /usr/bin/mail ${FAX_SENDER} -s ${TITLE}
rm -rf ${FAX_DIR}
Code: Alles auswählen
NUMBER=$1
shift
FILES=$*
for f in $FILES; do
convert $f g3:$f.g3
FILES_2="${FILES_2} $f.g3"
done
/usr/bin/sendfax $NUMBER $FILES_2
Jens
Du kannst über DSL technisch gesehen keinesfalls Faxen. DSL ist eine Punkt-zu-Punkt-Festverbindung von deinem DSL-Modem zu dem DSLAM in der Vermittlungsstelle.swiffer hat geschrieben: Auf pro-linux.de gabs mal eine Schoene Beschreibung wie man so einen Faxserver einrichtet. Mit dem ist dann sogar Faxen ueber DSL moeglich.
Im übrigen wäre es schön, wenn du auch mal den Link zu dem Artikel gepostet hättest...
Gruß
Jens
P.S. Schick mir doch mal die Faxnummer deines DSL-Modems

Hi,
Bitte: http://www.pro-linux.de/work/asterisk/a ... .html#ToC8
war in eile deswegen habe ich mir nicht die "muehe" gemacht und den artikel rausgesucht.Im übrigen wäre es schön, wenn du auch mal den Link zu dem Artikel gepostet hättest...
Bitte: http://www.pro-linux.de/work/asterisk/a ... .html#ToC8
UNIX is user-friendly. It's just not ignorant-friendly and idiot-friendly.
Ich hbae im OTRS Forum mal nen Howto geschrieben, wie man sowas für ein Ticketsystem baut. Funktioneirt sicher auch ohne das Ticketsystem...
http://www.otrs-forum.de/viewtopic.php?t=184
http://winprinthylafax.sourceforge.net/
http://www.otrs-forum.de/viewtopic.php?t=184
Mit dem fertigen Faxserver kannst du dann übrigens auch gleich aus Office faxen, wenn du nen spezeillen Druckertreiber installierst.monotek hat geschrieben:OTRS - Faxgateway
Ich möchte an dieser Stelle mal ein Howto anfangen.
Es 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 unter Debian, lässt sich aber
sicher auch auf andere Distributionen übertragen.
Bei dem Rechner, den ich verwendete habe, war kein Mailserver
installiert bzw. war dieser nur für lokale Zustellung konfiguriert.
Daher habe ich msmtp (einen smtp Client) zum Versenden der Faxe
verwendet. Als Faxdevice kam ein standard 56k Modem an COM 1 zum
Einsatz. Mit ein paar Anpassungen sollte es aber sicher auch mit ISDN
Karten funktionieren.
1.) Als erstes werden alle nötigen Packete installiert:Debians Apt löst die nötigen Abhängigkeiten selbst auf. GegebenenCode: Alles auswählen
apt-get install hylafax-server hylafax-client hylafax-doc a2ps mimedecode imagemagick fetchmail msmtp
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:Falls ein paar Warnhinweise kommen, das einige Dateien fehlen, könntCode: Alles auswählen
faxsetup
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. "OTRS". 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:Die ersten 4 Zeilen sollten selbsterklärend sein. Der Teil danach istCode: Alles auswählen
FROMADDR=fax@domain.de SENDTO=otrs@domain.de; TOADDR=otrs@domain.de; FILETYPE=pdf; #case "$SENDER" in #03012345678) FROMADDR=brief@domain.de;; #esac
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.) Als nächstes wir die Datei "/var/spool/hylafax/bin/faxrcvd" angepasst.
Als erstes sollte folgendne Zeile abgeändert werden, um das Senden von
Statusinfos an den Faxmaster zu verhindern, damit diese Stati nicht
ebenfalls in das OTRS eingepflegt werden.
Suche nach:Ersetze durch:Code: Alles auswählen
NOTIFY_FAXMASTER=always
Wenn man im Betreff der erzeugten Mail später nur die TelefonnummerCode: Alles auswählen
NOTIFY_FAXMASTER=never
des Absenders haben möchte, sollte man folgende Zeile ä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.
Suche nach:Ersetz durch:Code: Alles auswählen
echo "Subject: Facsimile received from $SENDER";
Wer ebenfalls keinen Mailserver zur Verfügung hat, muss nun noch 3 malCode: Alles auswählen
echo "Subject: $SENDER";
folgende Zeile ändern, um den SMTP Client msmtp anstatt eines
Mailservers zum versenden der Faxe zu verwenden.
Suche nach:Ersetze durch:Code: Alles auswählen
) | 2>&1 $SENDMAIL -f$FROMADDR -oi $TOADDR
Für msmtp ist noch die Configdatei "/var/spool/hylafax/bin/.msmtprc"Code: Alles auswählen
) | 2>&1 /usr/bin/msmtp -C /var/spool/hylafax/bin/.msmtprc -f
anzulgen, die folgenden Inhalt bekommt:Es muss also eine E-Mail Adresse eingerichtet werden, über die das FaxCode: Alles auswählen
account default host mail.domain.de from fax@domain.de auth login user fax password yourpass
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. Als erstes muss also
eine Datei "/root/.fetchmailrc" angelegt werden, die folgenden Inhalt
haben muss:Die Variablen "user", "pass" und "poll" müssen natürlich wieder nachCode: Alles auswählen
poll mail.domain.de proto pop3 user "fax" pass "yourpass" is faxmaster postconnect "/var/spool/hylafax/bin/mail2fax.sh"
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:Um es per Cronjob zu erledigen, müsst Ihr folgende Zeile zu der DateiCode: Alles auswählen
fetchmail -d 600 -L syslog -f /root/.fetchmailrc
" /var/spool/cron/crontabs/root" hinzufügen:Code: Alles auswählen
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:Dieses Bash Script ist das Herzstück des Faxversands. Die oberenCode: Alles auswählen
#!/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.net" AUTH_MAIL="support@domain.net" FAX_MAIL="faxsupport@domain.net" MAILBOX="/var/mail/faxmaster" FIRMFAX="03012345678" 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 60 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 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 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 if [ -n "`egrep "^Content-Transfer-Encoding: base64$" < ${TEMP_DIR}/fax_${COUNT}`" ]; then sed '/^$/q' < ${TEMP_DIR}/mail_${COUNT} > ${TEMP_DIR}/mail_header_${COUNT} sed '1,/^$/d' < ${TEMP_DIR}/mail_${COUNT} | perl -MMIME::Base64 -ne 'print decode_base64($_)' > ${TEMP_DIR}/mail_body_${COUNT} cat ${TEMP_DIR}/mail_header_${COUNT} ${TEMP_DIR}/mail_body_${COUNT} | recode -p UTF-8..ISO-8859-15 | /var/spool/hylafax/bin/appendheaders.pl | sed -e '1,/^$/d' -e '/^HylaFAX Agent <.*@.*\..*>.*:/,$d' > ${TEMP_DIR}/fax_${COUNT} else mimedecode < ${TEMP_DIR}/mail_${COUNT} | recode -p UTF-8..ISO-8859-15 | /var/spool/hylafax/bin/appendheaders.pl | sed -e '1,/^$/d' -e '/^HylaFAX Agent <.*@.*\..*>.*:/,$d' > ${TEMP_DIR}/fax_${COUNT} fi fi 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/'` 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 a2ps -1 -c -q -B --borders=no -o - < ${TEMP_DIR}/fax_${COUNT} | sendfax -d ${DIALPREFIX}${NR} else 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}/mail_${DATE} find ${BACKUP_DIR} -type d -mtime +${HOLD} -regex ^${BACKUP_DIR}/fax_[0-9]*$ -exec rm {} \; fi rm -r ${TEMP_DIR} ${MAILBOX} fi
Config-Zeilen müssen noch an eure Bedürnisse angepasst werden.
Die Variable "otrsmail" ist eure Otrs E-Mail Adresse, von der Ihr
Mails mit dme OTRS versendet.
Die Variable "faxmail" 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 "otrsmail" 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: Alles auswählen
#!/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:Ersetze mit:Code: Alles auswählen
# AutoCoverPage: No
Außerdem habe ich in dieser Datei gleich noch das Seitenformat, dieCode: Alles auswählen
AutoCoverPage: No
Auflösung des Faxes sowie das Datumsformat eingestellt. Fügt dazu
folgendes am Ende der Datei hinzu:Einziger Punkt der noch beachtet werden sollte ist, dass der InhaltCode: Alles auswählen
PageSize: a4 VRes: 196 DateFormat: ""%H:%M:%S %d.%m.%y""
von "/var/spool/hylafax/etc" komplett in "/etc" 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...
http://winprinthylafax.sourceforge.net/
Zuletzt geändert von monotek am 18.05.2009 17:26:11, insgesamt 3-mal geändert.