![]() |
Chris Staudt wrote: > > hi all, i got an running hylafax server. > now i want to receive my incoming faxes as an e-mail with a tiff > attachment. > can anybady help me? > This one does the trick for me. Note that I cheat and use mime-construct, which in turn depends on Perl. Hope no one minds my posting this attachment; thought it might be of general use.
#! /bin/sh # $Id: faxrcvd,v 1.2 1998/03/05 23:27:32 behanw Exp $ # # HylaFAX Facsimile Software # # Copyright (c) 1990-1996 Sam Leffler # Copyright (c) 1991-1996 Silicon Graphics, Inc. # HylaFAX is a trademark of Silicon Graphics # # Permission to use, copy, modify, distribute, and sell this software and # its documentation for any purpose is hereby granted without fee, provided # that (i) the above copyright notices and this permission notice appear in # all copies of the software and related documentation, and (ii) the names of # Sam Leffler and Silicon Graphics may not be used in any advertising or # publicity relating to the software without the specific, prior written # permission of Sam Leffler and Silicon Graphics. # # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. # # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE # OF THIS SOFTWARE. # # # Modifications by: Behan Webster <behanw@pobox.com> # # # faxrcvd file devID commID error-msg # if [ $# != 4 ]; then echo "Usage: $0 file devID commID error-msg" 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(1M) command. Read the documentation on setting up HylaFAX before you startup a server system. EOF exit 1 } . etc/setup.cache INFO=$SBIN/faxinfo FAX2PS=$TIFFBIN/fax2ps #SENDFROM=hylafax #TOADDR=FaxMaster SENDFROM=fax@charles-retina.com TOADDR=keithmur@mindspring.com # # 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 ########################################################################### # Send email about fax # function emailfax () { TO=$1 FROM=$2 NUM=$3 FAX=$4 DEV=$5 LOG=$6 ERR=$7 SENT=$8 (MIMEBOUNDARY="NextPart$$" echo "Mime-Version: 1.0" echo "Content-Type: Multipart/Mixed; Boundary=\"$MIMEBOUNDARY\"" echo "Content-Transfer-Encoding: 7bit" echo "To: $TO" echo "From: The HylaFAX Receive Agent <$FROM>" echo "Subject: facsimile received from $NUM"; echo "" echo "--$MIMEBOUNDARY" echo "Content-Type: text/plain" echo "Content-Description: FAX info" echo "Content-Transfer-Encoding: 7bit" echo "" echo "File on host is: $FILE:"; $INFO -n $FAX #echo "$FILE (ftp://$HOSTNAME:$PORT/$FAX):"; $INFO -n $FAX echo "ReceivedOn: $DEV" if [ "$ERR" ]; then echo "" echo "The full document was not received because:" echo "" echo " $ERR" 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$LOG elif [ -n "$LOG" ]; then echo " No transcript available (CommID c$LOG)." else echo " No transcript available." fi else #echo "CommID: c$LOG (ftp://$HOSTNAME:$PORT/log/c$LOG)" echo "CommID: c$LOG" fi if [ -n "$SENT" ]; then echo "" echo "The facsimile was automatically dispatched to: $SENT." fi echo "" echo "" echo "--$MIMEBOUNDARY" echo "Content-Type: image/tiff" echo "Content-Description: FAX document as TIF" mime-construct --subpart --file $FAX echo "--$MIMEBOUNDARY" echo "Content-Type: application/postscript" echo "Content-Description: FAX document as Postscript" echo "Content-Transfer-Encoding: 7bit" echo "" $FAX2PS $FAX 2>/dev/null echo "--$MIMEBOUNDARY" echo "Content-Type: text/plain" echo "Content-Description: Reception log" echo "Content-Transfer-Encoding: 7bit" echo "" echo "Here follows the reception log:" echo "" cat log/c$LOG echo "--$MIMEBOUNDARY--" ) | 2>&1 $SENDMAIL -f$FROM -oi $TO } ########################################################################### FILE="$1" DEVICE="$2" COMMID="$3" MSG="$4" if [ -f $FILE ]; then # # Check the sender's TSI and setup to dispatch # facsimile received from well-known senders. # SENDER="`$INFO $FILE | $AWK -F: '/Sender/ { print $2 }' 2>/dev/null`" SENDTO= if [ -f etc/FaxDispatch ]; then . etc/FaxDispatch # NB: FaxDispatch sets SENDTO based on $SENDER fi if [ -n "$TOADDR" ]; then emailfax "$TOADDR" "$SENDFROM" "$SENDER" "$FILE" "$DEVICE" "$COMMID" "$MSG" "$SENDTO" fi if [ -n "$SENDTO" ]; then emailfax "$SENDTO" "$SENDFROM" "$SENDER" "$FILE" "$DEVICE" "$COMMID" "$MSG" fi else # # Generate notification mail for a failed attempt. # (echo "To: $TOADDR" echo "From: The HylaFAX Receive Agent <$FROM>" echo "Subject: facsimile not received" echo "" echo "An attempt to receive facsimile on $DEVICE failed 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 ) | 2>&1 $SENDMAIL -f$FROM -oi $TOADDR fi