Sendmail and smail are monolithic MTA. In other words, they have one large, complex program that “switches hats”: it puts on one hat to be an SMTP server, another to be an SMTP client, another to inject messages locally, and another to manage the queue.
Qmail and Postfix are modular MTA. Each of these functions is performed by a separate program. As a result, the programs are much smaller, simpler, and less likely to contain functional or security bugs. To further enhance security, postfix and qmail’s modular’s run with different privileges, and they don’t “trust” each other: they don’t assume the other modular always do only what they’re supposed to do.
Modular MTA is difference from Monolithic MTA, the interactions between other modules are well-defined, and modules only exchange the minimum necessary information with each other.
This is generally A Good Thing , but sometimes it makes it hard to do things. For example , the sendmail “-v” flag causes Sendmail to print a trace of its actions to standard output for debugging purposes. Since the one Sendmail binary handles injection, queueing, alias processing, .forward file processing, and remote forwarding via SMTP, it is able to easily trace the entire delivery until the message delivered. The equivalent capability in qmail doesn’t exsit, and would require substantial code changes and additional complexity to implement the passing of the “debug” flag from module to module.
Thursday, May 15, 2008
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment