Living without Windows!by Jos Visser
Intermezzo: This Is Why I Like Unix!
One particular afternoon, some time ago, I was sitting at a customer location and I decided to fetch my e-mail. My "email@example.com" e-mail is stored at my company's e-mail server and I use Netscape Messenger (the e-mail client of Netscape Communicator) to retrieve it using the IMAP protocol. I had converted to IMAP some time before because it offers a bunch of features that POP does not. For instance it allows me to :
Normally customers do not allow IMAP through their firewalls, so this means I have to dial-in somewhere and retrieve my e-mail through the dial-up connection. Netscape Messenger allows me to select a whole bunch of e-mail messages and bulk-copy them to a local e-mail folder. The remote copies get a "Deleted" status and will be removed the next time I choose "File->Compact this folder".
- Retrieve mail from multiple e-mail servers;
- Selectively download e-mail messages (at first it only retrieves the mail headers);
- Perform remote removal of e-mail messages without downloading them (a quite handy feature given the amount of SPAM I receive).
This afternoon, things were not going very smoothly. For one reason or another, my dial-up Internet connection was extremely slow. I started a mail message copy several times, but each time it went mindboggingly slow. I broke the connection, dialed in to another POP, but still no luck! At one point the message copy seemed stalled and I wondered whether something was happening at all.
Fortunately, Unix provides the structure and the tools to go out and investigate things like this. You're basically only limited by the knowledge you have! Netscape Messenger keeps its e-mail folders in text files (in the "/var/mail" format) somewhere in your home directory ("/home/josv/nsmail" in my case). By following the "Inbox" file (my local Inbox folder) using "tail -f" I was able to verify that the file was growing and that bytes were being added to the file. Slowly, but surely my e-mail was trickling through the dial-up link.
Then, due to some inexplicable error, the transfer was terminated, Netscape Messenger gave an error and set the status of my remote e-mail messages to "Deleted", even though it had not copied them all! Now, losing e-mail is one of the worst things that can happen to me and I immediately declared "Red Alert". I retried the message copy a number of times, but for one reason or another the pace was unbearably slow! To make matters even worse, I had been using the one dial-out line in our office for quite some time now and my co-workers were kindly but firmly inquiring whether they could use the line to download their e-mail.
Hmm, I was destined not to give up right now and I decided to go for some emergency hands-on hacking: I terminated Netscape Messenger, made an FTP connection to our mail server and copied my entire "/var/mail/josv" to my local machine. This was also pretty slow, but after some time I had my entire mailbox on my local machine. I then terminated the dial-up link (much to the relief of my co-workers), and copied the download "/var/mail/josv" to my local mailbox "/var/spool/mail/josv". I then restarted Netscape Messenger and pointed it to my local IMAP server, et voila, all my messages appeared again. I copied them (using Netscape Messenger's copy function) to a truly local folder, and removed them from my local mailbox.
So, to recapulate: I FTP'ed my entire mailbox (in native format) from our mail server to my local machine's "josv" mailbox, and retrieved the mail into Netscape Messenger from there. Try this using Microsoft Exchange Server and Outlook!
Why was this possible for me:
- Both systems are Unix systems (FreeBSD and Linux)
- I use only standard programs and protocols (Sendmail, IMAP, mail, et cetera)
- The Unix mailbox format is well standardised (equal)
- I understand the structure of the system
The world is not perfect. Bugs in software are a fact of life, outside conditions (e.g. the speed of the Internet) change and things fail for no apparant reason. Software that only works in ideal situations is not very useful, sometimes you need to give things a little push in order to make it work (again). The structure and philosophy of Unix are extremely well suited for day-to-day operation in the real world. Given that you understand how things work, Unix allows you to manipulate systems at a very detailed level. It is not normally necessary to do so, but when it is necessary it is quite handy that it is possible.
Look at Windows on the other hand. I can say that I know quite a lot about the internal structure of Windows (especially NT). However, this knowledge is of littlle or no use since the system is closed and resists detailed tampering. With all my NT knowledge, when something goes wrong I am as helpless as the next guy, leaving me usually no other course of action than to reboot or reinstall.
Unix: Now You're Playing With Power!