Psst! Want to create a Windows broadcast fax system with web-based administration using Linux? Come over here and we'll talk.
The Windows Side of the Picture

Now we want to give our Windows users access to the network fax. A detailed description of setting up Samba services is an article on its own, so I won't cover it here (see Resources). The following snippet from my own smb.conf file can be appended directly to your smb.conf file to create the network fax entry.

   comment = Network Fax
   path = /home/samba/faxdir
   read only = No
   guest ok = Yes
   print ok = Yes
   postscript = Yes
   printing = aix
   print command = (/usr/bin/ %I %s\
    %U %m; rm %s) &

You can now set up a network printer on each of your Windows 95/98 workstations. For a printer type, I use an HP Laserjet 4 PostScript printer and refer to it as Network Fax. I chose the HP Laserjet 4 more or less at random, but any PostScript definition should work.

Next, add a shortcut to the PC's startup folder that points to your RESPOND.EXE program. Remember where you put it? When it runs, RESPOND.EXE will appear as a small rectangular tray icon in your Windows 95 taskbar.

When a user wishes to send a fax from a Windows program, they simply select the Network Fax printer from the list. When they click OK, respond will pop up with a dialogue box similar to the one in Figure 1. Fill in the blanks and click on “OK” to send your fax.

Figure 1. RESPOND Dialogue Image

Now, since part of MultiFax involves the setting up and maintenance of broadcast fax lists, you'll need to do things differently if you are sending to such a list. When prompted for a “Fax Number”, you must enter @ followed by the broadcast fax group name. For example, if the group name is Toronto, the user would enter @Toronto.

If you want your users to get immediate confirmation that their fax job has been spooled (and you probably do), add WINPOPUP.EXE to their startup folders as well. Winpopup comes standard in the Windows 95 distribution and lives in the C:\WINDOWS directory. Then, on the “Winpopup Shortcut” properties tab (accessed with a right-click), I set the Run: option to “Minimized”. Winpopup starts up out of the way in the Win95 taskbar, and pops up only when it gets a message. One more thing. Click on “Winpopup” on your taskbar to maximize it. Now click on “Messages”, then “Options”. Click on the checkbox for “Pop up dialog on message receipt”, so that Winpopup pops up each time a message is received.

Winpopup is also a great way for us to send each other little secret notes when you're supposed to be working, but I never said that.

Installing MultiFax

Now we have mgetty+sendfax ready to go and our Windows PCs all set to fax away. What we want now is a way to report all that activity through a web-browser interface. This is where the MultiFax software comes into play.

The MultiFax administration tool consists of a handful of Perl scripts, web pages and support programs that tie in to mgetty+sendfax. To install MultiFax, follow these steps.

  1. Unpack the bundle into a temporary directory using the tar command.

  2. As root, run the install script by typing ./install. The install script will do the rest.

Now, the Web Stuff

Administering the queue, monitoring the status of outgoing and incoming faxes, then cleaning up afterward is a little more difficult. You could just have your system delete everything as soon as it is processed, but my experience is that people want a bit more feedback. This leaves us with a cleanup job.

Figure 2. Multifax Main Menu

To access the web tools, point your browser to http://your_serbserver_address/multifax/. You should now be looking at the MultiFax menu (see Figure 2) which contains these four items:

  • Check Outgoing Fax Queue Status

  • Check Incoming Fax Queue (or print)

  • Update Broadcast Fax Groups

  • Documentation

The outgoing interface looks at the queue in three different ways: the current outgoing queue, any suspended jobs and successfully sent old jobs. All three views offer the opportunity to delete jobs from the queue. The suspended view has a resend option (when you know beyond a shadow of a doubt that you have the right phone number). See Figure 3 for an example screen.

Figure 3. Netscape Screenshot of Fax Queue

The Perl script,, builds an HTML page by querying the faxq for current, suspended, or old (successfully sent) jobs. You have the option at each level to delete a queued job. Strangely enough, the version of faxrm included with mgetty does not allow you to delete faxes that have already been sent, only those still waiting to go out. The MultiFax installation will install a modified version of faxrm that takes care of this strange behaviour.

Sending out queued faxes is the job of faxrunq, also part of mgetty+sendfax. Processing the queue in this way is probably not what we want to do. There are actually a couple of ways to automate this. The first is to create a cron entry that checks the queue and processes it on a regular basis. A good entry for root's crontab would look something like this:

0,15,30,45 7-19 * * * /usr/bin/faxrunq -s\
1>/dev/null 2>/dev/null

Another option is to run faxrunqd which runs as a daemon and regularly checks to see if faxes are waiting to go out. This is by far the easiest way. The cron approach lets you set your own timetable for dealing with the queue.

The next part of the screen shows suspended jobs. Along with the delete option, it is possible to resubmit those suspended jobs to the current job queue.

Finally, we have the old job listing. The only option there is to delete something when you are satisfied that the job has completed and the fax has gone.