| < Free Open Study > |
|
You don't need to understand how qmail works to install or use qmail. And you don't have to be an auto mechanic to operate a car or a watchmaker to tell time. But if you really want to master qmail, knowing exactly how it does what it does is crucial.
Luckily, qmail's simple, modular design makes understanding how it works easy for a system as complex as a Mail Transfer Agent (MTA). This appendix takes a top-down approach: first looking at how the modules interact with each other, then looking at how each module does its job.
The grand division in qmail is between the modules that accept new messages and place them into the queue and the modules that deliver them from the queue. We'll call these functions receiving and sending. The separation between receiving and sending is complete: Either of these functions can be fully operational while the other is shut down. Figure A-1 shows the high-level organization of qmail.
Figure A-1: High-level qmail organization
Messages enter the queue through two main routes: local injection using qmail-inject or sendmail and network injection using qmail-smtpd, qmail-qmtpd or qmail-qmqpd. Both of these routes use qmail-queue to actually inject their messages into the queue. Figure A-2 shows the organization of the receiving function.
Figure A-2: The receiving function
Messages are delivered from the queue through two main routes: local delivery using qmail-local and remote delivery using qmail-remote. Both types of deliveries are dispatched by qmail-send through qmail-lspawn and qmail-rspawn, respectively. Figure A-3 shows the organization of the sending function.
Figure A-3: The sending function
| < Free Open Study > |
|