HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [hylafax-users] email2fax gateway question...



Hi Matt,

there is my script. It is still based on the one you mailed. But it went
through a few changes.

>>I will get in a form it can be posted and I will send it to you.

no I failed completly, I hope you don't mind my german comments in it.

> 
>  Thanks. I'm curious now as to which bits were causing a problem :)
> 
Oh ...
the ripmime bit,
the faxlist bit,
the sendfax bit
the pslist bit


But it helped me a big great lot!!!!
I've attached the new version of the script and commented my changes.

As you wrote, it might be a bit quick and dirty. Well now it is.
Perhaps it will never be a script beauty. But it works, which makes it
beautiful in a special way. Like my Mountain Bike, which is dirty, but
has never been more beautiful to me.


Again many "Thank You's"

Georg

#!/bin/sh
#
############################################################################
###                    Email to fax conversion script                    ###
############################################################################
#
PATH=/bin:/usr/bin
export PATH;
#
############################################################################
###                      Setup system specifics                          ###
############################################################################
#
# Hier editieren ??
domain=`kidlinux.glerch.de | cut -d '.' -f 2-`
#
## CHANGE THE FAXMASTER ENTRY ##
# ursprünglich war das so, aber ich habe es fest verdrahtet
# due to my little expiriences whith scripting I wanted to eliminate 
# problems with variables
#faxmaster=faxmaster@${domain}
faxmaster=faxmaster@xxxxxxxxx
##
psmail=psmail
tmpdir=/tmp/fax_`date +%d%m%y%H%M%S`$$/
unpack=tmp/
finalout=00000_headerpage
list=faxnumlist	
log=sendfaxlog
message=errormsg
# these aren't needed anymore
#body=faxbody_$$
#head=faxheader_$$
#
############################################################################
###                      Setup paths to programmes                       ###
############################################################################
#
ripmime=/usr/local/bin/ripmime
sendfax=/usr/local/bin/sendfax
#
############################################################################
##                  Setup list of sender and recipients                   ##
############################################################################
#
{
  shift;
   sender=$1
  shift;
   recipient=$@
}
#
############################################################################
###       If sender is null, empty or daemon send job as faxmaster       ###
############################################################################
#
{
 if
    [ "${sender}" = "<>" ]
  then
    sender=${faxmaster};
   elif
    [ "${sender}" = "" ]
  then
    sender=${faxmaster};
   elif
# urpsrünglich war das so aber ich habe es fest verdrahtet, 
# again I wanted to work my way around variables
#    [ "${sender}" = "MAILER-DAEMON@${domain}" ]
     [ "${sender}" = "MAILER-DAEMON@xxxxxxxxx" ]

  then
    sender=${faxmaster};
 fi
}
#
############################################################################
###           Make temporary directory and unpacking directory           ###
############################################################################
#
# 
mkdir -p ${tmpdir}${unpack};
cd ${tmpdir};
#
############################################################################
###         Copy stdin to psmail and extract email message parts         ###
############################################################################
#
cat > ${psmail};
# so war es ursprünglich, 
#${ripmime} -i ${psmail} -p ${body} -e ${head} -d ${unpack};
#
# that's new. ripmime produces files like textfile0, textfile1, attachmentname.filetype
${ripmime} -i ${psmail} -d ${unpack};

# only contains this is a multipart mime message or so it gets deleted
rm -f tmp/textfile0;

#
############################################################################
###       Extract subject line from faxheader and add to firstpage       ###
############################################################################
# ergibt inhalt der datei 00000_headerpage
# habe ich heute 16.05. geändert
#grep -i '^subject:' < ${unpack}${head} > ${unpack}${finalout};

# soll Subject Zeile in temp stopfen
# i didn't know how to get the subject part at the beginnig of textfile1,
# so I had to work my way around
cat psmail | grep Subject >> tmp/temp;

