HylaFax is a robust and reliable software package designed to send and receive facsimiles and alpha-numeric pages. HylaFax is designed around client-server architecture. Fax hardware (modems, telephony cards) can reside on the physical server or on the network. Clients can submit Fax and Page jobs from any machine on the network. HylaFax is designed to be fault-tolerant and will restart its services if there are any issues, guard against configuration errors and hardware failures by resetting devices or using alternate devices if needed.
Benefits of Using HylaFax
- Robustness
- Reliability
- Customizability
- Compatibility
- Community
- Extendibility
- Documentation
- Savings
- Fax to Email
HylaFax is designed to run on Linux and Unix systems and has pre-built binary packages for Debian (including Ubuntu), Fedora, Mandrake, RedHat (including CentOS), Solaris, SUSE, FreeBSD, OpenBSD, and NetBSD. HylaFax is also distributed in source, so it can be built on other Linux and Unix distributions easily. HylaFax is compatible with many internal and external Data/Fax modems. It is also able to use USB modems as well as Linmodems(Winmodems). However, I recommend external serial modems since they do not require drivers and are the easiest to setup.
Many client programs have been developed for almost every operating system, allowing superb administration and user access to HylaFax. WinPrintHylaFax is an excellent Windows client. It installs a virtual printer driver that can be used to fax from ANY application that has the ability to print.
HylaFax’s architecture is designed to be easily customized and extended. When a fax is received or sent, simple scripts are executed. These scripts can do anything from email the faxes to an individual, convert the fax to different formats, resize or crop the faxes, print the faxes to a local or network printer, move the faxes to another server or do just about anything a linux system can do with postscript files including optical character recognition.
HylaFax has a set of email templates that are sent to users when a fax is sent or received. These templates are easily customizable and can be configured to contain a specific set of information regarding the incoming or outgoing fax. One interesting modification I created for these templates is to attach a PDF version of the fax, as well as create a preview of the fax in JPEG format (imagemagick was used to convert the original TIFF version of the fax and resize to properly fit in an email).
Examples
Configuration Example
/etc/hylafax/FaxNotify
In /etc/hylafax/ a file can be created called FaxNotify, whenever a fax is sent this file is read. The variables stored here are then used in the HylaFax scripts.
FILETYPE=pdf;
SENDTO=fax@faxer.com;
TEMPLATE=en;
The above configuration tells HylaFax to attach a PDF version of the fax to the email confirmation when a fax is sent. It also specifies the email address to send the notification to as well as the template to be used. As you can see this configuration is straight-forward and simple.
Conversion Example
/var/spool/hylafax/bin/faxrcvd
This file is the main script that is run when a fax is received by the server. One of the functions that the client required was to have a copy of the first page of the fax displayed in the body of the email notification. This required the fax to be in a format readable by most email clients and web browsers. I chose Jpeg since it is widely used and all browsers and email clients display them properly. I used imagemagick to convert the original Tiff to Jpeg and remove all the pages but the first. A resize is also done at the same time.
Right after the script sets the FILENAME variable at line 120 I added:
/usr/bin/convert “/var/spool/hylafax/$FILE”[0-0] -scale ’60%x100%!’ “$FILE”.jpg
/bin/chmod a+r “/var/spool/hylafax/$FILE.jpg”
Template Example
/var/spool/hylafax/templates/en/faxrcvd-success.txt
All email templates are stored in standard text format. By default the encoding is set to standard text format, but in my client’s case, we needed the email to be in HTML format and to display the preview of the first page created in the last example.
From: Fax Server <$FROMADDR>To: $SENDTOSubject: Fax received from "$SENDER"Content-type: text/html; charset=us-asciiContent-Transfer-Encoding: Quoted-Printable <table width="650" border=1 cellpadding=0 cellspacing=0 ><tr><td><b>Sender:</b></td><td> $SENDER</td><td><b>Pages:</b></td><td> $PAGES</td></tr><tr><td><b>Quality:</b></td><td> $QUALITY</td><td><b>Size:</b></td><td> $PAGE</td></tr><tr><td><b>Received:</b></td><td> $RECEIVED</td><td><b>Time To Receive:</b></td><td> $TIMETORECV</td></tr><tr><td><b>CallID1:</b></td><td> $CALLID1</td><td><b>CallID2:</b></td><td> $CALLID2</td></tr></table><br> <b>Preview:</b><br><img src="http://faxserver/$FILE.jpg">
In conclusion, HylaFax is an excellent piece of software, easy to configure and setup. Its fault tolerance and ease of use as well as compatibility make it an excellent choice for any business that sends more than a few faxes per day. There is no other opensource fax software that compares to HylaFax.




“In /etc/hylafax/ a file can be created called FaxDispatch, whenever a fax is sent this file is read.”
I believe this is incorrect. The FaxDispatch configuration affects what happens when a fax is RECEIVED.
“The above configuration tells HylaFax to attach a PDF version of the fax to the email confirmation when a fax is sent.”
To attach a PDF file to a fax-sent confirmation, a configuration is needed in FaxNotify. See “6.11 Return Delivery of Faxed Documents” in http://hylafax.sourceforge.net/howto/tweaking.php
You are correct. FaxNotify is the correct name for the receive script.
Thank you for the correction.