====== Qmail ====== Qmail is a fast and secure alternative to the Unix Sendmail program. Qmail achieve its goals by being less of what Sendmail is, but more than what it can be; it allows powerful mail processing by users. Its sleek nature gives it the speed, and it was designed from the ground up to be secure to run. Qmail is the choice of large volume mail services from Hotmail and Yahoo Mail, ISP's, and list management services. There are many fine guides to installing, configuring, and running Qmail, but I always needed something a little more: I had to get under the covers. The result is this Qmail Appliction Development Guide which I sometimes refer to as The Qmail Hacker's Guide. Of course, I refer to hacking in the true sense of modifying it to meet your own needs, and definitely not the "breaking into Qmail" approach. Qmail is pretty secure, and I have no interest in wasting my time and resources cracking it. Instead, I realize that not everyone can use Qmail out of the...err, "box". The major problem with hacking Qmail is the source code. It is well written, but optimized for speed, not maintainability. The author decided to eschew the standard K&R C library for his own constructs, probably achieving better performance and security. The code is not documented, not easy to comprehend, and definitely not for the faint of heart! As I programmer, I've tried to unserstand it and add specific functionality, even replace parts of it, in order to meet my system's needs. You can build a whole software application on top of Qmail, wheather its an email application or some basic messaging system. It is to that end that I approach this small documentation. You can follow the links in the "index" at the right to learn about the various parts of Qmail. Perhaps its a good idea to start at the Queue or the Architecture pages. If you find the following pages useful, please let me know at [[feedback2005@cyberdesk.com]] and let me know what helped you most, what needed better illumination, or what was missing from the site (following its purposes I outlined above). * [[qmail:architecture|Architecture]] * [[qmail:queue|Qmail-Queue]] * [[qmail:qmqp|QMQP]] * [[qmail:send|Qmail-Send]] * [[qmail:delivery|Delivering the Mail]] * [[qmail:smtp|SMTP]] * [[qmail:tcpserver|Tcpserver]] * [[qmail:analog|Qmail Analog]] * [[qmail:stralloc|stralloc]] * [[qmail:substdio|substdio]] Author's Note: //These pages are a work in progress and have not been proof read or verified. When I have spare time (yea, right!), its on my list of things to do... just not very far up it right now. Also, this is documentation I created for my purposes and with hopes that others who are going through the same learning curve will find it useful. If you find a glaring mistake or omission, or if you find it particularly useful, please let me know at feedback@cyberdesk.com It may give me incentive to fix and edit it properly. --Allen//