Linux HOWTOs

About | Home | Search

HOWTO: hylafax
Description: "Enterprise-class" (I hate that term) fax software
Click here for ChangeLog
NOTE: I use GNU tar >= 1.13.25 so it's -j for .tar.bz2 files,
it's safe to assume that make, gcc, binutils, fileutils/coreutils, gawk, sed, and grep are prerequisites for almost everything

# HylaFAX
# =======
# Below I include instructions/links for installing HylaFAX and utilities
# and GUIs that work with it.

# HylaFAX 4.2.5
# =============
# Check out The HylaFAX HOWTO for configuration details, modem info, and
# other details that aren't covered here.

# Prerequisites:
# libtiff
# ghostscript
# zlib
# awk
# sendmail
# metamail
# vgetty (optional)
# egetty (optional)

test -f installed/hylafax-4.2.5.tar.gz && mv installed/hylafax-4.2.5.tar.gz .
test ! -f hylafax-4.2.5.tar.gz &&

# Verify tarball w/ md5sum:
echo "5989c2638f79b178cbe935882cd58f3e  hylafax-4.2.5.tar.gz" | md5sum -c

mkdir -p -m 0700 src
cd src
find -maxdepth 1 -type d -name "hylafax-*" -exec rm -r {} \;
tar xzvf ~/hylafax-4.2.5.tar.gz
cd hylafax-4.2.5
test $UID = 0 && chown -R root:root .

# Apply this patch to add libtiff 3.8.x support, if that's what you've
# got:
wget -nc\
hylafax-4.2.5-libtiff-3.8.patch &&
 patch -p0 < hylafax-4.2.5-libtiff-3.8.patch

# If you don't already have the SysV init-style directories created, create
# them now.  Hylafax will install it's startup/stop script in
# /etc/rc.d/init.d along with the necessary symlinks.  Run this before
# configure so it can see that they're there.
su -c "( cd /etc/rc.d ; \
 mkdir -p init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d )"

# Be aware that the configure used here is not a GNU autoconf created one,
# and that it'll prompt you for input.
# I left everything in the list that it will produce for you (you'll see)
# as-is except for #6 and #17.
# #6 I changed to /usr/local/apache2/htdocs/hylafax (I have apache 2.x
# installed on the box I'm installing Hylafax on).  If you don't run apache
# and don't want /var/httpd to be created, you may just want to set it to
# something like /usr/doc/hylafax-4.2.5 instead.
# #17 I changed to /usr/sbin/sendmail.

# I had to disable jbig support because I couldn't get it to compile, even
# after messing around with the source.  If you want to try it, leave off
# that part and just run './configure'.

DISABLE_JBIG="yes" ./configure
chmod -R u+w .

# Become root to install it

make install

# Create a mail alias named 'faxmaster' that goes to whoever should know
# about info related to HylaFAX.  Run this to add it to point to root, if
# it's not already set.  This assumes that you use sendmail.
praliases | egrep -q "^faxmaster:" ||
 ( test -f /etc/mail/aliases && echo "faxmaster: root" >> /etc/mail/aliases
   test -f /etc/aliases && echo "faxmaster: root" >> /etc/aliases
   newaliases )

# You may also want to create a 'fax' alias, e-mails sent by HylaFAX will
# come from that user, if any of your Lusers reply to it, you may end up
# with mail sitting in /var/spool/mail/fax

# Run (as root) /usr/local/sbin/faxsetup to configure everything

# If you have a recent version of Slackware that has the
# /etc/cron.{hourly|daily|weekyl|monthly} directories set up, run this to
# set cron to run faxqclean once an hour and faxcron once a day:
echo '#!/bin/sh' > /etc/cron.hourly/
echo '/usr/local/sbin/faxqclean' >> /etc/cron.hourly/
echo '#!/bin/sh' > /etc/cron.daily/
echo '/usr/local/sbin/faxcron | mail -s "HylaFAX Usage Report" faxmaster' \
 >> /etc/cron.daily/
chmod 700 /etc/cron.hourly/ /etc/cron.daily/
# If you don't have those directories, add standard dcron crontab entries
# like this:
#0 * * * * /usr/local/sbin/faxqclean
#0 0 * * * /usr/local/sbin/faxcron | mail -s "HylaFAX Usage Report" faxmaster

## If you didn't/couldn't create the SysV-init directories, add something
## like this to /etc/rc.d/rc.local so it'll start on boot-up:
# if [ -x /usr/local/sbin/hylafax ]; then
#   echo "Starting HylaFAX..."
#   /usr/local/sbin/hylafax start
# fi

# (Re-)Start HylaFAX.  If you have the sysv-init directories set up, run
# this (if not, run whatever you added to rc.local):
/etc/rc.d/init.d/hylafax start

## If you want to allow incoming faxes, set up faxgetty to run from init.
## Be _very_ careful when you do this, init is the master process that runs
## everything else.  Add a line like this to /etc/inittab, make sure there
## are no other m0 lines, and that you specify your modem device name where
## it says ttyS0 (ie. if it's /dev/ttyS3, put ttyS3 instead of ttyS0.  To
## cause the change to take effect, run 'init q' (or reboot).
# m0:2345:respawn:/usr/local/sbin/faxgetty ttyS0

# If you set RingsBeforeAnswer to 0 in the modem config file (which is
# usually named something like /var/spool/hylafax/etc/config.ttyS0), you
# can use faxgetty and it won't answer incoming calls.  This is how I run
# it.  Without it, I think you will have to run 'faxmodem ttyS0' after
# each sent fax to get it ready to send another one, and faxstat won't be
# as accurate.

