Skip to content


Repository files navigation

Twake Mail Server

Contributors Issues Documentation Android application Ios application Images docker Join the chat at


WebsiteReport BugRoadmap

This project adapts and enhance Apache James project with a goal to provide a complete, enterpriseready collaborative email solution adapted to the rest of the Linagora eco-system.

Twake Mail relies on TwakeMail Flutter as a frontend.

Twake Mail is developed with love by Linagora.

Useful links

Additional features

Apache James extensions includes:

  • Email filtering
  • Encrypted mailboxes
  • Team mailboxes
  • Rate limiting
  • Contacts autocomplete
  • Email forwarding
  • Push subscription with Firebase Cloud Messaging
  • Restore deleted emails
  • Labels
  • Settings

More detail...

Building the project

Read more... ### Manual building

This projects uses git submodules to track the latest branch of the Apache James project

After cloning this repository, you need to init the james-project submodule:

git submodule init
git submodule update

It is possible that the james-project submodule is not in its latest state as well. If you want the latest changes of the Apache James project, you can run as well:

git submodule update --remote

Note: Don't hesitate to push the latest state of the submodule in a commit if it was not up-to-date!

Then you can compile both apache/james-project and linagora/tmail-backend together.

mvn clean install -Dmaven.javadoc.skip=true

You can add the -DskipTests flag as well if you don't want to run the tests of the apache/james-project.

Building with a local jenkins runner

You can use a custom local jenkins runner with the Jenkinsfile at the root of this project to build the project. This will automatically do for you:

  • checkout and compile latest code of Apache James project alongside tmail-backend
  • generate docker images for memory and distributed flavors of the project
  • launch unit, integration and deployment tests on tmail-backend

To launch it you need to have docker installed. From the root of this project, you can build the Jenkins runner locally yourself:

docker build -t local-jenkins-runner dockerfiles/jenkins-runner

And then you need to launch it with the Jenkinsfile:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd)/dockerfiles/jenkins-runner/Jenkinsfile:/workspace/Jenkinsfile local-jenkins-runner

If you don't want the build to redownload everytime all the maven dependencies (it can be heavy) you can mount your local maven repository as a volume by adding -v $HOME/.m2:/root/.m2 to the above command.


What would your roadmap look like?

Read more... By the end of 2023 we expect to add the following extensions:
  • Provide Archiving and automated actions
  • Provide a JMAP extension for thumbnails
  • Download all attachments at once

Your work is awesome! I would like to help you. What can I do?

Read more... Thanks for the enthousiasm!

There are many ways to help us, and amongst them:

  • Spread the word: Tell people you like Team Mail, on social medias, via blog posts etc...
  • Give us feedbacks... It's hard to make all good decisions from the first time. It is very likely we can benefit from your experience. Did you encountered annoying bugs? Do you think we are missing some features critical to you? Tell us in the issues.
  • I can code! I wanna help ;-). Wow thanks! Let's discuss your project together in the issues to get you on track!