Summer of 1995.
My boss came to me and
said "Jim, I need a fax machine in our new out-of-state office that can
refax the orders to us here at the main office."
I promised that I would look into the possibilities
immediately. I started by calling my main parts vendor but was unable
to find anything at the time for either Windows 95 or Windows NT that was
a multi-line fax server and could also refax the received faxes to our
I had been using a small utility with my home
Linux system and had configured efax to work with one modem line.
Sure enough the main controlling program was just a shell script and was
extremely well documented with comments. In fact there were more
lines of comments than of code.
After messing around that night faxing things
back and forth from my home and the office I decided that efax could do
the job. I went to my boss and told him that there were no commercial
products that would do what he wanted, but that I had found a solution
that would work. What he wanted to do was a minor problem with UNIX
because controlling banks of serial devices is one of the reasons that
UNIX was written by AT&T in the first place.
He was hesitant to go with a UNIX solution
until I assured him that a company called Caldera was working with Novell
to provide a UNIX operating system that would run on regular IBM compatible
hardware and be interoperate with our network. He gave me the go
Since the system was going to be in an other
state I decided to go with new, powerful equipment so as to have as few
problems as possible. I got the quotes that I needed and ordered a copy
of Caldera 1.0, 100 MHz Pentium, 16 MB RAM, 1.2 GB HD, mini tower
case, NE2000 combo network card, 4x EIDE CR-ROM player, 8 port ISA Cyclades
serial board with octopus cables, 4 USR Sportster 14.4 external modems,
and an HP 5 laser printer. The grand total came up to about $2000.00.
All the parts came in by the second day and
I assembled the hardware in a few minutes. I then placed the Caldera
CD-ROM in the player and the boot disk in the floppy drive and quickly
ran through the setup to have an operational OS in less than 10 minutes.
This was the first time that I had ever used Redhat and I haven't used
anything else since then for any full installs.
The system didn't recognize the Cyclades serial
card. No problem, I was an old hand at reconfiguring and installing
the kernel. Still didn't recognize the Cyclades serial card.
I double check everything that I had done and it was correct. I called
Cyclades technical support and they knew exactly what was wrong and directed
me to a patch on the internet. I got the patch and had full instructions.
I applied the patch, setup the /etc/rc.d/rc.serial file to recognize the
new ports, created the new devices in the /dev directory with a supplied
script and remade the kernel.
With problems I had the entire system operational
inside of two hours. It even installed Samba print and file server
and the Apache web server and they were running with no configuration on
Now came the tough part. I copied the
/usr/bin/fax script to /usr/bin/faxa. Then I modified the /usr/bin/faxa
script as follows:
I changed the
I changed the
NAME="name of our company"
I corrected the phone number to report the phone number that it was
going to answer at. I also fixed the log name and received fax names
to give each a unique name by prepending an 'a' to these names.
Then I made sure that /usr/bin/faxa worked
in that it would answer the line receive the fax, print the fax locally,
retransmit the fax to our bank of fax machines in the office and then move
this file to a done directory.
Finally I copied /usr/bin/faxa to /usr/bin/faxb,
/usr/bin/faxc and /usr/bin/faxd and corrected each of these new files so
that DEV= ttyS1, ttyS2 and ttyS3 respectively. They each prepended the log file name and received fax file names with 'b', 'c' and
I spent the next two days testing the system
to ensure that it would work without any hardware or software problems.
The following day I made the 3 hour drive and installed the system.
I had to modify the print portion of the /usr/bin/fax[a|b|c|d] scripts
in order to fix a glitch in the information that was being sent to the
system from some old fax machines. The efax machine was rescaling
the faxes so that one page faxed would fit on one printed page.
We were getting a postage stamp printed page in the upper left corner with
a long thin horizontal line clear across the page. I modified the
faxa, faxb, faxc and faxd scripts to trim the page to 8.5x11 and cleared
up the problem.
In less that a week I had researched, developed
and implemented a multi-line fax server. I never saw the utilization
go below 85% on that box and there was always plenty of free memory.
And the thing that amazed me is that we were only scratching the surface
of the power that having a Linux system could provide.
The system worked with only a few minor user
glitches during the next nine months that I worked at that company.
Once the phone lines became messed up. The users forgot to put paper
in the printer upon occasion or didn't change the toner until two days
after the printer ran out. "Oh, you mean it's _supposed_ to have
stuff printed on the page?"
Even a complete unexpected power down would
only cause the system to come back online reprint and refax what it hadn't
moved to the done directory and then continue on answering the fax lines.
Please note that this is the default behavior of the operating system and
efax, I didn't have to do anything special to get this robustness.
Next I tell you how I automated putting the
received faxes into a web server.