# Become yourself again

mkdir -p -m 0700 installed
rm -f installed/hylafax-*.tar.*
mv hylafax-4.2.5.tar.gz installed/

# tkhylafax 3.2
# =============
# tkhylafax is a tcl-tk-based GUI for sending and viewing faxes

# Prerequisites:
# tcl/tk
# HylaFAX

test -f installed/tkhylafax-3.2.tar.gz &&
 mv installed/tkhylafax-3.2.tar.gz .
test ! -f tkhylafax-3.2.tar.gz &&
mkdir -p -m 0700 src
cd src
find -maxdepth 1 -type d -name "tkhylafax-*" -exec rm -r {} \;
tar xzvf ~/tkhylafax-3.2.tar.gz
cd tkhylafax-3.2
test $UID = 0 && chown -R root:root .
su -c make
mkdir -p -m 0700 installed
rm -f installed/tkhylafax-*.tar.*
mv tkhylafax-3.2.tar.gz installed/

# fax4CUPS 1.26
# =============
# fax4CUPS is a fax backend for cups.  It allows you to set up a fax printer
# so you can fax from the commandline using lpr.  It works with HylaFAX,
# mgetty-fax, and efax.

# If you use Samba and it's set up with "load printers = yes", or if you
# manually add a share for the fax printer, you'll also be able to fax from
# computers running Windows (or Samba).  Just keep in mind that you won't be
# able to specify the number to fax to, so you'll either need to manually
# dial the number (?) or find an alternate solution.  If you'll be faxing
# from Windows (or Samba) rather than the commandline, see Salsafax below.

# Prerequisites:
# cups

test -f installed/fax4CUPS-1.26.tar.gz && mv installed/fax4CUPS-1.26.tar.gz .
test ! -f fax4CUPS-1.26.tar.gz &&
mkdir -p -m 0700 src
cd src
find -maxdepth 1 -type d -name "fax4CUPS-*" -exec rm -r {} \;
tar xzvf ~/fax4CUPS-1.26.tar.gz
cd fax4CUPS-1.26
test $UID = 0 && chown -R root:root .
cat hylafax | sed -e 's%/usr/sbin/sendfax%/usr/local/bin/sendfax%' \
 -e 's%/usr/bin/faxstat%/usr/local/bin/faxstat%' \
 -e 's%PAGE=a4%PAGE=na-let%' >
test -s &&
 ( mv -f hylafax hylafax.orig ; mv -f hylafax )

# Become root to install it

install -m 555 hylafax /usr/lib/cups/backend/		# cups backend
install -m 444 fax4CUPS.1 /usr/man/man1/		# man page
install -m 444 hylafax.ppd /usr/share/cups/model/	# PPD

# Become yourself again

mkdir -p -m 0700 installed
rm -f installed/fax4CUPS-*.tar.*
mv fax4CUPS-1.26.tar.gz installed/

# Restart cups ('/etc/rc.d/init.d/cups restart'), then you can add the
# HylaFAX printer.

# To print to the fax printer, pass either of these commandline options to
# lpr:
# -J 973-5551234
# -o phone=973-5551234
# where the -J option (usually used for Job Name) or the phone regular option
# specifies the number to send the fax to.

# SalsaFax (for CUPS)
# ========
# SalsaFax (the successor to SambaFax) allows you to print to a fax printer
# so you can fax using lpr or faxing through Samba (from Windows or anything
# running Samba).

# Prerequisites:
# perl
# cups (you can set it up for lpd or lprng too, see the site)
# HylaFAX

# Install perl modules required by Salsafax:
su -c "perl -MCPAN -e shell"
o conf make_install_arg UNINST=1
o conf prerequisites_policy follow
install Bundle::CPAN
install Getopt::Long
install Mail::Sendmail

# Become root to install it

# Install the cups backend:
cd /usr/lib/cups/backend
test -f &&
 ( mv -f ; chmod 400 )
gunzip salsafax
mv salsafax
chmod 755

# Open up /usr/lib/cups/backend/ in a text editor and make sure
# that everything at the top is correct.  I had to fix the path of sendfax
# in mine (/usr/bin -> /usr/local/bin).  Either change $MAILADDRESS in
# there too or make sure you have a postmaster alias that gets to you.

# Add a new printer to cups.  Before you run this, make sure you have the
# FileDevice directive set up in your cupsd.conf
lpadmin -p SalsaFax -v -D 'HylaFAX via SalsaFax' -E

# If you want to be able to print to SalsaFax through Samba, make sure your
# Samba configuration is set to show all printers, if not add a share for the
# new one.  Recent versions of Samba will see the change, older ones
# will have to be restarted to see the new printer.

# To print from the commandline, use "lpr -P SalsaFax file2print"

# To set up printing in Windows, add the printer and use a Postscript
# printer for the driver.  Apple LaserWriter is said to work.

# To send a fax (from the commandline or otherwise), include something like
# "Fax-Nr : 973-555-1234" in your document, Salsafax will get the number out
# of there and tell HylaFAX where to send it.

# Become yourself again

# Gfax
# ====
# If you want a GUI for faxing, check out gfax

# KdeprintFax
# ===========
# Another app you can use for faxing is KdeprintFax, it comes with KDE
# (look in K -> Utilities)

# Winprint HylaFAX
# ================
# Another option for machines that run Windblow$:

Back to the list

Last updated: Fri, 03 Jan 2014 15:31:35 -0500
Jason Englander <jason at englanders dot us>