2.8 KiB
WildDuck Mail Server
WildDuck is a scalable no-SPOF IMAP/POP3 mail server. WildDuck uses a distributed database (sharded + replicated MongoDB) as a backend for storing all data, including emails.
WildDuck tries to follow Gmail in product design. If there's a decision to be made then usually the answer is to do whatever Gmail has done.
Contact
Requirements
- MongoDB to store all data
- Redis for pubsub and counters
- Node.js at least version 10.0.0
Optional requirements
- Redis Sentinel for automatic Redis failover
- Build tools to install optional dependencies that need compiling
WildDuck can be installed on any Node.js compatible platform.
No-SPOF architecture
Every component of the WildDuck mail server can be replicated which eliminates potential single point of failures.
Storage
Attachment de-duplication and compression gives up to 56% of storage size reduction.
Goals of the Project
- Build a scalable and distributed IMAP/POP3 server that uses clustered database instead of single machine file system as mail store
- Allow using internationalized email addresses
- Provide Gmail-like features like pushing sent messages automatically to Sent Mail folder or notifying about messages moved to Junk folder so these could be marked as spam
- Provide parsed mailbox and message data over HTTP. This should make creating webmail interfaces super easy, no need to parse RFC822 messages to get text content or attachments
Future considerations
-
Optimize FETCH queries to load only partial data for BODY subparts
-
Parse incoming message into the mime tree as a stream. Currently the entire message is buffered in memory before being parsed.
-
Maybe allow some kind of message manipulation through plugins
-
WildDuck does not plan to be the most feature-rich IMAP client in the world. Most IMAP extensions are useless because there aren't too many clients that are able to benefit from these extensions. There are a few extensions though that would make sense to be added to WildDuck:
License
WildDuck Mail Agent is licensed under the European Union Public License 1.2 or later.