Personal tools
HylaFAX The world's most advanced open source fax server

Beta Versions

Revision as of 23:41, 20 September 2006 by Darren (talk | contribs) (Temple-based email notifications)

The HylaFAX development team often asks other developers and interested HylaFAX users to test upcoming software releases. As these are beta versions of software they may contain more bugs than usual, and should probably not be used on production servers if your job depends on the performance of that server!

Reporting Bugs

The HylaFAX Bugzilla is located at Please file a bug report there if you can. If you prefer to send a message to the mailing lists to discuss the problem, we encourage you to subscribe to and post it there. The hylafax-users mailing list will also reach many of the right people, and is the next best thing if subscribing to -devel and filing a bug report seem like too much trouble. Bottom line - we want your bugs!!

Current beta release (4.3.1beta1)

The source can be downloaded from:

Please refer to our Red_Hat_Packages page for a source RPM that should build on most Red Hat, Fedora and SuSE distributions.

New features of particular note

Template-based email notifications

In the past, there has been discussion about both customizing and translating the e-mails that faxrcvd and notify send. In this version of HylaFAX, we've done some work to make faxrcvd and notify use "templates" for their e-mail messages.

This means that faxrcvd and notify no longer use the "bin/dictionary" and eval "echo $..." everywhere when creating their e-mails, but now directly use a template file.

These versions continue the tradition of sourcing etc/FaxDispatch (for faxrcvd) and etc/FaxNotify (for notify) to get "command" variables that influence what they do. Of course, these shell scripts can continue to do whatever else they were doing (including calling exit to terminate normal faxrcvd/notify handling if desired).

These shell scripts can now also set the TEMPLATE variable to control the source of template files that faxrcvd/notify use to generate their e-mails. Templates are taken from (relative $SPOOL, where notify/faxrcvd are run from):

etc/templates/$TEMPLATE/<template name>

So, with TEMPLATES unset, you get the default templates. If TEMPLATES=fr, you would use the templates in:

etc/templates/fr/<template name>

We've created a basic set of templates, and a set of translations of them, based on our reading and knowledge of the current faxrcvd and notify scripts. We're sure there are problems with some of the templates, so corrections are welcome.

