E-mail Server for FreedomBox
Description of the project:
FreedomBox is a pure Debian blend aiming to enable non-technical users to easy self-host a home server as a private online services cloud.
In order to replace third-party communication services that are data mining their users entire life, they will be able to host services themselves and use them at home or over the Internet through a browser or specialized apps.
E-mail is a basic and useful way of communication and providing an e-mail server in FreedomBox is a very old wish.
It is a more complex task than providing other services, so it deserves some proper project planning. You'll implement this plan, step by step, experiencing and learning the technical challenges and available free software solutions of/for in-the-wild communications, from different perspectives: reachability, authentication, security, transport, load, standards, etc.
You'll also learn and experience how to work together with others in an clean, organized manner, with state-of-the-art free software frameworks and tools, tests, code, reviews, continuous integration, and international UI and interaction.
Confirmed Mentor: Fioddor Superconcentrado
How to contact the mentor: fioddor@gmail.com
Confirmed co-mentors: Sunil Mohan Adapa, James Valleroy
Mentors affiliation with Debian: JV is a DD, SMA is a core FreedomBox maintainer, FS is a FreedomBox maintainer.
Deliverables of the project: A working E-mail server in FreedomBox. Details to be negotiated with the intern, but this should provide a reference:
FreedomBox enabled to send e-mails to its admin.
FreedomBox providing an e-mail exchange allowing its users to intercommunicate.
- within a controlled LAN.
- over the public internet (reachability).
- Improve.
Integrate Roundcube configuration in FreedomBox to easily use this own e-mail exchange.
- Enable anti-virus protection.
- Consumer-grade release.
- Review configuration. Fine-tune.
- Autodiagnostics.
- Anti-eavesdrop protection. (encrypted IMAP (aka imaps) access to e-mails).
- Thorough testing.
- Support communication with other exchanges (regular public e-mail).
- Site authentication (certificates and other credentials for trust by third parties).
- Enable anti-spam protection. An idea is to only allow encrypted emails signed by approved keys.
Import: Fetch emails from a 3rd party service provider, and to store them on FreedomBox.
- Bonus:
Make it generic: Review the interaction between FreeomBox and the selected e-mail parts (MTA, etc), compare their interfaces with other popular alternatives and wrap the current implementations as particular cases of generic interactions.
Privacy: Send and receive emails via Tor (aka .onion addresses), to allow two FreedomBox users to exchange emails without leaking metadata.
Desirable skills:
- Basic: Shell and Python programming. Instant Messaging (IRC). Organisation.
- Bonus: Git, Django, HTML, CSS, Bootstrap, TDD, js/jQuery
What the intern will learn:
- Technology: The e-Mail stack, web (Django) application architecture, and the free software projects involved in them.
- Technique: Likely, some additional state-of-the-art tools, languages and/or procedures.
- Experience: The flow and internals of real life volunteered international free software development.
- Wisdom: Hopefully gain awareness and criterium. Both, technical and regarding online privacy and its current status.
Application tasks: Get and show familiarity with technical research and adaptability to project team, tools and procedures, and design/coding standards.
A draft merge request where FreedomBox installs a nullmailer (nullmailer or msmtp) allowing it to send notification e-mails.
- or: Read the notes of previous attempts and provide a short, structured documentation explaining the system architecture (parts) and the technical challenges of an e-mail server. Format can be a file, a wiki page, a video, infographics...
Related projects:
- Sw: exim, postfix, dovecot, roundcube, ...
There's a list of similar or not so similar projects (outside Debian) in our wiki section.