# fügt subject nach rest text von mail ein
# now I add the textfile1 to temp
cat tmp/textfile1 >> tmp/temp;
rm -f tmp/textfile1;
mv tmp/temp tmp/textfile1; 

#
############################################################################
###         Extract fax numbers into a list suitable for Sendfax         ###
############################################################################
#
echo ${recipient} | xargs -n 1 | sed -e 's/[^0-9]//g' > ${list}
#
#  This one is new again, I put the faxnumbers in the variable faxlist
faxlist=`echo ${recipient} | xargs -n 1 | sed -e 's/[^0-9]//g'` 

#faxlist=${tmpdir}${list}
#
############################################################################
###       Get contents of fax message and strip out unwanted lines       ###
############################################################################
#braucht man nicht, da textfile0 wo das drinstand eh schon gelöscht
# the files wiht headeror body don't exist anymore
# and it didn't work anyway
#sed -e '/message in MIME format/d' < ${unpack}${body}* \
#	>> ${unpack}${finalout}; 
#
############################################################################
###                      Build file list for faxing                      ###
############################################################################
#
#psfile=`find -s ${tmpdir}${unpack} -type f | \
#	sed -e '/'${head}'/d' -e '/'${body}'/d'`
# geändert gl 13/05/2005 -s gibt es lt. man find nicht
# no -s option with find, 

# geändert matt hats gesendet
#psfile=`find ${tmpdir}${unpack} -type f | \
#	sed -e '/'${head}'/d' -e '/'${body}'/d'`
# I had to change this, no body and header-files
# wieder geändert dateien head und body gibts es nett
#psfile=`find ${tmpdir}${unpack} -type f | \
#	sed -e '/'${head}'/d' -e '/'${body}'/d' | sort`
#
# that's the one that works, in the unpack dir there only the attachments 
# and the textfile1 left so I could keep it simple,

psfile=`find ${tmpdir}${unpack} -type f`

# is not realy needed anymore, but for debugging purposes it does a good job
echo $psfile >> $(tmpdir)filelist
# 
############################################################################
###      Initiate sendfax with the list of file(s) and faxnumber(s)      ###
############################################################################
#ursprünglich, sendfax kennt aber keine option -z
# this call of sendfax does'nt work anymore. no -z option
# -f apeman@xxxxxxxxx is a testuser. I want a sent fax notification, but 
# I'm not getting one, which drives me nuts. 
# I think I'll go to the park and bite someone. 
#${sendfax} -n -D -m -f ${sender} -z ${faxlist} ${psfile} 2> ${tmpdir}${log};

${sendfax} -n -D -f apeman@xxxxxxxxx -d ${faxlist} ${psfile} > ${tmpdir}${log};
xstatus=$?

#
############################################################################
###                   Check status of sendfax delivery                   ###
############################################################################
#
{
 if 
    [ "${xstatus}" != "0" ]
  then
#
cat > ${message} << errormail


         # # # # # # # # # # # # # # # # # #
         # ERROR IN FACSIMILE TRANSMISSION #
         # # # # # # # # # # # # # # # # # #


The email that you submitted for facsimile transmission,
could not be sent for the following reason(s);

`cat ${log}`

Correct the problem and resubmit the facsimile.

         # # # # # # # # # # # # # # # # # #
         #         END OF MESSAGE          #
         # # # # # # # # # # # # # # # # # #
errormail
#
    mail -E -s "Facsimile Submission Error" ${sender} < ${message};

# auskommentiert zu testzwecken
#    rm -rf ${tmpdir};
    exit 0;
  else
    exit 0;
 fi
}
#
#
#
############################################################################
############################### End of file ################################
############################################################################
#
#
############################################################################
#
#
# master.cf entry
#usr/local/bin/faxscripts
#faxrip		unix	-	n	n	-	1	pipe   user=fax #argv=/usr/local/bin/faxscripts/faxrip -- ${sender} ${recipient}
#
# transport entry
#
#fax.glerch.de		faxrip:localhost
#
#
############################################################################



Project hosted by iFAX Solutions