Software Consulting Tornado Icon Software Consulting Tornado Icon

Book Review: Qmail Quickstarter


Email servers, also called Mail Transfer Agents (MTAs), today do much of the heavy lifting required to transport email from sender to recipient, ideally without the sender or recipient being particularly aware of them. They store (queue) incoming email, then forward it to user's mailboxes, sometimes via other email servers, while often trying to avoid accepting or sending out spam or viruses. They also allow users to read email waiting for them in their mailboxes. qmail is a popular email server for Unix-based systems; "Qmail Quickstarter: Install, Set Up, and Run your own Email Server" introduces the reader to qmail as an email-delivery architecture that provides the building blocks for an email server.

Written for those who like to try installing and running software as they read, as well as for those who prefer to learn concepts first, "Qmail Quickstarter" starts out (in Chapter 1) by describing how to install and configure a minimal qmail system, introducing the reader to some popular add-ons and patches. It then delves into the qmail architecture — its modularity and inherent resistance to exploits that might otherwise impact its security, material that even Windows-only sysadmins and network security analysts might find particularly enlightening.

Chapters 2 and 3 do a superb job describing how email is injected into, and exits from, the qmail queue, including some of the protocols involved (mainly SMTP). Chapter 3 also introduces qmail's conception of a "user" (an entity that controls incoming email delivery for a particular email address or for an entire domain).

Email storage formats, and many related issues, are well-covered in Chapter 4, which goes on to introduce the POP3 and IMAP protocols (which enable manipulating emails already stored in on-disk recipient mailboxes), used by Mail User Agents (MUAs) such as Microsoft Office Outlook and Ximian's Evolution, and web-browser-based email access.

Chapter 5 covers virtualization (usually, this means multiple domain names served by a single server), introducing vpopmail and VMailMgr, two add-on packages used in many qmail installations.

Anti-spam and anti-virus measures are the focus in Chapter 6's coverage of filtering. Reasonably thorough, this is nevertheless the chapter that I found most in need of improvement — but it is notoriously difficult to address coping with spam and viruses in a sufficiently thorough fashion. However, the material on filtering email (for whatever reasons) by patching or wrapping qmail is more than adequate.

Encrypting mail transport, handling mailing lists, and an introduction to general administration of a qmail server are well-covered in Chapters 7 and 8; whereas the book's Index could stand some improvement.

Overall, this book is reasonably up-to-date on qmail, frank about many (though not all) controversial issues surrounding it, well-organized, and mostly well-written and concise. I consider it a great introduction to qmail, even for people not considering using it (or Unix), mainly because it doesn't require the reader to get overly bogged down in minutiae. Coverage of the security-conscious (if not security-obsessed) architecture and design of qmail is good, without any evident criticism of other (competing) products and their corresponding security track records.

On the downside, not all sample commands or files work exactly as expected or are consistent with each other; it doesn't cover some administrative issues, like how, when, or why to stop qmail-send (or why it might refuse to die after being told to stop); it isn't a cookbook for installing and configuring qmail, although it sometimes reads like it wants to be one; and it isn't really targeted for the sysadmin who is considering installing qmail for a large, traditional base of Unix users (for examples, no coverage of redundancy or backup of email storage, and no mention of how to obtain and install man pages for daemontools and ucspi-tcp, which are not provided in the source tarballs).

This book was written by Kyle Wheeler, a frequent contributor to the qmail mailing list, and reviewed by Russell Nelson, longtime advocate of, and expert on, qmail. The publisher sent me my free copy, asking that I publish a review of it, as I've been working as a consultant in the "qmail space" for several years and have commented on qmail security and other issues on my website and elsewhere.

"Qmail Quickstarter" is a good book for anyone wanting to come up to speed on qmail, whether as their email server of choice or as a means to better choose among the many email servers available. I give this book a 7 out of 10.

Feel free to comment on the above review as posted on my slashdot journal.


Detailed reviews of each chapter:

Preface

The Preface introduces qmail (capitalized as "Qmail" at the beginnings of sentences and elsewhere, apparently a concession to editorial style), summarizes its track record of approximately 10 years, provides an overview of the book's chapters, prepares the reader's expectations, and explains how readers can download code, submit and review errata, and contact the publisher.

Chapter 1: Basic Qmail

Expanding on introductory material in the Preface, Chapter 1 starts by outlining qmail's modular architecture, then describes how to compile, install, and configure qmail to achieve a "minimal", or basic, configuration.

Chapter 2: Getting Email Into the Queue

Chapter 2 does a superb job describing how email finds its way into the qmail queue, whether via local or remote injection, and introduces various tools to summarize, examine, and modify the queue.

Chapter 3: Getting Email Out of the Queue

Chapter 3 complements Chapter 2's superb job by describing how email departs the qmail queue — usually via delivery to a local user or alias (under the control of .qmail files, providing for a fair amount of flexibility) or to a remote server (via SMTP or, potentially, QMTP or some other protocol). Undeliverable mail results in creation of a bounce message, and messages ultimately depart the queue when the qmail-clean program is called upon, by qmail-send, to delete them.

Chapter 4: Storing and Retrieving Email

Chapter 4 provides a worthy overview of various email storage formats, including the two formats provided natively by qmail (mbox and Maildir) as well as MH folders and others, covering issues such as reliability, speed (of reading, marking, deleting, delivery, and searching), and efficiency of utilization of disk storage space.

Chapter 5: Virtualization

Chapter 5 covers virtualization, which is, generally, a way for one concrete (physical or publicly addressible) service or server to successfully provide services under numerous identities (such as when multiple domain names are served by, or resolve to, a single server).

Chapter 6: Filtering

Chapter 6 covers filtering email, explaining that qmail's modular architecture usually makes such filtering easiest by employing the various architectural interfaces normally used between cooperating (if not always mutually trusting) qmail components.

Chapter 7: Advanced Features

Chapter 7 describes advanced features such as encryption of email during transport (via SSL or TLS) and providing mailing-list services.

Chapter 8: Administration, Optimization, and Monitoring

Chapter 8 delves into basic administration, optimization, and monitoring, doing a good job of covering the first two, while leaving some open questions when it comes to monitoring qmail.

Index

The Index is a bit stripped-down for my tastes.

Google

More Reviews


Copyright (C) 2007 James Craig Burley, Software Craftsperson
Last modified on 2007-07-10.