Further Adventures With Linux

By: 
Kort E Patterson

I've been distracted lately by a "should'a been easy" digital brain-teaser involving the Desktop Server at one of my test sites. A fringe benefit of solving the puzzle has been a useful addition to the capabilities of the Linux Desktop Server product I'm developing.

I built the server in question with hardware that had previously only been able to support a single user as a windoze workstation. The original justification for rebuilding it as a Linux Desktop Server was to increase the value of the hardware to the organization – providing multiple users on diskless workstations with essentially the same capabilities as the single user of the previous windoze machine.

There had been continuing problems with the windoze machines used to access the Internet. All of the office machines with Internet access were already running Linux, but there was still a "loaner" windoze machine in the large open volunteer area downstairs. This machine had once again become so corrupted with plug-ins and ad-ware exploiting the flaws in windoze that the unwanted interlopers had literally taken over the machine. It wasn't physically possible to close the pop-ups and ad-ware windows as fast as they were being spawned. Even the most determined users had given up trying to use it.

Trying to contain the external manifestations of the rogue processes was an endless and ultimately losing battle. The key to regaining even such minimal control over the machine as windoze allows the user, was to ignore the chaos on the screen and instead strike at the heart of the problem. Killing off the processes that were the source of the external manifestations was the only effective way to eliminate the problems they were causing.

Once the system was stabilized, it was necessary to immediately launch a search and destroy mission to find and eliminate all of the ways the rogue software had insinuated itself into the system's boot process – making sure the killed processes didn't come back to life later. The now inert vandal-ware could then be hunted down and eliminated in detail.

Of course, all this effort only restores the functionality of the machine for as long as it takes for it to get corrupted again. It was decided to eliminate the recurrent problems with the last windoze machine by replacing it with a Linux diskless workstation connected to the Desktop Server upstairs.

As an added complication, the problem windoze machine was being used as an MP3 jukebox. The Desktop Server could play MP3s, but it was on a different floor and at the other end of the building from where they wanted the music. For some reason the suggestion of plugging the speakers into the server and turning them up really loud wasn't greeted with much enthusiasm.

The most technically challenging solution was to add a sound server to the Desktop Server, so of course that became the irresistible alternative. I moved the jukebox's enhanced sound card and speakers to a diskless workstation, and eventually figured out how to get the Desktop Server to send music over the hundreds of feet of ethernet cable between the player software on the server and the sound card in the remote workstation. Pushing music, as well as all the data required to support graphic interfaces on multiple workstations, through the same network, set the lights on the downstairs hub blinking pretty frantically, but there didn't seem to be any adverse impacts on the responsiveness of the connected workstations, or drop-outs in the music.

I ran into a different problem with emailing the organization's newsletter. The desktop email software they'd been using was intended for "individual scale" email, and was having increasing problems as their mailing list expanded to over a thousand "contacts". I searched the web for more appropriate software, but only found projects that were major overkill. My test site didn't need to send millions of bulk emails – they were only sending their newsletter to people who actually wanted to receive it.

I couldn't find any mention on the web of how to just send a simple email to a list of blind copy recipients. Surely what I needed to do wasn't all that unusual. After abandoning a variety of theories involving dark conspiracies, or the impossible odds that I was the first to think of doing such a thing, I realized that the reason I wasn't able to find any references was that my problem was so basic and obvious that no one had bothered to document the solution. Once I knew enough to ask the question, I already knew the answer – even if I didn't know that I knew...

Email is a native function in Linux. It's common for Linux systems to use the same mail server for routine intra-system messages as is used by commercial ISPs to handle massive volumes of email over the Internet. All I needed to do was work out a script that would add the appropriate headers and addresses to the contents provided by the user, and pass the results to sendmail with the right command line arguments.

In the end I spent far more time vainly searching for the kind of complicated solution I was expecting to need, than working out for myself the simple solution that was actually needed - once I knew how to go about it.