![]() |
#!/bin/sh # # simple mail-to-fax utility designed to replace HylaFAX's faxmail # uses shell, sendfax, metamail, and uudecode # # - Lee Howard - NubJub & Marek # This is a modified version of the script provided by Lee Howard # on this Hylafax+ website. # # HINT: TO COMPLETELY DISABLE COVERPAGES TAKE # A LOOK AT THE VERY BOTTOM OF THE SCRIPT # # I am compelled to point out here that using faxcover to # automatically generate cover pages using the content of your # email is pretty great. # # It would like to find a hyfax.conf file in etc that looks # something like this: # ********************************************************* # # Set to 'true' to enable logging; set to 'false' to disable. # LOG=true # LOG_FILE=/var/log/hyfax.log # OUTGOINGFAXNUMBER=XXX-XXX-XXXX # ********************************************************* # # You will also need to create a log file writeable by the user # your mta will be running with script with. # # Mail to addresses work in the formats # 1) Dispaly Name <PHONE-NUMBER@xxxxxxxxxxx> # 2) "Display Name" <PHONE-NUMBER@xxxxxxxxxxx> # # These formats are really just a matter of the sed parsing of the # _message_ file and can easily be edited to suit your particular # preferences. # # The formats described above match the 2nd email-to-fax # configuration described in the file: # /usr/share/doc/hylafax-client/faxmail/mailfax.sh-postfix.gz # This script does not have any swtiches so the -d -n # switches shown in the example should be removed # # Mail from addresses are assumed to be in the formats # 1) Dispaly Name <username@xxxxxxxxxxx> # 2) "Display Name" <username@xxxxxxxxxxx> # # Which are generally the formats used by modern email cients. # # #
if [ -f /etc/hyfax.conf ] then . /etc/hyfax.conf
if [ "$LOG_FILE" != "" ] then if [ ! -f $LOG_FILE ] then LOG=false fi fi fi
export METAMAIL_TMPDIR=$RANDOMFAX if [ ! -d $METAMAIL_TMPDIR ]; then mkdir $METAMAIL_TMPDIR; fi rm -f $METAMAIL_TMPDIR/*
# # metamail doesn't understand "multipart/alternative" #
if [ "$LOG" == "true" ] then echo "$TIMESTAMP | to line: $TOLINE" >>$LOG_FILE echo "$TIMESTAMP | from line: $FROMLINE" >>$LOG_FILE fi
# We also have to use uudecode, because metamail will only # help us with mail that has Content-Type headers, although # uudecode can only handle one attachment. (Can a # multi-attachment mail not have Content-Type headers?)
DONE=false COMMENT= for FILE in `/bin/ls $RANDOMFAX/1-*` do if [ -f $FILE ] then if [ "$DONE" != "true" ] then if [ "$LOG" == "true" ] then echo "$TIMESTAMP | using: $FILE" >>$LOG_FILE fi
if [ "$LOG" == "true" ] then echo "$TIMESTAMP | removing: $FILE" >>$LOG_FILE fi
/bin/rm -f $FILE fi done
if [ "$LOG" == "true" ] then echo "$TIMESTAMP | removing temp files" >>$LOG_FILE fi
if [ "$LOG" == "true" ] then echo "$TIMESTAMP | from: $FROM" >>$LOG_FILE echo "$TIMESTAMP | to: $COMPANY" >>$LOG_FILE echo "$TIMESTAMP | from-company: $FROMCO" >>$LOG_FILE echo "$TIMESTAMP | subject line: $SUBJECT" >>$LOG_FILE echo "$TIMESTAMP | number: $TONUMBER" >> $LOG_FILE echo "$TIMESTAMP | comment: $COMMENT" >> $LOG_FILE fi
#!/bin/sh # # simple mail-to-fax utility designed to replace HylaFAX's faxmail # uses shell, sendfax, metamail, and uudecode # # - Lee Howard - NubJub & Marek # This is a modified version of the script provided by Lee Howard # on this Hylafax+ website. # # HINT: TO COMPLETELY DISABLE COVERPAGES TAKE # A LOOK AT THE VERY BOTTOM OF THE SCRIPT # # I am compelled to point out here that using faxcover to # automatically generate cover pages using the content of your # email is pretty great. # # It would like to find a hyfax.conf file in etc that looks # something like this: # ********************************************************* # # Set to 'true' to enable logging; set to 'false' to disable. # LOG=true # LOG_FILE=/var/log/hyfax.log # OUTGOINGFAXNUMBER=XXX-XXX-XXXX # ********************************************************* # # You will also need to create a log file writeable by the user # your mta will be running with script with. # # Mail to addresses work in the formats # 1) Dispaly Name <PHONE-NUMBER@xxxxxxxxxxx> # 2) "Display Name" <PHONE-NUMBER@xxxxxxxxxxx> # # These formats are really just a matter of the sed parsing of the # _message_ file and can easily be edited to suit your particular # preferences. # # The formats described above match the 2nd email-to-fax # configuration described in the file: # /usr/share/doc/hylafax-client/faxmail/mailfax.sh-postfix.gz # This script does not have any swtiches so the -d -n # switches shown in the example should be removed # # Mail from addresses are assumed to be in the formats # 1) Dispaly Name <username@xxxxxxxxxxx> # 2) "Display Name" <username@xxxxxxxxxxx> # # Which are generally the formats used by modern email cients. # # # if [ -f /etc/hyfax.conf ] then . /etc/hyfax.conf if [ "$LOG_FILE" != "" ] then if [ ! -f $LOG_FILE ] then LOG=false fi fi fi TIMESTAMP=`/bin/date --iso-8601=seconds` RANDOMFAX=/tmp/faxtmp.$RANDOM export METAMAIL_TMPDIR=$RANDOMFAX if [ ! -d $METAMAIL_TMPDIR ]; then mkdir $METAMAIL_TMPDIR; fi rm -f $METAMAIL_TMPDIR/* # # metamail doesn't understand "multipart/alternative" # sed 's/multipart\/alternative/multipart\/mixed/' > $RANDOMFAX/_message_ TOLINE=`grep -e "^to:" -i $RANDOMFAX/_message_ | sed q` FROMLINE=`grep -e "^from:" -i $RANDOMFAX/_message_ | sed q` SUBJECT=`grep -e "^subject:" -i $RANDOMFAX/_message_ | sed q | sed -e 's/^[Ss]ubject:[ ]*//g'` if [ "$LOG" == "true" ] then echo "$TIMESTAMP | to line: $TOLINE" >>$LOG_FILE echo "$TIMESTAMP | from line: $FROMLINE" >>$LOG_FILE fi if [ "`echo $TOLINE | grep '<.*>'`" != "" ]; then TONUMBER=`echo $TOLINE| sed -e 's/.*<\(.*\)@[^\.]*.*>.*/\1/'` else TONUMBER=`echo $TOLINE| sed -e 's/^[Tt]o://g' -e 's/[ ]*\(.*@[^\.]*\).*/\1/'` fi FROM=`echo $FROMLINE | sed -e 's/^[Ff]rom:[ ]*//g' -e 's/"//g'` # FROMCO=`echo $FROMLINE | sed -e 's/.*"\(.*\)".*/\1/'` FROMCO=`echo $FROMLINE | sed -e 's/^[Ff]rom:\(.*\)<.*/\1/' -e 's/"//g'` COMPANY=`echo $TOLINE| sed -e 's/^[Tt]o:\(.*\)<.*/\1/' -e 's/"//g'` # COMPANY=`echo $TOLINE | sed -e 's/.*"\(.*\)".*/\1/' -e 's/.*<\(.*\)@.*/\1/'` metamail -w -x $RANDOMFAX/_message_ > /dev/null 2>&1 # We also have to use uudecode, because metamail will only # help us with mail that has Content-Type headers, although # uudecode can only handle one attachment. (Can a # multi-attachment mail not have Content-Type headers?) uudecode -o $METAMAIL_TMPDIR/_uudecoded_message_ $RANDOMFAX/_message_ > /dev/null 2>&1 rm -f $RANDOMFAX/_message_ DONE=false COMMENT= for FILE in `/bin/ls $RANDOMFAX/1-*` do if [ -f $FILE ] then if [ "$DONE" != "true" ] then if [ "$LOG" == "true" ] then echo "$TIMESTAMP | using: $FILE" >>$LOG_FILE fi /usr/bin/html2text -ascii "$FILE" >"$FILE.tmp.$$" COMMENT=`/bin/cat "$FILE.tmp.$$" |perl -e 'while (<>) { s/\r//; print; }' |perl -e 'while (<>) { s/\n/ /; print; }'` COMMENT=`echo $COMMENT` DONE=true fi if [ "$LOG" == "true" ] then echo "$TIMESTAMP | removing: $FILE" >>$LOG_FILE fi /bin/rm -f $FILE fi done if [ "$LOG" == "true" ] then echo "$TIMESTAMP | removing temp files" >>$LOG_FILE fi /bin/rm -rf $RANDOMFAX/*.tmp.$$ if [ "$LOG" == "true" ] then echo "$TIMESTAMP | from: $FROM" >>$LOG_FILE echo "$TIMESTAMP | to: $COMPANY" >>$LOG_FILE echo "$TIMESTAMP | from-company: $FROMCO" >>$LOG_FILE echo "$TIMESTAMP | subject line: $SUBJECT" >>$LOG_FILE echo "$TIMESTAMP | number: $TONUMBER" >> $LOG_FILE echo "$TIMESTAMP | comment: $COMMENT" >> $LOG_FILE fi if [ "$SUBJECT" != "" ]; then sendfax -R -s na-let -f "$FROM" -X "$FROMCO" -x "$COMPANY" -W "$OUTGOINGFAXNUMBER" -r "$SUBJECT" -c "$COMMENT" -d "$TONUMBER" $METAMAIL_TMPDIR/* else sendfax -R -f "$FROM" -n -d "$TONUMBER" $METAMAIL_TMPDIR/* fi # To disable coverpages simply compent the above if then else conditional and uncomment the command bellow # sendfax -R -f "$FROM" -n -d "$TONUMBER" $METAMAIL_TMPDIR/*