Templates are of the format:

	From: FAX Agent <$FROMADDR>
	Subject: Fax received from "$SENDER"
	Content-type: text/plain; charset=us-ascii

	$FILE (ftp://$HOSTNAME:4559/$FILE):                                  
		  Sender: $SENDER
		   Pages: $PAGES
		 Quality: $QUALITY
		    Size: $PAGE
		Received: $RECEIVED
	 Time To Receive: $TIMETORECV
	     Signal Rate: $SIGNALRATE
	     Data Format: $DATAFORMAT
	   Error Correct: $ERRCORRECT
		 CallID1: $CALLID1
		 CallID2: $CALLID2
	     Received On: $DEVICE
		  CommID: $COMMID (ftp://$HOSTNAME:4559/log/$COMMID)      

Templates are 2 sections, separated by a blank line. The "header" section is included in the headers of the e-mail. So the template can actually specify the content-type it is, including any charset, etc.

This means that you *can* make your template something like:

	From: ...
	Subject: ...
	Content-type: text/html


Features that were introduced in 4.3.0


HylaFAX can now send emails in your native language! It presently supports:

  1. Polish
  2. French
  3. Italian
  4. Portugese
  5. Spanish
  6. German

and can be easily extended to support many others.

The translation of emails is carried out by the new bin/dictionary shell script. Remember that relative paths like this are relative to the fax spool directory, which in many cases means you will find this in /var/spool/hylafax/bin/dictionary. Check it out, ... you can see it's basically just a file where the strings HylaFAX uses when sending email are defined for each of the supported languages.

Many of the scripts in HylaFAX's bin directory are designed so that you place local customizations into a separate file (usually in etc/) that gets 'sourced' by the script as it executes. This protects local changes from being overwritten during an upgrade, and helps separate code that you maintain locally from that of the standard HylaFAX core. For the bin/faxrcvd script this local file is etc/FaxDispatch, for bin/notify it's etc/FaxNotify and for bin/pollrcvd it's etc/PollDispatch. To activate translation in faxrcvd, notify or pollrcvd, you simply add the following lines to FaxDispatch, FaxNotify, or PollDispatch:


The bin/dictionary script will look at the value of $LANG and set the various texts used in faxrcvd, notify, and pollrcvd accordingly.

As with each of the other scripts mentioned above, bin/dictionary also has a local customizations file in the etc/ directory, called etc/FaxDictionary. This is to allow administrators to further customize particular phrases to their liking. If there is a phrase in bin/dictionary that you wish to reword or for it to say something custom for your installation or company, for example:

 DICTRECEIVEAGENT="The HylaFAX Receive Agent";

Simply add a similar entry in etc/FaxDictionary such as:

 DICTRECEIVEAGENT="My Company Fax Server";

and the custom string should now appear in all emails from HylaFAX.


JobControl is a feature that many people have wanted, in a round-about way, for quite some time.

JobControl gives HylaFAX servers the ability to "virtualize" the sending configuration in a standard way. Many users want to use different TSI or calling_party numbers for different users who submit jobs. JobControl gives them the abilty to do so.

The administrator can configure/setup a JobControlCmd that can assign these types of settings, and these values can be based on arbitrary job values, instead of being limited only to the destination number.

This means that parameters can be changed/set based on the client (IP) of the job submitter, the owner of the job, the email address of the sender, etc, as well as the destination, etc.

Some possible uses include:

  • Specifying a different ModemGroup set for each owner/submitter
  • Specifying a different ModemGroup based on the email address of the sender
  • Specifying MaxSendPages/MaxDials/MaxTries on a per "owner" basis to override/force specific maximums.
  • Specifying TimeOfDay restrictions for certain senders
  • Rejecting jobs based on the submitters requested ModemGroup
  • Setting the TSI based on the sender
  • Setting the DialRules/ModemDialCmd basd on the details of the submitted job owner/email and destination modemgroups.

Some samples can be found at


A complete list of changes from 4.3.1 is as follows:

  • make cover pages visible in /docq/ through hfaxd (17 Sep 2006)
  • handle +FHNG/+FNG after AT+FDT in Class 2 (15 Sep 2006)
  • Unify mime encoding between notify and faxrcvd
  • Add templates for use in faxrcvd translations (14 Aug 2006)
  • don't exit faxq with assertion failure when a job times out and is interrupted during sending (21 Jul 2006)
  • faxaddmodem: Allow identification when no AT+FMM? or AT+FMI? (21 Jul 2006)
  • fix error of accepting too-short of DCS signal (20 Jul 2006)
  • fix faxgetty hang in ECM due to missing timeouts (20 Jul 2006)
  • fix indicator when 100% non-zero TCF data is received (20 Jul 2006)
  • do Class1SwitchingCmd before sending MCF after PPS-NULL (20 Jul 2006)
  • replace Class1SendMsgDelay with Class1SwitchingCmd (20 Jul 2006)
  • fix faxaddmodem config parsing for Digicom Leonardo modems(19 Jul 2006)
  • don't skip initial NSF bytes in station ID search when no known T.35 manufacturer ID was used (18 Jul 2006)
  • Documentation updates (18 Jul 2006)
  • Fix RecvFmt string printing (Bug 805) (18 Jul 2006)
  • fix timeout on AT command sending to modem (5 Jul 2006)
  • don't use tiffcp "-r" option on JBIG TIFFs (5 Jan 2006)
  • Avoid problems when resending single ECM Frame (5 Jul 2005)
  • Improve recovery after Class 1 TCF receipt times out (4 Jul 2006)
  • Improve the handling of user aborts in Class 1 sending (4 Jul 2006)
  • Add missing From: headers to notify (4 Jul 2006)
  • correct CIELAB to be ITULAB (4 Jul 2006)
  • fix Class 2 data format parsing of +FIS response (4 Jul 2006)
  • Enhance faxinfo with formating options (2 Jul 2006)
  • Fix faxmail's handling of nested mime (14 Jun 2006)
  • Add JobProtection option to hfaxd (12 Jun 2006)
  • Enhance SHIELDED_DTMF (5 Jun 2006)
  • Add resubmit capability to faxalter (2 Jun 2006)
  • Use ] && [ instead of -a for shell portability (2 Jun 2006)
  • Add continuation support to FaxClient in libfaxutil (31 May 2006)
  • Add UseJobTagLine config option for faxsend (4 Apr 2006)

Powered by MediaWiki
Attribution-ShareAlike 2.5

Project hosted by iFAX Solutions