PowerMail is a redundant & distributed system for receiving mail and storing it for users. The way PowerMail works is quite unorthodox, this document sets out how the different modules cooperate.
PowerMail only receives email and makes it available over POP. Furthermore, incoming email can be forwarded to other email addresses. Although most PowerMail installations will query a relational database for information about email addresses, messages are stored on disk.
The real strength of PowerMail lies in:
One single source of information about mailboxes. No /etc/passwd, no 'recipientdomains', or whatever. If a mailbox is listed in the userbase, it works.
Ability to scale. Distributed message hosting means that additional machines can be added on the fly without moving files around or growing filesystems.
Redundancy. Besides distributing messages over multiple machines, additional copies can be stored, leading to very high redundancy. Furthermore, it is easily possible to have multiple pop servers online at once, as well as multiple smtp servers, all talking to the same pool of messages. There is no single point of failure. And no NFS either.
Very high performance. PowerMail is about receiving email. There is no queue, email is never bounced. Either email is accepted or it is not - there is no way for the system to get jammed with incoming email. Messages are sent straight to the disk. Retrieval works the same way, in reverse. On operating systems supporting this, sendfile() zerocopy TCP features are exploited for maximum throughput.
It is best to not compare PowerMail to traditional mailhosting solutions as this can be very confusing. Specifically:
There is no mapping between mailboxes and operating system users. All user data is always read from the User Base, which is typically a relational database
Mailbox centric and not domain centric. A mailbox exists or it doesn't. There is no reason to configure which domains PowerMail is to host mailboxes for.
SMTP and POP daemons can be on different machines than the messages. PowerSMTP and PowerPOP do not access the disk directly - they contact the backends for that purpose.
Messages can live on multiple machines simultaneously and redundantly. A mailbox may span multiple machines.
PowerMail can best be thought of as mail hosting where adding a new mailbox consists of a single SQL insert statement.
The documentation is available as:
- Version 1.9, released on 26th of March 2013