TurboMail is about making sending emails easy. One part of that is constructing email.Message objects with a simple API. This API is designed to cover the easy use cases (which are by far the majority) so your code can be significantly shorter and easier to read than doing it ‘the hard way’ by using Python’s built-in email module. But sometimes you really need the full power of RFC 2822. Then you can always use Python’s email module (or another library) and ignore TurboMail’s message object. TurboMail can still help you sending the actual message.
TurboMail is not a MTA like Exim, Postfix, sendmail or qmail. It is designed to deliver your messages to a real mail server (“smart host”) which actually delivers them to the recipient’s server. TurboMail does only use an in-memory queue so there is no persistent queue storage which is absolutely crucial for a real MTA. Theoretically you could extend TurboMail so that it behaves like a real MTA but this is not something we will build in the near future [1].
We hope that this got you a better idea what TurboMail is about and what tasks leaves to other software. In the next section we’ll show you a high level view over TurboMail’s different components.
[1] | Fortunately, there are some free libraries to build an SMTP server on the internet, e.g. Python’s smtpd (extremely simple to use, but messy code, not extendable), Twisted Mail (probably the most featureful SMTP server implementation available for Python, uses the twisted framework which can be either a huge advantage or disadvantage, depending on your point of view), and pymta (mostly a proof of concept, but highly customizable). Besides these libraries there is tmda-ofmipd (extended version of Python’s smtpd, supports TLS, messy code, only available as a part of a bigger package). |
Message class. (This section TBD.)
The actual mail delivery is done by two components: managers and transports. Managers don’t deliver the messages themselves. They have a strategy when to hand over a message to a transport. Transports actual deliver messages they get. Each transport is specialized on a specific transport mechanism (e.g. SMTP or mailbox delivery to the filesystem).